From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bin Meng Date: Tue, 30 Jan 2018 20:50:03 +0800 Subject: [U-Boot] [PATCH v1 2/2] x86: zImage: Propagate acpi_rsdp_addr to kernel via boot parameters In-Reply-To: References: <20180110174015.79799-1-andriy.shevchenko@linux.intel.com> <20180110174015.79799-2-andriy.shevchenko@linux.intel.com> <1515762061.7000.942.camel@linux.intel.com> Message-ID: List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On Mon, Jan 15, 2018 at 10:33 AM, Bin Meng wrote: > On Fri, Jan 12, 2018 at 9:01 PM, Andy Shevchenko > wrote: >> On Fri, 2018-01-12 at 17:00 +0800, Bin Meng wrote: >>> Hi Andy, >>> >>> On Thu, Jan 11, 2018 at 1:40 AM, Andy Shevchenko >>> wrote: >>> > New field acpi_rsdp_addr, which has been introduced in boot protocol >>> > v2.14 [1], in boot parameters tells kernel the exact address of RDSP >>> > ACPI table. Knowing it increases robustness of the kernel by >>> > avoiding >>> > in some cases traversal through a part of physical memory. >>> > It will slightly reduce boot time by the same reason. >>> > >>> > [1] See Linux kernel commit >>> > >>> > 2f74cbf947f4 ("x86/boot: Add the ACPI RSDP address to struct >>> > setup_header::acpi_rdsp_addr") >>> >>> I don't see this commit id in my linux tree. Is this in some >>> custodian's tree? >> >> https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git/commit/?id=2 >> f74cbf947f45fa082dda8eac1a1f1299a372f49 >> > > thanks! > >>> > for the details. >>> > >>> > Signed-off-by: Andy Shevchenko >>> > --- >>> > arch/x86/include/asm/bootparam.h | 1 + >>> > arch/x86/lib/acpi_table.c | 7 +++++++ >>> > arch/x86/lib/acpi_table.h | 10 ++++++++++ >>> > arch/x86/lib/zimage.c | 6 ++++++ >>> > 4 files changed, 24 insertions(+) >>> > create mode 100644 arch/x86/lib/acpi_table.h >>> > >>> > diff --git a/arch/x86/include/asm/bootparam.h >>> > b/arch/x86/include/asm/bootparam.h >>> > index 48b138c6b0..90768a99ce 100644 >>> > --- a/arch/x86/include/asm/bootparam.h >>> > +++ b/arch/x86/include/asm/bootparam.h >>> > @@ -66,6 +66,7 @@ struct setup_header { >>> > __u64 pref_address; >>> > __u32 init_size; >>> > __u32 handover_offset; >>> > + __u64 acpi_rsdp_addr; >>> > } __attribute__((packed)); >>> > >>> > struct sys_desc_table { >>> > diff --git a/arch/x86/lib/acpi_table.c b/arch/x86/lib/acpi_table.c >>> > index 7b33cd371e..45bfc111ef 100644 >>> > --- a/arch/x86/lib/acpi_table.c >>> > +++ b/arch/x86/lib/acpi_table.c >>> > @@ -20,6 +20,7 @@ >>> > #include >>> > #include >>> > #include >>> > +#include "acpi_table.h" >>> > >>> > /* >>> > * IASL compiles the dsdt entries and writes the hex values >>> > @@ -27,6 +28,11 @@ >>> > */ >>> > extern const unsigned char AmlCode[]; >>> > >>> > +/* >>> > + * ACPI RSDP address to be used in boot parameters. >>> > + */ >>> >>> nits: use single line comment format without the ending . >> >> OK. >> >>> >>> > +unsigned long acpi_rsdp_addr; >>> > + >>> > static void acpi_write_rsdp(struct acpi_rsdp *rsdp, struct >>> > acpi_rsdt *rsdt, >>> > struct acpi_xsdt *xsdt) >>> > { >>> > @@ -460,6 +466,7 @@ ulong write_acpi_tables(ulong start) >>> > >>> > debug("current = %x\n", current); >>> > >>> > + acpi_rsdp_addr = (unsigned long)rsdp; >>> > debug("ACPI: done\n"); >>> > >>> > /* Don't touch ACPI hardware on HW reduced platforms */ >>> > diff --git a/arch/x86/lib/acpi_table.h b/arch/x86/lib/acpi_table.h >>> > new file mode 100644 >>> > index 0000000000..cece5d1420 >>> > --- /dev/null >>> > +++ b/arch/x86/lib/acpi_table.h >>> > @@ -0,0 +1,10 @@ >>> > +/* >>> > + * SPDX-License-Identifier: GPL-2.0 >>> > + */ >>> > + >>> > +#ifndef _X86_LIB_ACPI_TABLES_H >>> > +#define _X86_LIB_ACPI_TABLES_H >>> > + >>> > +extern unsigned long acpi_rsdp_addr; >>> > + >>> > +#endif >>> > diff --git a/arch/x86/lib/zimage.c b/arch/x86/lib/zimage.c >>> > index d224db4e07..eae26635b1 100644 >>> > --- a/arch/x86/lib/zimage.c >>> > +++ b/arch/x86/lib/zimage.c >>> > @@ -24,6 +24,7 @@ >>> > #include >>> > #endif >>> > #include >>> > +#include "acpi_table.h" >>> > >>> > DECLARE_GLOBAL_DATA_PTR; >>> > >>> > @@ -255,6 +256,11 @@ int setup_zimage(struct boot_params >>> > *setup_base, char *cmd_line, int auto_boot, >>> > hdr->hardware_subarch = X86_SUBARCH_INTEL_MID; >>> > #endif >>> > >>> > +#ifdef CONFIG_GENERATE_ACPI_TABLE >>> > + if (bootproto >= 0x020e) >>> > + hdr->acpi_rsdp_addr = acpi_rsdp_addr; >>> > +#endif >>> > + >>> > setup_video(&setup_base->screen_info); >>> > >>> > return 0; >>> > -- >>> >>> Other than the above nits, >>> Reviewed-by: Bin Meng >>> >>> I can fix the nits when applying if you like. >> >> If you have a chance to do it soon, please, do, otherwise I would send a >> new version later (next week I suppose). > > Fixed the nits and mentioned the git commit URL > > applied to u-boot-x86, thanks! This unfortunately breaks qemu-x86 and qemu-x86_64. I will post patches to fix this. Regards, Bin