feat(notifications): info get framework notifications
Include framework in the processing of FFA_NOTIFICATION_INFO_GET:
- Hypervisor only cares about notifications targeting VMs.
- SPMC retrieves information of notifications targeting SPs and VMs.
Change-Id: I6ea4a5cf1c14437e01666426c293e20c2f028110
Signed-off-by: J-Alves <joao.alves@arm.com>
diff --git a/src/vm_test.cc b/src/vm_test.cc
index cffe5e6..e7934f8 100644
--- a/src/vm_test.cc
+++ b/src/vm_test.cc
@@ -688,4 +688,29 @@
vm_unlock(¤t_vm_locked);
}
+TEST_F(vm, vm_notifications_info_get_from_framework)
+{
+ struct vm_locked vm_locked = vm_lock(vm_find_index(0));
+ uint16_t ids[FFA_NOTIFICATIONS_INFO_GET_MAX_IDS] = {0};
+ uint32_t ids_count = 0;
+ uint32_t lists_sizes[FFA_NOTIFICATIONS_INFO_GET_MAX_IDS] = {0};
+ uint32_t lists_count = 0;
+
+ vm_notifications_framework_set_pending(vm_locked, 0x1U);
+
+ /* Get notifications info for the given notifications. */
+ vm_notifications_info_get(vm_locked, ids, &ids_count, lists_sizes,
+ &lists_count,
+ FFA_NOTIFICATIONS_INFO_GET_MAX_IDS);
+
+ EXPECT_EQ(ids[0], vm_locked.vm->id);
+ EXPECT_EQ(ids_count, 1);
+ EXPECT_EQ(lists_sizes[0], 0);
+ EXPECT_EQ(lists_count, 1);
+
+ EXPECT_EQ(vm_notifications_framework_get_pending(vm_locked), 0x1U);
+
+ vm_unlock(&vm_locked);
+}
+
} /* namespace */