Skip to content

Commit 395f9d8

Browse files
committed
Merge patch series "Move group specific code into group.c"
Yi Liu <[email protected]> says: ================== With the introduction of iommufd, VFIO is towarding to provide device centric uAPI after adapting to iommufd. With this trend, existing VFIO group infrastructure is optional once VFIO converted to device centric. This series moves the group specific code out of vfio_main.c, prepares for compiling group infrastructure out after adding vfio device cdev[2] [2] https://github.com/yiliu1765/iommufd/tree/wip/vfio_device_cdev ================== Link: https://lore.kernel.org/all/[email protected]/ Signed-off-by: Jason Gunthorpe <[email protected]>
2 parents 90337f5 + 9eefba8 commit 395f9d8

File tree

5 files changed

+986
-875
lines changed

5 files changed

+986
-875
lines changed

drivers/vfio/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ vfio_virqfd-y := virqfd.o
44
obj-$(CONFIG_VFIO) += vfio.o
55

66
vfio-y += vfio_main.o \
7+
group.o \
78
iova_bitmap.o
89
vfio-$(CONFIG_IOMMUFD) += iommufd.o
910
vfio-$(CONFIG_VFIO_CONTAINER) += container.o

drivers/vfio/container.c

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -540,10 +540,12 @@ void vfio_group_unuse_container(struct vfio_group *group)
540540
fput(group->opened_file);
541541
}
542542

543-
int vfio_container_pin_pages(struct vfio_container *container,
544-
struct iommu_group *iommu_group, dma_addr_t iova,
545-
int npage, int prot, struct page **pages)
543+
int vfio_device_container_pin_pages(struct vfio_device *device,
544+
dma_addr_t iova, int npage,
545+
int prot, struct page **pages)
546546
{
547+
struct vfio_container *container = device->group->container;
548+
struct iommu_group *iommu_group = device->group->iommu_group;
547549
struct vfio_iommu_driver *driver = container->iommu_driver;
548550

549551
if (npage > VFIO_PIN_PAGES_MAX_ENTRIES)
@@ -555,19 +557,23 @@ int vfio_container_pin_pages(struct vfio_container *container,
555557
npage, prot, pages);
556558
}
557559

558-
void vfio_container_unpin_pages(struct vfio_container *container,
559-
dma_addr_t iova, int npage)
560+
void vfio_device_container_unpin_pages(struct vfio_device *device,
561+
dma_addr_t iova, int npage)
560562
{
563+
struct vfio_container *container = device->group->container;
564+
561565
if (WARN_ON(npage <= 0 || npage > VFIO_PIN_PAGES_MAX_ENTRIES))
562566
return;
563567

564568
container->iommu_driver->ops->unpin_pages(container->iommu_data, iova,
565569
npage);
566570
}
567571

568-
int vfio_container_dma_rw(struct vfio_container *container, dma_addr_t iova,
569-
void *data, size_t len, bool write)
572+
int vfio_device_container_dma_rw(struct vfio_device *device,
573+
dma_addr_t iova, void *data,
574+
size_t len, bool write)
570575
{
576+
struct vfio_container *container = device->group->container;
571577
struct vfio_iommu_driver *driver = container->iommu_driver;
572578

573579
if (unlikely(!driver || !driver->ops->dma_rw))

0 commit comments

Comments
 (0)