All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alex Mastro <amastro@fb.com>
To: Jason Gunthorpe <jgg@nvidia.com>
Cc: "Leon Romanovsky" <leon@kernel.org>,
	"Christian König" <christian.koenig@amd.com>,
	"Matt Evans" <matt@ozlabs.org>,
	"Alex Williamson" <alex@shazbot.org>,
	"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: Tue, 22 Sep 2026 15:31:07 -0700	[thread overview]
Message-ID: <arMBqyI4XNfD+q1W@devgpu015.cco6.facebook.com> (raw)
In-Reply-To: <20260922125421.GE1507824@nvidia.com>

Hello!

On Mon, Sep 21, 2026 at 10:22:08AM -0300, Jason Gunthorpe wrote:
> On Mon, Sep 21, 2026 at 02:08:47PM +0100, Matt Evans wrote:
>
> > Not quite; the priv->revoked flag tracks temporary periods of
> > inaccessibility.  An example is VFIO resetting a function; the BAR
> > mappings as seen by the CPU and DMABUFs made from the BARs are all made
> > inaccessible before the reset, and made accessible again after the
> > reset.
>
> From the importer perspective this is a permanent revoke.
...
> From an importer perspective it sees the revoke happen and then that's
> it, the dmabuf never does anything further. The importer has to unmap
> and start from scratch, get a FD and map it.

That may be true for iommufd, but from what I can tell, already-imported
vfio-pci dma-buf can be resurrected after VFIO_DEVICE_RESET by other dynamic
importers (e.g. mlx5). That seems to be the case today, without this series. I
clanked together a toy program and accompanying bpftrace script demonstrating
this [1][2].

The program
1. exports a vfio-pci dma-buf
2. imports the dma-buf with ibv_reg_dmabuf_mr()
3. VFIO_DEVICE_RESET
4. ibv_advise_mr(PREFETCH|FLUSH) on the original MR. It succeeds, triggering
	mlx5_ib_advise_mr_prefetch
	 -> pagefault_dmabuf_mr
	 -> ib_umem_dmabuf_map_pages
	 -> dma_buf_map_attachment
	 -> vfio_pci_dma_buf_map
5. re-importing the original dma-buf fd to create a new MR also succeeds.

So I empathize with Matt's contention that the _existing_ behavior that the
priv->revoked flag represents is actually "temporarily revoked": the importer
can use the same dma-buf again, later, without having to re-import it!

What are we missing?

On Tue, Sep 22, 2026 at 09:54:21AM -0300, Jason Gunthorpe wrote:
> On Tue, Sep 22, 2026 at 03:46:37PM +0300, Leon Romanovsky wrote:
> > On Tue, Sep 22, 2026 at 09:41:37AM -0300, Jason Gunthorpe wrote:
> > > On Mon, Sep 21, 2026 at 04:09:18PM +0200, Christian König wrote:
> > > > >> I would avoid that and just re-create the DMA-buf fd from
> > > > >> scratch. The extra overhead is negligible and one way state
> > > > >> transmissions are usually much easier to handle.
> > > > > 
> > > > > Yeah, maybe we should have done that. Might be too late now.
> > > > 
> > > > It's already uAPI? 
> > > 
> > > Yeah, but Matt is making some changes here so maybe new stuff can
> > > avoid this. I'm not sure.
> > 
> > Jason, the proposed semantics is not UAPI yet.
> 
> What I'm talking about is, the revoke/unrevoke flow for a single FD
> was added from the start. For example vfio_pci_ioctl_reset() does it:
> 
> +       vfio_pci_dma_buf_move(vdev, true);
>         ret = pci_try_reset_function(vdev->pdev);
> +       if (__vfio_pci_memory_enabled(vdev))
> +               vfio_pci_dma_buf_move(vdev, false);
>         up_write(&vdev->memory_lock);
> 
> The false restores the exsting dmabuf fds back to normal operation.

The toy progam sequence above shows that both of the following are the case
today before this series:
- an already-imported dma-buf fd can come back to life after a reset.
- an already-exported dma-buf fd can be re-imported after a reset.

This series doesn't intend to change the behavior of either. Is the confusion
about whether the current behavior is intentional and/or desirable? If the
answer to both is "no", then IMO this series paves the way nicely towards making
PERM_REVOKED the only supported semantic later.

[1] https://github.com/opsound/vfio-tools/blob/9744d0f17edd67ad8eb21134ff75cdc2d0678bbc/vfio_dmabuf_reset.c
[2] https://github.com/opsound/vfio-tools/blob/9744d0f17edd67ad8eb21134ff75cdc2d0678bbc/vfio_dmabuf_reset.bt

Alex

  reply	other threads:[~2026-09-22 22:32 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
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 [this message]
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=arMBqyI4XNfD+q1W@devgpu015.cco6.facebook.com \
    --to=amastro@fb.com \
    --cc=alex@shazbot.org \
    --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=matt@ozlabs.org \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.