feat(notifications): bitmaps create and destroy
Handle FF-A calls FFA_NOTIFICATION_BITMAP_CREATE and
FFA_NOTIFICATION_BITMAP_DESTROY.
Interfaces are to be used by the NWd (Hypervisor or single OS kernel).
Change-Id: I0d805875ae6c7f8c080bda04e9e496d9e0d79b00
Signed-off-by: J-Alves <joao.alves@arm.com>
diff --git a/src/api.c b/src/api.c
index 369e40b..94cd8a6 100644
--- a/src/api.c
+++ b/src/api.c
@@ -2550,3 +2550,31 @@
return (struct ffa_value){.func = FFA_SUCCESS_32};
}
+
+struct ffa_value api_ffa_notification_bitmap_create(ffa_vm_id_t vm_id,
+ ffa_vcpu_count_t vcpu_count,
+ struct vcpu *current)
+{
+ if (!plat_ffa_is_notifications_create_valid(current, vm_id)) {
+ dlog_verbose("Bitmap create for NWd VM IDs only (%x).\n",
+ vm_id);
+ return ffa_error(FFA_NOT_SUPPORTED);
+ }
+
+ return plat_ffa_notifications_bitmap_create(vm_id, vcpu_count);
+}
+
+struct ffa_value api_ffa_notification_bitmap_destroy(ffa_vm_id_t vm_id,
+ struct vcpu *current)
+{
+ /*
+ * Validity of use of this interface is the same as for bitmap create.
+ */
+ if (!plat_ffa_is_notifications_create_valid(current, vm_id)) {
+ dlog_verbose("Bitmap destroy for NWd VM IDs only (%x).\n",
+ vm_id);
+ return ffa_error(FFA_NOT_SUPPORTED);
+ }
+
+ return plat_ffa_notifications_bitmap_destroy(vm_id);
+}