On Mon, Jan 19, 2026 at 01:38:38PM -0700, Alex Williamson wrote: > On Wed, 7 Jan 2026 11:14:14 +0200 > Leon Romanovsky <[email protected]> wrote: > > > From: Leon Romanovsky <[email protected]> > > > > After commit fcf463b92a08 ("types: move phys_vec definition to common > > header"), > > we can use the shared phys_vec type instead of the DMABUF‑specific > > dma_buf_phys_vec, which duplicated the same structure and semantics. > > > > Signed-off-by: Leon Romanovsky <[email protected]> > > --- > > Alex, > > > > According to diffstat, VFIO is the subsystem with the largest set of > > changes, > > so it would be great if you could take it through your tree. > > > > The series is based on the for-7.0/blk-pvec shared branch from Jens: > > https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux.git/log/?h=for-7.0/blk-pvec > > Applied to vfio next branch for v6.20/7.0 and pushed tag > common_phys_vec_via_vfio including this commit and dependency.
Thanks. I will pull it right before the RDMA dma-buf exporter patches are ready to be merged. Thanks again. > Thanks, > > Alex > > > > --- > > Cc: [email protected] > > Cc: [email protected] > > Cc: [email protected] > > Cc: [email protected] > > Cc: [email protected] > > Cc: [email protected] > > To: Sumit Semwal <[email protected]> > > To: Christian König <[email protected]> > > To: Jason Gunthorpe <[email protected]> > > To: Kevin Tian <[email protected]> > > To: Joerg Roedel <[email protected]> > > To: Will Deacon <[email protected]> > > To: Robin Murphy <[email protected]> > > To: Yishai Hadas <[email protected]> > > To: Shameer Kolothum <[email protected]> > > To: Ankit Agrawal <[email protected]> > > To: Alex Williamson <[email protected]> > > Cc: Matthew Wilcox <[email protected]> > > Cc: Jens Axboe <[email protected]> > > --- > > drivers/dma-buf/dma-buf-mapping.c | 6 +++--- > > drivers/iommu/iommufd/io_pagetable.h | 2 +- > > drivers/iommu/iommufd/iommufd_private.h | 5 ++--- > > drivers/iommu/iommufd/pages.c | 4 ++-- > > drivers/iommu/iommufd/selftest.c | 2 +- > > drivers/vfio/pci/nvgrace-gpu/main.c | 2 +- > > drivers/vfio/pci/vfio_pci_dmabuf.c | 8 ++++---- > > include/linux/dma-buf-mapping.h | 2 +- > > include/linux/dma-buf.h | 10 ---------- > > include/linux/vfio_pci_core.h | 13 ++++++------- > > 10 files changed, 21 insertions(+), 33 deletions(-) > > > > diff --git a/drivers/dma-buf/dma-buf-mapping.c > > b/drivers/dma-buf/dma-buf-mapping.c > > index b7352e609fbd..174677faa577 100644 > > --- a/drivers/dma-buf/dma-buf-mapping.c > > +++ b/drivers/dma-buf/dma-buf-mapping.c > > @@ -33,8 +33,8 @@ static struct scatterlist *fill_sg_entry(struct > > scatterlist *sgl, size_t length, > > } > > > > static unsigned int calc_sg_nents(struct dma_iova_state *state, > > - struct dma_buf_phys_vec *phys_vec, > > - size_t nr_ranges, size_t size) > > + struct phys_vec *phys_vec, size_t nr_ranges, > > + size_t size) > > { > > unsigned int nents = 0; > > size_t i; > > @@ -91,7 +91,7 @@ struct dma_buf_dma { > > */ > > struct sg_table *dma_buf_phys_vec_to_sgt(struct dma_buf_attachment *attach, > > struct p2pdma_provider *provider, > > - struct dma_buf_phys_vec *phys_vec, > > + struct phys_vec *phys_vec, > > size_t nr_ranges, size_t size, > > enum dma_data_direction dir) > > { > > diff --git a/drivers/iommu/iommufd/io_pagetable.h > > b/drivers/iommu/iommufd/io_pagetable.h > > index 14cd052fd320..27e3e311d395 100644 > > --- a/drivers/iommu/iommufd/io_pagetable.h > > +++ b/drivers/iommu/iommufd/io_pagetable.h > > @@ -202,7 +202,7 @@ struct iopt_pages_dmabuf_track { > > > > struct iopt_pages_dmabuf { > > struct dma_buf_attachment *attach; > > - struct dma_buf_phys_vec phys; > > + struct phys_vec phys; > > /* Always PAGE_SIZE aligned */ > > unsigned long start; > > struct list_head tracker; > > diff --git a/drivers/iommu/iommufd/iommufd_private.h > > b/drivers/iommu/iommufd/iommufd_private.h > > index eb6d1a70f673..6ac1965199e9 100644 > > --- a/drivers/iommu/iommufd/iommufd_private.h > > +++ b/drivers/iommu/iommufd/iommufd_private.h > > @@ -20,7 +20,6 @@ struct iommu_group; > > struct iommu_option; > > struct iommufd_device; > > struct dma_buf_attachment; > > -struct dma_buf_phys_vec; > > > > struct iommufd_sw_msi_map { > > struct list_head sw_msi_item; > > @@ -718,7 +717,7 @@ int __init iommufd_test_init(void); > > void iommufd_test_exit(void); > > bool iommufd_selftest_is_mock_dev(struct device *dev); > > int iommufd_test_dma_buf_iommufd_map(struct dma_buf_attachment *attachment, > > - struct dma_buf_phys_vec *phys); > > + struct phys_vec *phys); > > #else > > static inline void iommufd_test_syz_conv_iova_id(struct iommufd_ucmd *ucmd, > > unsigned int ioas_id, > > @@ -742,7 +741,7 @@ static inline bool iommufd_selftest_is_mock_dev(struct > > device *dev) > > } > > static inline int > > iommufd_test_dma_buf_iommufd_map(struct dma_buf_attachment *attachment, > > - struct dma_buf_phys_vec *phys) > > + struct phys_vec *phys) > > { > > return -EOPNOTSUPP; > > } > > diff --git a/drivers/iommu/iommufd/pages.c b/drivers/iommu/iommufd/pages.c > > index dbe51ecb9a20..bababd564cf9 100644 > > --- a/drivers/iommu/iommufd/pages.c > > +++ b/drivers/iommu/iommufd/pages.c > > @@ -1077,7 +1077,7 @@ static int pfn_reader_user_update_pinned(struct > > pfn_reader_user *user, > > } > > > > struct pfn_reader_dmabuf { > > - struct dma_buf_phys_vec phys; > > + struct phys_vec phys; > > unsigned long start_offset; > > }; > > > > @@ -1460,7 +1460,7 @@ static struct dma_buf_attach_ops > > iopt_dmabuf_attach_revoke_ops = { > > */ > > static int > > sym_vfio_pci_dma_buf_iommufd_map(struct dma_buf_attachment *attachment, > > - struct dma_buf_phys_vec *phys) > > + struct phys_vec *phys) > > { > > typeof(&vfio_pci_dma_buf_iommufd_map) fn; > > int rc; > > diff --git a/drivers/iommu/iommufd/selftest.c > > b/drivers/iommu/iommufd/selftest.c > > index 550ff36dec3a..989d8c4c60a7 100644 > > --- a/drivers/iommu/iommufd/selftest.c > > +++ b/drivers/iommu/iommufd/selftest.c > > @@ -2002,7 +2002,7 @@ static const struct dma_buf_ops > > iommufd_test_dmabuf_ops = { > > }; > > > > int iommufd_test_dma_buf_iommufd_map(struct dma_buf_attachment *attachment, > > - struct dma_buf_phys_vec *phys) > > + struct phys_vec *phys) > > { > > struct iommufd_test_dma_buf *priv = attachment->dmabuf->priv; > > > > diff --git a/drivers/vfio/pci/nvgrace-gpu/main.c > > b/drivers/vfio/pci/nvgrace-gpu/main.c > > index 84d142a47ec6..a0f4edd6a30b 100644 > > --- a/drivers/vfio/pci/nvgrace-gpu/main.c > > +++ b/drivers/vfio/pci/nvgrace-gpu/main.c > > @@ -784,7 +784,7 @@ nvgrace_gpu_write(struct vfio_device *core_vdev, > > static int nvgrace_get_dmabuf_phys(struct vfio_pci_core_device *core_vdev, > > struct p2pdma_provider **provider, > > unsigned int region_index, > > - struct dma_buf_phys_vec *phys_vec, > > + struct phys_vec *phys_vec, > > struct vfio_region_dma_range *dma_ranges, > > size_t nr_ranges) > > { > > diff --git a/drivers/vfio/pci/vfio_pci_dmabuf.c > > b/drivers/vfio/pci/vfio_pci_dmabuf.c > > index d4d0f7d08c53..9a84c238c013 100644 > > --- a/drivers/vfio/pci/vfio_pci_dmabuf.c > > +++ b/drivers/vfio/pci/vfio_pci_dmabuf.c > > @@ -14,7 +14,7 @@ struct vfio_pci_dma_buf { > > struct vfio_pci_core_device *vdev; > > struct list_head dmabufs_elm; > > size_t size; > > - struct dma_buf_phys_vec *phys_vec; > > + struct phys_vec *phys_vec; > > struct p2pdma_provider *provider; > > u32 nr_ranges; > > u8 revoked : 1; > > @@ -94,7 +94,7 @@ static const struct dma_buf_ops vfio_pci_dmabuf_ops = { > > * will fail if it is currently revoked > > */ > > int vfio_pci_dma_buf_iommufd_map(struct dma_buf_attachment *attachment, > > - struct dma_buf_phys_vec *phys) > > + struct phys_vec *phys) > > { > > struct vfio_pci_dma_buf *priv; > > > > @@ -116,7 +116,7 @@ int vfio_pci_dma_buf_iommufd_map(struct > > dma_buf_attachment *attachment, > > } > > EXPORT_SYMBOL_FOR_MODULES(vfio_pci_dma_buf_iommufd_map, "iommufd"); > > > > -int vfio_pci_core_fill_phys_vec(struct dma_buf_phys_vec *phys_vec, > > +int vfio_pci_core_fill_phys_vec(struct phys_vec *phys_vec, > > struct vfio_region_dma_range *dma_ranges, > > size_t nr_ranges, phys_addr_t start, > > phys_addr_t len) > > @@ -148,7 +148,7 @@ EXPORT_SYMBOL_GPL(vfio_pci_core_fill_phys_vec); > > int vfio_pci_core_get_dmabuf_phys(struct vfio_pci_core_device *vdev, > > struct p2pdma_provider **provider, > > unsigned int region_index, > > - struct dma_buf_phys_vec *phys_vec, > > + struct phys_vec *phys_vec, > > struct vfio_region_dma_range *dma_ranges, > > size_t nr_ranges) > > { > > diff --git a/include/linux/dma-buf-mapping.h > > b/include/linux/dma-buf-mapping.h > > index a3c0ce2d3a42..09bde3f748e4 100644 > > --- a/include/linux/dma-buf-mapping.h > > +++ b/include/linux/dma-buf-mapping.h > > @@ -9,7 +9,7 @@ > > > > struct sg_table *dma_buf_phys_vec_to_sgt(struct dma_buf_attachment *attach, > > struct p2pdma_provider *provider, > > - struct dma_buf_phys_vec *phys_vec, > > + struct phys_vec *phys_vec, > > size_t nr_ranges, size_t size, > > enum dma_data_direction dir); > > void dma_buf_free_sgt(struct dma_buf_attachment *attach, struct sg_table > > *sgt, > > diff --git a/include/linux/dma-buf.h b/include/linux/dma-buf.h > > index 0bc492090237..400a5311368e 100644 > > --- a/include/linux/dma-buf.h > > +++ b/include/linux/dma-buf.h > > @@ -531,16 +531,6 @@ struct dma_buf_export_info { > > void *priv; > > }; > > > > -/** > > - * struct dma_buf_phys_vec - describe continuous chunk of memory > > - * @paddr: physical address of that chunk > > - * @len: Length of this chunk > > - */ > > -struct dma_buf_phys_vec { > > - phys_addr_t paddr; > > - size_t len; > > -}; > > - > > /** > > * DEFINE_DMA_BUF_EXPORT_INFO - helper macro for exporters > > * @name: export-info name > > diff --git a/include/linux/vfio_pci_core.h b/include/linux/vfio_pci_core.h > > index 706877f998ff..2ac288bb2c60 100644 > > --- a/include/linux/vfio_pci_core.h > > +++ b/include/linux/vfio_pci_core.h > > @@ -28,7 +28,6 @@ > > struct vfio_pci_core_device; > > struct vfio_pci_region; > > struct p2pdma_provider; > > -struct dma_buf_phys_vec; > > struct dma_buf_attachment; > > > > struct vfio_pci_eventfd { > > @@ -62,25 +61,25 @@ struct vfio_pci_device_ops { > > int (*get_dmabuf_phys)(struct vfio_pci_core_device *vdev, > > struct p2pdma_provider **provider, > > unsigned int region_index, > > - struct dma_buf_phys_vec *phys_vec, > > + struct phys_vec *phys_vec, > > struct vfio_region_dma_range *dma_ranges, > > size_t nr_ranges); > > }; > > > > #if IS_ENABLED(CONFIG_VFIO_PCI_DMABUF) > > -int vfio_pci_core_fill_phys_vec(struct dma_buf_phys_vec *phys_vec, > > +int vfio_pci_core_fill_phys_vec(struct phys_vec *phys_vec, > > struct vfio_region_dma_range *dma_ranges, > > size_t nr_ranges, phys_addr_t start, > > phys_addr_t len); > > int vfio_pci_core_get_dmabuf_phys(struct vfio_pci_core_device *vdev, > > struct p2pdma_provider **provider, > > unsigned int region_index, > > - struct dma_buf_phys_vec *phys_vec, > > + struct phys_vec *phys_vec, > > struct vfio_region_dma_range *dma_ranges, > > size_t nr_ranges); > > #else > > static inline int > > -vfio_pci_core_fill_phys_vec(struct dma_buf_phys_vec *phys_vec, > > +vfio_pci_core_fill_phys_vec(struct phys_vec *phys_vec, > > struct vfio_region_dma_range *dma_ranges, > > size_t nr_ranges, phys_addr_t start, > > phys_addr_t len) > > @@ -89,7 +88,7 @@ vfio_pci_core_fill_phys_vec(struct dma_buf_phys_vec > > *phys_vec, > > } > > static inline int vfio_pci_core_get_dmabuf_phys( > > struct vfio_pci_core_device *vdev, struct p2pdma_provider **provider, > > - unsigned int region_index, struct dma_buf_phys_vec *phys_vec, > > + unsigned int region_index, struct phys_vec *phys_vec, > > struct vfio_region_dma_range *dma_ranges, size_t nr_ranges) > > { > > return -EOPNOTSUPP; > > @@ -228,6 +227,6 @@ static inline bool is_aligned_for_order(struct > > vm_area_struct *vma, > > } > > > > int vfio_pci_dma_buf_iommufd_map(struct dma_buf_attachment *attachment, > > - struct dma_buf_phys_vec *phys); > > + struct phys_vec *phys); > > > > #endif /* VFIO_PCI_CORE_H */ > > > > --- > > base-commit: fcf463b92a08686d1aeb1e66674a72eb7a8bfb9b > > change-id: 20260107-convert-to-pvec-bf04dfcf3d12 > > > > Best regards, > > -- > > Leon Romanovsky <[email protected]> > > > > >
