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
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
tf-m@lists.trustedfirmware.org