[PATCH v2 38/44] x86: Store the coreboot table address in global_data
Wolfgang Wallner
wolfgang.wallner at br-automation.com
Wed Jul 8 13:11:48 CEST 2020
Hi Simon,
-----"Simon Glass" <sjg at chromium.org> schrieb: -----
> Betreff: [PATCH v2 38/44] x86: Store the coreboot table address in global_data
>
> At present this information is used to locate and parse the tables but is
> not stored. Store it so that we can display it to the user, e.g. with the
> 'bdinfo' command.
>
> Signed-off-by: Simon Glass <sjg at chromium.org>
> Reviewed-by: Bin Meng <bmeng.cn at gmail.com>
> ---
>
> (no changes since v1)
>
> arch/x86/cpu/coreboot/tables.c | 8 +++++++-
> arch/x86/cpu/i386/cpu.c | 7 ++++++-
> arch/x86/include/asm/global_data.h | 1 +
> 3 files changed, 14 insertions(+), 2 deletions(-)
>
> diff --git a/arch/x86/cpu/coreboot/tables.c b/arch/x86/cpu/coreboot/tables.c
> index a5d31d1dea..1594b4a8b2 100644
> --- a/arch/x86/cpu/coreboot/tables.c
> +++ b/arch/x86/cpu/coreboot/tables.c
> @@ -10,6 +10,8 @@
> #include <net.h>
> #include <asm/arch/sysinfo.h>
>
> +DECLARE_GLOBAL_DATA_PTR;
> +
> /*
> * This needs to be in the .data section so that it's copied over during
> * relocation. By default it's put in the .bss section which is simply filled
> @@ -243,6 +245,10 @@ int get_coreboot_info(struct sysinfo_t *info)
> if (addr < 0)
> return addr;
> ret = cb_parse_header((void *)addr, 0x1000, info);
> + if (!ret)
> + return -ENOENT;
> + gd->arch.coreboot_table = addr;
> + gd->flags |= GD_FLG_SKIP_LL_INIT;
Nit: Could you add to the commit message that GD_FLG_SKIP_LL_INIT is handled
differently after this commit? Currently it only describes storing the
coreboot table address.
>
> - return ret == 1 ? 0 : -ENOENT;
> + return 0;
> }
> diff --git a/arch/x86/cpu/i386/cpu.c b/arch/x86/cpu/i386/cpu.c
> index fca3f79b69..8f342dd06e 100644
> --- a/arch/x86/cpu/i386/cpu.c
> +++ b/arch/x86/cpu/i386/cpu.c
> @@ -456,10 +456,15 @@ int x86_cpu_init_f(void)
>
> int x86_cpu_reinit_f(void)
> {
> + long addr;
> +
> setup_identity();
> setup_pci_ram_top();
> - if (locate_coreboot_table() >= 0)
> + addr = locate_coreboot_table();
> + if (addr >= 0) {
> + gd->arch.coreboot_table = addr;
> gd->flags |= GD_FLG_SKIP_LL_INIT;
> + }
>
> return 0;
> }
> diff --git a/arch/x86/include/asm/global_data.h b/arch/x86/include/asm/global_data.h
> index 5bc251c0dd..3e4044593c 100644
> --- a/arch/x86/include/asm/global_data.h
> +++ b/arch/x86/include/asm/global_data.h
> @@ -123,6 +123,7 @@ struct arch_global_data {
> #endif
> void *itss_priv; /* Private ITSS data pointer */
> ulong acpi_start; /* Start address of ACPI tables */
> + ulong coreboot_table; /* Address of coreboot table */
> };
>
> #endif
> --
> 2.27.0.383.g050319c2ae-goog
Reviewed-by: Wolfgang Wallner <wolfgang.wallner at br-automation.com>
More information about the U-Boot
mailing list