From: Jason Gunthorpe <jgg@nvidia.com>
To: Alexey Kardashevskiy <aik@amd.com>
Cc: "Reshetova, Elena" <elena.reshetova@intel.com>,
"Jiang, Dave" <dave.jiang@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>,
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: Thu, 12 Nov 2026 08:31:27 -0400 [thread overview]
Message-ID: <20261112123127.GK738765@nvidia.com> (raw)
In-Reply-To: <73d5e5b5-2626-4107-8f0d-2203c53ddd43@amd.com>
On Thu, Nov 12, 2026 at 12:48:42PM +1100, Alexey Kardashevskiy wrote:
> > It revokes hypervisor access to MMIO registers.
>
> TDISP's RUN does but CONFIG_LOCKED does not so MMIO and DMA work as
> before, until RUN.
I mean the device needs to secure itself, whatever that means for the
device. Obviously the hypervisor cannot be tampering with it while we
are trying to accept it. So the device might choose to fail all MMIO
while LOCKED or something like that.
LOCKED and RUN both clearly mean the device is under guest control and
the device needs to respond to this by protecting itself from the
hypervisor.
Again, my reference threat is the hypervisor programs the device to do
DMA after 1 second and then tricks the guest into doing DMA
ENABLE. This must be prevented by the guest and device co-operating.
For a concrete example, imagine a RDMA NIC. The hypervisor boots it up
and establishes a remote QP with RDMA access to all memory. Passes it
to the guest and the guest does DMA ENABLE. Hypervisor suspends the
guest immediately after and rewrites all its memory via the network.
Devices MUST have protections against these kinds of attacks built
into their LOCKED/RUN state transitions and verification, somehow. No
spec says how to do this.
Pretty much any device that does DMA can be tricked into doing
something like this :(
> > Exactly how LOCKED works is device specific, but from a security POV
> > the device must implement LOCKED in a way that excludes a malicious
> > hypervisor from undetectably tampering with the device.
>
> The device fw updates (if permitted) during LOCKED/RUN won't be
> detected by the VM but it is not tampering as we trust the device to
> not accept a bad fw?
Yes. If you allow live update then you have take the position that any
acceptable measurement is going to evolve into other acceptable
measurements behind your back.
> > Broadly there are three device implementation options:
> > 1) A TDISP device MMIO is simply entirely inoperable by hypervisor and
> > only works under locked. Trivial
> > 2) Entry to LOCKED cleans the device so it is quieted down enough to
> > be safe
>
> We run the attestation without a bound driver now so the device is
> quiet but so far PCIe TDISP did not require this.
There are many things the specs don't *require* but have to be done in
a certain way to get security. Enabling dma and binding a driver
before taking a measurement is obviously security wrong.
> > 3) Measurements record if the hypervisor did anything with the device
> > before it was LOCKED.
> > Yes, but this is something else entirely. We told the device it is
> > LOCKED so it activates all its defenses against hypervisor
> > tampering. We take a clean measurement to prove the hypervisor hasn't
> > left anything behind in the run time state.
>
> But measurements do not include the run time state (the TDI report
> does), where is this coming from?
Who says this? The measurements are defined by the device, they will
contain what the device needs to prove it hasn't been tampered with.
If the device chooses #3 then they must report some runtime state.
You both seem to have the wrong idea what is in the measurement
reports in real devices. It is not just a hash of the running
firmware..
> > Now we trust the device
> > itself to only alow measurment changes that meet its own security
> > model and the hypervisor cannot interfere. (bugs excluded)
>
> Opposed to what, accepting any fw if not LOCKED? :)
locked should have nothing to do about firmwre update. locked is about
taking a clean measurement and preventing hypervisor tapering.
> > Updating the digest means that the guest nonce ends up being captured
> > by the hypervisor and presented to the next VM as the 'initial'
> > connection measurement. This does not seem like a good choice to me.
>
> Does anyone actually _present_ nonce to the guest, not just forward
> the guest-generated nonce?
Yeah, ARM has this option and Intel made a worse version..
Jason
next prev parent reply other threads:[~2026-11-12 12:31 UTC|newest]
Thread overview: 94+ 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-11-12 6:23 ` Aneesh Kumar K.V
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-11 14:13 ` Jason Gunthorpe
2026-11-12 1:48 ` Alexey Kardashevskiy
2026-11-12 12:31 ` Jason Gunthorpe [this message]
2026-11-10 1:40 ` Alistair
2026-11-10 15:07 ` Jason Gunthorpe
2026-11-10 5:32 ` Alexey Kardashevskiy
2026-11-10 12:52 ` Jason Gunthorpe
2026-11-11 9:03 ` Alexey Kardashevskiy
2026-11-12 9:37 ` Aneesh Kumar K.V
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=20261112123127.GK738765@nvidia.com \
--to=jgg@nvidia.com \
--cc=aik@amd.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