From: Pranjal Shrivastava <praan@google.com>
To: "Tian, Kevin" <kevin.tian@intel.com>
Cc: "Matt Evans" <matt@ozlabs.org>,
"Alex Williamson" <alex@shazbot.org>,
"Leon Romanovsky" <leon@kernel.org>,
"Jason Gunthorpe" <jgg@nvidia.com>,
"Alex Mastro" <amastro@fb.com>,
"Christian König" <christian.koenig@amd.com>,
"Bjorn Helgaas" <bhelgaas@google.com>,
"Logan Gunthorpe" <logang@deltatee.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>,
"Kasireddy, Vivek" <vivek.kasireddy@intel.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-media@vger.kernel.org" <linux-media@vger.kernel.org>,
"dri-devel@lists.freedesktop.org"
<dri-devel@lists.freedesktop.org>,
"linaro-mm-sig@lists.linaro.org" <linaro-mm-sig@lists.linaro.org>,
"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
"linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>
Subject: Re: [PATCH v3 6/9] vfio/pci: Clean up BAR zap and revocation
Date: Tue, 16 Jun 2026 18:51:48 +0000 [thread overview]
Message-ID: <ajGbRE3WWJxNxcrg@google.com> (raw)
In-Reply-To: <DM6PR11MB3690489DB5FA611413BF60558CE52@DM6PR11MB3690.namprd11.prod.outlook.com>
On Tue, Jun 16, 2026 at 09:48:14AM +0000, Tian, Kevin wrote:
> > From: Pranjal Shrivastava <praan@google.com>
> > Sent: Saturday, June 13, 2026 3:39 AM
> >
> > On Wed, Jun 10, 2026 at 04:43:20PM +0100, Matt Evans wrote:
> > > @@ -1264,7 +1265,7 @@ static int vfio_pci_ioctl_reset(struct
> > vfio_pci_core_device *vdev,
> > > if (!vdev->reset_works)
> > > return -EINVAL;
> > >
> > > - vfio_pci_zap_and_down_write_memory_lock(vdev);
> > > + down_write(&vdev->memory_lock);
> > >
> > > /*
> > > * This function can be invoked while the power state is non-D0. If
> > > @@ -1277,10 +1278,11 @@ static int vfio_pci_ioctl_reset(struct
> > vfio_pci_core_device *vdev,
> > > */
> > > vfio_pci_set_power_state(vdev, PCI_D0);
> > >
> > > - vfio_pci_dma_buf_move(vdev, true);
> > > + vfio_pci_zap_revoke_bars(vdev);
> >
> > I'm wondering if this change in behavior is correct?
> > BEFORE this patch the sequence was:
> >
> > 1. zap vma mappings
> > 2. Enter D0
> >
> > After this patch the sequence becomes
> >
> > 1. Take the lock
> > 2. Enter D0
> > 3. zap vma mappings
> >
> > My worry is if user-space accesses a BAR *during* the transition to D0,
> > it could crash since the mappings still exist during the transition?
>
> not 'crash' as you also noted later with all Fs on read and dropped writes.
Ack, "crash" is definitely a strong word, I just meant that the
user-space program isn't expecting to see all Fs today. Since today any
access during reset is faulted, however with this all apps may have to
lookout for all Fs during a read. Could this change cause existing apps
to crash?
>
> >
> > The old code is immune to it because it removed user-mappings first.
> >
> > Following the discussion from v1 regarding the ordering of
> > vfio_pci_dma_buf_move() and the D0 transition.. while it makes sense to
> > perform the DMABUF revocation/move after the hardware is in D0.. I'm not
> > too confident about moving zap after D0 :/
>
> probably add a comment to remind that ordering requirement for dma
>
+1. That'd be helpful.
> >
> > I mean, sure, the user would just see all Fs on a read and writes will
> > be dropped silently until we are in D0.. but the behaviour before this
> > change was that the user access will fault and hang on the memory_lock
> > instead which ensures that the user observes a consistent dev state..
> >
>
> I see this more consistent from another angle.
>
> Old code only removes/blocks cpu access but not for device. DMAs
> are allowed to this device while it's transitioning between D0/D3.
>
> New code at least make this part consistent - both cpu/p2p are allowed
> in the transition window.
>
> Ideally a sane userspace shouldn't rely on the content read back when
> it has initiated a reset in parallel. So this behavior change sounds ok?
I agree on the CPU / P2P consistency part. However, my concern is for a
shared reset scenario where a reset triggered by one process (I guess it
was vfio_assign_device_set?) can affect multiple devices in a dev_set
that are owned by different, unrelated processes.
In the old code, these peer processes are protected because their BAR
mappings are zapped immediately. Their MMIO threads simply stall in
a page fault until the reset is complete.
I agree for a single-reset scenario, sane user-space should never access
regions during a self-triggered reset.
Am I missing something?
Thanks,
Praan
next prev parent reply other threads:[~2026-06-16 18:52 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-10 15:43 [PATCH v3 0/9] vfio/pci: Add mmap() for DMABUFs Matt Evans
2026-06-10 15:43 ` [PATCH v3 1/9] PCI/P2PDMA: Add CONFIG_PCI_P2PDMA_CORE Matt Evans
2026-06-10 18:39 ` Leon Romanovsky
2026-06-11 16:07 ` Bjorn Helgaas
2026-06-11 17:44 ` Matt Evans
2026-06-11 18:37 ` Pranjal Shrivastava
2026-06-12 3:39 ` Tian, Kevin
2026-06-12 14:31 ` Matt Evans
2026-06-10 15:43 ` [PATCH v3 2/9] vfio/pci: Add a helper to look up PFNs for DMABUFs Matt Evans
2026-06-11 20:30 ` Pranjal Shrivastava
2026-06-12 17:37 ` Alex Williamson
2026-06-12 18:21 ` Pranjal Shrivastava
2026-06-15 14:27 ` Matt Evans
2026-06-15 15:07 ` Pranjal Shrivastava
2026-06-12 8:42 ` Tian, Kevin
2026-06-15 18:04 ` Matt Evans
2026-06-16 9:28 ` Tian, Kevin
2026-06-16 11:48 ` Matt Evans
2026-06-10 15:43 ` [PATCH v3 3/9] vfio/pci: Add a helper to create a DMABUF for a BAR-map VMA Matt Evans
2026-06-12 8:43 ` Tian, Kevin
2026-06-12 9:20 ` Pranjal Shrivastava
2026-06-10 15:43 ` [PATCH v3 4/9] vfio/pci: Convert BAR mmap() to use a DMABUF Matt Evans
2026-06-12 8:46 ` Tian, Kevin
2026-06-15 15:33 ` Matt Evans
2026-06-12 10:41 ` Pranjal Shrivastava
2026-06-12 15:22 ` Matt Evans
2026-06-12 19:43 ` Pranjal Shrivastava
2026-06-10 15:43 ` [PATCH v3 5/9] vfio/pci: Provide a user-facing name for BAR mappings Matt Evans
2026-06-12 8:46 ` Tian, Kevin
2026-06-12 14:06 ` Pranjal Shrivastava
2026-06-15 15:13 ` Matt Evans
2026-06-10 15:43 ` [PATCH v3 6/9] vfio/pci: Clean up BAR zap and revocation Matt Evans
2026-06-12 19:39 ` Pranjal Shrivastava
2026-06-16 9:48 ` Tian, Kevin
2026-06-16 18:51 ` Pranjal Shrivastava [this message]
2026-06-16 9:18 ` Tian, Kevin
2026-06-10 15:43 ` [PATCH v3 7/9] vfio/pci: Support mmap() of a VFIO DMABUF Matt Evans
2026-06-12 20:35 ` Pranjal Shrivastava
2026-06-16 15:45 ` Matt Evans
2026-06-16 9:20 ` Tian, Kevin
2026-06-10 15:43 ` [PATCH v3 8/9] vfio/pci: Permanently revoke a DMABUF on request Matt Evans
2026-06-16 8:05 ` Pranjal Shrivastava
2026-06-16 9:26 ` Tian, Kevin
2026-06-10 15:43 ` [PATCH v3 9/9] vfio/pci: Add mmap() attributes to DMABUF feature Matt Evans
2026-06-16 8:47 ` Pranjal Shrivastava
2026-06-16 11:37 ` Matt Evans
2026-06-16 19:09 ` Pranjal Shrivastava
2026-06-16 9:26 ` Tian, Kevin
2026-06-12 8:27 ` [PATCH v3 0/9] vfio/pci: Add mmap() for DMABUFs Tian, Kevin
2026-06-12 15:11 ` Matt Evans
2026-06-12 15:17 ` Pranjal Shrivastava
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=ajGbRE3WWJxNxcrg@google.com \
--to=praan@google.com \
--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=logang@deltatee.com \
--cc=matt@ozlabs.org \
--cc=mngyadam@amazon.de \
--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.