diff options
Diffstat (limited to 'kexec/arch/i386')
-rw-r--r-- | kexec/arch/i386/crashdump-x86.c | 4 | ||||
-rw-r--r-- | kexec/arch/i386/x86-linux-setup.c | 9 | ||||
-rw-r--r-- | kexec/arch/i386/x86-linux-setup.h | 1 |
3 files changed, 13 insertions, 1 deletions
diff --git a/kexec/arch/i386/crashdump-x86.c b/kexec/arch/i386/crashdump-x86.c index ca98165..53bd077 100644 --- a/kexec/arch/i386/crashdump-x86.c +++ b/kexec/arch/i386/crashdump-x86.c @@ -41,6 +41,7 @@ #include "../../crashdump.h" #include "kexec-x86.h" #include "crashdump-x86.h" +#include "x86-linux-setup.h" #ifdef HAVE_LIBXENCTRL #include <xenctrl.h> @@ -935,7 +936,8 @@ int load_crashdump_segments(struct kexec_info *info, char* mod_cmdline, if (delete_memmap(memmap_p, elfcorehdr, memsz) < 0) return -1; cmdline_add_memmap(mod_cmdline, memmap_p); - cmdline_add_efi(mod_cmdline); + if (!bzImage_support_efi_boot) + cmdline_add_efi(mod_cmdline); cmdline_add_elfcorehdr(mod_cmdline, elfcorehdr); /* Inform second kernel about the presence of ACPI tables. */ diff --git a/kexec/arch/i386/x86-linux-setup.c b/kexec/arch/i386/x86-linux-setup.c index 7b4c65d..38bd9dd 100644 --- a/kexec/arch/i386/x86-linux-setup.c +++ b/kexec/arch/i386/x86-linux-setup.c @@ -480,6 +480,13 @@ void setup_subarch(struct x86_linux_param_header *real_mode) get_bootparam(&real_mode->hardware_subarch, offset, sizeof(uint32_t)); } +static void setup_efi_info(struct x86_linux_param_header *real_mode) +{ + off_t offset = offsetof(typeof(*real_mode), efi_info); + + get_bootparam(&real_mode->efi_info, offset, 32); +} + void setup_linux_system_parameters(struct kexec_info *info, struct x86_linux_param_header *real_mode) { @@ -489,6 +496,8 @@ void setup_linux_system_parameters(struct kexec_info *info, /* get subarch from running kernel */ setup_subarch(real_mode); + if (bzImage_support_efi_boot) + setup_efi_info(real_mode); /* Default screen size */ real_mode->orig_x = 0; diff --git a/kexec/arch/i386/x86-linux-setup.h b/kexec/arch/i386/x86-linux-setup.h index 2afe97c..6fb84b4 100644 --- a/kexec/arch/i386/x86-linux-setup.h +++ b/kexec/arch/i386/x86-linux-setup.h @@ -29,5 +29,6 @@ void setup_linux_system_parameters(struct kexec_info *info, /* command line parameter may be appended by purgatory */ #define PURGATORY_CMDLINE_SIZE 64 +extern int bzImage_support_efi_boot; #endif /* X86_LINUX_SETUP_H */ |