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

Jessica Clarke jrtc27 at jrtc27.com
Tue Apr 4 10:20:19 PDT 2023


On 7 Jan 2023, at 10:31, Anup Patel <anup at brainfault.org> wrote:
> 
> On Thu, Dec 29, 2022 at 8:27 AM 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>
> 
> Applied this patch to the riscv/opensbi repo

So, no attempt to engage with my objections to the concept as a whole
in past patches? Instead you just steamrolled it through over the
holiday period. I didn’t even notice this had been re-posted until now.

Jess

> Thanks,
> Anup
> 
>> ---
>> 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..bd0d5ca 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
>> + */
>> +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..d45cee6 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
>> --
>> 2.25.1
>> 
>> 
>> --
>> opensbi mailing list
>> opensbi at lists.infradead.org
>> http://lists.infradead.org/mailman/listinfo/opensbi
> 
> -- 
> opensbi mailing list
> opensbi at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/opensbi




More information about the opensbi mailing list