diff options
author | Dave Young <dyoung@redhat.com> | 2013-12-20 11:02:20 +0100 |
---|---|---|
committer | Matt Fleming <matt.fleming@intel.com> | 2013-12-29 14:09:06 +0100 |
commit | 456a29ddada79198c5965300e04103c40c481f62 (patch) | |
tree | 3efa843160c0827cb165dbdf8c3b18c05ec98a7c /arch/x86/boot/header.S | |
parent | x86/efi: Pass necessary EFI data for kexec via setup_data (diff) | |
download | linux-456a29ddada79198c5965300e04103c40c481f62.tar.xz linux-456a29ddada79198c5965300e04103c40c481f62.zip |
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>
Diffstat (limited to 'arch/x86/boot/header.S')
-rw-r--r-- | arch/x86/boot/header.S | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/arch/x86/boot/header.S b/arch/x86/boot/header.S index 9ec06a1f6d61..ec3b8ba68096 100644 --- a/arch/x86/boot/header.S +++ b/arch/x86/boot/header.S @@ -391,7 +391,14 @@ xloadflags: #else # define XLF23 0 #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, #added with boot protocol |