[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