firmware: arm_ffa: Fix handling of fragmented memory descriptors
authorMarc Bonnici <marc.bonnici@arm.com>
Tue, 26 Apr 2022 12:12:19 +0000 (13:12 +0100)
committerSudeep Holla <sudeep.holla@arm.com>
Wed, 27 Apr 2022 07:55:29 +0000 (08:55 +0100)
commit987756f67dee237ec35f3b249ab1ae25260c5340
tree585fd07d0361c91ab4ee5363e40691d0d9081e89
parent3123109284176b1532874591f7c81f3837bbdc17
firmware: arm_ffa: Fix handling of fragmented memory descriptors

Fix the handling of MEM_FRAG_TX/RX SMCs when the full memory descriptor
does not fit in a single innovation of a memory sharing request.

The current implementation expects a FFA_MEM_SHARE/FFA_MEM_LEND
call to always receive a FFA_SUCCESS response, however in the
case where a full descriptor does not fit inside the partitions
TX buffer, the call can instead complete with a FFA_MEM_FRAG_RX SMC
to request the next part of the descriptor to be transmitted.

Similarly a FFA_MEM_FRAG_TX call currently only expects
FFA_MEM_FRAG_RX as a response, however once the full descriptor
has been transmitted the FFA_SUCCESS ABI will be used to indicate
successful transmission.

Update the existing code to match the expected behaviour.

Link: https://lore.kernel.org/r/20220426121219.1801601-1-marc.bonnici@arm.com
Signed-off-by: Marc Bonnici <marc.bonnici@arm.com>
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
drivers/firmware/arm_ffa/driver.c