Add support for Flash Memory Protector (FMP), which is the inline encryption hardware on Exynos and Exynos-based SoCs. Specifically, add support for the "traditional FMP mode" that works on many Exynos-based SoCs including gs101. This is the mode that uses "software keys" and is compatible with the upstream kernel's existing inline encryption framework in the block and filesystem layers. I plan to add support for the wrapped key support on gs101 at a later time. Tested on gs101 (specifically Pixel 6) by running the 'encrypt' group of xfstests on a filesystem mounted with the 'inlinecrypt' mount option. This patchset applies to v6.10-rc6, and it has no prerequisites that aren't already upstream. Changed in v3: - Made the FMP support depend on EXYNOS_UFS_OPT_UFSPR_SECURE, since the !EXYNOS_UFS_OPT_UFSPR_SECURE case has not yet been tested - Replaced LOG2_DATA_UNIT_SIZE with ilog2(DATA_UNIT_SIZE) - Added Reviewed-by tags Changed in v2: - Added DATA_UNIT_SIZE macro - Changed a comment into kerneldoc - Used ARM_SMCCC_CALL_VAL() to define SMC codes - Used arm_smccc_smc() directly instead of via a wrapper function Eric Biggers (6): scsi: ufs: core: Add UFSHCD_QUIRK_CUSTOM_CRYPTO_PROFILE scsi: ufs: core: fold ufshcd_clear_keyslot() into its caller scsi: ufs: core: Add UFSHCD_QUIRK_BROKEN_CRYPTO_ENABLE scsi: ufs: core: Add fill_crypto_prdt variant op scsi: ufs: core: Add UFSHCD_QUIRK_KEYS_IN_PRDT scsi: ufs: exynos: Add support for Flash Memory Protector (FMP) drivers/ufs/core/ufshcd-crypto.c | 34 +++-- drivers/ufs/core/ufshcd-crypto.h | 36 +++++ drivers/ufs/core/ufshcd.c | 3 +- drivers/ufs/host/ufs-exynos.c | 240 ++++++++++++++++++++++++++++++- include/ufs/ufshcd.h | 28 ++++ 5 files changed, 320 insertions(+), 21 deletions(-) base-commit: 22a40d14b572deb80c0648557f4bd502d7e83826 -- 2.45.2