From: "bhe@redhat.com" <bhe@redhat.com> To: Junichi Nomura <j-nomura@ce.jp.nec.com> Cc: Borislav Petkov <bp@alien8.de>, Dave Young <dyoung@redhat.com>, "fanc.fnst@cn.fujitsu.com" <fanc.fnst@cn.fujitsu.com>, "kasong@redhat.com" <kasong@redhat.com>, "x86@kernel.org" <x86@kernel.org>, "kexec@lists.infradead.org" <kexec@lists.infradead.org>, "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org> Subject: Re: [PATCH v2] x86/boot: Use EFI setup data if provided Date: Fri, 29 Mar 2019 07:11:00 +0800 [thread overview] Message-ID: <20190328231100.GC1877@MiWiFi-R3L-srv> (raw) In-Reply-To: <20190328074337.GA9470@jeru.linux.bs1.fc.nec.co.jp> On 03/28/19 at 07:43am, Junichi Nomura wrote: > On 2019/03/28 15:43, bhe@redhat.com wrote: > > On 03/28/19 at 04:17am, Junichi Nomura wrote: > >> I still don't get it... We still need systab for kexec case as well > >> to get nr_tables. Don't we? > > > > Yes, simpler. > > > > As Dave replied in another mail, efi/kexec is only added for x86_64. See > > how it does in setup_linux_system_parameters() of kexec_tools utility, > > and we only have bzImage64 handling in kernel for kexec_file loading, > > see prepare_add_efi_setup_data(). > > > > You may only need to get kexec ei_info to use directly. > > OK, let me try. How does this look? Yes, it looks great. Thanks. Some tiny concenrns added in inline comments, please check. > > 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 > that will crash because the table address is virtual when the kernel > was booted by kexec. > > Since kexec(1) provides physical address of the table via efi_setup_data, > early boot code of kexec-ed kernel should look for setup_data in the same > way as efi_systab_init() in arch/x86/platform/efi/efi.c does. > > 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> > Cc: Dave Young <dyoung@redhat.com> > Cc: Baoquan He <bhe@redhat.com> > > diff --git a/arch/x86/boot/compressed/acpi.c b/arch/x86/boot/compressed/acpi.c > --- a/arch/x86/boot/compressed/acpi.c > +++ b/arch/x86/boot/compressed/acpi.c > @@ -44,17 +44,106 @@ static acpi_physical_address get_acpi_rsdp(void) > return addr; > } > > +static unsigned long efi_get_kexec_setup_data_addr(void) > +{ > +#ifdef CONFIG_EFI > + struct setup_data *data; > + u64 pa_data; > + > + pa_data = boot_params->hdr.setup_data; > + while (pa_data) { > + data = (struct setup_data *) pa_data; > + if (data->type == SETUP_EFI) > + return pa_data + sizeof(struct setup_data); > + pa_data = data->next; > + } > +#endif > + return 0; > +} > + > /* Search EFI system tables for RSDP. */ > -static acpi_physical_address efi_get_rsdp_addr(void) > +static acpi_physical_address __efi_get_rsdp_addr(unsigned long config_tables, unsigned int nr_tables, int size, bool efi_64) Here parameter 'size' and 'efi_64' seems a little duplicated on functionality. Only passing efi_64 can deduce the size? Personal opinion. > { > acpi_physical_address rsdp_addr = 0; > > #ifdef CONFIG_EFI > - unsigned long systab, systab_tables, config_tables; > + int i; > + > + /* Get EFI tables from systab. */ > + for (i = 0; i < nr_tables; i++) { > + acpi_physical_address table; > + efi_guid_t guid; > + > + config_tables += size; > + > + if (efi_64) { > + efi_config_table_64_t *tbl = (efi_config_table_64_t *)config_tables; > + > + guid = tbl->guid; > + table = tbl->table; > + > + if (!IS_ENABLED(CONFIG_X86_64) && table >> 32) { > + debug_putstr("Error getting RSDP address: EFI config table located above 4GB.\n"); > + return 0; > + } > + } else { > + efi_config_table_32_t *tbl = (efi_config_table_32_t *)config_tables; > + > + guid = tbl->guid; > + table = tbl->table; > + } > + > + if (!(efi_guidcmp(guid, ACPI_TABLE_GUID))) > + rsdp_addr = table; > + else if (!(efi_guidcmp(guid, ACPI_20_TABLE_GUID))) > + return table; > + } > +#endif > + return rsdp_addr; > +} > + It might be worth adding code comments here to tell why we only care about 64bit kexec booting? > +static acpi_physical_address kexec_get_rsdp_addr(void) > +{ > +#ifdef CONFIG_EFI > + struct efi_setup_data *esd; > + efi_system_table_64_t *systab; > + struct efi_info *ei; > + char *sig; > + > + esd = (struct efi_setup_data *) efi_get_kexec_setup_data_addr(); > + if (!esd) > + return 0; > + if (!esd->tables) { > + debug_putstr("Wrong kexec SETUP_EFI data.\n"); > + return 0; > + } > + > + ei = &boot_params->efi_info; > + sig = (char *)&ei->efi_loader_signature; > + if (strncmp(sig, EFI64_LOADER_SIGNATURE, 4)) { > + debug_putstr("Wrong EFI loader signature.\n"); > + return 0; > + } > + > + /* Get systab from boot params. */ > + systab = (efi_system_table_64_t *) (ei->efi_systab | ((__u64)ei->efi_systab_hi << 32)); > + if (!systab) > + error("EFI system table not found."); > + > + return __efi_get_rsdp_addr((unsigned long) esd->tables, systab->nr_tables, sizeof(efi_config_table_64_t), true); > +#else > + return 0; > +#endif > +} > + > +static acpi_physical_address efi_get_rsdp_addr(void) > +{ > +#ifdef CONFIG_EFI > + unsigned long systab, config_tables; > unsigned int nr_tables; > struct efi_info *ei; > bool efi_64; > - int size, i; > + int size; > char *sig; > > ei = &boot_params->efi_info; > @@ -100,37 +189,10 @@ static acpi_physical_address efi_get_rsdp_addr(void) > if (!config_tables) > error("EFI config tables not found."); > > - /* Get EFI tables from systab. */ > - for (i = 0; i < nr_tables; i++) { > - acpi_physical_address table; > - efi_guid_t guid; > - > - config_tables += size; > - > - if (efi_64) { > - efi_config_table_64_t *tbl = (efi_config_table_64_t *)config_tables; > - > - guid = tbl->guid; > - table = tbl->table; > - > - if (!IS_ENABLED(CONFIG_X86_64) && table >> 32) { > - debug_putstr("Error getting RSDP address: EFI config table located above 4GB.\n"); > - return 0; > - } > - } else { > - efi_config_table_32_t *tbl = (efi_config_table_32_t *)config_tables; > - > - guid = tbl->guid; > - table = tbl->table; > - } > - > - if (!(efi_guidcmp(guid, ACPI_TABLE_GUID))) > - rsdp_addr = table; > - else if (!(efi_guidcmp(guid, ACPI_20_TABLE_GUID))) > - return table; > - } > + return __efi_get_rsdp_addr(config_tables, nr_tables, size, efi_64); > +#else > + return 0; > #endif > - return rsdp_addr; > } > > static u8 compute_checksum(u8 *buffer, u32 length) > @@ -221,6 +283,9 @@ acpi_physical_address get_rsdp_addr(void) > pa = boot_params->acpi_rsdp_addr; > > if (!pa) > + pa = kexec_get_rsdp_addr(); > + > + if (!pa) > pa = efi_get_rsdp_addr(); > > if (!pa)
WARNING: multiple messages have this Message-ID (diff)
From: "bhe@redhat.com" <bhe@redhat.com> To: Junichi Nomura <j-nomura@ce.jp.nec.com> Cc: "fanc.fnst@cn.fujitsu.com" <fanc.fnst@cn.fujitsu.com>, "kasong@redhat.com" <kasong@redhat.com>, "x86@kernel.org" <x86@kernel.org>, "kexec@lists.infradead.org" <kexec@lists.infradead.org>, "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>, Borislav Petkov <bp@alien8.de>, Dave Young <dyoung@redhat.com> Subject: Re: [PATCH v2] x86/boot: Use EFI setup data if provided Date: Fri, 29 Mar 2019 07:11:00 +0800 [thread overview] Message-ID: <20190328231100.GC1877@MiWiFi-R3L-srv> (raw) In-Reply-To: <20190328074337.GA9470@jeru.linux.bs1.fc.nec.co.jp> On 03/28/19 at 07:43am, Junichi Nomura wrote: > On 2019/03/28 15:43, bhe@redhat.com wrote: > > On 03/28/19 at 04:17am, Junichi Nomura wrote: > >> I still don't get it... We still need systab for kexec case as well > >> to get nr_tables. Don't we? > > > > Yes, simpler. > > > > As Dave replied in another mail, efi/kexec is only added for x86_64. See > > how it does in setup_linux_system_parameters() of kexec_tools utility, > > and we only have bzImage64 handling in kernel for kexec_file loading, > > see prepare_add_efi_setup_data(). > > > > You may only need to get kexec ei_info to use directly. > > OK, let me try. How does this look? Yes, it looks great. Thanks. Some tiny concenrns added in inline comments, please check. > > 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 > that will crash because the table address is virtual when the kernel > was booted by kexec. > > Since kexec(1) provides physical address of the table via efi_setup_data, > early boot code of kexec-ed kernel should look for setup_data in the same > way as efi_systab_init() in arch/x86/platform/efi/efi.c does. > > 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> > Cc: Dave Young <dyoung@redhat.com> > Cc: Baoquan He <bhe@redhat.com> > > diff --git a/arch/x86/boot/compressed/acpi.c b/arch/x86/boot/compressed/acpi.c > --- a/arch/x86/boot/compressed/acpi.c > +++ b/arch/x86/boot/compressed/acpi.c > @@ -44,17 +44,106 @@ static acpi_physical_address get_acpi_rsdp(void) > return addr; > } > > +static unsigned long efi_get_kexec_setup_data_addr(void) > +{ > +#ifdef CONFIG_EFI > + struct setup_data *data; > + u64 pa_data; > + > + pa_data = boot_params->hdr.setup_data; > + while (pa_data) { > + data = (struct setup_data *) pa_data; > + if (data->type == SETUP_EFI) > + return pa_data + sizeof(struct setup_data); > + pa_data = data->next; > + } > +#endif > + return 0; > +} > + > /* Search EFI system tables for RSDP. */ > -static acpi_physical_address efi_get_rsdp_addr(void) > +static acpi_physical_address __efi_get_rsdp_addr(unsigned long config_tables, unsigned int nr_tables, int size, bool efi_64) Here parameter 'size' and 'efi_64' seems a little duplicated on functionality. Only passing efi_64 can deduce the size? Personal opinion. > { > acpi_physical_address rsdp_addr = 0; > > #ifdef CONFIG_EFI > - unsigned long systab, systab_tables, config_tables; > + int i; > + > + /* Get EFI tables from systab. */ > + for (i = 0; i < nr_tables; i++) { > + acpi_physical_address table; > + efi_guid_t guid; > + > + config_tables += size; > + > + if (efi_64) { > + efi_config_table_64_t *tbl = (efi_config_table_64_t *)config_tables; > + > + guid = tbl->guid; > + table = tbl->table; > + > + if (!IS_ENABLED(CONFIG_X86_64) && table >> 32) { > + debug_putstr("Error getting RSDP address: EFI config table located above 4GB.\n"); > + return 0; > + } > + } else { > + efi_config_table_32_t *tbl = (efi_config_table_32_t *)config_tables; > + > + guid = tbl->guid; > + table = tbl->table; > + } > + > + if (!(efi_guidcmp(guid, ACPI_TABLE_GUID))) > + rsdp_addr = table; > + else if (!(efi_guidcmp(guid, ACPI_20_TABLE_GUID))) > + return table; > + } > +#endif > + return rsdp_addr; > +} > + It might be worth adding code comments here to tell why we only care about 64bit kexec booting? > +static acpi_physical_address kexec_get_rsdp_addr(void) > +{ > +#ifdef CONFIG_EFI > + struct efi_setup_data *esd; > + efi_system_table_64_t *systab; > + struct efi_info *ei; > + char *sig; > + > + esd = (struct efi_setup_data *) efi_get_kexec_setup_data_addr(); > + if (!esd) > + return 0; > + if (!esd->tables) { > + debug_putstr("Wrong kexec SETUP_EFI data.\n"); > + return 0; > + } > + > + ei = &boot_params->efi_info; > + sig = (char *)&ei->efi_loader_signature; > + if (strncmp(sig, EFI64_LOADER_SIGNATURE, 4)) { > + debug_putstr("Wrong EFI loader signature.\n"); > + return 0; > + } > + > + /* Get systab from boot params. */ > + systab = (efi_system_table_64_t *) (ei->efi_systab | ((__u64)ei->efi_systab_hi << 32)); > + if (!systab) > + error("EFI system table not found."); > + > + return __efi_get_rsdp_addr((unsigned long) esd->tables, systab->nr_tables, sizeof(efi_config_table_64_t), true); > +#else > + return 0; > +#endif > +} > + > +static acpi_physical_address efi_get_rsdp_addr(void) > +{ > +#ifdef CONFIG_EFI > + unsigned long systab, config_tables; > unsigned int nr_tables; > struct efi_info *ei; > bool efi_64; > - int size, i; > + int size; > char *sig; > > ei = &boot_params->efi_info; > @@ -100,37 +189,10 @@ static acpi_physical_address efi_get_rsdp_addr(void) > if (!config_tables) > error("EFI config tables not found."); > > - /* Get EFI tables from systab. */ > - for (i = 0; i < nr_tables; i++) { > - acpi_physical_address table; > - efi_guid_t guid; > - > - config_tables += size; > - > - if (efi_64) { > - efi_config_table_64_t *tbl = (efi_config_table_64_t *)config_tables; > - > - guid = tbl->guid; > - table = tbl->table; > - > - if (!IS_ENABLED(CONFIG_X86_64) && table >> 32) { > - debug_putstr("Error getting RSDP address: EFI config table located above 4GB.\n"); > - return 0; > - } > - } else { > - efi_config_table_32_t *tbl = (efi_config_table_32_t *)config_tables; > - > - guid = tbl->guid; > - table = tbl->table; > - } > - > - if (!(efi_guidcmp(guid, ACPI_TABLE_GUID))) > - rsdp_addr = table; > - else if (!(efi_guidcmp(guid, ACPI_20_TABLE_GUID))) > - return table; > - } > + return __efi_get_rsdp_addr(config_tables, nr_tables, size, efi_64); > +#else > + return 0; > #endif > - return rsdp_addr; > } > > static u8 compute_checksum(u8 *buffer, u32 length) > @@ -221,6 +283,9 @@ acpi_physical_address get_rsdp_addr(void) > pa = boot_params->acpi_rsdp_addr; > > if (!pa) > + pa = kexec_get_rsdp_addr(); > + > + if (!pa) > pa = efi_get_rsdp_addr(); > > if (!pa) _______________________________________________ kexec mailing list kexec@lists.infradead.org http://lists.infradead.org/mailman/listinfo/kexec
next prev parent reply other threads:[~2019-03-28 23:11 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 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 ` bhe [this message] 2019-03-28 23:11 ` [PATCH v2] x86/boot: Use EFI setup data if provided 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=20190328231100.GC1877@MiWiFi-R3L-srv \ --to=bhe@redhat.com \ --cc=bp@alien8.de \ --cc=dyoung@redhat.com \ --cc=fanc.fnst@cn.fujitsu.com \ --cc=j-nomura@ce.jp.nec.com \ --cc=kasong@redhat.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.