[PATCH v1 37/43] x86: Store the coreboot table address in global_data

Wolfgang Wallner wolfgang.wallner at br-automation.com
Wed Jul 1 17:16:17 CEST 2020


Hi Simon,

-----"Simon Glass" <sjg at chromium.org> schrieb: -----
> Betreff: [PATCH v1 37/43] 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>
> ---
> 
>  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;

Why is GD_FLG_SKIP_LL_INIT now set in get_coreboot_info()?

>  
> -	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.290.gba653c62da-goog

regards, Wolfgang


More information about the U-Boot mailing list