All of lore.kernel.org
 help / color / mirror / Atom feed
From: Baptiste Reynal <b.reynal@virtualopensystems.com>
To: kvmarm@lists.cs.columbia.edu, iommu@lists.linux-fundation.org,
	alex.williamson@redhat.com
Cc: will.deacon@arm.com, tech@virtualopensystems.com,
	christoffer.dall@linaro.org, eric.auger@linaro.org,
	kim.phillips@freescale.com, marc.zyngier@arm.com,
	Antonios Motakis <a.motakis@virtualopensystems.com>,
	Gavin Shan <gwshan@linux.vnet.ibm.com>,
	Alexander Graf <agraf@suse.de>,
	Benjamin Herrenschmidt <benh@kernel.crashing.org>,
	Alexey Kardashevskiy <aik@ozlabs.ru>,
	kvm@vger.kernel.org (open list:VFIO DRIVER),
	linux-kernel@vger.kernel.org (open list)
Subject: [PATCH v12 17/18] vfio: initialize the virqfd workqueue in VFIO generic code
Date: Wed, 21 Jan 2015 13:50:05 +0100	[thread overview]
Message-ID: <1421844606-24751-18-git-send-email-b.reynal@virtualopensystems.com> (raw)
In-Reply-To: <1421844606-24751-1-git-send-email-b.reynal@virtualopensystems.com>

From: Antonios Motakis <a.motakis@virtualopensystems.com>

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>
---
 drivers/vfio/Makefile       | 4 +++-
 drivers/vfio/pci/Makefile   | 3 +--
 drivers/vfio/pci/vfio_pci.c | 8 --------
 drivers/vfio/vfio.c         | 8 ++++++++
 4 files changed, 12 insertions(+), 11 deletions(-)

diff --git a/drivers/vfio/Makefile b/drivers/vfio/Makefile
index dadf0ca..d798b09 100644
--- a/drivers/vfio/Makefile
+++ b/drivers/vfio/Makefile
@@ -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
diff --git a/drivers/vfio/pci/Makefile b/drivers/vfio/pci/Makefile
index c7c8644..1310792 100644
--- a/drivers/vfio/pci/Makefile
+++ b/drivers/vfio/pci/Makefile
@@ -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
diff --git a/drivers/vfio/pci/vfio_pci.c b/drivers/vfio/pci/vfio_pci.c
index fc4308c..8d156d7 100644
--- a/drivers/vfio/pci/vfio_pci.c
+++ b/drivers/vfio/pci/vfio_pci.c
@@ -1012,7 +1012,6 @@ put_devs:
 static void __exit vfio_pci_cleanup(void)
 {
 	pci_unregister_driver(&vfio_pci_driver);
-	vfio_virqfd_exit();
 	vfio_pci_uninit_perm_bits();
 }
 
@@ -1025,11 +1024,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)
@@ -1038,8 +1032,6 @@ static int __init vfio_pci_init(void)
 	return 0;
 
 out_driver:
-	vfio_virqfd_exit();
-out_virqfd:
 	vfio_pci_uninit_perm_bits();
 	return ret;
 }
diff --git a/drivers/vfio/vfio.c b/drivers/vfio/vfio.c
index f018d8d..8e84471 100644
--- a/drivers/vfio/vfio.c
+++ b/drivers/vfio/vfio.c
@@ -1464,6 +1464,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");
 
 	/*
@@ -1476,6 +1481,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:
@@ -1490,6 +1497,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);
-- 
2.2.2


  parent reply	other threads:[~2015-01-21 12:54 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1421844606-24751-1-git-send-email-b.reynal@virtualopensystems.com>
2015-01-21 12:49 ` [PATCH v12 01/18] vfio/platform: initial skeleton of VFIO support for platform devices Baptiste Reynal
2015-01-21 12:49 ` [PATCH v12 02/18] vfio: platform: probe to devices on the platform bus Baptiste Reynal
2015-01-21 12:49   ` Baptiste Reynal
2015-01-21 12:49 ` [PATCH v12 03/18] vfio: platform: add the VFIO PLATFORM module to Kconfig Baptiste Reynal
2015-01-21 12:49 ` [PATCH v12 04/18] vfio/platform: return info for bound device Baptiste Reynal
2015-01-21 12:49 ` [PATCH v12 05/18] vfio/platform: return info for device memory mapped IO regions Baptiste Reynal
2015-01-21 12:49 ` [PATCH v12 06/18] vfio/platform: read and write support for the device fd Baptiste Reynal
2015-01-21 12:49 ` [PATCH v12 07/18] vfio/platform: support MMAP of MMIO regions Baptiste Reynal
2015-01-21 12:49 ` [PATCH v12 08/18] vfio/platform: return IRQ info Baptiste Reynal
2015-01-21 12:49 ` [PATCH v12 09/18] vfio/platform: initial interrupts support code Baptiste Reynal
2015-01-21 12:49 ` [PATCH v12 10/18] vfio/platform: trigger an interrupt via eventfd Baptiste Reynal
2015-01-21 23:26   ` Alex Williamson
2015-01-21 12:49 ` [PATCH v12 11/18] vfio/platform: support for level sensitive interrupts Baptiste Reynal
2015-01-21 12:50 ` [PATCH v12 12/18] vfio: add a vfio_ prefix to virqfd_enable and virqfd_disable and export Baptiste Reynal
2015-01-21 23:25   ` Alex Williamson
2015-01-21 12:50 ` [PATCH v12 13/18] vfio: virqfd: rename vfio_pci_virqfd_init and vfio_pci_virqfd_exit Baptiste Reynal
2015-01-21 12:50 ` [PATCH v12 14/18] vfio: add local lock for virqfd instead of depending on VFIO PCI Baptiste Reynal
2015-01-21 12:50 ` [PATCH v12 15/18] vfio: pass an opaque pointer on virqfd initialization Baptiste Reynal
2015-01-21 12:50 ` [PATCH v12 16/18] vfio: move eventfd support code for VFIO_PCI to a separate file Baptiste Reynal
2015-01-21 12:50 ` Baptiste Reynal [this message]
2015-01-21 12:50 ` [PATCH v12 18/18] vfio/platform: implement IRQ masking/unmasking via an eventfd Baptiste Reynal

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1421844606-24751-18-git-send-email-b.reynal@virtualopensystems.com \
    --to=b.reynal@virtualopensystems.com \
    --cc=a.motakis@virtualopensystems.com \
    --cc=agraf@suse.de \
    --cc=aik@ozlabs.ru \
    --cc=alex.williamson@redhat.com \
    --cc=benh@kernel.crashing.org \
    --cc=christoffer.dall@linaro.org \
    --cc=eric.auger@linaro.org \
    --cc=gwshan@linux.vnet.ibm.com \
    --cc=iommu@lists.linux-fundation.org \
    --cc=kim.phillips@freescale.com \
    --cc=kvm@vger.kernel.org \
    --cc=kvmarm@lists.cs.columbia.edu \
    --cc=linux-kernel@vger.kernel.org \
    --cc=marc.zyngier@arm.com \
    --cc=tech@virtualopensystems.com \
    --cc=will.deacon@arm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.