From: Jorge Ramirez <jorge.ramirez@oss.qualcomm.com>
To: Jarkko Sakkinen <jarkko@kernel.org>
Cc: Jorge Ramirez-Ortiz <jorge.ramirez@oss.qualcomm.com>,
peterhuewe@gmx.de, jgg@ziepe.ca, sumit.garg@oss.qualcomm.com,
linux-kernel@vger.kernel.org, linux-integrity@vger.kernel.org
Subject: Re: [PATCH v3 0/2] tpm: OP-TEE transport core for discrete and firmware TPMs
Date: Fri, 13 Nov 2026 18:29:10 +0100 [thread overview]
Message-ID: <avdI5vZCobTmpIuM@trex> (raw)
In-Reply-To: <avciKM_pGW6hs_so@kernel.org>
On 13/11/26 16:43:52, Jarkko Sakkinen wrote:
> On Wed, Nov 11, 2026 at 10:59:33PM +0100, Jorge Ramirez-Ortiz wrote:
> > This adds a driver for a discrete TPM that OP-TEE owns and the normal
> > world cannot reach directly, and factors the shared OP-TEE TEE transport
> > into a small core so the existing fTPM driver uses it too:
> >
> > - a transport core shared by the OP-TEE TPM front-ends;
> > - a new discrete TPM front-end;
> > - the fTPM driver converted onto the core, keeping its name, its
> > platform/OF binding and its shutdown path.
> >
> > Patch 1 is the feature; patch 2 is the fTPM conversion that justifies the
> > core. Both front-ends were exercised on the Qualcomm Lemans EVK over the
> > shared core: the discrete ST33 TPM (patch 1) and the MS-TPM-20 firmware
> > TPM TA (patch 2), each presenting a working /dev/tpm0 (tpm2_getrandom,
> > PCR read). The fTPM TA is the same MS-TPM-20 reference the existing
> > tpm_ftpm_tee platforms use.
> >
> > This is the normal-world half. The secure-world OP-TEE support it binds
> > to -- the in-core TPM2 SPI (TIS) driver and the mediator pseudo TA that
> > relays commands to it -- is under review separately:
> >
> > OP-TEE support: https://github.com/OP-TEE/optee_os/pull/8155
> > locality 4: https://github.com/OP-TEE/optee_os/issues/8160
> > (design follow-up: the secure world policing
> > normal-world locality access to the shared chip)
> >
> > Build and test it on the Qualcomm Lemans EVK (a discrete ST33 TPM on
> > SPI, owned by OP-TEE):
> >
> > https://qualcomm-linux.github.io/qcom-buildroot/lemans/quick-start.html
> >
> > v1: https://lore.kernel.org/linux-integrity/20261026163259.1900439-1-jorge.ramirez@oss.qualcomm.com/
> > v2: https://lore.kernel.org/linux-integrity/20261110141923.3100770-1-jorge.ramirez@oss.qualcomm.com/
> >
> > Changes since v2:
> > - tpm_optee_dtpm: give the discrete-TPM front-end a .shutdown callback so
> > it releases its TEE session and dynamic shared memory on shutdown/kexec,
> > as the fTPM front-end already did; without it the session and the
> > normal-world pages stayed registered in OP-TEE across a kexec, which can
> > stop the next kernel opening a session to the chip.
> > - move the shared tpm_optee_shutdown() helper into the core patch so that
> > patch builds on its own; the dTPM front-end no longer forward-references
> > a symbol that was added in patch 2.
> >
> > Changes since v1:
> > - split the shared TEE transport into a core; the discrete chip is now a
> > thin front-end, the tpm_tis_core-style solution that was asked for.
> > - convert the fTPM driver onto the same core instead of duplicating it.
> > - use an optee-prefixed name for the new modules; the fTPM driver keeps
> > its name, no module rename.
> > - rewrite the commit message with a plain description of the components
> > and the rationale for a separate front-end.
> > - drop the explicit zeroing in favour of initialisers, and reword the
> > module description.
> >
> > Jorge Ramirez-Ortiz (2):
> > tpm: add OP-TEE transport core and a discrete TPM driver
> > tpm_ftpm_tee: use the tpm_optee transport core
> >
> > MAINTAINERS | 8 +
> > drivers/char/tpm/Kconfig | 28 +++
> > drivers/char/tpm/Makefile | 2 +
> > drivers/char/tpm/tpm_ftpm_tee.c | 295 ++----------------------------
> > drivers/char/tpm/tpm_ftpm_tee.h | 35 ----
> > drivers/char/tpm/tpm_optee.c | 253 +++++++++++++++++++++++++
> > drivers/char/tpm/tpm_optee.h | 32 ++++
> > drivers/char/tpm/tpm_optee_dtpm.c | 73 ++++++++
> > 8 files changed, 414 insertions(+), 312 deletions(-)
> > delete mode 100644 drivers/char/tpm/tpm_ftpm_tee.h
> > create mode 100644 drivers/char/tpm/tpm_optee.c
> > create mode 100644 drivers/char/tpm/tpm_optee.h
> > create mode 100644 drivers/char/tpm/tpm_optee_dtpm.c
> >
> >
> > base-commit: c03c1a14507dfaf8b856c2608f9ac216021fc222
> > --
> > 2.55.0
> >
>
> I applied but had to fix some merge conflicts so check up my tree.
>
> Br, Jarkko
thanks and sorry about it.
I had a look to your tree and it looks good. But I think we could
perhaps add the following to the new file (see the patch below)
Not sure how to do it thought- shall I send it standalone?
drivers/char/tpm/tpm_optee.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/char/tpm/tpm_optee.c b/drivers/char/tpm/tpm_optee.c
index e2223242327e..3c17de1306a1 100644
--- a/drivers/char/tpm/tpm_optee.c
+++ b/drivers/char/tpm/tpm_optee.c
@@ -166,7 +166,7 @@ int tpm_optee_probe(struct device *dev, const struct tpm_optee_config *cfg)
struct tpm_chip *chip;
int rc;
- pvt_data = devm_kzalloc(dev, sizeof(*pvt_data), GFP_KERNEL);
+ pvt_data = devm_kzalloc_obj(dev, struct tpm_optee_private);
if (!pvt_data)
return -ENOMEM;
--
next prev parent reply other threads:[~2026-11-13 17:29 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-11 21:59 [PATCH v3 0/2] tpm: OP-TEE transport core for discrete and firmware TPMs Jorge Ramirez-Ortiz
2026-11-11 21:59 ` [PATCH v3 1/2] tpm: add OP-TEE transport core and a discrete TPM driver Jorge Ramirez-Ortiz
2026-11-11 21:59 ` [PATCH v3 2/2] tpm_ftpm_tee: use the tpm_optee transport core Jorge Ramirez-Ortiz
2026-11-11 22:02 ` [PATCH v3 0/2] tpm: OP-TEE transport core for discrete and firmware TPMs Jorge Ramirez
2026-11-11 23:04 ` Jarkko Sakkinen
2026-11-13 14:43 ` Jarkko Sakkinen
2026-11-13 17:29 ` Jorge Ramirez [this message]
2026-11-13 18:32 ` Jarkko Sakkinen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=avdI5vZCobTmpIuM@trex \
--to=jorge.ramirez@oss.qualcomm.com \
--cc=jarkko@kernel.org \
--cc=jgg@ziepe.ca \
--cc=linux-integrity@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=peterhuewe@gmx.de \
--cc=sumit.garg@oss.qualcomm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.