cactus: break the message loop on bad message request
When the FF-A direct message request is not received as expected
prefer breaking the message loop and panicing rather than replying
with the FF-A error ABI to the SPMC. It is improper to use this
latter ABI in context of Hafnium as this is treated as an invalid
SMC issued by the SP.
Signed-off-by: Olivier Deprez <olivier.deprez@arm.com>
Change-Id: I77cd0831a850e775f9996f4ecd1b5a81e6244a53
diff --git a/spm/cactus/cactus_main.c b/spm/cactus/cactus_main.c
index 737fd11..727ebcb 100644
--- a/spm/cactus/cactus_main.c
+++ b/spm/cactus/cactus_main.c
@@ -50,18 +50,21 @@
for (;;) {
if (ffa_ret.ret0 != FFA_MSG_SEND_DIRECT_REQ_SMC32) {
- ffa_ret = ffa_error(-1);
- continue;
+ ERROR("%s(%u) unknown func id 0x%lx\n",
+ __func__, vm_id, ffa_ret.ret0);
+ break;
}
if (ffa_ret.ret1 != vm_id) {
- ffa_ret = ffa_error(-2);
- continue;
+ ERROR("%s(%u) invalid vm id 0x%lx\n",
+ __func__, vm_id, ffa_ret.ret1);
+ break;
}
if (ffa_ret.ret2 != HYP_ID) {
- ffa_ret = ffa_error(-3);
- continue;
+ ERROR("%s(%u) invalid hyp id 0x%lx\n",
+ __func__, vm_id, ffa_ret.ret2);
+ break;
}
/*
@@ -76,6 +79,8 @@
*/
ffa_ret = ffa_msg_send_direct_resp(vm_id, HYP_ID, sp_response);
}
+
+ panic();
}
static const mmap_region_t cactus_mmap[] __attribute__((used)) = {