On Sun Sep 15, 2024 at 9:04 PM EEST, Jarkko Sakkinen wrote: > There is no load and flush the null key for every transaction. It only > needs to be flushed when user space accesses TPM. This postpones the > flush up to that point. > > The goal is to take the first step addressing [1]. Other performance > improvements are needed too but this is the most obvious one and > easiest to address. > > [1] https://bugzilla.kernel.org/show_bug.cgi?id=219229 > > Jarkko Sakkinen (4): > tpm: remove file header documentation from tpm2-sessions.c > tpm: address tpm2_create_null_primary() return value > tpm: address tpm2_create_primary() failure > tpm: flush the session null key only when required > > drivers/char/tpm/tpm-chip.c | 13 ++++ > drivers/char/tpm/tpm-dev-common.c | 7 ++ > drivers/char/tpm/tpm-interface.c | 9 ++- > drivers/char/tpm/tpm2-cmd.c | 3 + > drivers/char/tpm/tpm2-sessions.c | 115 ++++++++++-------------------- > include/linux/tpm.h | 2 + > 6 files changed, 68 insertions(+), 81 deletions(-) I did not take any benchmarks yet but I did run this through run-tests.sh in [1] to make sure that it does not break anything. Looking at pseude-code of ContextSave from [2] fixing this is orthogonal from any possible context gap issues as null key is just plain transient object. I would fix the obvious first and then look what can be done to sessions (e.g. global LRU tracking of sessions or similar approach). I don't expect over the top performance improvement with this patch set. [1] https://codeberg.org/jarkko/linux-tpmdd-test [2] https://trustedcomputinggroup.org/wp-content/uploads/TPM-2.0-1.83-Part-3-Commands-Code.pdf BR, Jarkko