The Linux Kernel Mailing List
 help / color / mirror / Atom feed
* [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

* [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 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

* 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

* 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

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