[PATCH 11/12] lib: sbi: Update sbi_{entry,init}_count() to take a hart index

Anup Patel anup at brainfault.org
Thu Sep 26 05:54:41 PDT 2024


On Fri, Aug 30, 2024 at 10:31 PM Samuel Holland
<samuel.holland at sifive.com> wrote:
>
> All callers already have the hartindex available, so this removes a
> hartid to hartindex conversion.
>
> Signed-off-by: Samuel Holland <samuel.holland at sifive.com>

LGTM.

Reviewed-by: Anup Patel <anup at brainfault.org>

Applied this patch to the riscv/opensbi repo.

Thanks,
Anup

> ---
>
>  include/sbi/sbi_init.h         | 4 ++--
>  lib/sbi/sbi_hsm.c              | 4 ++--
>  lib/sbi/sbi_init.c             | 8 ++++----
>  platform/generic/andes/ae350.c | 6 ++++--
>  4 files changed, 12 insertions(+), 10 deletions(-)
>
> diff --git a/include/sbi/sbi_init.h b/include/sbi/sbi_init.h
> index 9640fee9..c9013ea4 100644
> --- a/include/sbi/sbi_init.h
> +++ b/include/sbi/sbi_init.h
> @@ -16,9 +16,9 @@ struct sbi_scratch;
>
>  void __noreturn sbi_init(struct sbi_scratch *scratch);
>
> -unsigned long sbi_entry_count(u32 hartid);
> +unsigned long sbi_entry_count(u32 hartindex);
>
> -unsigned long sbi_init_count(u32 hartid);
> +unsigned long sbi_init_count(u32 hartindex);
>
>  void __noreturn sbi_exit(struct sbi_scratch *scratch);
>
> diff --git a/lib/sbi/sbi_hsm.c b/lib/sbi/sbi_hsm.c
> index e7e31ad5..5679819c 100644
> --- a/lib/sbi/sbi_hsm.c
> +++ b/lib/sbi/sbi_hsm.c
> @@ -324,8 +324,8 @@ int sbi_hsm_hart_start(struct sbi_scratch *scratch,
>         if (!hsm_start_ticket_acquire(hdata))
>                 return SBI_EINVAL;
>
> -       init_count = sbi_init_count(hartid);
> -       entry_count = sbi_entry_count(hartid);
> +       init_count = sbi_init_count(hartindex);
> +       entry_count = sbi_entry_count(hartindex);
>
>         rscratch->next_arg1 = arg1;
>         rscratch->next_addr = saddr;
> diff --git a/lib/sbi/sbi_init.c b/lib/sbi/sbi_init.c
> index 7443010e..18d33088 100644
> --- a/lib/sbi/sbi_init.c
> +++ b/lib/sbi/sbi_init.c
> @@ -551,7 +551,7 @@ void __noreturn sbi_init(struct sbi_scratch *scratch)
>                 init_warmboot(scratch, hartid);
>  }
>
> -unsigned long sbi_entry_count(u32 hartid)
> +unsigned long sbi_entry_count(u32 hartindex)
>  {
>         struct sbi_scratch *scratch;
>         unsigned long *entry_count;
> @@ -559,7 +559,7 @@ unsigned long sbi_entry_count(u32 hartid)
>         if (!entry_count_offset)
>                 return 0;
>
> -       scratch = sbi_hartid_to_scratch(hartid);
> +       scratch = sbi_hartindex_to_scratch(hartindex);
>         if (!scratch)
>                 return 0;
>
> @@ -568,7 +568,7 @@ unsigned long sbi_entry_count(u32 hartid)
>         return *entry_count;
>  }
>
> -unsigned long sbi_init_count(u32 hartid)
> +unsigned long sbi_init_count(u32 hartindex)
>  {
>         struct sbi_scratch *scratch;
>         unsigned long *init_count;
> @@ -576,7 +576,7 @@ unsigned long sbi_init_count(u32 hartid)
>         if (!init_count_offset)
>                 return 0;
>
> -       scratch = sbi_hartid_to_scratch(hartid);
> +       scratch = sbi_hartindex_to_scratch(hartindex);
>         if (!scratch)
>                 return 0;
>
> diff --git a/platform/generic/andes/ae350.c b/platform/generic/andes/ae350.c
> index 3ad6c856..0da3ae51 100644
> --- a/platform/generic/andes/ae350.c
> +++ b/platform/generic/andes/ae350.c
> @@ -27,13 +27,15 @@ extern void __ae350_disable_coherency(void);
>
>  static int ae350_hart_start(u32 hartid, ulong saddr)
>  {
> +       u32 hartindex = sbi_hartid_to_hartindex(hartid);
> +
>         /*
>          * Don't send wakeup command when:
>          * 1) boot-time
>          * 2) the target hart is non-sleepable 25-series hart0
>          */
> -       if (!sbi_init_count(hartid) || (is_andes(25) && hartid == 0))
> -               return sbi_ipi_raw_send(sbi_hartid_to_hartindex(hartid));
> +       if (!sbi_init_count(hartindex) || (is_andes(25) && hartid == 0))
> +               return sbi_ipi_raw_send(hartindex);
>
>         /* Write wakeup command to the sleep hart */
>         smu_set_command(&smu, WAKEUP_CMD, hartid);
> --
> 2.45.1
>
>
> --
> opensbi mailing list
> opensbi at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/opensbi



More information about the opensbi mailing list