Merge "test(trp): test el3-rmm ide km interface"
diff --git a/tftf/tests/runtime_services/host_realm_managment/host_rmi_pdev.c b/tftf/tests/runtime_services/host_realm_managment/host_rmi_pdev.c
index defcc00..572bc2a 100644
--- a/tftf/tests/runtime_services/host_realm_managment/host_rmi_pdev.c
+++ b/tftf/tests/runtime_services/host_realm_managment/host_rmi_pdev.c
@@ -615,3 +615,41 @@
return TEST_RESULT_SUCCESS;
}
+
+
+/*
+ * This function invokes PDEV_CREATE on TRP and tries to test
+ * the EL3 RMM-EL3 IDE KM interface. Will be skipped on TF-RMM.
+ */
+test_result_t host_realm_test_root_port_key_management(void)
+{
+ struct host_tdi *tdi;
+ int ret;
+
+ if (host_rmi_version(RMI_ABI_VERSION_VAL) != 0U) {
+ tftf_testcase_printf("RMM is not TRP\n");
+ return TEST_RESULT_SKIPPED;
+ }
+
+ /* Initialize Host NS heap memory */
+ ret = page_pool_init((u_register_t)PAGE_POOL_BASE,
+ (u_register_t)PAGE_POOL_MAX_SIZE);
+ if (ret != HEAP_INIT_SUCCESS) {
+ ERROR("Failed to init heap pool %d\n", ret);
+ return TEST_RESULT_FAIL;
+ }
+
+ tdi = &g_tdi;
+
+ /*
+ * Call rmi_pdev_create with invalid pdev, expect an error
+ * to be returned from TRP.
+ */
+ ret = host_tdi_pdev_create(tdi);
+ if (ret != 0) {
+ return TEST_RESULT_SUCCESS;
+ }
+
+ ERROR("RMI_PDEV_CREATE did not return error as expected\n");
+ return TEST_RESULT_FAIL;
+}
diff --git a/tftf/tests/tests-realm-payload.xml b/tftf/tests/tests-realm-payload.xml
index 875c793..b9e83fe 100644
--- a/tftf/tests/tests-realm-payload.xml
+++ b/tftf/tests/tests-realm-payload.xml
@@ -158,5 +158,8 @@
<!-- Test case related to FEAT_BRBE -->
<testcase name="Test if BRBE realted registers are preserved "
function="host_realm_test_brbe_save_restore" />
+ <!-- Test case for EL3-RMM IDE KM Interface -->
+ <testcase name="Test for Root Port Key management interface"
+ function="host_realm_test_root_port_key_management" />
</testsuite>
</testsuites>