Re: [PATCH v5 3/4] mmc: sdhci-msm: Use pm ops instead of macro to restore crypto keys
From: Eric Biggers
Date: Thu Jul 30 2026 - 15:32:45 EST
On Thu, Jul 30, 2026 at 07:38:21PM +0530, Neeraj Soni wrote:
> From: Ram Prakash Gupta <ram.gupta@xxxxxxxxxxxxxxxx>
>
> 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.
>
> Signed-off-by: Ram Prakash Gupta <ram.gupta@xxxxxxxxxxxxxxxx>
> Signed-off-by: Neeraj Soni <neeraj.soni@xxxxxxxxxxxxxxxx>
> ---
> drivers/mmc/host/sdhci-msm.c | 19 ++++++++++++++++++-
> 1 file changed, 18 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/mmc/host/sdhci-msm.c b/drivers/mmc/host/sdhci-msm.c
> index 7d71dc6f388d..a4998e74a2bd 100644
> --- a/drivers/mmc/host/sdhci-msm.c
> +++ b/drivers/mmc/host/sdhci-msm.c
> @@ -2986,9 +2986,26 @@ 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);
> +
> +#ifdef CONFIG_MMC_CRYPTO
> + if (host->mmc->caps2 & MMC_CAP2_CRYPTO)
> + blk_crypto_reprogram_all_keys(&host->mmc->crypto_profile);
> +#endif
> +
> + return pm_runtime_force_resume(dev);
> +}
Is it correct to access the ICE registers before
pm_runtime_force_resume() has run? Aren't clocks and power still off?
Also, prefer IS_ENABLED() to '#ifdef'. However, this suggests to me
that we actually should just keep MMC_CAP2_CRYPTO defined to 0 when
!IS_ENABLED(CONFIG_MMC_CRYPTO), as that solves this naturally without
any need for #ifdef or IS_ENABLED().
- Eric