From: Junichi Nomura <j-nomura@ce.jp.nec.com> To: Borislav Petkov <bp@alien8.de> Cc: "fanc.fnst@cn.fujitsu.com" <fanc.fnst@cn.fujitsu.com>, "bp@suse.de" <bp@suse.de>, "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>, "x86@kernel.org" <x86@kernel.org>, "kexec@lists.infradead.org" <kexec@lists.infradead.org> Subject: Re: [PATCH] x86/boot: Use EFI setup data if provided Date: Mon, 25 Mar 2019 00:27:41 +0000 [thread overview] Message-ID: <20190325002740.GA6637@jeru.linux.bs1.fc.nec.co.jp> (raw) In-Reply-To: <20190322152328.GD12472@zn.tnic> On Fri, Mar 22, 2019 at 04:23:28PM +0100, Borislav Petkov wrote: > On Fri, Mar 22, 2019 at 11:03:43AM +0000, Junichi Nomura wrote: > > Commit 3a63f70bf4c3a ("x86/boot: Early parse RSDP and save it in > > boot_params") broke kexec boot on EFI systems. efi_get_rsdp_addr() > > in the early parsing code tries to search RSDP from EFI table but > > whose address is virtual. > > > > Since kexec(1) provides physical address of config_table via boot_params, > > efi_get_rsdp_addr() should look for setup_data in the same way as > > efi_systab_init() in arch/x86/platform/efi/efi.c does. > > If the kexec kernel should continue to use efi_systab_init() then you > should make efi_get_rsdp_addr() exit early in the kexec-ed kernel. I'm not sure which way kexec devel is going. Added kexec list. Here is the version that exits early in efi_get_rsdp_addr(). [PATCH] x86/boot: Don't try to search RSDP from EFI when kexec-booted Commit 3a63f70bf4c3a ("x86/boot: Early parse RSDP and save it in boot_params") broke kexec boot on EFI systems. efi_get_rsdp_addr() in the early parsing code tries to search RSDP from EFI table but whose address is virtual. Normally kexec(1) provides physical address of config_table via boot_params and EFI code uses that during initialization. For the early boot code, we just exit efi_get_rsdp_addr() early if the kernel is booted by kexec. Fixes: 3a63f70bf4c3a ("x86/boot: Early parse RSDP and save it in boot_params") Signed-off-by: Jun'ichi Nomura <j-nomura@ce.jp.nec.com> Cc: Chao Fan <fanc.fnst@cn.fujitsu.com> Cc: Borislav Petkov <bp@suse.de> diff --git a/arch/x86/boot/compressed/acpi.c b/arch/x86/boot/compressed/acpi.c index 0ef4ad5..1cefc43 100644 --- a/arch/x86/boot/compressed/acpi.c +++ b/arch/x86/boot/compressed/acpi.c @@ -44,6 +44,24 @@ static acpi_physical_address get_acpi_rsdp(void) return addr; } +static bool is_kexec_booted(void) +{ + struct setup_data *data; + + /* + * kexec-tools provides EFI setup data so that kexec-ed kernel + * can find proper tables. + */ + data = (struct setup_data *) boot_params->hdr.setup_data; + while (data) { + if (data->type == SETUP_EFI) + return true; + data = (struct setup_data *) data->next; + } + + return false; +} + /* Search EFI system tables for RSDP. */ static acpi_physical_address efi_get_rsdp_addr(void) { @@ -57,6 +75,10 @@ static acpi_physical_address efi_get_rsdp_addr(void) int size, i; char *sig; + /* If the system is kexec-booted, poking EFI systab may not work. */ + if (is_kexec_booted()) + return 0; + ei = &boot_params->efi_info; sig = (char *)&ei->efi_loader_signature;
WARNING: multiple messages have this Message-ID (diff)
From: Junichi Nomura <j-nomura@ce.jp.nec.com> To: Borislav Petkov <bp@alien8.de> Cc: "x86@kernel.org" <x86@kernel.org>, "fanc.fnst@cn.fujitsu.com" <fanc.fnst@cn.fujitsu.com>, "kexec@lists.infradead.org" <kexec@lists.infradead.org>, "bp@suse.de" <bp@suse.de>, "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org> Subject: Re: [PATCH] x86/boot: Use EFI setup data if provided Date: Mon, 25 Mar 2019 00:27:41 +0000 [thread overview] Message-ID: <20190325002740.GA6637@jeru.linux.bs1.fc.nec.co.jp> (raw) In-Reply-To: <20190322152328.GD12472@zn.tnic> On Fri, Mar 22, 2019 at 04:23:28PM +0100, Borislav Petkov wrote: > On Fri, Mar 22, 2019 at 11:03:43AM +0000, Junichi Nomura wrote: > > Commit 3a63f70bf4c3a ("x86/boot: Early parse RSDP and save it in > > boot_params") broke kexec boot on EFI systems. efi_get_rsdp_addr() > > in the early parsing code tries to search RSDP from EFI table but > > whose address is virtual. > > > > Since kexec(1) provides physical address of config_table via boot_params, > > efi_get_rsdp_addr() should look for setup_data in the same way as > > efi_systab_init() in arch/x86/platform/efi/efi.c does. > > If the kexec kernel should continue to use efi_systab_init() then you > should make efi_get_rsdp_addr() exit early in the kexec-ed kernel. I'm not sure which way kexec devel is going. Added kexec list. Here is the version that exits early in efi_get_rsdp_addr(). [PATCH] x86/boot: Don't try to search RSDP from EFI when kexec-booted Commit 3a63f70bf4c3a ("x86/boot: Early parse RSDP and save it in boot_params") broke kexec boot on EFI systems. efi_get_rsdp_addr() in the early parsing code tries to search RSDP from EFI table but whose address is virtual. Normally kexec(1) provides physical address of config_table via boot_params and EFI code uses that during initialization. For the early boot code, we just exit efi_get_rsdp_addr() early if the kernel is booted by kexec. Fixes: 3a63f70bf4c3a ("x86/boot: Early parse RSDP and save it in boot_params") Signed-off-by: Jun'ichi Nomura <j-nomura@ce.jp.nec.com> Cc: Chao Fan <fanc.fnst@cn.fujitsu.com> Cc: Borislav Petkov <bp@suse.de> diff --git a/arch/x86/boot/compressed/acpi.c b/arch/x86/boot/compressed/acpi.c index 0ef4ad5..1cefc43 100644 --- a/arch/x86/boot/compressed/acpi.c +++ b/arch/x86/boot/compressed/acpi.c @@ -44,6 +44,24 @@ static acpi_physical_address get_acpi_rsdp(void) return addr; } +static bool is_kexec_booted(void) +{ + struct setup_data *data; + + /* + * kexec-tools provides EFI setup data so that kexec-ed kernel + * can find proper tables. + */ + data = (struct setup_data *) boot_params->hdr.setup_data; + while (data) { + if (data->type == SETUP_EFI) + return true; + data = (struct setup_data *) data->next; + } + + return false; +} + /* Search EFI system tables for RSDP. */ static acpi_physical_address efi_get_rsdp_addr(void) { @@ -57,6 +75,10 @@ static acpi_physical_address efi_get_rsdp_addr(void) int size, i; char *sig; + /* If the system is kexec-booted, poking EFI systab may not work. */ + if (is_kexec_booted()) + return 0; + ei = &boot_params->efi_info; sig = (char *)&ei->efi_loader_signature; _______________________________________________ kexec mailing list kexec@lists.infradead.org http://lists.infradead.org/mailman/listinfo/kexec
next prev parent reply other threads:[~2019-03-25 0:43 UTC|newest] Thread overview: 173+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-03-22 11:03 [PATCH] x86/boot: Use EFI setup data if provided Junichi Nomura 2019-03-22 15:23 ` Borislav Petkov 2019-03-25 0:27 ` Junichi Nomura [this message] 2019-03-25 0:27 ` Junichi Nomura 2019-03-25 6:01 ` Dave Young 2019-03-25 6:01 ` Dave Young 2019-03-25 6:19 ` Dave Young 2019-03-25 6:19 ` Dave Young 2019-03-25 6:45 ` Kairui Song 2019-03-25 6:45 ` Kairui Song 2019-03-25 6:47 ` Junichi Nomura 2019-03-25 6:47 ` Junichi Nomura 2019-03-25 6:59 ` Dave Young 2019-03-25 6:59 ` Dave Young 2019-03-25 8:27 ` [PATCH v2] " Junichi Nomura 2019-03-25 8:27 ` Junichi Nomura 2019-03-25 8:54 ` Boris Petkov 2019-03-25 8:54 ` Boris Petkov 2019-03-25 9:25 ` [PATCH v2] x86/boot: Don't try to search RSDP from EFI when kexec-booted Junichi Nomura 2019-03-25 9:25 ` Junichi Nomura 2019-03-25 10:15 ` [PATCH v2] x86/boot: Use EFI setup data if provided Dave Young 2019-03-25 10:15 ` Dave Young 2019-03-25 10:36 ` Junichi Nomura 2019-03-25 10:36 ` Junichi Nomura 2019-03-25 11:16 ` Dave Young 2019-03-25 11:16 ` Dave Young 2019-03-25 12:01 ` Borislav Petkov 2019-03-25 12:01 ` Borislav Petkov 2019-03-25 12:23 ` Dave Young 2019-03-25 12:23 ` Dave Young 2019-03-25 12:32 ` Borislav Petkov 2019-03-25 12:32 ` Borislav Petkov 2019-03-25 23:10 ` Junichi Nomura 2019-03-25 23:10 ` Junichi Nomura 2019-03-26 12:46 ` Dave Young 2019-03-26 12:46 ` Dave Young 2019-03-26 13:57 ` Borislav Petkov 2019-03-26 13:57 ` Borislav Petkov 2019-03-27 1:48 ` bhe 2019-03-27 1:48 ` bhe 2019-03-27 12:14 ` Borislav Petkov 2019-03-27 12:14 ` Borislav Petkov 2019-03-28 4:17 ` Junichi Nomura 2019-03-28 4:17 ` Junichi Nomura 2019-03-28 6:26 ` Chao Fan 2019-03-28 6:26 ` Chao Fan 2019-03-28 6:43 ` bhe 2019-03-28 6:43 ` bhe 2019-03-28 7:43 ` Junichi Nomura 2019-03-28 7:43 ` Junichi Nomura 2019-03-28 15:52 ` Borislav Petkov 2019-03-28 15:52 ` Borislav Petkov 2019-03-29 3:05 ` Junichi Nomura 2019-03-29 3:05 ` Junichi Nomura 2019-03-29 8:39 ` Borislav Petkov 2019-03-29 8:39 ` Borislav Petkov 2019-03-29 9:05 ` Chao Fan 2019-03-29 9:05 ` Chao Fan 2019-03-29 9:16 ` Borislav Petkov 2019-03-29 9:16 ` Borislav Petkov 2019-03-29 9:37 ` Junichi Nomura 2019-03-29 9:37 ` Junichi Nomura 2019-03-29 9:44 ` Chao Fan 2019-03-29 9:44 ` Chao Fan 2019-03-29 9:56 ` Junichi Nomura 2019-03-29 9:56 ` Junichi Nomura 2019-03-29 7:20 ` [PATCH] x86/boot: Use efi_setup_data for searching RSDP on kexec-ed kernel Junichi Nomura 2019-03-29 7:20 ` Junichi Nomura 2019-03-29 7:49 ` bhe 2019-03-29 7:49 ` bhe 2019-03-29 8:29 ` Chao Fan 2019-03-29 8:29 ` Chao Fan 2019-03-29 8:39 ` Junichi Nomura 2019-03-29 8:39 ` Junichi Nomura 2019-03-29 9:18 ` Chao Fan 2019-03-29 9:18 ` Chao Fan 2019-03-29 9:16 ` bhe 2019-03-29 9:16 ` bhe 2019-03-29 9:20 ` Chao Fan 2019-03-29 9:20 ` Chao Fan 2019-04-01 0:08 ` [PATCH v2] " Junichi Nomura 2019-04-01 0:08 ` Junichi Nomura 2019-04-02 9:41 ` Chao Fan 2019-04-02 9:41 ` Chao Fan 2019-04-02 9:53 ` Junichi Nomura 2019-04-02 9:53 ` Junichi Nomura 2019-04-02 11:06 ` Chao Fan 2019-04-02 11:06 ` Chao Fan 2019-04-02 10:22 ` Junichi Nomura 2019-04-02 10:22 ` Junichi Nomura 2019-04-02 12:03 ` Dave Young 2019-04-02 12:03 ` Dave Young 2019-04-03 5:35 ` Chao Fan 2019-04-03 5:35 ` Chao Fan 2019-04-03 5:53 ` Dave Young 2019-04-03 5:53 ` Dave Young 2019-04-03 6:39 ` Dave Young 2019-04-03 6:39 ` Dave Young 2019-04-03 7:30 ` Chao Fan 2019-04-03 7:30 ` Chao Fan 2019-04-03 7:50 ` bhe 2019-04-03 7:50 ` bhe 2019-04-03 8:23 ` Dave Young 2019-04-03 8:23 ` Dave Young 2019-04-03 8:26 ` Dave Young 2019-04-03 8:26 ` Dave Young 2019-04-03 16:14 ` Borislav Petkov 2019-04-03 16:14 ` Borislav Petkov 2019-04-04 1:02 ` Chao Fan 2019-04-04 1:02 ` Chao Fan 2019-04-03 9:28 ` Chao Fan 2019-04-03 9:28 ` Chao Fan 2019-04-03 7:21 ` Chao Fan 2019-04-03 7:21 ` Chao Fan 2019-04-03 8:09 ` Dave Young 2019-04-03 8:09 ` Dave Young 2019-04-03 8:23 ` Chao Fan 2019-04-03 8:23 ` Chao Fan 2019-04-03 9:02 ` Chao Fan 2019-04-03 9:02 ` Chao Fan 2019-04-03 9:39 ` Chao Fan 2019-04-03 9:39 ` Chao Fan 2019-04-04 1:23 ` Junichi Nomura 2019-04-04 1:23 ` Junichi Nomura 2019-04-04 2:52 ` Dave Young 2019-04-04 2:52 ` Dave Young 2019-04-04 3:00 ` bhe 2019-04-04 3:00 ` bhe 2019-04-04 3:10 ` bhe 2019-04-04 3:10 ` bhe 2019-04-04 3:22 ` Dave Young 2019-04-04 3:22 ` Dave Young 2019-04-04 6:41 ` Dave Young 2019-04-04 6:41 ` Dave Young 2019-04-04 7:20 ` Chao Fan 2019-04-04 7:20 ` Chao Fan 2019-04-04 7:41 ` Dave Young 2019-04-04 7:41 ` Dave Young 2019-04-04 7:48 ` Chao Fan 2019-04-04 7:48 ` Chao Fan 2019-04-04 12:22 ` Borislav Petkov 2019-04-04 12:22 ` Borislav Petkov 2019-04-04 14:08 ` Dave Young 2019-04-04 14:08 ` Dave Young 2019-04-03 8:18 ` Dave Young 2019-04-03 8:18 ` Dave Young 2019-04-02 10:25 ` [PATCH v3] " Junichi Nomura 2019-04-02 10:25 ` Junichi Nomura 2019-04-04 7:32 ` Dave Young 2019-04-04 7:32 ` Dave Young 2019-04-04 12:24 ` Borislav Petkov 2019-04-04 12:24 ` Borislav Petkov 2019-04-04 14:12 ` Dave Young 2019-04-04 14:12 ` Dave Young 2019-04-04 14:41 ` Borislav Petkov 2019-04-04 14:41 ` Borislav Petkov 2019-04-05 1:36 ` Dave Young 2019-04-05 1:36 ` Dave Young 2019-04-05 4:19 ` Junichi Nomura 2019-04-05 4:19 ` Junichi Nomura 2019-03-28 23:11 ` [PATCH v2] x86/boot: Use EFI setup data if provided bhe 2019-03-28 23:11 ` bhe 2019-03-29 3:34 ` Junichi Nomura 2019-03-29 3:34 ` Junichi Nomura 2019-03-29 3:52 ` bhe 2019-03-29 3:52 ` bhe 2019-03-29 5:16 ` Junichi Nomura 2019-03-29 5:16 ` Junichi Nomura 2019-03-25 7:27 ` [PATCH] " Baoquan He 2019-03-25 7:53 ` Borislav Petkov 2019-03-25 8:21 ` Baoquan He 2019-03-25 8:43 ` Thomas Gleixner 2019-03-25 9:03 ` Baoquan He
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20190325002740.GA6637@jeru.linux.bs1.fc.nec.co.jp \ --to=j-nomura@ce.jp.nec.com \ --cc=bp@alien8.de \ --cc=bp@suse.de \ --cc=fanc.fnst@cn.fujitsu.com \ --cc=kexec@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=x86@kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.