[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20251203130435.4ab658aa.alex@shazbot.org>
Date: Wed, 3 Dec 2025 13:04:35 -0700
From: Alex Williamson <alex@...zbot.org>
To: Linus Torvalds <torvalds@...ux-foundation.org>
Cc: Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
"kvm@...r.kernel.org" <kvm@...r.kernel.org>, Jason Gunthorpe
<jgg@...dia.com>, Leon Romanovsky <leon@...nel.org>, Ankit Agrawal
<ankita@...dia.com>, David Matlack <dmatlack@...gle.com>
Subject: [GIT PULL] VFIO updates for v6.19-rc1
Hi Linus,
There's been lots of work across p2pdma, dma-buf, drm, and mm this cycle
which results in an unusual number of conflicts across the tree.
There's a shared tag here with the IOMMUFD, which Jason Gunthorpe
expands on in his pull request that completes some longstanding work to
enable vfio MMIO regions to be shared via dma-buf and exposed through
IOMMUFD for p2p use cases. With this we can start moving users in
earnest over to IOMMUFD as the primary IOMMU backend for vfio.
The DMA work as part of this is currently showing a conflict against the
dma-mapping-6.18-2025-11-27 tag that's already been merged. Stephen
noted[1] this conflict in linux-next with the following resolution:
--- a/kernel/dma/direct.c
+++ b/kernel/dma/direct.c
@@@ -479,9 -479,8 +479,9 @@@ int dma_direct_map_sg(struct device *de
}
break;
case PCI_P2PDMA_MAP_BUS_ADDR:
- sg->dma_address = pci_p2pdma_bus_addr_map(&p2pdma_state,
- sg_phys(sg));
+ sg->dma_address = pci_p2pdma_bus_addr_map(
+ p2pdma_state.mem, sg_phys(sg));
+ sg_dma_len(sg) = sg->length;
sg_dma_mark_bus_address(sg);
continue;
default:
This conflict exists in the shared tag with IOMMUFD, so we'll hit it in
one or the other merges.
Also given the shared dma-buf enablement, IOMMUFD makes some adjacent
header changes that Stephen identified[2], including new lines from both.
I don't yet see pull requests from Andrew, but Stephen also reported
selftest conflicts in mm-nonmm-stable versus the vfio specific work
done here and some competing poison handling registration versus mmap
fault handling changes in the nvgrace-gpu driver relative to mm-stable.
The selftest conflicts are numerous but trivial[3][4][5][6],
essentially context collisions.
The nvgrace-gpu conflict[7] vs mm-stable is going to require more work
than just the build fix resolution provided there, but the scope of the
affected device is so limited that we'd rather address it more
completely in the -rc cycle. Adding the missing variable with
initialization is fine for now.
Finally, the i915 vGPU driver was updating their ioctl handling at the
same time we were overhauling region-info handling in the core,
resulting in one last conflict. Stephen reported and provided a
resolution[8]. The conflicting commit is included in Dave's drm pull
from 12/3.
If there's any trouble, please let me know. Thanks,
Alex
[1]https://lore.kernel.org/all/20251127121342.73a2fa9f@canb.auug.org.au/
[2]https://lore.kernel.org/all/20251201124340.335d7144@canb.auug.org.au/
[3]https://lore.kernel.org/all/20251201101046.009b0919@canb.auug.org.au/
[4]https://lore.kernel.org/all/20251201101312.4dfd2b19@canb.auug.org.au/
[5]https://lore.kernel.org/all/20251201101549.5792d6df@canb.auug.org.au/
[6]https://lore.kernel.org/all/20251201103154.32226085@canb.auug.org.au/
[7]https://lore.kernel.org/all/20251201114439.4fab07f6@canb.auug.org.au/
[8]https://lore.kernel.org/all/20251125000151.23372279@canb.auug.org.au/
The following changes since commit d323ad739666761646048fca587734f4ae64f2c8:
vfio: selftests: replace iova=vaddr with allocated iovas (2025-11-12 08:04:42 -0700)
are available in the Git repository at:
https://github.com/awilliam/linux-vfio.git tags/vfio-v6.19-rc1
for you to fetch changes up to d721f52e31553a848e0e9947ca15a49c5674aef3:
vfio: selftests: Add vfio_pci_device_init_perf_test (2025-11-28 10:58:07 -0700)
----------------------------------------------------------------
VFIO updates for v6.19-rc1
- Move libvfio selftest artifacts in preparation of more tightly
coupled integration with KVM selftests. (David Matlack)
- Fix comment typo in mtty driver. (Chu Guangqing)
- Support for new hardware revision in the hisi_acc vfio-pci variant
driver where the migration registers can now be accessed via the PF.
When enabled for this support, the full BAR can be exposed to the
user. (Longfang Liu)
- Fix vfio cdev support for VF token passing, using the correct size
for the kernel structure, thereby actually allowing userspace to
provide a non-zero UUID token. Also set the match token callback for
the hisi_acc, fixing VF token support for this this vfio-pci variant
driver. (Raghavendra Rao Ananta)
- Introduce internal callbacks on vfio devices to simplify and
consolidate duplicate code for generating VFIO_DEVICE_GET_REGION_INFO
data, removing various ioctl intercepts with a more structured
solution. (Jason Gunthorpe)
- Introduce dma-buf support for vfio-pci devices, allowing MMIO regions
to be exposed through dma-buf objects with lifecycle managed through
move operations. This enables low-level interactions such as a
vfio-pci based SPDK drivers interacting directly with dma-buf capable
RDMA devices to enable peer-to-peer operations. IOMMUFD is also now
able to build upon this support to fill a long standing feature gap
versus the legacy vfio type1 IOMMU backend with an implementation of
P2P support for VM use cases that better manages the lifecycle of the
P2P mapping. (Leon Romanovsky, Jason Gunthorpe, Vivek Kasireddy)
- Convert eventfd triggering for error and request signals to use RCU
mechanisms in order to avoid a 3-way lockdep reported deadlock issue.
(Alex Williamson)
- Fix a 32-bit overflow introduced via dma-buf support manifesting with
large DMA buffers. (Alex Mastro)
- Convert nvgrace-gpu vfio-pci variant driver to insert mappings on
fault rather than at mmap time. This conversion serves both to make
use of huge PFNMAPs but also to both avoid corrected RAS events
during reset by now being subject to vfio-pci-core's use of
unmap_mapping_range(), and to enable a device readiness test after
reset. (Ankit Agrawal)
- Refactoring of vfio selftests to support multi-device tests and split
code to provide better separation between IOMMU and device objects.
This work also enables a new test suite addition to measure parallel
device initialization latency. (David Matlack)
----------------------------------------------------------------
Alex Mastro (1):
dma-buf: fix integer overflow in fill_sg_entry() for buffers >= 8GiB
Alex Williamson (3):
Merge tag 'vfio-v6.19-dma-buf-v9+' into v6.19/vfio/next
vfio/pci: Use RCU for error/request triggers to avoid circular locking
Merge tag 'vfio-v6.18-rc6' into v6.19/vfio/next
Ankit Agrawal (6):
vfio: refactor vfio_pci_mmap_huge_fault function
vfio/nvgrace-gpu: Add support for huge pfnmap
vfio: use vfio_pci_core_setup_barmap to map bar in mmap
vfio/nvgrace-gpu: split the code to wait for GPU ready
vfio/nvgrace-gpu: Inform devmem unmapped after reset
vfio/nvgrace-gpu: wait for the GPU mem to be ready
Chu Guangqing (1):
vfio/mtty: Fix spelling typo in samples/vfio-mdev
David Matlack (19):
vfio: selftests: Store libvfio build outputs in $(OUTPUT)/libvfio
vfio: selftests: Move run.sh into scripts directory
vfio: selftests: Split run.sh into separate scripts
vfio: selftests: Allow passing multiple BDFs on the command line
vfio: selftests: Rename struct vfio_iommu_mode to iommu_mode
vfio: selftests: Introduce struct iommu
vfio: selftests: Support multiple devices in the same container/iommufd
vfio: selftests: Eliminate overly chatty logging
vfio: selftests: Prefix logs with device BDF where relevant
vfio: selftests: Upgrade driver logging to dev_err()
vfio: selftests: Rename struct vfio_dma_region to dma_region
vfio: selftests: Move IOMMU library code into iommu.c
vfio: selftests: Move IOVA allocator into iova_allocator.c
vfio: selftests: Stop passing device for IOMMU operations
vfio: selftests: Rename vfio_util.h to libvfio.h
vfio: selftests: Move vfio_selftests_*() helpers into libvfio.c
vfio: selftests: Split libvfio.h into separate header files
vfio: selftests: Eliminate INVALID_IOVA
vfio: selftests: Add vfio_pci_device_init_perf_test
Jason Gunthorpe (24):
vfio: Provide a get_region_info op
vfio/hisi: Convert to the get_region_info op
vfio/virtio: Convert to the get_region_info op
vfio/nvgrace: Convert to the get_region_info op
vfio/pci: Fill in the missing get_region_info ops
vfio/mtty: Provide a get_region_info op
vfio/mdpy: Provide a get_region_info op
vfio/mbochs: Provide a get_region_info op
vfio/platform: Provide a get_region_info op
vfio/fsl: Provide a get_region_info op
vfio/cdx: Provide a get_region_info op
vfio/ccw: Provide a get_region_info op
vfio/gvt: Provide a get_region_info op
vfio: Require drivers to implement get_region_info
vfio: Add get_region_info_caps op
vfio/mbochs: Convert mbochs to use vfio_info_add_capability()
vfio/gvt: Convert to get_region_info_caps
vfio/ccw: Convert to get_region_info_caps
vfio/pci: Convert all PCI drivers to get_region_info_caps
vfio/platform: Convert to get_region_info_caps
vfio: Move the remaining drivers to get_region_info_caps
vfio: Remove the get_region_info op
PCI/P2PDMA: Document DMABUF model
vfio/nvgrace: Support get_dmabuf_phys
Leon Romanovsky (7):
PCI/P2PDMA: Separate the mmap() support from the core logic
PCI/P2PDMA: Simplify bus address mapping API
PCI/P2PDMA: Refactor to separate core P2P functionality from memory allocation
PCI/P2PDMA: Provide an access to pci_p2pdma_map_type() function
dma-buf: provide phys_vec to scatter-gather mapping routine
vfio/pci: Enable peer-to-peer DMA transactions by default
vfio/pci: Add dma-buf export support for MMIO regions
Longfang Liu (2):
crypto: hisilicon - qm updates BAR configuration
hisi_acc_vfio_pci: adapt to new migration configuration
Raghavendra Rao Ananta (2):
vfio: Fix ksize arg while copying user struct in vfio_df_ioctl_bind_iommufd()
hisi_acc_vfio_pci: Add .match_token_uuid callback in hisi_acc_vfio_pci_migrn_ops
Vivek Kasireddy (2):
vfio: Export vfio device get and put registration helpers
vfio/pci: Share the core device pointer while invoking feature functions
Documentation/driver-api/pci/p2pdma.rst | 97 +++-
block/blk-mq-dma.c | 2 +-
drivers/crypto/hisilicon/qm.c | 27 +
drivers/dma-buf/Makefile | 2 +-
drivers/dma-buf/dma-buf-mapping.c | 248 +++++++++
drivers/gpu/drm/i915/gvt/kvmgt.c | 272 +++++-----
drivers/iommu/dma-iommu.c | 4 +-
drivers/pci/p2pdma.c | 186 +++++--
drivers/s390/cio/vfio_ccw_ops.c | 47 +-
drivers/vfio/cdx/main.c | 29 +-
drivers/vfio/device_cdev.c | 2 +-
drivers/vfio/fsl-mc/vfio_fsl_mc.c | 43 +-
drivers/vfio/pci/Kconfig | 3 +
drivers/vfio/pci/Makefile | 1 +
drivers/vfio/pci/hisilicon/hisi_acc_vfio_pci.c | 171 ++++---
drivers/vfio/pci/hisilicon/hisi_acc_vfio_pci.h | 23 +-
drivers/vfio/pci/mlx5/main.c | 1 +
drivers/vfio/pci/nvgrace-gpu/main.c | 342 +++++++++----
drivers/vfio/pci/pds/vfio_dev.c | 1 +
drivers/vfio/pci/qat/main.c | 1 +
drivers/vfio/pci/vfio_pci.c | 6 +
drivers/vfio/pci/vfio_pci_config.c | 23 +-
drivers/vfio/pci/vfio_pci_core.c | 300 +++++------
drivers/vfio/pci/vfio_pci_dmabuf.c | 316 ++++++++++++
drivers/vfio/pci/vfio_pci_intrs.c | 52 +-
drivers/vfio/pci/vfio_pci_priv.h | 28 +-
drivers/vfio/pci/virtio/common.h | 5 +-
drivers/vfio/pci/virtio/legacy_io.c | 38 +-
drivers/vfio/pci/virtio/main.c | 5 +-
drivers/vfio/platform/vfio_amba.c | 1 +
drivers/vfio/platform/vfio_platform.c | 1 +
drivers/vfio/platform/vfio_platform_common.c | 40 +-
drivers/vfio/platform/vfio_platform_private.h | 3 +
drivers/vfio/vfio_main.c | 51 ++
include/linux/dma-buf-mapping.h | 17 +
include/linux/dma-buf.h | 11 +
include/linux/hisi_acc_qm.h | 3 +
include/linux/pci-p2pdma.h | 120 +++--
include/linux/vfio.h | 6 +
include/linux/vfio_pci_core.h | 69 ++-
include/uapi/linux/vfio.h | 28 ++
kernel/dma/direct.c | 4 +-
mm/hmm.c | 2 +-
samples/vfio-mdev/mbochs.c | 71 +--
samples/vfio-mdev/mdpy.c | 34 +-
samples/vfio-mdev/mtty.c | 35 +-
tools/testing/selftests/vfio/Makefile | 10 +-
tools/testing/selftests/vfio/lib/drivers/dsa/dsa.c | 36 +-
.../testing/selftests/vfio/lib/drivers/ioat/ioat.c | 18 +-
tools/testing/selftests/vfio/lib/include/libvfio.h | 26 +
.../selftests/vfio/lib/include/libvfio/assert.h | 54 ++
.../selftests/vfio/lib/include/libvfio/iommu.h | 76 +++
.../vfio/lib/include/libvfio/iova_allocator.h | 23 +
.../vfio/lib/include/libvfio/vfio_pci_device.h | 125 +++++
.../vfio/lib/include/libvfio/vfio_pci_driver.h | 97 ++++
.../testing/selftests/vfio/lib/include/vfio_util.h | 331 ------------
tools/testing/selftests/vfio/lib/iommu.c | 465 +++++++++++++++++
tools/testing/selftests/vfio/lib/iova_allocator.c | 94 ++++
tools/testing/selftests/vfio/lib/libvfio.c | 78 +++
tools/testing/selftests/vfio/lib/libvfio.mk | 23 +-
tools/testing/selftests/vfio/lib/vfio_pci_device.c | 556 +--------------------
tools/testing/selftests/vfio/lib/vfio_pci_driver.c | 16 +-
tools/testing/selftests/vfio/run.sh | 109 ----
tools/testing/selftests/vfio/scripts/cleanup.sh | 41 ++
tools/testing/selftests/vfio/scripts/lib.sh | 42 ++
tools/testing/selftests/vfio/scripts/run.sh | 16 +
tools/testing/selftests/vfio/scripts/setup.sh | 48 ++
.../testing/selftests/vfio/vfio_dma_mapping_test.c | 46 +-
.../selftests/vfio/vfio_iommufd_setup_test.c | 2 +-
.../vfio/vfio_pci_device_init_perf_test.c | 168 +++++++
.../testing/selftests/vfio/vfio_pci_device_test.c | 12 +-
.../testing/selftests/vfio/vfio_pci_driver_test.c | 51 +-
72 files changed, 3430 insertions(+), 1904 deletions(-)
create mode 100644 drivers/dma-buf/dma-buf-mapping.c
create mode 100644 drivers/vfio/pci/vfio_pci_dmabuf.c
create mode 100644 include/linux/dma-buf-mapping.h
create mode 100644 tools/testing/selftests/vfio/lib/include/libvfio.h
create mode 100644 tools/testing/selftests/vfio/lib/include/libvfio/assert.h
create mode 100644 tools/testing/selftests/vfio/lib/include/libvfio/iommu.h
create mode 100644 tools/testing/selftests/vfio/lib/include/libvfio/iova_allocator.h
create mode 100644 tools/testing/selftests/vfio/lib/include/libvfio/vfio_pci_device.h
create mode 100644 tools/testing/selftests/vfio/lib/include/libvfio/vfio_pci_driver.h
delete mode 100644 tools/testing/selftests/vfio/lib/include/vfio_util.h
create mode 100644 tools/testing/selftests/vfio/lib/iommu.c
create mode 100644 tools/testing/selftests/vfio/lib/iova_allocator.c
create mode 100644 tools/testing/selftests/vfio/lib/libvfio.c
delete mode 100755 tools/testing/selftests/vfio/run.sh
create mode 100755 tools/testing/selftests/vfio/scripts/cleanup.sh
create mode 100755 tools/testing/selftests/vfio/scripts/lib.sh
create mode 100755 tools/testing/selftests/vfio/scripts/run.sh
create mode 100755 tools/testing/selftests/vfio/scripts/setup.sh
create mode 100644 tools/testing/selftests/vfio/vfio_pci_device_init_perf_test.c
Powered by blists - more mailing lists