[PATCH 00/10] Add wrapped key support for Qualcomm ICE

Gaurav Kashyap
2021-12-06T22:58:34Z

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@kernel.org).
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