feat(rmm): modify rmi_realm_params structure
This patch modifies rmi_realm_params structure
according to definition of 'RmiRealmParams' in
RMM Specification 1.0-eac1.
Signed-off-by: AlexeiFedorov <Alexei.Fedorov@arm.com>
Change-Id: I4e15202603c7b2e3ae8c0aea42292808b3999f8a
diff --git a/lib/smc/include/smc-rmi.h b/lib/smc/include/smc-rmi.h
index 8ddeb3d..b1f5143 100644
--- a/lib/smc/include/smc-rmi.h
+++ b/lib/smc/include/smc-rmi.h
@@ -138,25 +138,30 @@
#define RMM_FEATURE_REGISTER_0_LPA2_SHIFT UL(8)
#define RMM_FEATURE_REGISTER_0_LPA2_WIDTH UL(1)
-#define RMI_NO_LPA2 UL(0)
-#define RMI_LPA2 UL(1)
-#define RMM_FEATURE_REGISTER_0_HASH_SHA_256_SHIFT UL(28)
-#define RMM_FEATURE_REGISTER_0_HASH_SHA_256_WIDTH UL(1)
+#define RMM_FEATURE_REGISTER_0_SVE_EN_SHIFT UL(9)
+#define RMM_FEATURE_REGISTER_0_SVE_EN_WIDTH UL(1)
-#define RMM_FEATURE_REGISTER_0_HASH_SHA_512_SHIFT UL(29)
-#define RMM_FEATURE_REGISTER_0_HASH_SHA_512_WIDTH UL(1)
+#define RMM_FEATURE_REGISTER_0_SVE_VL_SHIFT UL(10)
+#define RMM_FEATURE_REGISTER_0_SVE_VL_WIDTH UL(4)
-#define RMM_FEATURE_REGISTER_0_PMU_EN_SHIFT UL(22)
-#define RMM_FEATURE_REGISTER_0_PMU_EN_WIDTH UL(1)
+#define RMM_FEATURE_REGISTER_0_NUM_BPS_SHIFT UL(14)
+#define RMM_FEATURE_REGISTER_0_NUM_BPS_WIDTH UL(4)
+
+#define RMM_FEATURE_REGISTER_0_NUM_WPS_SHIFT UL(18)
+#define RMM_FEATURE_REGISTER_0_NUM_WPS_WIDTH UL(4)
+
+#define RMM_FEATURE_REGISTER_0_PMU_EN_SHIFT UL(22)
+#define RMM_FEATURE_REGISTER_0_PMU_EN_WIDTH UL(1)
#define RMM_FEATURE_REGISTER_0_PMU_NUM_CTRS_SHIFT UL(23)
#define RMM_FEATURE_REGISTER_0_PMU_NUM_CTRS_WIDTH UL(5)
-#define RMM_FEATURE_REGISTER_0_SVE_EN_SHIFT UL(9)
-#define RMM_FEATURE_REGISTER_0_SVE_EN_WIDTH UL(1)
-#define RMM_FEATURE_REGISTER_0_SVE_VL_SHIFT UL(10)
-#define RMM_FEATURE_REGISTER_0_SVE_VL_WIDTH UL(4)
+#define RMM_FEATURE_REGISTER_0_HASH_SHA_256_SHIFT UL(28)
+#define RMM_FEATURE_REGISTER_0_HASH_SHA_256_WIDTH UL(1)
+
+#define RMM_FEATURE_REGISTER_0_HASH_SHA_512_SHIFT UL(29)
+#define RMM_FEATURE_REGISTER_0_HASH_SHA_512_WIDTH UL(1)
/* The RmmRipas enumeration representing realm IPA state */
#define RMI_EMPTY (0)
@@ -320,6 +325,16 @@
/* Size of Realm Personalization Value */
#define RPV_SIZE 64
+/* RmiRealmFlags format */
+#define RMI_REALM_FLAGS_LPA2_SHIFT UL(0)
+#define RMI_REALM_FLAGS_LPA2_WIDTH UL(1)
+
+#define RMI_REALM_FLAGS_SVE_SHIFT UL(1)
+#define RMI_REALM_FLAGS_SVE_WIDTH UL(1)
+
+#define RMI_REALM_FLAGS_PMU_SHIFT UL(2)
+#define RMI_REALM_FLAGS_PMU_WIDTH UL(1)
+
#ifndef __ASSEMBLER__
/*
* Defines member of structure and reserves space
@@ -333,12 +348,22 @@
* either by the Host or by the Realm.
*/
struct rmi_realm_params {
- /* Realm feature register 0 */
- SET_MEMBER_RMI(unsigned long features_0, 0, 0x100); /* Offset 0 */
+ /* Flags */
+ SET_MEMBER_RMI(unsigned long flags, 0, 0x8); /* Offset 0 */
+ /* Requested IPA width */
+ SET_MEMBER_RMI(unsigned int s2sz, 0x8, 0x10); /* 0x8 */
+ /* Requested SVE vector length */
+ SET_MEMBER_RMI(unsigned int sve_vl, 0x10, 0x18); /* 0x10 */
+ /* Requested number of breakpoints */
+ SET_MEMBER_RMI(unsigned int num_bps, 0x18, 0x20); /* 0x18 */
+ /* Requested number of watchpoints */
+ SET_MEMBER_RMI(unsigned int num_wps, 0x20, 0x28); /* 0x20 */
+ /* Requested number of PMU counters */
+ SET_MEMBER_RMI(unsigned int pmu_num_ctrs, 0x28, 0x30); /* 0x28 */
/* Measurement algorithm */
- SET_MEMBER_RMI(unsigned char hash_algo, 0x100, 0x400); /* 0x100 */
+ SET_MEMBER_RMI(unsigned char hash_algo, 0x30, 0x400); /* 0x30 */
/* Realm Personalization Value */
- SET_MEMBER_RMI(unsigned char rpv[RPV_SIZE], 0x400, 0x800); /* 0x400 */
+ SET_MEMBER_RMI(unsigned char rpv[RPV_SIZE], 0x400, 0x800); /* 0x400 */
SET_MEMBER_RMI(struct {
/* Virtual Machine Identifier */
unsigned short vmid; /* 0x800 */