Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 456a29dd authored by Dave Young's avatar Dave Young Committed by Matt Fleming
Browse files

x86: Add xloadflags bit for EFI runtime support on kexec



Old kexec-tools can not load new kernels. The reason is kexec-tools does
not fill efi_info in x86 setup header previously, thus EFI failed to
initialize.  In new kexec-tools it will by default to fill efi_info and
pass other EFI required infomation to 2nd kernel so kexec kernel EFI
initialization can succeed finally.

To prevent from breaking userspace, add a new xloadflags bit so
kexec-tools can check the flag and switch to old logic.

Signed-off-by: default avatarDave Young <dyoung@redhat.com>
Acked-by: default avatarBorislav Petkov <bp@suse.de>
Tested-by: default avatarToshi Kani <toshi.kani@hp.com>
Signed-off-by: default avatarMatt Fleming <matt.fleming@intel.com>
parent 1fec0533
Loading
Loading
Loading
Loading
+3 −0
Original line number Original line Diff line number Diff line
@@ -608,6 +608,9 @@ Protocol: 2.12+
	- If 1, the kernel supports the 64-bit EFI handoff entry point
	- If 1, the kernel supports the 64-bit EFI handoff entry point
          given at handover_offset + 0x200.
          given at handover_offset + 0x200.


  Bit 4 (read): XLF_EFI_KEXEC
	- If 1, the kernel supports kexec EFI boot with EFI runtime support.

Field name:	cmdline_size
Field name:	cmdline_size
Type:		read
Type:		read
Offset/size:	0x238/4
Offset/size:	0x238/4
+8 −1
Original line number Original line Diff line number Diff line
@@ -391,7 +391,14 @@ xloadflags:
#else
#else
# define XLF23 0
# define XLF23 0
#endif
#endif
			.word XLF0 | XLF1 | XLF23

#if defined(CONFIG_X86_64) && defined(CONFIG_EFI) && defined(CONFIG_KEXEC)
# define XLF4 XLF_EFI_KEXEC
#else
# define XLF4 0
#endif

			.word XLF0 | XLF1 | XLF23 | XLF4


cmdline_size:   .long   COMMAND_LINE_SIZE-1     #length of the command line,
cmdline_size:   .long   COMMAND_LINE_SIZE-1     #length of the command line,
                                                #added with boot protocol
                                                #added with boot protocol
+1 −0
Original line number Original line Diff line number Diff line
@@ -24,6 +24,7 @@
#define XLF_CAN_BE_LOADED_ABOVE_4G	(1<<1)
#define XLF_CAN_BE_LOADED_ABOVE_4G	(1<<1)
#define XLF_EFI_HANDOVER_32		(1<<2)
#define XLF_EFI_HANDOVER_32		(1<<2)
#define XLF_EFI_HANDOVER_64		(1<<3)
#define XLF_EFI_HANDOVER_64		(1<<3)
#define XLF_EFI_KEXEC			(1<<4)


#ifndef __ASSEMBLY__
#ifndef __ASSEMBLY__