Hi Simon,

-----"Simon Glass" <s...@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 <s...@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

Reply via email to