From: Jason Gunthorpe <jgg@nvidia.com>
To: "Tian, Kevin" <kevin.tian@intel.com>
Cc: "Aneesh Kumar K.V" <aneesh.kumar@kernel.org>,
"iommu@lists.linux.dev" <iommu@lists.linux.dev>,
Alex Williamson <alex@shazbot.org>,
Alexey Kardashevskiy <aik@amd.com>,
Bjorn Helgaas <bhelgaas@google.com>,
Catalin Marinas <catalin.marinas@arm.com>,
Jacob Pan <jacob.pan@linux.microsoft.com>,
Joerg Roedel <joro@8bytes.org>,
Jonathan Cameron <jic23@kernel.org>,
Jonathan Hunter <jonathanh@nvidia.com>,
Krishna Reddy <vdumpa@nvidia.com>, Lukas Wunner <lukas@wunner.de>,
Nicolin Chen <nicolinc@nvidia.com>,
Robin Murphy <robin.murphy@arm.com>,
Samuel Ortiz <sameo@rivosinc.com>,
Shameer Kolothum <shameerali.kolothum.thodi@huawei.com>,
Steven Price <steven.price@arm.com>,
Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>,
Suzuki K Poulose <suzuki.poulose@arm.com>,
Thierry Reding <thierry.reding@kernel.org>,
Vasant Hegde <vasant.hegde@amd.com>,
Will Deacon <will@kernel.org>,
Xu Yilun <yilun.xu@linux.intel.com>,
"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
"linux-coco@lists.linux.dev" <linux-coco@lists.linux.dev>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>,
"linux-tegra@vger.kernel.org" <linux-tegra@vger.kernel.org>
Subject: Re: [PATCH v7 10/16] iommufd: Add the vdevice TSM request ioctl
Date: Fri, 30 Oct 2026 12:18:39 -0300 [thread overview]
Message-ID: <20261030151839.GI3734323@nvidia.com> (raw)
In-Reply-To: <CO1PR11MB48352ED3E4DEB3A8B4F089AB8C6D2@CO1PR11MB4835.namprd11.prod.outlook.com>
On Fri, Oct 30, 2026 at 07:41:36AM +0000, Tian, Kevin wrote:
> Then if your suggestion of using the attestation subsystem here
> can work, those OBJECT related operations are generalized too.
>
> In the end the set of vendor specific definition here might be small.
Yeah having now looked more closely at what CCA requires this is my
feeling. It looks like it needs nothing beyond what an attestation fd
would provide. Possibly TDI state if we don't roll that into the
attestation uapi.
> > > > My guesses with no information
> > > > 1) VALIDATE_MMIO why would the hypervisor ever need this? Guest
> > > > validates MMIO through secure communication to the secure world.
> > > >
> > >
> > > With VFIO PCI BARs backed by guest_memfd, the VMM can validate that the
> > > IPA and PA values provided by the guest belong to the VFIO device.
> >
> > Why? Who cares? It isn't a trusted validation, and there is a RSI that
> > duplicates this?
>
> TDX doesn't require this. It's a guest call directly to the secure world.
Yeah, if we need to know the actual current memory shared/private
layout after a TDISP state change that should be a first class API,
possibly in VFIO.
VFIO already has this information because it needs it to do the
guestmemfd/etc invalidations that Intel requires.
> > And then the seq numbers check that this went through OK?
>
> which seq numbers in your mind?
CCA uses seq numbers to help secure the RHI. It looks broadly like the
guest counts the number of times it does operations and then the RHI
relays those operations through the hypervisor. Guest detects
tampering by checking the sequences are right through its own secure
channel, along with hashes of things..
Like it counts the number of lock/unlock commands. VMM issues a rouge
unlock guest can detect it.
> > I think the bigger issue was it had to use the VDEV flavour not the
> > PDEV flavor of RMM commands, and it isn't obvious how we switch from
> > PDEV to VDEV mode on the hypervisor..
>
> Can you elaborate this part in a general way? Want to better understand it
> in the TDX context...
At least in CCA there are two sets of APIs into RMM for doing SPDM
stuff.
One is for the physical device and one is for the virtual device/TDI.
You have to use the right one for the right use case, the VMM has to
relay into to the virtual device API, while a non-VM bare metal host
has to use the physical to do attestation.
The full best attestation flow for a system would be something like:
1) Bare metal OS does DRTM and gets into Linux
2) Linux leaves drivers unbound and DMA disabled into the
initrd/rootfs
3) Every PCI device has a TSM connected. SPDM established. Link IDE
setup. PCI device SPDM evidence/measurements collected and logged.
4) VFIO driver is attached
** Now we can attest the hypervisor is secure, untampered, and has
the correct inventory of PCIe devices.
5) VMM starts a TVM
6) TVM does DRTM and gets into Linux
7) Repeat #2
8) Repeat #3, except we are doing lock/run instead of Link
IDE. Measurements are still logged (eg to a RTMR)
9) Real guest driver is bound and starts running
** Now we can attest the guest is secure, untamperd, and has the
correct inventory of PCIe devices
So on the hypervisor side we have two logical attestation FDs, one is
manipulating the bare metal PCI device intending to bind a bare metal
driver.
The other is the relay for the VMM to implement the guest API to
control SPDM, intending to operate the PCIe device as a TDI in TDISP
mode.
My suggestion recently was to reduce all of this to a single operation
'get attestation fd' inside the iommufd vdevice which returns an FD
configured to do the TDI phase for the VMM to use. It presents the
same uniform SPDM API we have everywhere. The VMM would have to form
that into the VMM Side of whatever arch specific protocol is carrying
it to the guest to proxy it into the guest's Attestation subsystem.
Some of if that will work depends on how the security protocol works,
like the seq numbers for CCA. That has to map perfectly onto the
attestation uAPI so that the VMM is causing only the actions to happen
that it is required to do..
Jason
next prev parent reply other threads:[~2026-10-30 15:18 UTC|newest]
Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-08 5:59 [PATCH v7 00/16] iommufd: vIOMMUs and TSM guest requests for confidential guests Aneesh Kumar K.V (Arm)
2026-10-08 5:59 ` [PATCH v7 01/16] KVM: Introduce file_to_kvm_<arch>() infrastructure Aneesh Kumar K.V (Arm)
2026-10-08 6:11 ` sashiko-bot
2026-10-08 5:59 ` [PATCH v7 02/16] KVM: Add file back-pointer to struct kvm Aneesh Kumar K.V (Arm)
2026-10-08 6:16 ` sashiko-bot
2026-10-08 5:59 ` [PATCH v7 03/16] KVM: x86: Use file_to_kvm_x86() in SEV Aneesh Kumar K.V (Arm)
2026-10-08 6:07 ` sashiko-bot
2026-10-08 5:59 ` [PATCH v7 04/16] KVM/vfio: Use file-based reference counting for KVM Aneesh Kumar K.V (Arm)
2026-10-08 6:27 ` sashiko-bot
2026-10-08 5:59 ` [PATCH v7 05/16] KVM: Restrict kvm_get_kvm/kvm_put_kvm export to internal KVM modules Aneesh Kumar K.V (Arm)
2026-10-08 6:08 ` sashiko-bot
2026-10-08 5:59 ` [PATCH v7 06/16] KVM: Remove unused file_is_kvm Aneesh Kumar K.V (Arm)
2026-10-08 6:06 ` sashiko-bot
2026-10-08 5:59 ` [PATCH v7 07/16] iommufd/device: Associate KVM file pointer with iommufd_device Aneesh Kumar K.V (Arm)
2026-10-08 6:20 ` sashiko-bot
2026-10-08 5:59 ` [PATCH v7 08/16] iommufd/viommu: Keep a reference to the KVM file Aneesh Kumar K.V (Arm)
2026-10-08 6:10 ` sashiko-bot
2026-10-14 17:59 ` Jacob Pan
2026-10-29 6:26 ` Aneesh Kumar K.V
2026-10-30 7:54 ` Tian, Kevin
2026-10-30 16:58 ` Jason Gunthorpe
2026-10-28 19:07 ` Jason Gunthorpe
2026-10-08 5:59 ` [PATCH v7 09/16] tsm: Remove the device from lookup before PCI teardown Aneesh Kumar K.V (Arm)
2026-10-08 6:15 ` sashiko-bot
2026-10-12 9:14 ` Aneesh Kumar K.V
2026-10-12 13:01 ` Jason Gunthorpe
2026-10-13 8:49 ` Aneesh Kumar K.V
2026-10-13 11:57 ` Jason Gunthorpe
2026-10-29 4:22 ` Xu Yilun
2026-10-28 19:07 ` Jason Gunthorpe
2026-10-29 6:56 ` Aneesh Kumar K.V
2026-10-08 5:59 ` [PATCH v7 10/16] iommufd: Add the vdevice TSM request ioctl Aneesh Kumar K.V (Arm)
2026-10-08 6:10 ` sashiko-bot
2026-10-28 19:07 ` Jason Gunthorpe
2026-10-29 9:37 ` Aneesh Kumar K.V
2026-10-29 13:01 ` Jason Gunthorpe
2026-10-30 7:41 ` Tian, Kevin
2026-10-30 15:18 ` Jason Gunthorpe [this message]
2026-10-08 5:59 ` [PATCH v7 11/16] PCI/TSM: Remove the legacy guest request interface Aneesh Kumar K.V (Arm)
2026-10-08 6:11 ` sashiko-bot
2026-10-28 19:07 ` Jason Gunthorpe
2026-10-08 5:59 ` [PATCH v7 12/16] PCI/TSM: Add vIOMMU-bound contexts for vdevices Aneesh Kumar K.V (Arm)
2026-10-08 6:18 ` sashiko-bot
2026-10-28 19:07 ` Jason Gunthorpe
2026-10-08 5:59 ` [PATCH v7 13/16] iommufd/viommu: Select vIOMMU operations before allocation Aneesh Kumar K.V (Arm)
2026-10-08 6:27 ` sashiko-bot
2026-10-12 9:37 ` Aneesh Kumar K.V
2026-10-12 13:05 ` Jason Gunthorpe
2026-10-13 9:11 ` Aneesh Kumar K.V
2026-10-13 12:33 ` Jason Gunthorpe
2026-10-28 19:07 ` Jason Gunthorpe
2026-10-29 8:21 ` Aneesh Kumar K.V
2026-10-29 12:43 ` Jason Gunthorpe
2026-10-08 5:59 ` [PATCH v7 14/16] iommufd/viommu: Allow PCI TSM backends to provide vIOMMU operations Aneesh Kumar K.V (Arm)
2026-10-08 6:19 ` sashiko-bot
2026-10-12 9:55 ` Aneesh Kumar K.V
2026-10-28 19:07 ` Jason Gunthorpe
2026-10-08 5:59 ` [PATCH v7 15/16] iommufd: Allow vIOMMUs without a parent HWPT Aneesh Kumar K.V (Arm)
2026-10-08 6:24 ` sashiko-bot
2026-10-28 19:07 ` Jason Gunthorpe
2026-10-08 5:59 ` [PATCH v7 16/16] PCI/TSM: wait for vdevice contexts before removing a DSM Aneesh Kumar K.V (Arm)
2026-10-08 6:25 ` sashiko-bot
2026-10-12 20:34 ` Bjorn Helgaas
2026-10-28 19:07 ` 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=20261030151839.GI3734323@nvidia.com \
--to=jgg@nvidia.com \
--cc=aik@amd.com \
--cc=alex@shazbot.org \
--cc=aneesh.kumar@kernel.org \
--cc=bhelgaas@google.com \
--cc=catalin.marinas@arm.com \
--cc=iommu@lists.linux.dev \
--cc=jacob.pan@linux.microsoft.com \
--cc=jic23@kernel.org \
--cc=jonathanh@nvidia.com \
--cc=joro@8bytes.org \
--cc=kevin.tian@intel.com \
--cc=kvm@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-coco@lists.linux.dev \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=linux-tegra@vger.kernel.org \
--cc=lukas@wunner.de \
--cc=nicolinc@nvidia.com \
--cc=robin.murphy@arm.com \
--cc=sameo@rivosinc.com \
--cc=shameerali.kolothum.thodi@huawei.com \
--cc=steven.price@arm.com \
--cc=suravee.suthikulpanit@amd.com \
--cc=suzuki.poulose@arm.com \
--cc=thierry.reding@kernel.org \
--cc=vasant.hegde@amd.com \
--cc=vdumpa@nvidia.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