These patches add support to Qualcomm ICE for hardware wrapped keys and are made on top of Eric Bigger's set of changes to support wrapped keys. Found here: https://lore.kernel.org/linux-block/20210916174928.65529-1-ebiggers@xxxxxxxxxx). Explanation and use of hardware-wrapped-keys can be found here: Documentation/block/inline-encryption.rst The first patch however is not related to wrapped keys. It is for moving ICE functionality into a shared library which both ufs and sdhci can use. The patch for sdhc-msm will be uploaded later. Wrapped keys are supported in Qualcomm's ICE engine using a proprietary hardware module known as Hardware Key Manager (HWKM). The patches are revolved around that and testing for them can be done only on a HWKM supported Qualcomm device. Testing: Test platform: SM8350 HDK/MTP Engineering trustzone image (based on sm8350) is required to test this feature. This is because of version changes of HWKM. HWKM version 2 and moving forward has a lot of restrictions on the key management due to which the launched SM8350 solution (based on v1) cannot be used and some modifications are required in trustzone. The ideal scenario is to test by mounting initramfs on an upstream kernel and then using the fscrypt tool to setup directories with encryption policies. Testing and development for that is still under way. All the SCM calls however were individually tested from UFS by invoking a test API on bootup which is not part of these patchsets. Gaurav Kashyap (10): soc: qcom: new common library for ICE functionality scsi: ufs: qcom: move ICE functionality to common library qcom_scm: scm call for deriving a software secret soc: qcom: add HWKM library for storage encryption scsi: ufs: prepare to support wrapped keys soc: qcom: add wrapped key support for ICE qcom_scm: scm call for create, prepare and import keys scsi: ufs: add support for generate, import and prepare keys soc: qcom: support for generate, import and prepare key arm64: dts: qcom: sm8350: add ice and hwkm mappings arch/arm64/boot/dts/qcom/sm8350.dtsi | 5 +- drivers/firmware/qcom_scm.c | 286 +++++++++++++++++++ drivers/firmware/qcom_scm.h | 4 + drivers/scsi/ufs/Kconfig | 1 + drivers/scsi/ufs/ufs-qcom-ice.c | 227 +++++---------- drivers/scsi/ufs/ufs-qcom.c | 4 + drivers/scsi/ufs/ufs-qcom.h | 22 +- drivers/scsi/ufs/ufshcd-crypto.c | 96 ++++++- drivers/scsi/ufs/ufshcd.h | 20 +- drivers/soc/qcom/Kconfig | 7 + drivers/soc/qcom/Makefile | 1 + drivers/soc/qcom/qti-ice-common.c | 402 +++++++++++++++++++++++++++ drivers/soc/qcom/qti-ice-hwkm.c | 111 ++++++++ drivers/soc/qcom/qti-ice-regs.h | 264 ++++++++++++++++++ include/linux/qcom_scm.h | 30 +- include/linux/qti-ice-common.h | 40 +++ 16 files changed, 1345 insertions(+), 175 deletions(-) create mode 100644 drivers/soc/qcom/qti-ice-common.c create mode 100644 drivers/soc/qcom/qti-ice-hwkm.c create mode 100644 drivers/soc/qcom/qti-ice-regs.h create mode 100644 include/linux/qti-ice-common.h -- 2.17.1
![]() |