feat(spmc): support for el3 direct messaging
This patch makes changes required to support el3 direct messaging from
an el3 spmd logical partition. It adds the logical partition
identifiers that are a reserved range as defined in the patch. The patch
also changes the checks for valid direct requests and responses to be
accepted or targeted to the spmd logical partition. When a direct
request is received from an spmd logical partition, the target secure
partition is put in spmc scheduled mode with all interrupts masked. When
a direct response is targeted to an spmd logical partition, the spmc
switches back to el3.
Signed-off-by: Raghu Krishnamurthy <raghu.ncstate@gmail.com>
Change-Id: I11a6ac1021e3e8913afc0f64cbbe89742b73fe73
diff --git a/src/arch/fake/hypervisor/ffa.c b/src/arch/fake/hypervisor/ffa.c
index 1dae16f..efcdd49 100644
--- a/src/arch/fake/hypervisor/ffa.c
+++ b/src/arch/fake/hypervisor/ffa.c
@@ -455,11 +455,12 @@
void plat_ffa_wind_call_chain_ffa_direct_req(
struct vcpu_locked current_locked,
- struct vcpu_locked receiver_vcpu_locked)
+ struct vcpu_locked receiver_vcpu_locked, ffa_vm_id_t sender_vm_id)
{
/* Calls chains not supported in the Hypervisor/VMs. */
(void)current_locked;
(void)receiver_vcpu_locked;
+ (void)sender_vm_id;
}
void plat_ffa_unwind_call_chain_ffa_direct_resp(
@@ -470,6 +471,12 @@
(void)next_locked;
}
+bool plat_ffa_is_spmd_lp_id(ffa_vm_id_t vm_id)
+{
+ (void)vm_id;
+ return false;
+}
+
bool plat_ffa_intercept_direct_response(struct vcpu_locked current_locked,
struct vcpu **next,
struct ffa_value to_ret,