From: Jason Gunthorpe <jgg@nvidia.com>
To: Alistair <alistair23@gmail.com>
Cc: Dave Jiang <dave.jiang@intel.com>,
"Reshetova, Elena" <elena.reshetova@intel.com>,
Xu Yilun <yilun.xu@linux.intel.com>,
"Aneesh Kumar K.V" <aneesh.kumar@kernel.org>,
"linux-coco@lists.linux.dev" <linux-coco@lists.linux.dev>,
Jiri Pirko <jiri@resnulli.us>,
"Tian, Kevin" <kevin.tian@intel.com>,
Alexey Kardashevskiy <aik@amd.com>,
Catalin Marinas <catalin.marinas@arm.com>,
Suzuki K Poulose <suzuki.poulose@arm.com>,
Steven Price <steven.price@arm.com>,
Kiryl Shutsemau <kas@kernel.org>,
"Edgecombe, Rick P" <rick.p.edgecombe@intel.com>,
Dave Hansen <dave.hansen@linux.intel.com>,
Jonathan Cameron <jic23@kernel.org>,
Bjorn Helgaas <bhelgaas@google.com>,
Ashish Kalra <ashish.kalra@amd.com>,
Tom Lendacky <thomas.lendacky@amd.com>,
John Allen <john.allen@amd.com>, Will Deacon <will@kernel.org>,
Mark Rutland <mark.rutland@arm.com>,
"patches@lists.linux.dev" <patches@lists.linux.dev>
Subject: Re: [RFC PATCH v1 10/11] virt: coco: arm-cca-host: Publish slot zero and establish streams after acceptance
Date: Tue, 10 Nov 2026 11:07:47 -0400 [thread overview]
Message-ID: <20261110150747.GF738765@nvidia.com> (raw)
In-Reply-To: <4765e562-8c58-4e0f-89f4-eec23b5ef102@gmail.com>
On Tue, Nov 10, 2026 at 11:40:46AM +1000, Alistair wrote:
> On 10/11/26 04:53, Jason Gunthorpe wrote:
> > On Mon, Nov 09, 2026 at 10:37:14AM -0700, Dave Jiang wrote:
> >
> > > One thing on TDX is that TDH.SPDM.CONNECT also runs a
> > > GET_MEASUREMENTS of its own during the connect, and the kernel
> > > doesn't choose its nonce. The kernel wouldn't hand that one to
> > > userspace. Measurements only come out through the two flows, with a
> > > user nonce.
> >
> > Why? Seems like another wasted operation..
> >
> > > That works for TDX. tdx-host's relay is one function today. It takes
> > > the module's request from a page shared with the module and calls
> > > pci_tsm_doe_transfer(), so att_spdm_doe_exchange() drops in there.
> >
> > Yeah, it looks like it works for everyone.
>
> Jason just pointed out this thread, I've tried to pickup what the discussion
> is currently up to, hopefully I've understood it all.
>
> It sounds like the current thinking is the TSM will issue all of the SPDM
> requests and be in control of the session. The kernel will forward those
> requests to the device and Rust SPDM in the kernel will be used to decode
> the responses.
'capture' is the word I want to use here. We actually don't want to
decode them. The goal is to get the message transcript and share it to
user-space in a 100% consistent format derived from the spec.
If DOE had a more sane protocol this would be trivial, just unwrapping
the DOE transport and recovering the exact SPDM messages then storing
them away.
We don't actually want to decode them in the kernel. The padding issue
means we need to decode them enough as part of sizing them :(
> The TSM will be in charge of slot selection, bank selection and algorithm
> support.
kernel will do slot selection, but TSM will drive the slot numbers in
the commands. Yes on algorithms/etc.
> The current Rust SPM implementation has split out the message processing, so
> that should be somewhat easy to reuse. Basically (in Rust) you pass in the
> bytes of an SPDM response, specify what the reply is (CHALLENGE_RSP) and you
> get a nice destructed struct back (or an error if it's invalid). It's all
> called the Validator as it validates Untrusted data and returns an SPDM
> response.
This isn't quite the right thing, we want a module that undoes the
transport chunking, padding, and GET_CERTIFICATE chunking to store
pristine raw messages. We don't want to validate or decode them,
beyond what is necessary to undo the padding.
The goal is to pass pristine message bytes to userspace as the
transcript report.
Your series should have most of this, but I am guessing in not quite
the right arrangement.
> > But it brings forward "rust spdm" or something in a new form as a
> > pre-condition to do the TSMs. Which is annoying for sure.
>
> The Rust SPDM code is hopefully really close! I'm planning on sending v6
> today or tomorrow.
No TSM drivers will go ahead until all of this and the uAPI is fully
agreed..
Plus now there is this issue if we need to reorganize things to
support this capture flow.
> > The optional chunking features are a bit tricky, but I don't think a
> > 1.2 only implementation needs them. They seem necesary for future
> > post-quantum.
>
> Maybe for PQC, but generally this doesn't seem to come up much with DOE. So
> for now it should be fine.
I gathered the PQC issue is the signatures can get really big and the
biggest DOE chunk may not be sufficient anymore depending on
implementation.
> > This also formalizes the version locking: the TSM FW cannot use a SPDM
> > version that the kernel does not understand. I think this was already
> > basically true, trying to do the 1.3 multi-slot flow is not going to
> > work out with out kernel support to move the additional data. Maybe
> > nobody noticed, but with this scheme it would be really formal.
>
> The kernel patches support 1.0 - 1.4, so that should be fine.
Not support as in "I can be an initiator and do a limited subset"
Support as in "I can be an observer and accept *everything* in the
spec the actual initiator might use"
For now all we need is a fairly complete 1.2 since that is the minimum
rev for PCIe (by spec) and the only thing any TSM FW has implemented.
> > But, I am strongly tempted to make a draft placeholder in C with AI as
> > a way to get alignment and try it out. Something we can throw out if a
> > Rust version comes along.
>
> I would argue that you would be better spending that effort on making
> changes to the Rust code and re-use that. That at least would make sure it
> can be adjusted to do what you want and would be more useful :)
Heh, well I don't know Rust so I'm useless. I also have no Rust
knowers to recruit to such a project right now.
The best I can do is make a draft with AI reusing parts of your series
that shows exactly what I'm thinking and we can talk about how to go
from there.
I fear it will not be very good rust though. I fear this will be a
huge delay :)
This direction would end up with two series, a core bit doing the
message capture and a secondary one doing the in-kernel
initiator. Maybe we don't need any new rust bindings just for
capture..
But sure it is just AI $$ we can have a try.
Jason
next prev parent reply other threads:[~2026-11-10 15:07 UTC|newest]
Thread overview: 89+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-28 15:26 [RFC PATCH v1 00/11] PCI/TSM: Add CTLV attestation Aneesh Kumar K.V (Arm)
2026-10-28 15:26 ` [RFC PATCH v1 01/11] attestation: Restrict inherited operations per instance Aneesh Kumar K.V (Arm)
2026-10-30 13:29 ` Jiri Pirko
2026-10-28 15:26 ` [RFC PATCH v1 02/11] attestation: Filter evidence objects " Aneesh Kumar K.V (Arm)
2026-10-30 13:44 ` Jiri Pirko
2026-10-31 6:24 ` Aneesh Kumar K.V
2026-11-02 19:14 ` Jiri Pirko
2026-10-28 15:26 ` [RFC PATCH v1 03/11] attestation: Enter secure operation when evidence is accepted Aneesh Kumar K.V (Arm)
2026-10-30 13:51 ` Jiri Pirko
2026-10-30 15:36 ` Jason Gunthorpe
2026-10-31 4:09 ` Aneesh Kumar K.V
2026-11-02 11:28 ` Jiri Pirko
2026-10-28 15:26 ` [RFC PATCH v1 04/11] attestation: Bind object selection to accepted evidence snapshots Aneesh Kumar K.V (Arm)
2026-10-28 15:26 ` [RFC PATCH v1 05/11] attestation: Make the evidence-get challenge attribute optional Aneesh Kumar K.V (Arm)
2026-10-28 15:26 ` [RFC PATCH v1 06/11] PCI/TSM: Describe the PCI attestation control family Aneesh Kumar K.V (Arm)
2026-10-30 14:01 ` Jiri Pirko
2026-10-30 15:43 ` Jason Gunthorpe
2026-11-02 12:45 ` Jiri Pirko
2026-11-03 15:45 ` Jason Gunthorpe
2026-11-04 9:21 ` Jiri Pirko
2026-11-04 14:00 ` Jason Gunthorpe
2026-10-31 4:05 ` Aneesh Kumar K.V
2026-11-02 11:50 ` Jiri Pirko
2026-11-03 15:35 ` Jason Gunthorpe
2026-10-31 4:22 ` Aneesh Kumar K.V
2026-11-02 11:30 ` Jiri Pirko
2026-11-03 15:39 ` Jason Gunthorpe
2026-10-28 15:26 ` [RFC PATCH v1 07/11] attestation: Add attestation helpers for PCI/TSM integration Aneesh Kumar K.V (Arm)
2026-10-28 15:26 ` [RFC PATCH v1 08/11] PCI/TSM: Bind CTLV attestation to connected and locked contexts Aneesh Kumar K.V (Arm)
2026-10-28 22:56 ` Dave Jiang
2026-10-29 5:30 ` Aneesh Kumar K.V
2026-10-29 12:41 ` Jason Gunthorpe
2026-10-30 14:04 ` Jiri Pirko
2026-10-30 14:08 ` Jiri Pirko
2026-10-30 15:39 ` Jason Gunthorpe
2026-11-02 12:11 ` Jiri Pirko
2026-11-03 15:41 ` Jason Gunthorpe
2026-10-28 15:26 ` [RFC PATCH v1 09/11] crypto/ccp: Defer SEV-TIO link setup until evidence acceptance Aneesh Kumar K.V (Arm)
2026-11-06 7:47 ` Alexey Kardashevskiy
2026-11-06 13:14 ` Aneesh Kumar K.V
2026-11-06 14:21 ` Jason Gunthorpe
2026-11-09 10:03 ` Alexey Kardashevskiy
2026-10-28 15:26 ` [RFC PATCH v1 10/11] virt: coco: arm-cca-host: Publish slot zero and establish streams after acceptance Aneesh Kumar K.V (Arm)
2026-10-29 16:56 ` Dave Jiang
2026-10-29 17:10 ` Jason Gunthorpe
2026-10-30 9:58 ` Reshetova, Elena
2026-10-30 13:15 ` Jason Gunthorpe
2026-10-31 3:47 ` Aneesh Kumar K.V
2026-11-02 10:11 ` Reshetova, Elena
2026-11-02 17:26 ` Jason Gunthorpe
2026-11-03 12:01 ` Reshetova, Elena
2026-11-03 15:16 ` Jason Gunthorpe
2026-11-04 8:03 ` Xu Yilun
2026-11-04 9:49 ` Reshetova, Elena
2026-11-04 13:41 ` Jason Gunthorpe
2026-11-04 16:54 ` Dave Jiang
2026-11-06 15:53 ` Dave Jiang
2026-11-06 19:30 ` Jason Gunthorpe
2026-11-06 22:39 ` Dave Jiang
2026-11-08 18:33 ` Jason Gunthorpe
2026-11-09 10:55 ` Reshetova, Elena
2026-11-09 13:47 ` Jason Gunthorpe
2026-11-09 17:37 ` Dave Jiang
2026-11-09 18:53 ` Jason Gunthorpe
2026-11-09 20:54 ` Dave Jiang
2026-11-09 23:40 ` Jason Gunthorpe
2026-11-10 13:15 ` Reshetova, Elena
2026-11-10 14:20 ` Jason Gunthorpe
2026-11-11 13:09 ` Reshetova, Elena
2026-11-10 1:40 ` Alistair
2026-11-10 15:07 ` Jason Gunthorpe [this message]
2026-11-10 5:32 ` Alexey Kardashevskiy
2026-11-10 12:52 ` Jason Gunthorpe
2026-11-11 9:03 ` Alexey Kardashevskiy
2026-11-10 20:07 ` Jason Gunthorpe
2026-11-04 9:03 ` Reshetova, Elena
2026-11-04 13:48 ` Jason Gunthorpe
2026-11-06 8:24 ` Aneesh Kumar K.V
2026-11-06 12:49 ` Reshetova, Elena
2026-11-06 15:53 ` Aneesh Kumar K.V
2026-11-06 18:54 ` Jason Gunthorpe
2026-11-03 16:31 ` Aneesh Kumar K.V
2026-11-03 17:56 ` Jason Gunthorpe
2026-11-02 10:05 ` Reshetova, Elena
2026-11-02 10:22 ` Reshetova, Elena
2026-11-02 17:37 ` Jason Gunthorpe
2026-10-28 15:26 ` [RFC PATCH v1 11/11] virt: coco: arm-cca-guest: Refresh selected evidence against trusted digests Aneesh Kumar K.V (Arm)
2026-10-30 12:34 ` [RFC PATCH v1 00/11] PCI/TSM: Add CTLV attestation Xu Yilun
2026-10-30 15:32 ` 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=20261110150747.GF738765@nvidia.com \
--to=jgg@nvidia.com \
--cc=aik@amd.com \
--cc=alistair23@gmail.com \
--cc=aneesh.kumar@kernel.org \
--cc=ashish.kalra@amd.com \
--cc=bhelgaas@google.com \
--cc=catalin.marinas@arm.com \
--cc=dave.hansen@linux.intel.com \
--cc=dave.jiang@intel.com \
--cc=elena.reshetova@intel.com \
--cc=jic23@kernel.org \
--cc=jiri@resnulli.us \
--cc=john.allen@amd.com \
--cc=kas@kernel.org \
--cc=kevin.tian@intel.com \
--cc=linux-coco@lists.linux.dev \
--cc=mark.rutland@arm.com \
--cc=patches@lists.linux.dev \
--cc=rick.p.edgecombe@intel.com \
--cc=steven.price@arm.com \
--cc=suzuki.poulose@arm.com \
--cc=thomas.lendacky@amd.com \
--cc=will@kernel.org \
--cc=yilun.xu@linux.intel.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