RE: [PATCH] vfio: Remove vfio_group dev_counter

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> From: Jason Gunthorpe <jgg@xxxxxxxxxx>
> Sent: Tuesday, August 16, 2022 12:50 AM
> 
> This counts the number of devices attached to a vfio_group, ie the number
> of items in the group->device_list.
> 
> It is only read in vfio_pin_pages(), however that function already does
> vfio_assert_device_open(). Given an opened device has to already be
> properly setup with a group, this test and variable are redundant. Remove
> it.

I didn't get the rationale behind. The original check was for whether
the group is singleton. Why is it equivalent to the condition of an
opened device?

Though I do think this check is unnecessary. All the devices in the group
share the container and iommu domain which is what the pinning
operation applies to. I'm not sure why the singleton restriction was
added in the first place.

> 
> Signed-off-by: Jason Gunthorpe <jgg@xxxxxxxxxx>
> ---
>  drivers/vfio/vfio_main.c | 6 ------
>  1 file changed, 6 deletions(-)
> 
> diff --git a/drivers/vfio/vfio_main.c b/drivers/vfio/vfio_main.c
> index 7cb56c382c97a2..76a73890d853e6 100644
> --- a/drivers/vfio/vfio_main.c
> +++ b/drivers/vfio/vfio_main.c
> @@ -74,7 +74,6 @@ struct vfio_group {
>  	struct list_head		vfio_next;
>  	struct list_head		container_next;
>  	enum vfio_group_type		type;
> -	unsigned int			dev_counter;
>  	struct rw_semaphore		group_rwsem;
>  	struct kvm			*kvm;
>  	struct file			*opened_file;
> @@ -608,7 +607,6 @@ static int __vfio_register_dev(struct vfio_device
> *device,
> 
>  	mutex_lock(&group->device_lock);
>  	list_add(&device->group_next, &group->device_list);
> -	group->dev_counter++;
>  	mutex_unlock(&group->device_lock);
> 
>  	return 0;
> @@ -696,7 +694,6 @@ void vfio_unregister_group_dev(struct vfio_device
> *device)
> 
>  	mutex_lock(&group->device_lock);
>  	list_del(&device->group_next);
> -	group->dev_counter--;
>  	mutex_unlock(&group->device_lock);
> 
>  	if (group->type == VFIO_NO_IOMMU || group->type ==
> VFIO_EMULATED_IOMMU)
> @@ -1961,9 +1958,6 @@ int vfio_pin_pages(struct vfio_device *device,
> dma_addr_t iova,
>  	if (npage > VFIO_PIN_PAGES_MAX_ENTRIES)
>  		return -E2BIG;
> 
> -	if (group->dev_counter > 1)
> -		return -EINVAL;
> -
>  	/* group->container cannot change while a vfio device is open */
>  	container = group->container;
>  	driver = container->iommu_driver;
> 
> base-commit: 568035b01cfb107af8d2e4bd2fb9aea22cf5b868
> --
> 2.37.2





[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux