+ Eric, Abel On Sat, 19 Oct 2024 at 06:55, Seshu Madhavi Puppala <quic_spuppala@xxxxxxxxxxx> wrote: > > > > On 10/8/2024 7:30 PM, Ulf Hansson wrote: > > On Sun, 6 Oct 2024 at 15:55, Seshu Madhavi Puppala > > <quic_spuppala@xxxxxxxxxxx> wrote: > >> > >> Add mmc_host_ops hook avoid_reprogram_allkeys to control > >> reprogramming keys to Inline Crypto Engine by vendor as some > >> vendors might not require this feature. > >> > >> Signed-off-by: Seshu Madhavi Puppala <quic_spuppala@xxxxxxxxxxx> > >> Co-developed-by: Ram Prakash Gupta <quic_rampraka@xxxxxxxxxxx> > >> Signed-off-by: Ram Prakash Gupta <quic_rampraka@xxxxxxxxxxx> > >> --- > >> drivers/mmc/core/crypto.c | 8 +++++--- > >> drivers/mmc/host/sdhci.c | 6 ++++++ > >> include/linux/mmc/host.h | 7 +++++++ > >> 3 files changed, 18 insertions(+), 3 deletions(-) > >> > >> diff --git a/drivers/mmc/core/crypto.c b/drivers/mmc/core/crypto.c > >> index fec4fbf16a5b..4168f7d135ff 100644 > >> --- a/drivers/mmc/core/crypto.c > >> +++ b/drivers/mmc/core/crypto.c > >> @@ -14,9 +14,11 @@ > >> > >> void mmc_crypto_set_initial_state(struct mmc_host *host) > >> { > >> - /* Reset might clear all keys, so reprogram all the keys. */ > >> - if (host->caps2 & MMC_CAP2_CRYPTO) > >> - blk_crypto_reprogram_all_keys(&host->crypto_profile); > >> + if (host->ops->avoid_reprogram_allkeys && !host->ops->avoid_reprogram_allkeys()) { > >> + /* Reset might clear all keys, so reprogram all the keys. */ > >> + if (host->caps2 & MMC_CAP2_CRYPTO) > >> + blk_crypto_reprogram_all_keys(&host->crypto_profile); > > > > Don't you even need to call this once, during the first initialization > > of the card? > > The first card initialization is done during the boot up for qcom socs > and the kernel keyring contains no keys immediately after bootup.After > the initialization of the card, the block i/o operations to encrypted > folders will automatically trigger the corresponding program key calls > to the crypto engine since the kernel keyring does not contain the > required encryption key. So, it is not necessary to explicitly reprogram > all keys for qcom socs. Okay, I see. I have looped in Abel and Eric who worked on this feature, just to confirm that this makes sense for them too. I assume the reason why you want to avoid the re-programming is that it adds latency when re-initializing the card, right? In that case, do you have some numbers of what we save by doing this? Kind regards Uffe