feat(interrupts): support Other S-Int action field
Secure partitions can request SPMC to queue secure interrupts that
are targetted for other SPs through a new field. This patch adds
support for SPs to specify the field `other-s-interrupts-action` in
their manifest.
Change-Id: I6c68b1b7216c5121d3d8e522ede94a9c291c3403
Signed-off-by: Madhukar Pappireddy <madhukar.pappireddy@arm.com>
diff --git a/inc/hf/manifest.h b/inc/hf/manifest.h
index 3f4cd3e..fb8bfc0 100644
--- a/inc/hf/manifest.h
+++ b/inc/hf/manifest.h
@@ -159,8 +159,6 @@
bool notification_support;
/** optional */
bool has_primary_scheduler;
- /** optional - preemptible / run to completion */
- uint8_t runtime_model;
/** optional - tuples SEPID/SMMUID/streamId */
uint32_t stream_ep_ids[1];
@@ -170,6 +168,8 @@
/** Device regions */
uint16_t dev_region_count;
struct device_region dev_regions[PARTITION_MAX_DEVICE_REGIONS];
+ /** optional - action in response to Other-Secure interrupt */
+ uint8_t other_s_interrupts_action;
};
/**
@@ -232,8 +232,9 @@
MANIFEST_ERROR_MEM_REGION_OVERLAP,
MANIFEST_ERROR_INVALID_MEM_PERM,
MANIFEST_ERROR_INTERRUPT_ID_REPEATED,
- MANIFEST_ILLEGAL_NS_ACTION,
+ MANIFEST_ERROR_ILLEGAL_NS_INT_ACTION,
MANIFEST_ERROR_INTERRUPT_ID_NOT_IN_LIST,
+ MANIFEST_ERROR_ILLEGAL_OTHER_S_INT_ACTION,
};
enum manifest_return_code manifest_init(struct mm_stage1_locked stage1_locked,
diff --git a/inc/hf/vm.h b/inc/hf/vm.h
index 6dd1584..fbb2946 100644
--- a/inc/hf/vm.h
+++ b/inc/hf/vm.h
@@ -24,6 +24,10 @@
#define LOG_BUFFER_SIZE 256
#define VM_MANIFEST_MAX_INTERRUPTS 32
+/** Action for Other-Secure interrupts by SPMC. */
+#define OTHER_S_INT_ACTION_QUEUED 0
+#define OTHER_S_INT_ACTION_SIGNALED 1
+
/**
* The state of an RX buffer.
*
@@ -225,6 +229,12 @@
* non secure interrupt.
*/
uint8_t ns_interrupts_action;
+
+ /**
+ * Action specified by a Partition through the manifest in response to
+ * Other-S-Int.
+ */
+ uint8_t other_s_interrupts_action;
bool me_signal_virq;
struct vm *next_boot;