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

Neeraj Soni <[email protected]>
Newsgroups org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-kernel,org.kernel.vger.linux-mmc
Message-ID <[email protected]>

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 <[email protected]>
>>
>> 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 <[email protected]>
>> Signed-off-by: Neeraj Soni <[email protected]>
>> ---
>>  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/[email protected]/.
and clean this as well in v6.
 
> - Eric
> 
Regards
Neeraj
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.