• Vincent Donnefort's avatar
    KVM: arm64: FFA: Release hyp rx buffer · d66e50be
    Vincent Donnefort authored
    According to the FF-A spec (Buffer states and ownership), after a
    producer has written into a buffer, it is "full" and now owned by the
    consumer. The producer won't be able to use that buffer, until the
    consumer hands it over with an invocation such as RX_RELEASE.
    
    It is clear in the following paragraph (Transfer of buffer ownership),
    that MEM_RETRIEVE_RESP is transferring the ownership from producer (in
    our case SPM) to consumer (hypervisor). RX_RELEASE is therefore
    mandatory here.
    
    It is less clear though what is happening with MEM_FRAG_TX. But this
    invocation, as a response to MEM_FRAG_RX writes into the same hypervisor
    RX buffer (see paragraph "Transmission of transaction descriptor in
    fragments"). Also this is matching the TF-A implementation where the RX
    buffer is marked "full" during a MEM_FRAG_RX.
    
    Release the RX hypervisor buffer in those two cases. This will unblock
    later invocations using this buffer which would otherwise fail.
    (RETRIEVE_REQ, MEM_FRAG_RX and PARTITION_INFO_GET).
    Signed-off-by: default avatarVincent Donnefort <vdonnefort@google.com>
    Reviewed-by: default avatarSudeep Holla <sudeep.holla@arm.com>
    Link: https://lore.kernel.org/r/20240611175317.1220842-1-vdonnefort@google.comSigned-off-by: default avatarMarc Zyngier <maz@kernel.org>
    d66e50be
ffa.c 19.1 KB