summaryrefslogtreecommitdiff
path: root/services/std_svc/spm/el3_spmc/spmc_shared_mem.c
diff options
context:
space:
mode:
Diffstat (limited to 'services/std_svc/spm/el3_spmc/spmc_shared_mem.c')
-rw-r--r--services/std_svc/spm/el3_spmc/spmc_shared_mem.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/services/std_svc/spm/el3_spmc/spmc_shared_mem.c b/services/std_svc/spm/el3_spmc/spmc_shared_mem.c
index 7b9a5265e..1602981bf 100644
--- a/services/std_svc/spm/el3_spmc/spmc_shared_mem.c
+++ b/services/std_svc/spm/el3_spmc/spmc_shared_mem.c
@@ -1031,6 +1031,12 @@ static long spmc_ffa_fill_desc(struct mailbox *mbox,
}
}
+ /* Allow for platform specific operations to be performed. */
+ ret = plat_spmc_shmem_begin(&obj->desc);
+ if (ret != 0) {
+ goto err_arg;
+ }
+
SMC_RET8(smc_handle, FFA_SUCCESS_SMC32, 0, handle_low, handle_high, 0,
0, 0, 0);
@@ -1788,6 +1794,13 @@ int spmc_ffa_mem_reclaim(uint32_t smc_fid,
ret = FFA_ERROR_DENIED;
goto err_unlock;
}
+
+ /* Allow for platform specific operations to be performed. */
+ ret = plat_spmc_shmem_reclaim(&obj->desc);
+ if (ret != 0) {
+ goto err_unlock;
+ }
+
spmc_shmem_obj_free(&spmc_shmem_obj_state, obj);
spin_unlock(&spmc_shmem_obj_state.lock);