Hi all,
This patchset optimizes handling of the argument struct passed to
call_with_arg when doing a yielding call to OP-TEE.
Prior to this was this struct allocated before the yielding call and
then freed after it had returned. In case many calls are made in succession
this results in quite a bit of unnecessary allocte/free and possibly also
switching back and forth to secure work in order to register if needed.
Another optimization handles the way the argument struct needed to do RPC
is passed. Please see the patch "optee: add OPTEE_SMC_CALL_WITH_RPC_ARG and
OPTEE_SMC_CALL_WITH_REGD_ARG" for details.
This patchset is based the next branch [1] in my kernel to avoid conflict
with other recent patches.
Thanks,
Jens
[1] https://git.linaro.org/people/jens.wiklander/linux-tee.git/log/?h=next
v1->v2:
* Split out a separate commit "optee: rename rpc_arg_count to
rpc_param_count"
* Check optee->rpc_param_count before calling optee_disable_shm_cache().
* Mention OPTEE_SMC_CALL_WITH_REGD_ARG in commit message.
Jens Wiklander (4):
optee: rename rpc_arg_count to rpc_param_count
optee: add OPTEE_SMC_CALL_WITH_RPC_ARG and
OPTEE_SMC_CALL_WITH_REGD_ARG
optee: add FF-A capability OPTEE_FFA_SEC_CAP_ARG_OFFSET
optee: cache argument shared memory structs
drivers/tee/optee/call.c | 238 ++++++++++++++++++++++++------
drivers/tee/optee/core.c | 1 +
drivers/tee/optee/ffa_abi.c | 36 +++--
drivers/tee/optee/optee_ffa.h | 12 +-
drivers/tee/optee/optee_private.h | 31 +++-
drivers/tee/optee/optee_smc.h | 47 +++++-
drivers/tee/optee/smc_abi.c | 162 +++++++++++++++-----
7 files changed, 427 insertions(+), 100 deletions(-)
--
2.31.1
[BCC all OP-TEE maintainers]
Hi OP-TEE maintainers & contributors,
OP-TEE v3.17.0 is scheduled to be released on 2022-04-22. So, now is a
good time to start testing the master branch on the various platforms
and report/fix any bugs.
The GitHub pull request for collecting Tested-by tags or any other
comments is https://github.com/OP-TEE/optee_os/pull/5229
As usual, we will create a release candidate tag one week before the
release date for final testing.
In addition to that you can find some additional information related
to releases here:
https://optee.readthedocs.io/en/latest/general/releases.html
Thanks,
--
Jerome
Hi all,
This patchset optimizes handling of the argument struction passed to
call_with_arg when doing a yielding call to OP-TEE.
Prior to this was this structure allocated before the yielding call and
then freed after it had returned. In case many calls are made in succession
this results in quite a bit of unncesary allocte/free and possibly also
switching back and forth to secure work in order to register if needed.
Another optimization handles the way the argument struct needed to do RPC
is passed. Please see the patch "optee: add OPTEE_SMC_CALL_WITH_RPC_ARG"
for details.
This patchset is based the next branch [1] in my kernel to avoid conflict
with other recent patches.
Thanks,
Jens
[1] https://git.linaro.org/people/jens.wiklander/linux-tee.git/log/?h=next
Jens Wiklander (3):
optee: add OPTEE_SMC_CALL_WITH_RPC_ARG
optee: add FF-A capability OPTEE_FFA_SEC_CAP_ARG_OFFSET
optee: cache argument shared memory structs
drivers/tee/optee/call.c | 238 ++++++++++++++++++++++++------
drivers/tee/optee/core.c | 1 +
drivers/tee/optee/ffa_abi.c | 36 +++--
drivers/tee/optee/optee_ffa.h | 12 +-
drivers/tee/optee/optee_private.h | 31 +++-
drivers/tee/optee/optee_smc.h | 47 +++++-
drivers/tee/optee/smc_abi.c | 151 +++++++++++++++----
7 files changed, 419 insertions(+), 97 deletions(-)
--
2.31.1
From: Dongliang Mu <mudongliangabcd(a)gmail.com>
The error handling code of optee_ffa_probe misses the mutex_destroy of
ffa.mutex when mutext_init succeeds.
Fix this by adding mutex_destory of ffa.mutex at the error handling part
Fixes: aceeafefff73 ("optee: use driver internal tee_context for some rpc")
Signed-off-by: Dongliang Mu <mudongliangabcd(a)gmail.com>
---
drivers/tee/optee/ffa_abi.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/tee/optee/ffa_abi.c b/drivers/tee/optee/ffa_abi.c
index f744ab15bf2c..30a6119a2b16 100644
--- a/drivers/tee/optee/ffa_abi.c
+++ b/drivers/tee/optee/ffa_abi.c
@@ -894,6 +894,7 @@ static int optee_ffa_probe(struct ffa_device *ffa_dev)
rhashtable_free_and_destroy(&optee->ffa.global_ids, rh_free_fn, NULL);
optee_supp_uninit(&optee->supp);
mutex_destroy(&optee->call_queue.mutex);
+ mutex_destroy(&optee->ffa.mutex);
err_unreg_supp_teedev:
tee_device_unregister(optee->supp_teedev);
err_unreg_teedev:
--
2.25.1