From: James Bottomley <James.Bottomley@HansenPartnership.com>
To: Yeoreum Yun <yeoreum.yun@arm.com>, Mimi Zohar <zohar@linux.ibm.com>
Cc: Jason Gunthorpe <jgg@nvidia.com>,
Dionna Glaze <drdeeglaze@gmail.com>,
Jiri Pirko <jiri@resnulli.us>,
Jarkko Sakkinen <jarkko@kernel.org>,
linux-coco@lists.linux.dev, linux-kernel@vger.kernel.org,
linux-api@vger.kernel.org, x86@kernel.org, kvm@vger.kernel.org,
linux-doc@vger.kernel.org, david.quigley@intel.com,
lukas@wunner.de, ksinyuk@kernel.org, rodrigo.vivi@intel.com,
cedric.xing@intel.com, sameo@meta.com, aik@amd.com,
jpiotrowski@nvidia.com, qinkun@google.com, pgonda@google.com,
jic23@kernel.org, alistair.francis@wdc.com, ankita@nvidia.com,
suzuki.poulose@arm.com, kas@kernel.org,
rick.p.edgecombe@intel.com, elena.reshetova@intel.com,
dave.hansen@linux.intel.com,
sathyanarayanan.kuppuswamy@linux.intel.com,
peter.fang@intel.com, roberto.sassu@huawei.com
Subject: Re: [PATCH RFC 00/20] attestation: Add a common subsystem and TDX support
Date: Wed, 21 Oct 2026 08:48:28 -0400 [thread overview]
Message-ID: <2641f9f5141126af8a93763fcbdd2ffd5c4e520b.camel@HansenPartnership.com> (raw)
In-Reply-To: <ateSly15N5mLrM1m@e129823.arm.com>
On Tue, 2026-10-20 at 17:11 +0100, Yeoreum Yun wrote:
> > On Tue, 2026-10-20 at 11:06 -0300, Jason Gunthorpe wrote:
> > > On Tue, Oct 20, 2026 at 09:45:13AM -0400, Mimi Zohar wrote:
[...]
> > > > To support this framework, IMA requires a strict, atomic
> > > > execution sequence to maintain the Measure → Extend → Execute
> > > > (Measure Before Use) guarantee. This initializes early during
> > > > the late_initcall phase within the initramfs (via dracut).
> > > >
> > > > If the new subsystem introduces a direct kernel-to-kernel
> > > > multiplexing call path, how will it ensure the mandatory
> > > > synchronous wait behavior when extending multiple hardware
> > > > backends?
> > >
> > > Everything has this 'measure before use' requirement. Why would
> > > this be hard? Just loop over all the configured measurement
> > > targets if thats the plan? Maybe I'm missing something?
> >
> > As long as the measurements aren't queued, but actually wait for
> > the multiple ROTs to complete, it isn't a problem.
Just to be super precise about this, it's the extension of the
measurement to the TPM that must be contemporaneous. We have a few
examples in UEFI where the TPM gets extended and then a bit later (when
more stuff is ready) the log entry gets added.
Just on the waiting for ROTs to complete ... that's not accurate for a
TPM: the ROT, which is effectively the initial measurement, completed
long ago (in TPM terms this is the RTM - Root of Trust for
Measurement). The problem is actually a communication problem not a
readiness one, see below.
> But, I have a related concern about deferred probing of RoT devices.
>
> For example, if TPM probing is deferred until after the attestation
> subsystem has been initialized, how would the subsystem handle the
> TPM becoming available later (This is reason for IMA_INIT_LATE_SYNC).
>
> In particular, when I see breifly proviers/tdx.c and imange for TPM,
> once if it's failed to get tpm_default_chip() in module_init(),
> There is no way to retry and TPM seems not to be exported as RoT
> device.
>
> Am I missing something?
Mimi already answered the main thrust of this, but there's a corollary:
because of the early init requirements, the TPM driver must be
available before the first non-EFI kernel measurement is made, which
means TPM drivers can't be modules.
The reason for the above in a UEFI system is because the
ExitBootServices() call in the EFI stub kills the UEFI TPM driver, so
there's no way of using the TPM between that call and the kernel
initializing its own TPM driver. I've often thought that if we could
prevent that and have a separate callback to kill the UEFI TPM driver
(or probably one before ExitBootServices to say please keep this driver
and then another to say I'm done), we could effectively use that for
early kernel measurements and then engineer a handover to the in-kernel
driver and then not be too worried about when the in-kernel driver
attaches. Of course, doing all this would require a UEFI spec update,
which means it's not a quick or easy thing.
Regards,
James
next prev parent reply other threads:[~2026-10-21 12:48 UTC|newest]
Thread overview: 69+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-15 14:50 [PATCH RFC 00/20] attestation: Add a common subsystem and TDX support Jiri Pirko
2026-10-15 14:50 ` [PATCH RFC 01/20] ctlv: Add the schema language and generator Jiri Pirko
2026-10-20 22:31 ` Jonathan Cameron
2026-10-21 13:23 ` Jiri Pirko
2026-10-15 14:50 ` [PATCH RFC 02/20] ctlv: Add the UAPI wire format and family API Jiri Pirko
2026-10-19 23:29 ` Jason Gunthorpe
2026-10-20 12:26 ` Jiri Pirko
2026-10-20 23:00 ` Jonathan Cameron
2026-10-20 23:39 ` Jonathan Cameron
2026-10-15 14:50 ` [PATCH RFC 03/20] ctlv: Add the root family specification and generated files Jiri Pirko
2026-10-19 23:29 ` Jason Gunthorpe
2026-10-20 12:28 ` Jiri Pirko
2026-10-20 12:55 ` Jason Gunthorpe
2026-10-20 14:07 ` Jiri Pirko
2026-10-20 23:30 ` Jonathan Cameron
2026-10-15 14:50 ` [PATCH RFC 04/20] Documentation: ctlv: Add userspace ABI Jiri Pirko
2026-10-19 23:29 ` Jason Gunthorpe
2026-10-20 14:06 ` Jiri Pirko
2026-10-21 0:11 ` Jonathan Cameron
2026-10-15 14:50 ` [PATCH RFC 05/20] ctlv: Prepare message input handling Jiri Pirko
2026-10-21 0:43 ` Jonathan Cameron
2026-10-15 14:50 ` [PATCH RFC 06/20] ctlv: Prepare blob descriptor validation Jiri Pirko
2026-10-15 14:50 ` [PATCH RFC 07/20] ctlv: Prepare schema validation Jiri Pirko
2026-10-15 14:50 ` [PATCH RFC 08/20] ctlv: Prepare message output handling Jiri Pirko
2026-10-15 14:50 ` [PATCH RFC 09/20] ctlv: Prepare VA blob handling Jiri Pirko
2026-10-15 14:50 ` [PATCH RFC 10/20] ctlv: Prepare event queue support Jiri Pirko
2026-10-21 1:12 ` Jonathan Cameron
2026-10-15 14:50 ` [PATCH RFC 11/20] ctlv: Prepare runtime introspection Jiri Pirko
2026-10-15 14:50 ` [PATCH RFC 12/20] ctlv: Add device and operation dispatch Jiri Pirko
2026-10-21 1:25 ` Jonathan Cameron
2026-10-15 14:50 ` [PATCH RFC 13/20] Documentation: ctlv: Describe how to write a family Jiri Pirko
2026-10-19 23:29 ` Jason Gunthorpe
2026-10-15 14:50 ` [PATCH RFC 14/20] attestation: Add the base family specification and generated files Jiri Pirko
2026-10-15 14:50 ` [PATCH RFC 15/20] attestation: Prepare provider and instance core Jiri Pirko
2026-10-19 23:29 ` Jason Gunthorpe
2026-10-21 13:04 ` Jiri Pirko
2026-10-15 14:50 ` [PATCH RFC 16/20] attestation: Prepare measurement register journal Jiri Pirko
2026-10-15 14:50 ` [PATCH RFC 17/20] attestation: Add CTLV operation handling Jiri Pirko
2026-10-15 14:50 ` [PATCH RFC 18/20] tdx-guest: Expose the native attestation service API Jiri Pirko
2026-10-15 14:50 ` [PATCH RFC 19/20] attestation: Add the TDX family specification and generated files Jiri Pirko
2026-10-15 14:50 ` [PATCH RFC 20/20] attestation: Add the TDX family implementation Jiri Pirko
2026-10-16 23:43 ` [PATCH RFC 00/20] attestation: Add a common subsystem and TDX support Jason Gunthorpe
2026-10-17 18:16 ` Dionna Glaze
2026-10-17 19:06 ` Jarkko Sakkinen
2026-10-17 19:08 ` Jarkko Sakkinen
2026-10-17 19:22 ` Jarkko Sakkinen
2026-10-17 20:55 ` Jason Gunthorpe
2026-10-17 21:14 ` Jarkko Sakkinen
2026-10-17 20:34 ` Jason Gunthorpe
2026-10-17 20:55 ` Jarkko Sakkinen
2026-10-17 23:10 ` Jason Gunthorpe
2026-10-18 23:53 ` Dionna Glaze
2026-10-19 12:08 ` Jiri Pirko
2026-10-19 16:10 ` Dionna Glaze
2026-10-19 22:56 ` Jason Gunthorpe
2026-10-21 8:33 ` Jiri Pirko
2026-10-20 9:26 ` Jiri Pirko
2026-10-20 13:45 ` Mimi Zohar
2026-10-20 14:06 ` Jason Gunthorpe
2026-10-20 15:22 ` Mimi Zohar
2026-10-20 16:11 ` Yeoreum Yun
2026-10-20 16:52 ` Jason Gunthorpe
2026-10-21 12:23 ` Mimi Zohar
2026-10-21 13:18 ` Jarkko Sakkinen
2026-10-21 12:48 ` James Bottomley [this message]
2026-10-19 12:40 ` Jarkko Sakkinen
2026-10-19 23:11 ` Jason Gunthorpe
2026-10-20 12:49 ` James Bottomley
2026-10-20 13:13 ` Jason Gunthorpe
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=2641f9f5141126af8a93763fcbdd2ffd5c4e520b.camel@HansenPartnership.com \
--to=james.bottomley@hansenpartnership.com \
--cc=aik@amd.com \
--cc=alistair.francis@wdc.com \
--cc=ankita@nvidia.com \
--cc=cedric.xing@intel.com \
--cc=dave.hansen@linux.intel.com \
--cc=david.quigley@intel.com \
--cc=drdeeglaze@gmail.com \
--cc=elena.reshetova@intel.com \
--cc=jarkko@kernel.org \
--cc=jgg@nvidia.com \
--cc=jic23@kernel.org \
--cc=jiri@resnulli.us \
--cc=jpiotrowski@nvidia.com \
--cc=kas@kernel.org \
--cc=ksinyuk@kernel.org \
--cc=kvm@vger.kernel.org \
--cc=linux-api@vger.kernel.org \
--cc=linux-coco@lists.linux.dev \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lukas@wunner.de \
--cc=peter.fang@intel.com \
--cc=pgonda@google.com \
--cc=qinkun@google.com \
--cc=rick.p.edgecombe@intel.com \
--cc=roberto.sassu@huawei.com \
--cc=rodrigo.vivi@intel.com \
--cc=sameo@meta.com \
--cc=sathyanarayanan.kuppuswamy@linux.intel.com \
--cc=suzuki.poulose@arm.com \
--cc=x86@kernel.org \
--cc=yeoreum.yun@arm.com \
--cc=zohar@linux.ibm.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox