Using custom call for push relinquish.

Bug: 132420445
Change-Id: I694250cea48aef9ae4083f1687e1db83d6508d9f
diff --git a/inc/vmapi/hf/abi.h b/inc/vmapi/hf/abi.h
index ed004b7..2802479 100644
--- a/inc/vmapi/hf/abi.h
+++ b/inc/vmapi/hf/abi.h
@@ -35,6 +35,9 @@
 #define HF_SPCI_RUN_WAIT_FOR_INTERRUPT 0xff09
 #define HF_SPCI_RUN_WAKE_UP            0xff0a
 
+/* Custom SPCI-like call for relinquishing memory in the push model. */
+#define HF_SPCI_MEM_RELINQUISH         0xffab
+
 /* This matches what Trusty and its ATF module currently use. */
 #define HF_DEBUG_LOG            0xbd000000
 
diff --git a/inc/vmapi/hf/call.h b/inc/vmapi/hf/call.h
index 5d217da..ad26137 100644
--- a/inc/vmapi/hf/call.h
+++ b/inc/vmapi/hf/call.h
@@ -158,6 +158,15 @@
 					     .arg5 = handle});
 }
 
+static inline struct spci_value hf_spci_mem_relinquish(
+	uint32_t remaining_fragment_count, uint32_t length, uint32_t handle)
+{
+	return spci_call((struct spci_value){.func = HF_SPCI_MEM_RELINQUISH,
+					     .arg3 = remaining_fragment_count,
+					     .arg4 = length,
+					     .arg5 = handle});
+}
+
 /**
  * Called by secondary VMs to receive a message. This will block until a message
  * is received.