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: Dave Young <dyoung@redhat.com> Acked-by: Borislav Petkov <bp@suse.de> Tested-by: Toshi Kani <toshi.kani@hp.com> Signed-off-by: Matt Fleming <matt.fleming@intel.com>
This commit is contained in:
parent
1fec053369
commit
456a29ddad
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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__
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue