Skip to content

Commit ccec81e

Browse files
ryncsnsuryasaimadhu
authored andcommitted
x86/kexec: Fill in acpi_rsdp_addr from the first kernel
When efi=noruntime or efi=oldmap is used on the kernel command line, EFI services won't be available in the second kernel, therefore the second kernel will not be able to get the ACPI RSDP address from firmware by calling EFI services and so it won't boot. Commit e6e094e ("x86/acpi, x86/boot: Take RSDP address from boot params if available") added an acpi_rsdp_addr field to boot_params which stores the RSDP address for other kernel users. Recently, after 3a63f70 ("x86/boot: Early parse RSDP and save it in boot_params") the acpi_rsdp_addr will always be filled with a valid RSDP address. So fill in that value into the second kernel's boot_params thus ensuring that the second kernel receives the RSDP value from the first kernel. [ bp: massage commit message. ] Signed-off-by: Kairui Song <kasong@redhat.com> Signed-off-by: Borislav Petkov <bp@suse.de> Cc: AKASHI Takahiro <takahiro.akashi@linaro.org> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Baoquan He <bhe@redhat.com> Cc: Chao Fan <fanc.fnst@cn.fujitsu.com> Cc: Dave Young <dyoung@redhat.com> Cc: David Howells <dhowells@redhat.com> Cc: "H. Peter Anvin" <hpa@zytor.com> Cc: Ingo Molnar <mingo@redhat.com> Cc: kexec@lists.infradead.org Cc: Philipp Rudo <prudo@linux.vnet.ibm.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: x86-ml <x86@kernel.org> Cc: Yannik Sembritzki <yannik@sembritzki.me> Link: https://lkml.kernel.org/r/20190204173852.4863-1-kasong@redhat.com
1 parent 82df826 commit ccec81e

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

arch/x86/kernel/kexec-bzimage64.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,9 @@ setup_boot_parameters(struct kimage *image, struct boot_params *params,
215215
params->screen_info.ext_mem_k = 0;
216216
params->alt_mem_k = 0;
217217

218+
/* Always fill in RSDP: it is either 0 or a valid value */
219+
params->acpi_rsdp_addr = boot_params.acpi_rsdp_addr;
220+
218221
/* Default APM info */
219222
memset(&params->apm_bios_info, 0, sizeof(params->apm_bios_info));
220223

@@ -253,7 +256,6 @@ setup_boot_parameters(struct kimage *image, struct boot_params *params,
253256
setup_efi_state(params, params_load_addr, efi_map_offset, efi_map_sz,
254257
efi_setup_data_offset);
255258
#endif
256-
257259
/* Setup EDD info */
258260
memcpy(params->eddbuf, boot_params.eddbuf,
259261
EDDMAXNR * sizeof(struct edd_info));

0 commit comments

Comments
 (0)