lib: sbi: Update sbi_{entry,init}_count() to take a hart index

All callers already have the hartindex available, so this removes a
hartid to hartindex conversion.

Signed-off-by: Samuel Holland <samuel.holland@sifive.com>
Reviewed-by: Anup Patel <anup@brainfault.org>
This commit is contained in:
Samuel Holland
2024-08-30 08:49:15 -07:00
committed by Anup Patel
parent 9f86524b58
commit 3962be84d4
4 changed files with 12 additions and 10 deletions

View File

@@ -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);

View File

@@ -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;

View File

@@ -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;

View File

@@ -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);