diff options
| author | Anup Patel <[email protected]> | 2020-03-14 14:39:56 +0530 |
|---|---|---|
| committer | Anup Patel <[email protected]> | 2020-03-19 09:08:26 +0530 |
| commit | 19bd531a15d396130056c4853af487e498152795 (patch) | |
| tree | 4f02b4430379b6d54a08f269e33a05e7b46654da | |
| parent | e23d3ba936698c52c83bbeed8d844fea22ae0859 (diff) | |
lib: sbi_hsm: Simplify hart_get_state() and hart_started() APIs
We remove redundant scratch parameter from sbi_hsm_hart_get_state()
and sbi_hsm_hart_started() APIs.
Signed-off-by: Anup Patel <[email protected]>
Reviewed-by: Bin Meng <[email protected]>
Reviewed-by: Atish Patra <[email protected]>
| -rw-r--r-- | include/sbi/sbi_hsm.h | 4 | ||||
| -rw-r--r-- | lib/sbi/sbi_ecall_hsm.c | 2 | ||||
| -rw-r--r-- | lib/sbi/sbi_hsm.c | 11 |
3 files changed, 9 insertions, 8 deletions
diff --git a/include/sbi/sbi_hsm.h b/include/sbi/sbi_hsm.h index 227bb6b1..11ae3ac3 100644 --- a/include/sbi/sbi_hsm.h +++ b/include/sbi/sbi_hsm.h @@ -24,9 +24,9 @@ void __noreturn sbi_hsm_exit(struct sbi_scratch *scratch); int sbi_hsm_hart_start(struct sbi_scratch *scratch, u32 hartid, ulong saddr, ulong priv); int sbi_hsm_hart_stop(struct sbi_scratch *scratch, bool exitnow); -int sbi_hsm_hart_get_state(struct sbi_scratch *scratch, u32 hartid); +int sbi_hsm_hart_get_state(u32 hartid); int sbi_hsm_hart_state_to_status(int state); -bool sbi_hsm_hart_started(struct sbi_scratch *scratch, u32 hartid); +bool sbi_hsm_hart_started(u32 hartid); int sbi_hsm_hart_started_mask(struct sbi_scratch *scratch, ulong hbase, ulong *out_hmask); void sbi_hsm_prepare_next_jump(struct sbi_scratch *scratch, u32 hartid); diff --git a/lib/sbi/sbi_ecall_hsm.c b/lib/sbi/sbi_ecall_hsm.c index 528bc801..5b77726a 100644 --- a/lib/sbi/sbi_ecall_hsm.c +++ b/lib/sbi/sbi_ecall_hsm.c @@ -30,7 +30,7 @@ static int sbi_ecall_hsm_handler(struct sbi_scratch *scratch, ret = sbi_hsm_hart_stop(scratch, TRUE); break; case SBI_EXT_HSM_HART_GET_STATUS: - hstate = sbi_hsm_hart_get_state(scratch, args[0]); + hstate = sbi_hsm_hart_get_state(args[0]); ret = sbi_hsm_hart_state_to_status(hstate); break; default: diff --git a/lib/sbi/sbi_hsm.c b/lib/sbi/sbi_hsm.c index e8ca428e..b4034237 100644 --- a/lib/sbi/sbi_hsm.c +++ b/lib/sbi/sbi_hsm.c @@ -55,9 +55,10 @@ int sbi_hsm_hart_state_to_status(int state) return ret; } -int sbi_hsm_hart_get_state(struct sbi_scratch *scratch, u32 hartid) +int sbi_hsm_hart_get_state(u32 hartid) { struct sbi_hsm_data *hdata; + struct sbi_scratch *scratch; scratch = sbi_hartid_to_scratch(hartid); hdata = sbi_scratch_offset_ptr(scratch, hart_data_offset); @@ -65,9 +66,9 @@ int sbi_hsm_hart_get_state(struct sbi_scratch *scratch, u32 hartid) return atomic_read(&hdata->state); } -bool sbi_hsm_hart_started(struct sbi_scratch *scratch, u32 hartid) +bool sbi_hsm_hart_started(u32 hartid) { - if (sbi_hsm_hart_get_state(scratch, hartid) == SBI_HART_STARTED) + if (sbi_hsm_hart_get_state(hartid) == SBI_HART_STARTED) return TRUE; else return FALSE; @@ -104,7 +105,7 @@ int sbi_hsm_hart_started_mask(struct sbi_scratch *scratch, hcount = BITS_PER_LONG; for (i = hbase; i < hcount; i++) { - if (sbi_hsm_hart_get_state(scratch, i) == SBI_HART_STARTED) + if (sbi_hsm_hart_get_state(i) == SBI_HART_STARTED) *out_hmask |= 1UL << (i - hbase); } @@ -262,7 +263,7 @@ int sbi_hsm_hart_stop(struct sbi_scratch *scratch, bool exitnow) hart_data_offset); if (sbi_platform_hart_disabled(plat, hartid) || - !sbi_hsm_hart_started(scratch, hartid)) + !sbi_hsm_hart_started(hartid)) return SBI_EINVAL; oldstate = arch_atomic_cmpxchg(&hdata->state, SBI_HART_STARTED, |
