[PATCH 11/12] lib: sbi: Update sbi_{entry,init}_count() to take a hart index
Samuel Holland
samuel.holland at sifive.com
Fri Aug 30 08:49:15 PDT 2024
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>
---
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
More information about the opensbi
mailing list