feat(rmm): add check for ripas = RAM
Adds check in data_create() for
walk.entry.ripas == RAM
as per RMM Specification 1.0-eac1.
Signed-off-by: AlexeiFedorov <Alexei.Fedorov@arm.com>
Change-Id: Ie386561a1864f5d2901cef27174da369fcd23d45
diff --git a/runtime/rmi/rtt.c b/runtime/rmi/rtt.c
index d9c3791..5c4d134 100644
--- a/runtime/rmi/rtt.c
+++ b/runtime/rmi/rtt.c
@@ -844,7 +844,6 @@
struct rd *rd;
struct rtt_walk wi;
unsigned long s2tte, *s2tt;
- enum ripas ripas_val;
enum granule_state new_data_state = GRANULE_STATE_DELEGATED;
unsigned long ipa_bits;
unsigned long ret;
@@ -883,17 +882,11 @@
s2tt = granule_map(wi.g_llt, SLOT_RTT);
s2tte = s2tte_read(&s2tt[wi.index]);
- if (s2tte_is_unassigned_empty(s2tte)) {
- ripas_val = RIPAS_EMPTY;
- } else if (s2tte_is_unassigned_ram(s2tte)) {
- ripas_val = RIPAS_RAM;
- } else {
+ if (!s2tte_is_unassigned_ram(s2tte)) {
ret = pack_return_code(RMI_ERROR_RTT, RTT_PAGE_LEVEL);
goto out_unmap_ll_table;
}
- ripas_val = s2tte_get_ripas(s2tte);
-
if (g_src != NULL) {
bool ns_access_ok;
void *data = granule_map(g_data, SLOT_DELEGATED);
@@ -920,9 +913,7 @@
new_data_state = GRANULE_STATE_DATA;
- s2tte = (ripas_val == RIPAS_EMPTY) ?
- s2tte_create_assigned_empty(data_addr, RTT_PAGE_LEVEL) :
- s2tte_create_assigned_ram(data_addr, RTT_PAGE_LEVEL);
+ s2tte = s2tte_create_assigned_ram(data_addr, RTT_PAGE_LEVEL);
s2tte_write(&s2tt[wi.index], s2tte);
__granule_get(wi.g_llt);