mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	vfio: initialize the virqfd workqueue in VFIO generic code
Now we have finally completely decoupled virqfd from VFIO_PCI. We can initialize it from the VFIO generic code, in order to safely use it from multiple independent VFIO bus drivers. Signed-off-by: Antonios Motakis <a.motakis@virtualopensystems.com> Signed-off-by: Baptiste Reynal <b.reynal@virtualopensystems.com> Reviewed-by: Eric Auger <eric.auger@linaro.org> Tested-by: Eric Auger <eric.auger@linaro.org> Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
This commit is contained in:
		
							parent
							
								
									7e992d6927
								
							
						
					
					
						commit
						42ac9bd18d
					
				
					 4 changed files with 12 additions and 11 deletions
				
			
		| 
						 | 
				
			
			@ -1,4 +1,6 @@
 | 
			
		|||
obj-$(CONFIG_VFIO) += vfio.o
 | 
			
		||||
vfio_core-y := vfio.o virqfd.o
 | 
			
		||||
 | 
			
		||||
obj-$(CONFIG_VFIO) += vfio_core.o
 | 
			
		||||
obj-$(CONFIG_VFIO_IOMMU_TYPE1) += vfio_iommu_type1.o
 | 
			
		||||
obj-$(CONFIG_VFIO_IOMMU_SPAPR_TCE) += vfio_iommu_spapr_tce.o
 | 
			
		||||
obj-$(CONFIG_VFIO_SPAPR_EEH) += vfio_spapr_eeh.o
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,5 +1,4 @@
 | 
			
		|||
 | 
			
		||||
vfio-pci-y := vfio_pci.o vfio_pci_intrs.o vfio_pci_rdwr.o vfio_pci_config.o \
 | 
			
		||||
	      ../virqfd.o
 | 
			
		||||
vfio-pci-y := vfio_pci.o vfio_pci_intrs.o vfio_pci_rdwr.o vfio_pci_config.o
 | 
			
		||||
 | 
			
		||||
obj-$(CONFIG_VFIO_PCI) += vfio-pci.o
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1030,7 +1030,6 @@ static void vfio_pci_try_bus_reset(struct vfio_pci_device *vdev)
 | 
			
		|||
static void __exit vfio_pci_cleanup(void)
 | 
			
		||||
{
 | 
			
		||||
	pci_unregister_driver(&vfio_pci_driver);
 | 
			
		||||
	vfio_virqfd_exit();
 | 
			
		||||
	vfio_pci_uninit_perm_bits();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1043,11 +1042,6 @@ static int __init vfio_pci_init(void)
 | 
			
		|||
	if (ret)
 | 
			
		||||
		return ret;
 | 
			
		||||
 | 
			
		||||
	/* Start the virqfd cleanup handler */
 | 
			
		||||
	ret = vfio_virqfd_init();
 | 
			
		||||
	if (ret)
 | 
			
		||||
		goto out_virqfd;
 | 
			
		||||
 | 
			
		||||
	/* Register and scan for devices */
 | 
			
		||||
	ret = pci_register_driver(&vfio_pci_driver);
 | 
			
		||||
	if (ret)
 | 
			
		||||
| 
						 | 
				
			
			@ -1056,8 +1050,6 @@ static int __init vfio_pci_init(void)
 | 
			
		|||
	return 0;
 | 
			
		||||
 | 
			
		||||
out_driver:
 | 
			
		||||
	vfio_virqfd_exit();
 | 
			
		||||
out_virqfd:
 | 
			
		||||
	vfio_pci_uninit_perm_bits();
 | 
			
		||||
	return ret;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1553,6 +1553,11 @@ static int __init vfio_init(void)
 | 
			
		|||
	if (ret)
 | 
			
		||||
		goto err_cdev_add;
 | 
			
		||||
 | 
			
		||||
	/* Start the virqfd cleanup handler used by some VFIO bus drivers */
 | 
			
		||||
	ret = vfio_virqfd_init();
 | 
			
		||||
	if (ret)
 | 
			
		||||
		goto err_virqfd;
 | 
			
		||||
 | 
			
		||||
	pr_info(DRIVER_DESC " version: " DRIVER_VERSION "\n");
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
| 
						 | 
				
			
			@ -1565,6 +1570,8 @@ static int __init vfio_init(void)
 | 
			
		|||
 | 
			
		||||
	return 0;
 | 
			
		||||
 | 
			
		||||
err_virqfd:
 | 
			
		||||
	cdev_del(&vfio.group_cdev);
 | 
			
		||||
err_cdev_add:
 | 
			
		||||
	unregister_chrdev_region(vfio.group_devt, MINORMASK);
 | 
			
		||||
err_alloc_chrdev:
 | 
			
		||||
| 
						 | 
				
			
			@ -1579,6 +1586,7 @@ static void __exit vfio_cleanup(void)
 | 
			
		|||
{
 | 
			
		||||
	WARN_ON(!list_empty(&vfio.group_list));
 | 
			
		||||
 | 
			
		||||
	vfio_virqfd_exit();
 | 
			
		||||
	idr_destroy(&vfio.group_idr);
 | 
			
		||||
	cdev_del(&vfio.group_cdev);
 | 
			
		||||
	unregister_chrdev_region(vfio.group_devt, MINORMASK);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue