lib: sbi_hsm: Simplify hart_get_state() and hart_started() APIs
authorAnup Patel <anup.patel@wdc.com>
Sat, 14 Mar 2020 09:09:56 +0000 (14:39 +0530)
committerAnup Patel <anup@brainfault.org>
Thu, 19 Mar 2020 03:38:26 +0000 (09:08 +0530)
We remove redundant scratch parameter from sbi_hsm_hart_get_state()
and sbi_hsm_hart_started() APIs.

Signed-off-by: Anup Patel <anup.patel@wdc.com>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Reviewed-by: Atish Patra <atish.patra@wdc.com>
include/sbi/sbi_hsm.h
lib/sbi/sbi_ecall_hsm.c
lib/sbi/sbi_hsm.c

index 227bb6b..11ae3ac 100644 (file)
@@ -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);
index 528bc80..5b77726 100644 (file)
@@ -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:
index e8ca428..b403423 100644 (file)
@@ -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,