Add OP-TEE based RPMB driver for UFS devices
From: | Bean Huo <beanhuo-AT-iokpp.de> | |
To: | avri.altman-AT-wdc.com, bvanassche-AT-acm.org, alim.akhtar-AT-samsung.com, jejb-AT-linux.ibm.com, martin.petersen-AT-oracle.com, can.guo-AT-oss.qualcomm.com, ulf.hansson-AT-linaro.org, beanhuo-AT-micron.com, jens.wiklander-AT-linaro.org | |
Subject: | [PATCH v2 0/3] Add OP-TEE based RPMB driver for UFS devices | |
Date: | Wed, 01 Oct 2025 08:08:02 +0200 | |
Message-ID: | <20251001060805.26462-1-beanhuo@iokpp.de> | |
Cc: | linux-scsi-AT-vger.kernel.org, linux-kernel-AT-vger.kernel.org, Bean Huo <beanhuo-AT-iokpp.de> | |
Archive-link: | Article |
This patch series introduces OP-TEE based RPMB (Replay Protected Memory Block) support for UFS devices, extending the kernel-level secure storage capabilities that are currently available for eMMC devices. Previously, OP-TEE required a userspace supplicant to access RPMB partitions, which created complex dependencies and reliability issues, especially during early boot scenarios. Recent work by Linaro has moved core supplicant functionality directly into the Linux kernel for eMMC devices, eliminating userspace dependencies and enabling immediate secure storage access. This series extends the same approach to UFS devices, which are used in enterprise and mobile applications that require secure storage capabilities. Benefits: - Eliminates dependency on userspace supplicant for UFS RPMB access - Enables early boot secure storage access (e.g., fTPM, secure UEFI variables) - Provides kernel-level RPMB access as soon as UFS driver is initialized - Removes complex initramfs dependencies and boot ordering requirements - Ensures reliable and deterministic secure storage operations - Supports both built-in and modular fTPM configurations. v1 -- v2: 1. Added fix tag for patch [2/3] 2. Incorporated feedback and suggestions from Bart RFC v1 -- v1: 1. Added support for all UFS RPMB regions based on https://github.com/OP-TEE/optee_os/issues/7532 2. Incorporated feedback and suggestions from Bart Bean Huo (3): rpmb: move rpmb_frame struct and constants to common header scsi: ufs: core: fix incorrect buffer duplication in ufshcd_read_string_desc() scsi: ufs: core: Add OP-TEE based RPMB driver for UFS devices drivers/misc/Kconfig | 2 +- drivers/mmc/core/block.c | 42 ------ drivers/ufs/core/Makefile | 1 + drivers/ufs/core/ufs-rpmb.c | 253 +++++++++++++++++++++++++++++++++ drivers/ufs/core/ufshcd-priv.h | 13 ++ drivers/ufs/core/ufshcd.c | 32 ++++- include/linux/rpmb.h | 44 ++++++ include/ufs/ufs.h | 4 + include/ufs/ufshcd.h | 3 + 9 files changed, 346 insertions(+), 48 deletions(-) create mode 100644 drivers/ufs/core/ufs-rpmb.c -- 2.34.1