diff options
author | Soby Mathew <soby.mathew@arm.com> | 2023-10-31 12:14:06 +0100 |
---|---|---|
committer | TrustedFirmware Code Review <review@review.trustedfirmware.org> | 2023-10-31 12:14:06 +0100 |
commit | 7bf18514cdd88c19732b0b1ec048b8e28ee89ee3 (patch) | |
tree | 974e25b3df7824314d8180db00da82a8e7abc8f1 | |
parent | 83d304d99dad47a156e469eeac007a17c118f898 (diff) | |
parent | ade6000ff0b3aa41d581d5738ce42f5ea4d3b77d (diff) |
Merge "feat(rmm): update RMI VERSION command as per EAC5" into integration
-rw-r--r-- | include/services/rmmd_svc.h | 4 | ||||
-rw-r--r-- | services/std_svc/rmmd/trp/trp_main.c | 13 |
2 files changed, 14 insertions, 3 deletions
diff --git a/include/services/rmmd_svc.h b/include/services/rmmd_svc.h index 55d778e43..a567d2855 100644 --- a/include/services/rmmd_svc.h +++ b/include/services/rmmd_svc.h @@ -91,6 +91,10 @@ #define E_RMM_NOMEM -4 #define E_RMM_INVAL -5 +/* Return error codes from RMI SMCs */ +#define RMI_SUCCESS 0 +#define RMI_ERROR_INPUT 1 + /* Acceptable SHA sizes for Challenge object */ #define SHA256_DIGEST_SIZE 32U #define SHA384_DIGEST_SIZE 48U diff --git a/services/std_svc/rmmd/trp/trp_main.c b/services/std_svc/rmmd/trp/trp_main.c index 4eb3e1266..33f2fb088 100644 --- a/services/std_svc/rmmd/trp/trp_main.c +++ b/services/std_svc/rmmd/trp/trp_main.c @@ -106,11 +106,18 @@ void trp_main(void) /******************************************************************************* * Returning RMI version back to Normal World ******************************************************************************/ -static void trp_ret_rmi_version(struct trp_smc_result *smc_ret) +static void trp_ret_rmi_version(unsigned long long rmi_version, + struct trp_smc_result *smc_ret) { + if (rmi_version != RMI_ABI_VERSION) { + smc_ret->x[0] = RMI_ERROR_INPUT; + } else { + smc_ret->x[0] = RMI_SUCCESS; + } VERBOSE("RMM version is %u.%u\n", RMI_ABI_VERSION_MAJOR, RMI_ABI_VERSION_MINOR); - smc_ret->x[0] = RMI_ABI_VERSION; + smc_ret->x[1] = RMI_ABI_VERSION; + smc_ret->x[2] = RMI_ABI_VERSION; } /******************************************************************************* @@ -163,7 +170,7 @@ void trp_rmi_handler(unsigned long fid, switch (fid) { case RMI_RMM_REQ_VERSION: - trp_ret_rmi_version(smc_ret); + trp_ret_rmi_version(x1, smc_ret); break; case RMI_RMM_GRANULE_DELEGATE: trp_asc_mark_realm(x1, smc_ret); |