Re: [PATCH v4 0/3] Inline Encryption Support for UFS

Eric Biggers
2020-07-07T00:14:02Z

On Mon, Jul 06, 2020 at 08:04:11PM +0000, Satya Tangirala wrote:
> This patch series adds support for inline encryption to UFS using
> the inline encryption support in the block layer. It follows the JEDEC
> UFSHCI v2.1 specification, which defines inline encryption for UFS.
>
> This patch series previously went through a number of iterations as
> part of the "Inline Encryption Support" patchset (last version was v13:
> https://lkml.kernel.org/r/20200514003727.69001-1-satyat@google.com).
> This patch series is rebased on v5.8-rc4.
>
> Patch 1 introduces the crypto registers and struct definitions defined
> in the UFSHCI v2.1 spec.
>
> Patch 2 introduces functions to manipulate the UFS inline encryption
> hardware (again in line with the UFSHCI v2.1 spec) via the block
> layer keyslot manager. Device specific drivers must set the
> UFSHCD_CAP_CRYPTO in hba->caps before ufshcd_hba_init_crypto is called
> to opt-in to inline encryption support.

Note that it's now ufshcd_hba_init_crypto_capabilities(), not
ufshcd_hba_init_crypto().

>
> Patch 3 wires up ufshcd.c with the UFS crypto API introduced in Patch 2.
>
> This patch series has been tested on some Qualcomm chipsets (on the
> db845c, sm8150-mtp and sm8250-mtp) using some additional patches at
> https://lkml.kernel.org/linux-scsi/20200501045111.665881-1-ebiggers@kernel.org/
> and on some Mediatek chipsets using the additional patch in
> https://lkml.kernel.org/linux-scsi/20200304022101.14165-1-stanley.chu@mediatek.com/.
> These additional patches are required because these chipsets need certain
> additional behaviour not specified within the UFSHCI v2.1 spec.
>
> Thanks a lot to all the folks who tested this out!
>
> Changes v3 => v4:
> - fix incorrect patch folding
> - some cleanups from Eric
>
> Changes v2 => v3:
> - introduce ufshcd_prepare_req_desc_hdr_crypto to clean up code slightly
> - split up ufshcd_hba_init_crypto into ufshcd_hba_init_crypto_capabilities
> and ufshcd_init_crypto. The first function is called from
> ufshcd_hba_capabilities, and only reads crypto capabilities from device
> registers and sets up appropriate crypto structures. The second function
> is called from ufshcd_init, and actually initializes the inline crypto
> hardware.
>
> Changes v1 => v2
> - handle OCS_DEVICE_FATAL_ERROR explicitly in ufshcd_transfer_rsp_status
>
> Satya Tangirala (3):
> scsi: ufs: UFS driver v2.1 spec crypto additions
> scsi: ufs: UFS crypto API
> scsi: ufs: Add inline encryption support to UFS

These patches look good to me. Avri and Alim, what do you think?
We'd like these to be applied for 5.9.

- Eric