Re: [PATCH v5 2/4] mmc: sdhci-msm: Reprogram crypto keys during host hardware initialization

Ram Prakash Gupta <[email protected]> Fri, 31 Jul 2026 18:14:36 +0530
Newsgroups org.kernel.vger.linux-mmc,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-kernel
Message-ID <[email protected]>

On 7/31/2026 11:42 AM, Eric Biggers wrote:
> On Fri, Jul 31, 2026 at 11:37:44AM +0530, Neeraj Soni wrote:
>>
>>
>> On 7/31/2026 12:48 AM, Eric Biggers wrote:
>>> On Thu, Jul 30, 2026 at 07:38:20PM +0530, Neeraj Soni wrote:
>>>> Host looses the Inline Crypto Engine (ICE) keys during hardware reset.
>>>> Re-program the keys while intializing ICE to ensure that ICE is available
>>>> in the same state as before the hardware reset.
>>>>
>>>> Also set MMC_CAP2_CRYPTO_NO_REPROG to indicate that re-program of ICE keys
>>>> is not needed during MMC runtime suspend/resume.
>>>>
>>>> Signed-off-by: Seshu Madhavi Puppala <[email protected]>
>>>> Co-developed-by: Ram Prakash Gupta <[email protected]>
>>>> Signed-off-by: Ram Prakash Gupta <[email protected]>
>>>> Co-developed-by: Sarthak Garg <[email protected]>
>>>> Signed-off-by: Sarthak Garg <[email protected]>
>>>> Signed-off-by: Debraj Mukhopadhyay <[email protected]>
>>>> Signed-off-by: Neeraj Soni <[email protected]>
>>>> ---
>>>>  drivers/mmc/host/sdhci-msm.c | 3 +++
>>>>  1 file changed, 3 insertions(+)
>>>>
>>>> diff --git a/drivers/mmc/host/sdhci-msm.c b/drivers/mmc/host/sdhci-msm.c
>>>> index 4aff965f0e2e..7d71dc6f388d 100644
>>>> --- a/drivers/mmc/host/sdhci-msm.c
>>>> +++ b/drivers/mmc/host/sdhci-msm.c
>>>> @@ -1958,7 +1958,10 @@ static int sdhci_msm_ice_init(struct sdhci_msm_host *msm_host,
>>>>  				cap.sdus_mask * 512;
>>>>  	}
>>>>  
>>>> +	blk_crypto_reprogram_all_keys(&mmc->crypto_profile);
>>>> +
>>>
>>> This still does nothing.  The crypto profile was just initialized, so no
>>> keyslots are in-use and blk_crypto_reprogram_all_keys() does nothing.
>>>
>> This is needed to address those scenarios where device is running in a
>> stable state and only the host hardware goes for a reset, for example,
>> to recover from an error state or stall.
> 
> Nope.  Please check the actual code.  This is called only at driver
> probe time.  Again, the crypto profile was just initialized, and no
> keyslots are in-use.  It is a no-op.  Maybe you intended it to do
> something else, but that is not what it actually does.
> 
> - Eric

Hi Neeraj,

earlier change for blk_crypto_reprogram_all_keys() in sdhci_msm_gcc_reset() was required
when .hw_reset from sdhci_ops was overwritten with sdhi_msm_gcc_reset internally for robust
error recovery but this changed after https://lore.kernel.org/all/[email protected]/

we plan to rework recovery soon and we will take care of key reprogramming as part of that.
For time being you can drop this, as Eric pointed out, this is redundant.

Thanks,
Ram