[U-Boot] [PATCH v2 32/38] x86: fsp: Save usable RAM and hob_list in the handoff area

Bin Meng bmeng.cn at gmail.com
Fri Oct 4 03:28:45 UTC 2019


On Fri, Oct 4, 2019 at 11:06 AM Bin Meng <bmeng.cn at gmail.com> wrote:
>
> On Wed, Oct 2, 2019 at 10:07 PM Bin Meng <bmeng.cn at gmail.com> wrote:
> >
> > Hi Simon,
> >
> > On Wed, Sep 25, 2019 at 10:13 PM Simon Glass <sjg at chromium.org> wrote:
> > >
> > > The useable RAM is calculated when the RAM is inited. Save this value so
> > > that it can be easily used in U-Boot proper.
> > >
> > > Also save a pointer to the hob list so that it is accessible (before
> > > relocation only) in U-Boot proper. This avoids having to scan it in SPL,
> > > for everything U-Boot proper might need later.
> > >
> > > Signed-off-by: Simon Glass <sjg at chromium.org>
> > > ---
> > >
> > > Changes in v2: None
> > >
> > >  arch/x86/cpu/intel_common/cpu_from_spl.c |  6 ++++++
> > >  arch/x86/include/asm/handoff.h           |  8 ++++++++
> > >  arch/x86/lib/fsp/fsp_dram.c              | 10 ++++++++++
> > >  3 files changed, 24 insertions(+)
> > >
> > > diff --git a/arch/x86/cpu/intel_common/cpu_from_spl.c b/arch/x86/cpu/intel_common/cpu_from_spl.c
> > > index a6233c75ce2..b7bb524162f 100644
> > > --- a/arch/x86/cpu/intel_common/cpu_from_spl.c
> > > +++ b/arch/x86/cpu/intel_common/cpu_from_spl.c
> > > @@ -6,6 +6,7 @@
> > >  #include <common.h>
> > >  #include <dm.h>
> > >  #include <errno.h>
> > > +#include <handoff.h>
> > >  #include <asm/cpu_common.h>
> > >  #include <asm/intel_regs.h>
> > >  #include <asm/lapic.h>
> > > @@ -21,6 +22,11 @@ int arch_cpu_init(void)
> > >  {
> > >         int ret;
> > >
> > > +#if CONFIG_IS_ENABLED(HANDOFF) && IS_ENABLED(CONFIG_USE_HOB)
> > > +       struct spl_handoff *ho = gd->spl_handoff;
> > > +
> > > +       gd->arch.hob_list = ho->arch.hob_list;
> >
> > We should guard the access to gd->arch.hob_list with #ifdef CONFIG_USE_HOB.
> >
> > > +#endif
> > >         ret = x86_cpu_reinit_f();
> > >
> > >         return ret;
> > > diff --git a/arch/x86/include/asm/handoff.h b/arch/x86/include/asm/handoff.h
> > > index 4d18d59efed..aec49b9b815 100644
> > > --- a/arch/x86/include/asm/handoff.h
> > > +++ b/arch/x86/include/asm/handoff.h
> > > @@ -9,7 +9,15 @@
> > >  #ifndef __x86_asm_handoff_h
> > >  #define __x86_asm_handoff_h
> > >
> > > +/**
> > > + * struct arch_spl_handoff - architecture-specific handoff info
> > > + *
> > > + * @usable_ram_top: Value returned by board_get_usable_ram_top() in SPL
> > > + * @hob_list: Start of FSP hand-off blocks (HOBs)
> > > + */
> > >  struct arch_spl_handoff {
> > > +       ulong usable_ram_top;
> > > +       void *hob_list;
> >
> > ditto
> >
> > >  };
> > >
> > >  #endif
> > > diff --git a/arch/x86/lib/fsp/fsp_dram.c b/arch/x86/lib/fsp/fsp_dram.c
> > > index 8fe1e0bf73d..38cc25839ec 100644
> > > --- a/arch/x86/lib/fsp/fsp_dram.c
> > > +++ b/arch/x86/lib/fsp/fsp_dram.c
> > > @@ -88,3 +88,13 @@ unsigned int install_e820_map(unsigned int max_entries,
> > >
> > >         return num_entries;
> > >  }
> > > +
> > > +#if CONFIG_IS_ENABLED(HANDOFF)
> > > +int handoff_arch_save(struct spl_handoff *ho)
> > > +{
> > > +       ho->arch.usable_ram_top = fsp_get_usable_lowmem_top(gd->arch.hob_list);
> > > +       ho->arch.hob_list = gd->arch.hob_list;
> >
> > ditto
> >
> > > +
> > > +       return 0;
> > > +}
> > > +#endif
> > > --
> >
>
> I will fix the above issues when applying.
>

Fixed the issues, and

> Reviewed-by: Bin Meng <bmeng.cn at gmail.com>

applied to u-boot-x86/next, thanks!


More information about the U-Boot mailing list