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>