feat(ff-a): Implement FFA_MEM_PERM_GET/SET
This patch implements the new ABI from the FF-A v1.1 Beta0 spec. These
ABIs are expected to be used by S-EL0 use cases such as StandaloneMM or
other S-EL0 applications such as trusted firmware services or any other
S-EL0 FF-A partition.
Signed-off-by: Raghu Krishnamurthy <raghu.ncstate@gmail.com>
Change-Id: I6a57420ce5821993671362280a66c5c4f190ffbc
diff --git a/inc/hf/addr.h b/inc/hf/addr.h
index 1f1e2bf..a2d2080 100644
--- a/inc/hf/addr.h
+++ b/inc/hf/addr.h
@@ -168,3 +168,11 @@
{
return (void *)va_addr(va);
}
+
+/**
+ * Advances a virtual address.
+ */
+static inline vaddr_t va_add(vaddr_t va, size_t n)
+{
+ return va_init(va_addr(va) + n);
+}
diff --git a/inc/hf/api.h b/inc/hf/api.h
index 46bd8f9..cbc521e 100644
--- a/inc/hf/api.h
+++ b/inc/hf/api.h
@@ -116,3 +116,7 @@
struct vcpu *current);
struct ffa_value api_ffa_notification_info_get(struct vcpu *current);
+
+struct ffa_value api_ffa_mem_perm_get(vaddr_t base_addr, struct vcpu *current);
+struct ffa_value api_ffa_mem_perm_set(vaddr_t base_addr, uint32_t page_count,
+ uint32_t mem_perm, struct vcpu *current);
diff --git a/inc/hf/arch/plat/ffa.h b/inc/hf/arch/plat/ffa.h
index 1dcb050..2cd51e6 100644
--- a/inc/hf/arch/plat/ffa.h
+++ b/inc/hf/arch/plat/ffa.h
@@ -133,3 +133,6 @@
uint32_t *lists_sizes,
uint32_t *lists_count,
const uint32_t ids_count_max);
+
+bool plat_ffa_is_mem_perm_get_valid(const struct vcpu *current);
+bool plat_ffa_is_mem_perm_set_valid(const struct vcpu *current);