FF-A: Direct Messaging from VMs to SPs
Hypervisor forward direct request from a VM, to the SWd if receiver is
an SP.
Change-Id: Id2a2142ddc8c13c8e371347308c78c8a1ebc0b4a
Signed-off-by: J-Alves <joao.alves@arm.com>
diff --git a/src/api.c b/src/api.c
index 70df9f7..9510042 100644
--- a/src/api.c
+++ b/src/api.c
@@ -1757,7 +1757,7 @@
struct vcpu *current,
struct vcpu **next)
{
- struct ffa_value ret = (struct ffa_value){.func = FFA_INTERRUPT_32};
+ struct ffa_value ret;
struct vm *receiver_vm;
struct vcpu *receiver_vcpu;
struct two_vcpu_locked vcpus_locked;
@@ -1771,6 +1771,13 @@
return ffa_error(FFA_INVALID_PARAMETERS);
}
+ if (arch_other_world_direct_request_forward(receiver_vm_id, args,
+ &ret)) {
+ return ret;
+ }
+
+ ret = (struct ffa_value){.func = FFA_INTERRUPT_32};
+
receiver_vm = vm_find(receiver_vm_id);
if (receiver_vm == NULL) {
return ffa_error(FFA_INVALID_PARAMETERS);