feat(rmm): changes in RMI_RTT_UNMAP_UNPROTECTED

This patch makes changes in handling RMI_RTT_UNMAP_UNPROTECTED
command as per RMM Specification 1.0-eac1, which now returns
the top IPA of non-live RTT entries.

The host usually invalidates (RMI_DATA_DESTROY, RMI_RTT_DESTROY
or RMI_RTT_UNMAP_UNPROTECTED) a range of addresses in the
Realm's stage 2 (e.g., Tear down at shutdown). In order
to aid the host to do operations efficiently, RMM scans
the RTT ahead and returns information about where a "live"
RTT entry could be. In other words, RMM looks for a "live"
entry beyond the requested "map_address" in the RTT where
the operation reached. The scan stops as soon as RMM finds
a "live" RTTE or reaches the end of the RTT and returns the
top of the address before first "live" entry in the RTT.

An RTTE is considered live if it is neither UNASSIGNED nor
DESTROYED.
The additional information is only returned if the operation
returns one of the following:
RMI_SUCCESS   - i.e., the current operation was successful
on the given address.
RMI_ERROR_RTT - Either the requested operation was not applicable
for the requested address (e.g., RMI_DATA_DESTROY on
an UNASSIGNED entry, RTT is missing at the target level)

OR the operation could not be performed due to the state of the
RTT entry. (e.g., RMI_RTT_UNMAP_UNPROTECTED (map_addr, level = 3).
But the "map_addr" is BLOCK mapped at level = 2).

If the operation on "map_addr" requires additional steps from
the host (breaking down a BLOCK mapping in example above), the
"map_addr" is returned. Otherwise "top" of the non-live region
is returned.

Signed-off-by: AlexeiFedorov <Alexei.Fedorov@arm.com>
Change-Id: I410b4eb8de9d3801861523e56e8c913c0861dc18
diff --git a/runtime/include/smc-handler.h b/runtime/include/smc-handler.h
index b61c814..9b5c743 100644
--- a/runtime/include/smc-handler.h
+++ b/runtime/include/smc-handler.h
@@ -70,9 +70,10 @@
 				      unsigned long ulevel,
 				      unsigned long s2tte);
 
-unsigned long smc_rtt_unmap_unprotected(unsigned long rd_addr,
-					unsigned long map_addr,
-					unsigned long ulevel);
+void smc_rtt_unmap_unprotected(unsigned long rd_addr,
+				unsigned long map_addr,
+				unsigned long ulevel,
+				struct smc_result *res);
 
 void smc_rtt_read_entry(unsigned long rd_addr,
 			unsigned long map_addr,