Re: [PATCH v5 3/4] mmc: sdhci-msm: Use pm ops instead of macro to restore crypto keys

From: Neeraj Soni

Date: Fri Jul 31 2026 - 06:00:45 EST




On 7/31/2026 12:53 AM, Eric Biggers wrote:
> 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?
>
Ack. Will fix it in v6.

> 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().
>
Ack. I will revert the change made around MMC_CAP2_CRYPTO here:
https://lore.kernel.org/linux-mmc/20260116121004.1829223-1-neeraj.soni@xxxxxxxxxxxxxxxx/.
and clean this as well in v6.

> - Eric
>
Regards
Neeraj