summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnup Patel <[email protected]>2020-03-14 14:39:56 +0530
committerAnup Patel <[email protected]>2020-03-19 09:08:26 +0530
commit19bd531a15d396130056c4853af487e498152795 (patch)
tree4f02b4430379b6d54a08f269e33a05e7b46654da
parente23d3ba936698c52c83bbeed8d844fea22ae0859 (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.h4
-rw-r--r--lib/sbi/sbi_ecall_hsm.c2
-rw-r--r--lib/sbi/sbi_hsm.c11
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,