From: Matt Evans <matt@ozlabs.org>
To: Leon Romanovsky <leon@kernel.org>, Jason Gunthorpe <jgg@nvidia.com>
Cc: "Alex Williamson" <alex@shazbot.org>,
"Alex Mastro" <amastro@fb.com>,
"Christian König" <christian.koenig@amd.com>,
"Bjorn Helgaas" <bhelgaas@google.com>,
"Logan Gunthorpe" <logang@deltatee.com>,
"Kevin Tian" <kevin.tian@intel.com>,
"Pranjal Shrivastava" <praan@google.com>,
"Longfang Liu" <liulongfang@huawei.com>,
"Mahmoud Adam" <mngyadam@amazon.de>,
"David Matlack" <dmatlack@google.com>,
"Björn Töpel" <bjorn@kernel.org>,
"Sumit Semwal" <sumit.semwal@linaro.org>,
"Ankit Agrawal" <ankita@nvidia.com>,
"Alistair Popple" <apopple@nvidia.com>,
"Vivek Kasireddy" <vivek.kasireddy@intel.com>,
linux-kernel@vger.kernel.org, linux-media@vger.kernel.org,
dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org,
kvm@vger.kernel.org, linux-pci@vger.kernel.org
Subject: Re: [PATCH v6 9/9] vfio/pci: Permanently revoke a DMABUF on request
Date: Mon, 14 Sep 2026 13:13:36 +0100 [thread overview]
Message-ID: <f21c409d-5675-4c87-8b16-850bcb9474df@ozlabs.org> (raw)
In-Reply-To: <20260914115456.GY13683@unreal>
Hi Leon,
On 14/09/2026 12:54, Leon Romanovsky wrote:
> On Mon, Sep 14, 2026 at 08:36:47AM -0300, Jason Gunthorpe wrote:
>> On Sun, Sep 13, 2026 at 07:52:44PM +0300, Leon Romanovsky wrote:
>>> On Fri, Sep 11, 2026 at 10:41:57PM +0100, Matt Evans wrote:
>>>> Expand the VFIO DMABUF revocation state to three states:
>>>> Not revoked, temporarily revoked, and permanently revoked.
>>>
>>> The thing is that "temporarily revoked" is actually the standard
>>> invalidate_mappings/move_notify mechanism of DMABUF, which wasn't good
>>> for VFIO.
>>
>> I think temporarily revokes here means it is revoked from a dmabuf
>> perspective
>
> My guess is that this is more of a "change owner" operation than a
> revoke operation.
>
> The main issue here is that we have to guess the semantics instead of
> having a properly named and documented operation.
Apologies if the cover letter for the series and patch commit message
(which cover this) are unclear about the motivations and semantics. On
the commit message, can you suggest clarifications:
"This is useful for lifecycle management, to reclaim VFIO PCI BAR
ranges previously delegated to a subordinate client process: by
revoking, the driver process can ensure that the loaned resources are
made inaccessible when the client is deemed "done". The original
DMABUF is defunct, and BAR resources can then be safely re-exported
for use by new clients."
Given what I'll explain below, do give suggestions please. There is
more context in the cover letter (the volume of which I didn't think
appropriate for the commit message).
> As Christian pointed
> out, the patches describe what they are doing well, but they do not
> explain why they are doing it.
His comment may be warranted on the other, new, patch for DMABUF name,
but I don't think this applies here.
>> Just that VFIO can make it's internal dmabuf work again, there won't
>> be a notification to any importer or an expectation that something
>> like iommufd will re-establish mapping automatically.
>>
>> This is principally a kernel self protection mechanism where the
>> userspace was expected to have removed the dmabuf before issuing a
>> reset/etc. If they didn't then the kernel plonks it and userspace gets
>> a mess to clean up.
>
> Revoke/invalidate means that the importer should stop accessing the
> buffer provided by the exporter. It does not specify what the exporter
> should do afterwards.
>
> So I still think that "temporarily revoked" is closer to
> invalidate_mappings, with some additional dma-buf documentation to lose
> the expectation that the buffer will become available again.
You are right in indicating in your previous email that the "temporarily
revoked" state is the old "revoked" state.
From the DMABUF importer interactions, there's _still_ only "revoked or
not revoked" state. No changes there.
From this VFIO exporter's perspective, the change is to add a "sticky"
revoked state.
The thing (as per UAPI docs, again I hope there's no guessing needed)
that the new third state gives is that a) userspace can explicitly
request it via the new ioctl/feature, and b) it is guaranteed not to be
spuriously or intentionally undone by anyone else.
E.g. reset: temporarily revoke, then un-revoke. New ioctl:
permanently revoke, such that something like a subsequent reset isn't
going to undo it and make the DMABUF usable again.
The usage scenario is:
1. Process A exports DMABUF from VFIO device. (Proc A is the
"orchestrator" here.)
2. Process A sends fd to process B.
3. Process B maps it, or hands it on, etc.
4. Process A eventually decides the buffer is finished with/lifecycle
done/wants to reuse that BAR range for something else. It permanently
revokes the DMABUF.
5. Hopefully this isn't a surprise to B (some cooperation has given it
up first) but either way, B now cannot access the BAR range anymore.
This does not _need_ cooperation, so if B becomes malicious, or crashes,
etc. A can still revoke it.
6. That BAR range is reused for something unrelated.
HTH,
Matt
next prev parent reply other threads:[~2026-09-14 12:14 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-11 21:41 [PATCH v6 0/9] vfio/pci: Add mmap() for DMABUFs Matt Evans
2026-09-11 21:41 ` [PATCH v6 1/9] vfio/pci: Remove DMABUF export dependency on vdev->memory_lock Matt Evans
2026-09-11 21:41 ` [PATCH v6 2/9] vfio/pci: Un-revoke DMABUFs in LOW_POWER_ENTRY_WITH_WAKEUP resume Matt Evans
2026-09-11 21:41 ` [PATCH v6 3/9] dma-buf: Export dma_buf_set_name() Matt Evans
2026-09-14 11:06 ` Christian König
2026-09-15 13:35 ` Matt Evans
2026-09-11 21:41 ` [PATCH v6 4/9] vfio/pci: Add a helper to look up PFNs for DMABUFs Matt Evans
2026-09-11 21:41 ` [PATCH v6 5/9] vfio/pci: Add a helper to create a DMABUF for a BAR-map VMA Matt Evans
2026-09-15 12:16 ` liulongfang
2026-09-21 13:24 ` Matt Evans
2026-09-22 9:16 ` liulongfang
2026-09-24 12:43 ` Matt Evans
2026-09-11 21:41 ` [PATCH v6 6/9] vfio/pci: Convert BAR mmap() to use a DMABUF Matt Evans
2026-09-11 21:41 ` [PATCH v6 7/9] vfio/pci: Clean up BAR zap and revocation Matt Evans
2026-09-11 21:41 ` [PATCH v6 8/9] vfio/pci: Support mmap() of a VFIO DMABUF Matt Evans
2026-09-11 21:41 ` [PATCH v6 9/9] vfio/pci: Permanently revoke a DMABUF on request Matt Evans
2026-09-13 16:52 ` Leon Romanovsky
2026-09-14 11:36 ` Jason Gunthorpe
2026-09-14 11:54 ` Leon Romanovsky
2026-09-14 11:58 ` Jason Gunthorpe
2026-09-14 12:06 ` Leon Romanovsky
2026-09-14 12:08 ` Jason Gunthorpe
2026-09-14 12:13 ` Matt Evans [this message]
2026-09-15 7:20 ` Leon Romanovsky
2026-09-15 11:13 ` Christian König
2026-09-15 14:22 ` Matt Evans
2026-09-16 14:19 ` Christian König
2026-09-21 13:08 ` Matt Evans
2026-09-21 13:22 ` Jason Gunthorpe
2026-09-21 13:45 ` Christian König
2026-09-21 13:49 ` Jason Gunthorpe
2026-09-21 14:09 ` Christian König
2026-09-22 12:41 ` Jason Gunthorpe
2026-09-22 12:46 ` Leon Romanovsky
2026-09-22 12:54 ` Jason Gunthorpe
2026-09-22 22:31 ` Alex Mastro
2026-09-22 22:57 ` Jason Gunthorpe
2026-09-23 15:40 ` Matt Evans
2026-09-23 16:13 ` Jason Gunthorpe
2026-09-23 16:52 ` Leon Romanovsky
2026-09-23 17:06 ` Matt Evans
2026-09-24 17:36 ` Alex Mastro
2026-09-22 11:40 ` Leon Romanovsky
2026-09-15 12:35 ` Jason Gunthorpe
2026-09-15 14:30 ` Matt Evans
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=f21c409d-5675-4c87-8b16-850bcb9474df@ozlabs.org \
--to=matt@ozlabs.org \
--cc=alex@shazbot.org \
--cc=amastro@fb.com \
--cc=ankita@nvidia.com \
--cc=apopple@nvidia.com \
--cc=bhelgaas@google.com \
--cc=bjorn@kernel.org \
--cc=christian.koenig@amd.com \
--cc=dmatlack@google.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=jgg@nvidia.com \
--cc=kevin.tian@intel.com \
--cc=kvm@vger.kernel.org \
--cc=leon@kernel.org \
--cc=linaro-mm-sig@lists.linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=liulongfang@huawei.com \
--cc=logang@deltatee.com \
--cc=mngyadam@amazon.de \
--cc=praan@google.com \
--cc=sumit.semwal@linaro.org \
--cc=vivek.kasireddy@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