* [PATCH v6 0/2] mmc: Avoid reprogram all keys to Inline Crypto Engine for MMC runtime suspend resume @ 2026-08-03 16:31 Neeraj Soni 2026-08-03 16:31 ` [PATCH v6 1/2] mmc: Allow host driver to control the re-programming of crypto keys Neeraj Soni 2026-08-03 16:31 ` [PATCH v6 2/2] mmc: sdhci-msm: Use pm ops instead of macro to restore " Neeraj Soni 0 siblings, 2 replies; 8+ messages in thread From: Neeraj Soni @ 2026-08-03 16:31 UTC (permalink / raw) To: ebiggers, ulf.hansson, adrian.hunter Cc: quic_dmukhopa, quic_rampraka, quic_nitirawa, quic_sachgupt, quic_bhaskarv, quic_gaurkash, quic_sartgarg, ram.gupta, linux-mmc, linux-kernel, linux-arm-msm, neeraj.soni Crypto reprogram all keys is called for each MMC runtime suspend/resume in current upstream design. If this is implemented as a non-interruptible call to TEE for security, the cpu core is blocked for execution while this call executes although the crypto engine already has the keys. For example, glitches in audio/video streaming applications have been observed due to this. Fix this by allowing host driver to control when to re-program the crypto keys. --- Changes in v6: - Dropped the change, introduced in [PATCH v4] https://lore.kernel.org/linux-mmc/20260116121004.1829223-1-neeraj.soni@oss.qualcomm.com/, which removed encapsulation of MMC_CAP2_CRYPTO with CONFIG_MMC_CRYPTO. - Dropped the change to re-program crypto keys in sdhci_msm_ice_init(). - Merged [PATCH v5 2/4] https://lore.kernel.org/linux-mmc/20260730140822.1976635-3-neeraj.soni@oss.qualcomm.com/ and [PATCH v5 3/4] https://lore.kernel.org/linux-mmc/20260730140822.1976635-4-neeraj.soni@oss.qualcomm.com/ into [PATCH v6 2/2]. - Dropped the [PATCH v5 4/4] https://lore.kernel.org/linux-mmc/20260730140822.1976635-5-neeraj.soni@oss.qualcomm.com/. - Link to v5 https://lore.kernel.org/linux-mmc/20260730140822.1976635-1-neeraj.soni@oss.qualcomm.com/. Changes in v5: - Split the v4 patch https://lore.kernel.org/linux-mmc/20260529092612.1749752-1-neeraj.soni@oss.qualcomm.com/ as suggested here https://lore.kernel.org/all/CAPx+jO8rUwYV6q1-RrA4aZ9XnomSf82fgf8Jh2fUC0fE03RFPw@mail.gmail.com/ into 2 logical patches [PATCH v5 1/4] and [PATCH v5 2/4]. - Introduced [PATCH v5 3/4] to specifically restore crypto keys during hibernation exit. - Introduced [PATCH v5 4/4] to fix crypto capability usage in mtk-sd as suggested here https://lore.kernel.org/all/20260723230104.GA662946@google.com/. - Dropped "Acked-by:" tag from v4 due to the split and introduction of new changes. Neeraj Soni (1): mmc: Allow host driver to control the re-programming of crypto keys Ram Prakash Gupta (1): mmc: sdhci-msm: Use pm ops instead of macro to restore crypto keys drivers/mmc/core/crypto.c | 2 +- drivers/mmc/host/sdhci-msm.c | 23 ++++++++++++++++++++++- include/linux/mmc/host.h | 1 + 3 files changed, 24 insertions(+), 2 deletions(-) -- 2.34.1 ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v6 1/2] mmc: Allow host driver to control the re-programming of crypto keys 2026-08-03 16:31 [PATCH v6 0/2] mmc: Avoid reprogram all keys to Inline Crypto Engine for MMC runtime suspend resume Neeraj Soni @ 2026-08-03 16:31 ` Neeraj Soni 2026-08-03 18:12 ` Dmitry Baryshkov 2026-08-03 20:13 ` Eric Biggers 2026-08-03 16:31 ` [PATCH v6 2/2] mmc: sdhci-msm: Use pm ops instead of macro to restore " Neeraj Soni 1 sibling, 2 replies; 8+ messages in thread From: Neeraj Soni @ 2026-08-03 16:31 UTC (permalink / raw) To: ebiggers, ulf.hansson, adrian.hunter Cc: quic_dmukhopa, quic_rampraka, quic_nitirawa, quic_sachgupt, quic_bhaskarv, quic_gaurkash, quic_sartgarg, ram.gupta, linux-mmc, linux-kernel, linux-arm-msm, neeraj.soni The register context for the crypto profile belongs to the sdhci/cqhci host and not the mmc card, hence re-programming should be managed by the host driver itself. Add the flag MMC_CAP2_CRYPTO_NO_REPROG as part of host->caps2 to control reprogramming keys to crypto engine for SoCs which do not require this feature. Signed-off-by: Seshu Madhavi Puppala <quic_spuppala@quicinc.com> Co-developed-by: Ram Prakash Gupta <quic_rampraka@quicinc.com> Signed-off-by: Ram Prakash Gupta <quic_rampraka@quicinc.com> Co-developed-by: Sarthak Garg <quic_sartgarg@quicinc.com> Signed-off-by: Sarthak Garg <quic_sartgarg@quicinc.com> Signed-off-by: Debraj Mukhopadhyay <quic_dmukhopa@quicinc.com> Signed-off-by: Neeraj Soni <neeraj.soni@oss.qualcomm.com> --- drivers/mmc/core/crypto.c | 2 +- include/linux/mmc/host.h | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/mmc/core/crypto.c b/drivers/mmc/core/crypto.c index fec4fbf16a5b..a5a90bfc634e 100644 --- a/drivers/mmc/core/crypto.c +++ b/drivers/mmc/core/crypto.c @@ -15,7 +15,7 @@ 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) + if ((host->caps2 & MMC_CAP2_CRYPTO) && !(host->caps2 & MMC_CAP2_CRYPTO_NO_REPROG)) blk_crypto_reprogram_all_keys(&host->crypto_profile); } diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h index ba84f02c2a10..3c3c45fdf39b 100644 --- a/include/linux/mmc/host.h +++ b/include/linux/mmc/host.h @@ -463,6 +463,7 @@ struct mmc_host { #define MMC_CAP2_CRYPTO 0 #endif #define MMC_CAP2_ALT_GPT_TEGRA (1 << 28) /* Host with eMMC that has GPT entry at a non-standard location */ +#define MMC_CAP2_CRYPTO_NO_REPROG (1 << 29) /* Host handles inline crypto key reprogramming */ bool uhs2_sd_tran; /* UHS-II flag for SD_TRAN state */ bool uhs2_app_cmd; /* UHS-II flag for APP command */ -- 2.34.1 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v6 1/2] mmc: Allow host driver to control the re-programming of crypto keys 2026-08-03 16:31 ` [PATCH v6 1/2] mmc: Allow host driver to control the re-programming of crypto keys Neeraj Soni @ 2026-08-03 18:12 ` Dmitry Baryshkov 2026-08-03 20:13 ` Eric Biggers 1 sibling, 0 replies; 8+ messages in thread From: Dmitry Baryshkov @ 2026-08-03 18:12 UTC (permalink / raw) To: Neeraj Soni Cc: ebiggers, ulf.hansson, adrian.hunter, quic_dmukhopa, quic_rampraka, quic_nitirawa, quic_sachgupt, quic_bhaskarv, quic_gaurkash, quic_sartgarg, ram.gupta, linux-mmc, linux-kernel, linux-arm-msm On Mon, Aug 03, 2026 at 10:01:22PM +0530, Neeraj Soni wrote: > The register context for the crypto profile belongs to the > sdhci/cqhci host and not the mmc card, hence re-programming should be > managed by the host driver itself. Don't you have a reference to the host in the function? > > Add the flag MMC_CAP2_CRYPTO_NO_REPROG as part of host->caps2 to control > reprogramming keys to crypto engine for SoCs which do not require this > feature. > > Signed-off-by: Seshu Madhavi Puppala <quic_spuppala@quicinc.com> > Co-developed-by: Ram Prakash Gupta <quic_rampraka@quicinc.com> > Signed-off-by: Ram Prakash Gupta <quic_rampraka@quicinc.com> > Co-developed-by: Sarthak Garg <quic_sartgarg@quicinc.com> > Signed-off-by: Sarthak Garg <quic_sartgarg@quicinc.com> > Signed-off-by: Debraj Mukhopadhyay <quic_dmukhopa@quicinc.com> > Signed-off-by: Neeraj Soni <neeraj.soni@oss.qualcomm.com> > --- > drivers/mmc/core/crypto.c | 2 +- > include/linux/mmc/host.h | 1 + > 2 files changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/mmc/core/crypto.c b/drivers/mmc/core/crypto.c > index fec4fbf16a5b..a5a90bfc634e 100644 > --- a/drivers/mmc/core/crypto.c > +++ b/drivers/mmc/core/crypto.c > @@ -15,7 +15,7 @@ > 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) > + if ((host->caps2 & MMC_CAP2_CRYPTO) && !(host->caps2 & MMC_CAP2_CRYPTO_NO_REPROG)) > blk_crypto_reprogram_all_keys(&host->crypto_profile); > } -- With best wishes Dmitry ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v6 1/2] mmc: Allow host driver to control the re-programming of crypto keys 2026-08-03 16:31 ` [PATCH v6 1/2] mmc: Allow host driver to control the re-programming of crypto keys Neeraj Soni 2026-08-03 18:12 ` Dmitry Baryshkov @ 2026-08-03 20:13 ` Eric Biggers 1 sibling, 0 replies; 8+ messages in thread From: Eric Biggers @ 2026-08-03 20:13 UTC (permalink / raw) To: Neeraj Soni Cc: ulf.hansson, adrian.hunter, quic_dmukhopa, quic_rampraka, quic_nitirawa, quic_sachgupt, quic_bhaskarv, quic_gaurkash, quic_sartgarg, ram.gupta, linux-mmc, linux-kernel, linux-arm-msm On Mon, Aug 03, 2026 at 10:01:22PM +0530, Neeraj Soni wrote: > The register context for the crypto profile belongs to the > sdhci/cqhci host and not the mmc card, hence re-programming should be > managed by the host driver itself. > > Add the flag MMC_CAP2_CRYPTO_NO_REPROG as part of host->caps2 to control > reprogramming keys to crypto engine for SoCs which do not require this > feature. > > Signed-off-by: Seshu Madhavi Puppala <quic_spuppala@quicinc.com> > Co-developed-by: Ram Prakash Gupta <quic_rampraka@quicinc.com> > Signed-off-by: Ram Prakash Gupta <quic_rampraka@quicinc.com> > Co-developed-by: Sarthak Garg <quic_sartgarg@quicinc.com> > Signed-off-by: Sarthak Garg <quic_sartgarg@quicinc.com> > Signed-off-by: Debraj Mukhopadhyay <quic_dmukhopa@quicinc.com> > Signed-off-by: Neeraj Soni <neeraj.soni@oss.qualcomm.com> > --- Reviewed-by: Eric Biggers <ebiggers@kernel.org> - Eric ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v6 2/2] mmc: sdhci-msm: Use pm ops instead of macro to restore crypto keys 2026-08-03 16:31 [PATCH v6 0/2] mmc: Avoid reprogram all keys to Inline Crypto Engine for MMC runtime suspend resume Neeraj Soni 2026-08-03 16:31 ` [PATCH v6 1/2] mmc: Allow host driver to control the re-programming of crypto keys Neeraj Soni @ 2026-08-03 16:31 ` Neeraj Soni 2026-08-03 18:10 ` Dmitry Baryshkov 2026-08-03 20:18 ` Eric Biggers 1 sibling, 2 replies; 8+ messages in thread From: Neeraj Soni @ 2026-08-03 16:31 UTC (permalink / raw) To: ebiggers, ulf.hansson, adrian.hunter Cc: quic_dmukhopa, quic_rampraka, quic_nitirawa, quic_sachgupt, quic_bhaskarv, quic_gaurkash, quic_sartgarg, ram.gupta, linux-mmc, linux-kernel, linux-arm-msm, neeraj.soni From: Ram Prakash Gupta <ram.gupta@oss.qualcomm.com> Inline Crypto Engine (ICE) keys are lost after hibernation entry and this needs to be restored when hibernation exits. ICE keys are re-programmed during sdhci_msm_ice_init() but it may not cover cases where the hibernation image is already restored. Unwrap the pm ops and use directly in driver to add the call to restore Inline Crypto Engine (ICE) keys. This ensures that ICE is brought into same state as before hibernation. Also set MMC_CAP2_CRYPTO_NO_REPROG to indicate that re-programming of ICE keys is not needed during MMC runtime suspend/resume. Signed-off-by: Ram Prakash Gupta <ram.gupta@oss.qualcomm.com> Signed-off-by: Seshu Madhavi Puppala <quic_spuppala@quicinc.com> Co-developed-by: Ram Prakash Gupta <quic_rampraka@quicinc.com> Signed-off-by: Ram Prakash Gupta <quic_rampraka@quicinc.com> Co-developed-by: Sarthak Garg <quic_sartgarg@quicinc.com> Signed-off-by: Sarthak Garg <quic_sartgarg@quicinc.com> Signed-off-by: Debraj Mukhopadhyay <quic_dmukhopa@quicinc.com> Signed-off-by: Neeraj Soni <neeraj.soni@oss.qualcomm.com> --- drivers/mmc/host/sdhci-msm.c | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/drivers/mmc/host/sdhci-msm.c b/drivers/mmc/host/sdhci-msm.c index 4aff965f0e2e..f64788a70309 100644 --- a/drivers/mmc/host/sdhci-msm.c +++ b/drivers/mmc/host/sdhci-msm.c @@ -1959,6 +1959,7 @@ static int sdhci_msm_ice_init(struct sdhci_msm_host *msm_host, } mmc->caps2 |= MMC_CAP2_CRYPTO; + mmc->caps2 |= MMC_CAP2_CRYPTO_NO_REPROG; return 0; } @@ -2983,9 +2984,29 @@ static int sdhci_msm_runtime_resume(struct device *dev) return ret; } +static int sdhci_msm_restore(struct device *dev) +{ + struct sdhci_host *host = dev_get_drvdata(dev); + int ret; + + ret = pm_runtime_force_resume(dev); + if (ret) + return ret; + + if (host->mmc->caps2 & MMC_CAP2_CRYPTO) + blk_crypto_reprogram_all_keys(&host->mmc->crypto_profile); + + return ret; +} + static const struct dev_pm_ops sdhci_msm_pm_ops = { - SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend, pm_runtime_force_resume) RUNTIME_PM_OPS(sdhci_msm_runtime_suspend, sdhci_msm_runtime_resume, NULL) + .suspend = pm_runtime_force_suspend, + .resume = pm_runtime_force_resume, + .freeze = pm_runtime_force_suspend, + .restore = sdhci_msm_restore, + .thaw = pm_runtime_force_resume, + .poweroff = pm_runtime_force_suspend, }; static struct platform_driver sdhci_msm_driver = { -- 2.34.1 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v6 2/2] mmc: sdhci-msm: Use pm ops instead of macro to restore crypto keys 2026-08-03 16:31 ` [PATCH v6 2/2] mmc: sdhci-msm: Use pm ops instead of macro to restore " Neeraj Soni @ 2026-08-03 18:10 ` Dmitry Baryshkov 2026-08-04 11:14 ` Ulf Hansson 2026-08-03 20:18 ` Eric Biggers 1 sibling, 1 reply; 8+ messages in thread From: Dmitry Baryshkov @ 2026-08-03 18:10 UTC (permalink / raw) To: Neeraj Soni Cc: ebiggers, ulf.hansson, adrian.hunter, quic_dmukhopa, quic_rampraka, quic_nitirawa, quic_sachgupt, quic_bhaskarv, quic_gaurkash, quic_sartgarg, ram.gupta, linux-mmc, linux-kernel, linux-arm-msm On Mon, Aug 03, 2026 at 10:01:23PM +0530, Neeraj Soni wrote: > From: Ram Prakash Gupta <ram.gupta@oss.qualcomm.com> > > Inline Crypto Engine (ICE) keys are lost after hibernation entry and this > needs to be restored when hibernation exits. ICE keys are re-programmed > during sdhci_msm_ice_init() but it may not cover cases where the > hibernation image is already restored. > > Unwrap the pm ops and use directly in driver to add the call to restore > Inline Crypto Engine (ICE) keys. This ensures that ICE is brought into > same state as before hibernation. > > Also set MMC_CAP2_CRYPTO_NO_REPROG to indicate that re-programming of ICE > keys is not needed during MMC runtime suspend/resume. Hmm, if there is a flag which controls reprogramming of the keys, why can't we use a default and make the core reprogram those? > > Signed-off-by: Ram Prakash Gupta <ram.gupta@oss.qualcomm.com> > Signed-off-by: Seshu Madhavi Puppala <quic_spuppala@quicinc.com> > Co-developed-by: Ram Prakash Gupta <quic_rampraka@quicinc.com> > Signed-off-by: Ram Prakash Gupta <quic_rampraka@quicinc.com> > Co-developed-by: Sarthak Garg <quic_sartgarg@quicinc.com> > Signed-off-by: Sarthak Garg <quic_sartgarg@quicinc.com> > Signed-off-by: Debraj Mukhopadhyay <quic_dmukhopa@quicinc.com> > Signed-off-by: Neeraj Soni <neeraj.soni@oss.qualcomm.com> > --- > drivers/mmc/host/sdhci-msm.c | 23 ++++++++++++++++++++++- > 1 file changed, 22 insertions(+), 1 deletion(-) > -- With best wishes Dmitry ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v6 2/2] mmc: sdhci-msm: Use pm ops instead of macro to restore crypto keys 2026-08-03 18:10 ` Dmitry Baryshkov @ 2026-08-04 11:14 ` Ulf Hansson 0 siblings, 0 replies; 8+ messages in thread From: Ulf Hansson @ 2026-08-04 11:14 UTC (permalink / raw) To: Dmitry Baryshkov Cc: Neeraj Soni, ebiggers, ulf.hansson, adrian.hunter, quic_dmukhopa, quic_rampraka, quic_nitirawa, quic_sachgupt, quic_bhaskarv, quic_gaurkash, quic_sartgarg, ram.gupta, linux-mmc, linux-kernel, linux-arm-msm On Mon, Aug 3, 2026 at 8:10 PM Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com> wrote: > > On Mon, Aug 03, 2026 at 10:01:23PM +0530, Neeraj Soni wrote: > > From: Ram Prakash Gupta <ram.gupta@oss.qualcomm.com> > > > > Inline Crypto Engine (ICE) keys are lost after hibernation entry and this > > needs to be restored when hibernation exits. ICE keys are re-programmed > > during sdhci_msm_ice_init() but it may not cover cases where the > > hibernation image is already restored. > > > > Unwrap the pm ops and use directly in driver to add the call to restore > > Inline Crypto Engine (ICE) keys. This ensures that ICE is brought into > > same state as before hibernation. > > > > Also set MMC_CAP2_CRYPTO_NO_REPROG to indicate that re-programming of ICE > > keys is not needed during MMC runtime suspend/resume. > > Hmm, if there is a flag which controls reprogramming of the keys, why > can't we use a default and make the core reprogram those? The core is responsible for managing the card, but the crypto context belongs to the host. Similar to other host registers, it's better to let host specific drivers deal with those. In regards to the host capabilities flags, we decided to add MMC_CAP2_CRYPTO_NO_REPROG to avoid breaking the mtk-sd. But long term wise, there should be nothing in the core that deals with re-programming of ICE keys, hence MMC_CAP2_CRYPTO_NO_REPROG should be removed at some point when we have verified the behaviour for mtk-sd too. > > > > > Signed-off-by: Ram Prakash Gupta <ram.gupta@oss.qualcomm.com> > > Signed-off-by: Seshu Madhavi Puppala <quic_spuppala@quicinc.com> > > Co-developed-by: Ram Prakash Gupta <quic_rampraka@quicinc.com> > > Signed-off-by: Ram Prakash Gupta <quic_rampraka@quicinc.com> > > Co-developed-by: Sarthak Garg <quic_sartgarg@quicinc.com> > > Signed-off-by: Sarthak Garg <quic_sartgarg@quicinc.com> > > Signed-off-by: Debraj Mukhopadhyay <quic_dmukhopa@quicinc.com> > > Signed-off-by: Neeraj Soni <neeraj.soni@oss.qualcomm.com> > > --- > > drivers/mmc/host/sdhci-msm.c | 23 ++++++++++++++++++++++- > > 1 file changed, 22 insertions(+), 1 deletion(-) > > > > -- > With best wishes > Dmitry Kind regards Uffe ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v6 2/2] mmc: sdhci-msm: Use pm ops instead of macro to restore crypto keys 2026-08-03 16:31 ` [PATCH v6 2/2] mmc: sdhci-msm: Use pm ops instead of macro to restore " Neeraj Soni 2026-08-03 18:10 ` Dmitry Baryshkov @ 2026-08-03 20:18 ` Eric Biggers 1 sibling, 0 replies; 8+ messages in thread From: Eric Biggers @ 2026-08-03 20:18 UTC (permalink / raw) To: Neeraj Soni Cc: ulf.hansson, adrian.hunter, quic_dmukhopa, quic_rampraka, quic_nitirawa, quic_sachgupt, quic_bhaskarv, quic_gaurkash, quic_sartgarg, ram.gupta, linux-mmc, linux-kernel, linux-arm-msm On Mon, Aug 03, 2026 at 10:01:23PM +0530, Neeraj Soni wrote: > From: Ram Prakash Gupta <ram.gupta@oss.qualcomm.com> > > Inline Crypto Engine (ICE) keys are lost after hibernation entry and this > needs to be restored when hibernation exits. ICE keys are re-programmed > during sdhci_msm_ice_init() but it may not cover cases where the > hibernation image is already restored. > > Unwrap the pm ops and use directly in driver to add the call to restore > Inline Crypto Engine (ICE) keys. This ensures that ICE is brought into > same state as before hibernation. > > Also set MMC_CAP2_CRYPTO_NO_REPROG to indicate that re-programming of ICE > keys is not needed during MMC runtime suspend/resume. > > Signed-off-by: Ram Prakash Gupta <ram.gupta@oss.qualcomm.com> > Signed-off-by: Seshu Madhavi Puppala <quic_spuppala@quicinc.com> > Co-developed-by: Ram Prakash Gupta <quic_rampraka@quicinc.com> > Signed-off-by: Ram Prakash Gupta <quic_rampraka@quicinc.com> > Co-developed-by: Sarthak Garg <quic_sartgarg@quicinc.com> > Signed-off-by: Sarthak Garg <quic_sartgarg@quicinc.com> > Signed-off-by: Debraj Mukhopadhyay <quic_dmukhopa@quicinc.com> > Signed-off-by: Neeraj Soni <neeraj.soni@oss.qualcomm.com> > --- > drivers/mmc/host/sdhci-msm.c | 23 ++++++++++++++++++++++- > 1 file changed, 22 insertions(+), 1 deletion(-) > > diff --git a/drivers/mmc/host/sdhci-msm.c b/drivers/mmc/host/sdhci-msm.c > index 4aff965f0e2e..f64788a70309 100644 > --- a/drivers/mmc/host/sdhci-msm.c > +++ b/drivers/mmc/host/sdhci-msm.c > @@ -1959,6 +1959,7 @@ static int sdhci_msm_ice_init(struct sdhci_msm_host *msm_host, > } > > mmc->caps2 |= MMC_CAP2_CRYPTO; > + mmc->caps2 |= MMC_CAP2_CRYPTO_NO_REPROG; > return 0; > } > > @@ -2983,9 +2984,29 @@ static int sdhci_msm_runtime_resume(struct device *dev) > return ret; > } > > +static int sdhci_msm_restore(struct device *dev) > +{ > + struct sdhci_host *host = dev_get_drvdata(dev); > + int ret; > + > + ret = pm_runtime_force_resume(dev); > + if (ret) > + return ret; > + > + if (host->mmc->caps2 & MMC_CAP2_CRYPTO) > + blk_crypto_reprogram_all_keys(&host->mmc->crypto_profile); > + > + return ret; > +} Sorry, it looks like this actually does need an #ifdef because the crypto_profile field is conditional. It doesn't need to be a new #ifdef though, as you could add a function sdhci_msm_ice_restore() within the existing CONFIG_MMC_CRYPTO section of this file (along with a no-op stub in the !CONFIG_MMC_CRYPTO section), then call it from here. Similar to how the existing sdhci_msm_ice_resume() works, for example. > static const struct dev_pm_ops sdhci_msm_pm_ops = { > - SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend, pm_runtime_force_resume) > RUNTIME_PM_OPS(sdhci_msm_runtime_suspend, sdhci_msm_runtime_resume, NULL) > + .suspend = pm_runtime_force_suspend, > + .resume = pm_runtime_force_resume, > + .freeze = pm_runtime_force_suspend, > + .restore = sdhci_msm_restore, > + .thaw = pm_runtime_force_resume, > + .poweroff = pm_runtime_force_suspend, Should these use pm_sleep_ptr() to allow dead code elimination when !CONFIG_PM_SLEEP? - Eric ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2026-08-04 11:15 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-08-03 16:31 [PATCH v6 0/2] mmc: Avoid reprogram all keys to Inline Crypto Engine for MMC runtime suspend resume Neeraj Soni 2026-08-03 16:31 ` [PATCH v6 1/2] mmc: Allow host driver to control the re-programming of crypto keys Neeraj Soni 2026-08-03 18:12 ` Dmitry Baryshkov 2026-08-03 20:13 ` Eric Biggers 2026-08-03 16:31 ` [PATCH v6 2/2] mmc: sdhci-msm: Use pm ops instead of macro to restore " Neeraj Soni 2026-08-03 18:10 ` Dmitry Baryshkov 2026-08-04 11:14 ` Ulf Hansson 2026-08-03 20:18 ` Eric Biggers
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox