[PATCH v5 1/4] lib: sbi: Allow platform to influence cold boot HART selection

WeiLiang Lim weiliang.lim at starfivetech.com
Thu Dec 22 02:49:43 PST 2022



> -----Original Message-----
> From: Bin Meng <bmeng.cn at gmail.com>
> Sent: Thursday, December 22, 2022 5:22 PM
> To: WeiLiang Lim <weiliang.lim at starfivetech.com>
> Cc: opensbi at lists.infradead.org; apatel at ventanamicro.com; Cheehong Ang
> <cheehong.ang at starfivetech.com>; JunLiang Tan
> <junliang.tan at starfivetech.com>
> Subject: Re: [PATCH v5 1/4] lib: sbi: Allow platform to influence cold boot
> HART selection
> 
> On Thu, Dec 22, 2022 at 4:48 PM Wei Liang Lim
> <weiliang.lim at starfivetech.com> wrote:
> >
> > From: Anup Patel <apatel at ventanamicro.com>
> >
> > We add an optional cold_boot_allowed() platform callback which allows
> > platform support to decide which HARTs can do cold boot initialization.
> >
> > If this platform callback is not available then any HART can do cold
> > boot initialization.
> >
> > Signed-off-by: Anup Patel <apatel at ventanamicro.com>
> > ---
> >  include/sbi/sbi_platform.h | 20 ++++++++++++++++++++
> >  lib/sbi/sbi_init.c         |  7 +++++--
> >  2 files changed, 25 insertions(+), 2 deletions(-)
> >
> > diff --git a/include/sbi/sbi_platform.h b/include/sbi/sbi_platform.h
> > index 722f27a..566eee3 100644
> > --- a/include/sbi/sbi_platform.h
> > +++ b/include/sbi/sbi_platform.h
> > @@ -65,6 +65,9 @@ enum sbi_platform_features {
> >
> >  /** Platform functions */
> >  struct sbi_platform_operations {
> > +       /* Check if specified HART is allowed to do cold boot */
> > +       bool (*cold_boot_allowed)(u32 hartid);
> > +
> >         /* Platform nascent initialization */
> >         int (*nascent_init)(void);
> >
> > @@ -356,6 +359,23 @@ static inline bool sbi_platform_hart_invalid(const
> struct sbi_platform *plat,
> >         return FALSE;
> >  }
> >
> > +/**
> > + * Check whether given HART is allowed to do cold boot
> > + *
> > + * @param plat pointer to struct sbi_platform
> > + * @param hartid HART ID
> > + *
> > + * @return TRUE if HART is allowed to do cold boot and FALSE
> > +otherwise
> 
> Previous comments were not addressed.
> 
> s/TRUE/true/g
> s/FALSE/false/g

Should this changes applied to this patch alone or all the patches?

> 
> Please also include a changelog when you send a new version.
> 
> The tags (RB, TB, etc) should be carried forward if there are no significant
> changes.
> 
> > + */
> > +static inline bool sbi_platform_cold_boot_allowed(
> > +                                       const struct sbi_platform *plat,
> > +                                       u32 hartid) {
> > +       if (plat && sbi_platform_ops(plat)->cold_boot_allowed)
> > +               return sbi_platform_ops(plat)->cold_boot_allowed(hartid);
> > +       return TRUE;
> > +}
> > +
> >  /**
> >   * Nascent (very early) initialization for current HART
> >   *
> > diff --git a/lib/sbi/sbi_init.c b/lib/sbi/sbi_init.c index
> > a8500e5..d4902d9 100644
> > --- a/lib/sbi/sbi_init.c
> > +++ b/lib/sbi/sbi_init.c
> > @@ -498,8 +498,11 @@ void __noreturn sbi_init(struct sbi_scratch
> *scratch)
> >          * HARTs which satisfy above condition.
> >          */
> >
> > -       if (next_mode_supported && atomic_xchg(&coldboot_lottery, 1) == 0)
> > -               coldboot = TRUE;
> > +       if (sbi_platform_cold_boot_allowed(plat, hartid)) {
> > +               if (next_mode_supported &&
> > +                   atomic_xchg(&coldboot_lottery, 1) == 0)
> > +                       coldboot = TRUE;
> > +       }
> >
> >         /*
> >          * Do platform specific nascent (very early) initialization so
> > --
> 
> Regards,
> Bin


More information about the opensbi mailing list