lib: sbi_hsm: Ensure errors are consistent with spec
authorAndrew Jones <ajones@ventanamicro.com>
Mon, 27 Feb 2023 10:30:58 +0000 (11:30 +0100)
committerAnup Patel <anup@brainfault.org>
Mon, 27 Feb 2023 14:06:58 +0000 (19:36 +0530)
HSM functions define when SBI_ERR_INVALID_PARAM should be returned.
Ensure it's not used for reasons that don't meet the definitions by
using the catch-all code, SBI_ERR_FAILED, for those reasons instead.
Also, in one case sbi_hart_suspend() may have returned SBI_ERR_DENIED,
which isn't defined for that function at all. Use SBI_ERR_FAILED for
that case too.

Signed-off-by: Andrew Jones <ajones@ventanamicro.com>
Reviewed-by: Anup Patel <anup@brainfault.org>
lib/sbi/sbi_hsm.c

index 7ee4159256be4588c4476406e8d621f4304fdaef..3455520b8a942fbebc397697931da8f1acb7b15b 100644 (file)
@@ -402,7 +402,7 @@ int sbi_hsm_hart_suspend(struct sbi_scratch *scratch, u32 suspend_type,
 
        /* Sanity check on domain assigned to current HART */
        if (!dom)
-               return SBI_EINVAL;
+               return SBI_EFAIL;
 
        /* Sanity check on suspend type */
        if (SBI_HSM_SUSPEND_RET_DEFAULT < suspend_type &&
@@ -415,7 +415,7 @@ int sbi_hsm_hart_suspend(struct sbi_scratch *scratch, u32 suspend_type,
        /* Additional sanity check for non-retentive suspend */
        if (suspend_type & SBI_HSM_SUSP_NON_RET_BIT) {
                if (rmode != PRV_S && rmode != PRV_U)
-                       return SBI_EINVAL;
+                       return SBI_EFAIL;
                if (dom && !sbi_domain_check_addr(dom, raddr, rmode,
                                                  SBI_DOMAIN_EXECUTE))
                        return SBI_EINVALID_ADDR;
@@ -429,7 +429,7 @@ int sbi_hsm_hart_suspend(struct sbi_scratch *scratch, u32 suspend_type,
        /* Directly move from STARTED to SUSPENDED state */
        if (!__sbi_hsm_hart_change_state(hdata, SBI_HSM_STATE_STARTED,
                                         SBI_HSM_STATE_SUSPENDED))
-               return SBI_EDENIED;
+               return SBI_EFAIL;
 
        /* Save the suspend type */
        hdata->suspend_type = suspend_type;