Hi Brian,
As I understand it, the PSA FF-M specifies that all iovec mappings are automatically unmapped after the service completes, so it is not strictly required to call the unmap functions. It is useful to call psa_unmap_outvec() because it updates
the caller’s psa_outvec with the number of bytes written, but psa_unmap_invec() only makes a note that the invec was unmapped in the TF-M implementation, so indeed calling it is skipped to save some unnecessary cycles.
I think the API is there for compliance with the PSA FF-M spec, and the PSA FF-M has it because in some implementations it could be useful if mapping iovecs is associated with some kind of resource usage, then unmapping mid-service could
reduce the resource usage.
Kind regards,
Jamie
From: Quach, Brian via TF-M <tf-m@lists.trustedfirmware.org>
Sent: Monday, April 29, 2024 9:40 PM
To: tf-m@lists.trustedfirmware.org
Subject: [TF-M] psa_unmap_invec
Hi,
I see that tfm_crypto_call_srv() unmaps output vectors if PSA_FRAMEWORK_HAS_MM_IOVEC == 1, but I never see psa_unmap_invec called. This doesn’t seem to be required from a functional standpoint but I was wondering if psa_unmap_invec()
was purposely skipped to save some unnecessary execution time. Is psa_unmap_invec() only implemented for testing purposes?
Regards,
Brian Quach
SimpleLink MCU
Texas Instruments Inc.
12500 TI Blvd, MS F-4000
Dallas, TX 75243
214-479-4076