From: Pranjal Shrivastava <praan@google.com>
To: Alex Williamson <alex@shazbot.org>,
Kevin Tian <kevin.tian@intel.com>,
kvm@vger.kernel.org
Cc: Jason Gunthorpe <jgg@ziepe.ca>, Ankit Agrawal <ankita@nvidia.com>,
Matt Evans <mattev@meta.com>, Leon Romanovsky <leon@kernel.org>,
Vivek Kasireddy <vivek.kasireddy@intel.com>,
Jacob Moroni <jmoroni@google.com>,
David Hu <xuehaohu@google.com>,
Samiullah Khawaja <skhawaja@google.com>,
linux-kernel@vger.kernel.org,
Pranjal Shrivastava <praan@google.com>
Subject: [RFC PATCH v1 0/1] vfio/pci: Revoke BARs and DMABUFs during sysfs-triggered PCI reset
Date: Fri, 7 Aug 2026 20:14:04 +0000 [thread overview]
Message-ID: <20260807201405.3717430-1-praan@google.com> (raw)
Introduce PCI .reset_prepare and .reset_done handlers to safely revoke
active userspace mappings and exported DMABUFs during sysfs-triggered
device resets.
We are seeing a situation where system health and monitoring daemons
(at times erroneously) issue device resets via sysfs for devices bound
to vfio-pci:
echo 1 > /sys/bus/pci/devices/0000:01:00.0/reset
However, because vfio-pci does not implement the .reset_prepare and
.reset_done error handlers, this hardware reset occurs completely unnoticed
by the VFIO driver.
Consequently, active traditional userspace BAR mappings and exported DMABUFs
are never zapped or revoked. Importers of the DMABUFs (e.g., RDMA drivers)
continue to issue DMAs (such as PCIe Memory Writes) toward the Endpoint.
These transactions are silently dropped by the root port or trigger CTOs
while higher-level actions (e.g., RDMA reg_mr) continue to succeed.
We'd like to fix this by implementing the PCI reset ops for vfio-pci
that revoke the DMABUFs and zap the BARs while holding the memory lock
allowing concurrent user accesses to sleep and fault back in once the reset
completes.
Note: I've tried to handle the locking as a first attempt here, there
might've been some cases that were missed. Also, for the RFC, the
drivers that implement their own pci_error_handlers (like nvgrace) are
not altered for now.
Quick Note about Matt's DMABUF mmap Series
==========================================
While this patch is aimed for the current upstream code, I believe with
Matt's refactor [1] these ops might change slightly. If we have consensus
on this patch, I'd send another patch based to Matt based on their series
for them to include it in their next version.
[1] https://lore.kernel.org/all/20260715174737.15287-1-matt@ozlabs.org/
Thanks,
Praan
Pranjal Shrivastava (1):
vfio/pci: Revoke BARs and DMABUFs during sysfs-triggered PCI reset
drivers/vfio/pci/vfio_pci_core.c | 88 ++++++++++++++++++++------------
1 file changed, 56 insertions(+), 32 deletions(-)
--
2.55.0.679.g6767b8d81c-goog
next reply other threads:[~2026-08-07 20:14 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-07 20:14 Pranjal Shrivastava [this message]
2026-08-07 20:14 ` [RFC PATCH v1 1/1] vfio/pci: Revoke BARs and DMABUFs during sysfs-triggered PCI reset Pranjal Shrivastava
2026-08-07 20:30 ` sashiko-bot
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=20260807201405.3717430-1-praan@google.com \
--to=praan@google.com \
--cc=alex@shazbot.org \
--cc=ankita@nvidia.com \
--cc=jgg@ziepe.ca \
--cc=jmoroni@google.com \
--cc=kevin.tian@intel.com \
--cc=kvm@vger.kernel.org \
--cc=leon@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mattev@meta.com \
--cc=skhawaja@google.com \
--cc=vivek.kasireddy@intel.com \
--cc=xuehaohu@google.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