On Mon, Aug 21, 2023 at 12:20:37PM +0530, Om Prakash Singh wrote: > Add new capability MMC_CAP2_CRYPTO_RETAIN_KEY for mmc host that > support inline crypto key retention and doesn't need reinitialization > of all keys after mmc host has reinitialized. MMC_CAP2_RETAINS_CRYPTO_KEYS would be a better name. > diff --git a/drivers/mmc/host/sdhci-msm.c b/drivers/mmc/host/sdhci-msm.c > index 1c935b5bafe1..cfc2328f90ed 100644 > --- a/drivers/mmc/host/sdhci-msm.c > +++ b/drivers/mmc/host/sdhci-msm.c > @@ -1828,6 +1828,7 @@ static int sdhci_msm_ice_init(struct sdhci_msm_host *msm_host, > > msm_host->ice = ice; > mmc->caps2 |= MMC_CAP2_CRYPTO; > + mmc->caps2 |= MMC_CAP2_CRYPTO_RETAIN_KEY; > > return 0; > } Are you sure that *all* versions of Qualcomm's eMMC inline encryption hardware have this behavior? > diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h > index 461d1543893b..74c69415746d 100644 > --- a/include/linux/mmc/host.h > +++ b/include/linux/mmc/host.h > @@ -417,8 +417,10 @@ struct mmc_host { > #define MMC_CAP2_MERGE_CAPABLE (1 << 26) /* Host can merge a segment over the segment size */ > #ifdef CONFIG_MMC_CRYPTO > #define MMC_CAP2_CRYPTO (1 << 27) /* Host supports inline encryption */ > +#define MMC_CAP2_CRYPTO_RETAIN_KEY (1 << 28) /* Host doesn't need inline encryption key reinitialization */ How about: /* Host retains inline encryption keys on reset */ > #else > #define MMC_CAP2_CRYPTO 0 > +#define MMC_CAP2_CRYPTO_RETAIN_KEY 0 > #endif > #define MMC_CAP2_ALT_GPT_TEGRA (1 << 28) /* Host with eMMC that has GPT entry at a non-standard location */ '1 << 28' is already used. Also, the new flag doesn't need to be in the #ifdef section. - Eric