All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jan Viktorin <viktorin@rehivetech.com>
To: dev@dpdk.org
Cc: Jan Viktorin <viktorin@rehivetech.com>,
	Anatoly Burakov <anatoly.burakov@intel.com>,
	David Marchand <david.marchand@6wind.com>,
	Keith Wiles <keith.wiles@intel.com>,
	Santosh Shukla <sshukla@mvista.com>,
	Stephen Hemminger <stephen@networkplumber.org>
Subject: [PATCH 06/15] vfio: generalize pci_vfio_has_supported_extensions
Date: Fri, 29 Apr 2016 15:44:07 +0200	[thread overview]
Message-ID: <1461937456-22943-7-git-send-email-viktorin@rehivetech.com> (raw)
In-Reply-To: <1461937456-22943-1-git-send-email-viktorin@rehivetech.com>

The pci_vfio_has_supported_extensions is not PCI-specific and it is a private
function of the eal_pci_vfio.c. We just rename the function and make it
available even for non-PCI devices.

Signed-off-by: Jan Viktorin <viktorin@rehivetech.com>
---
 lib/librte_eal/linuxapp/eal/eal_pci_vfio.c | 36 +-----------------------------
 lib/librte_eal/linuxapp/eal/eal_vfio.c     | 33 +++++++++++++++++++++++++++
 lib/librte_eal/linuxapp/eal/eal_vfio.h     |  4 ++++
 3 files changed, 38 insertions(+), 35 deletions(-)

diff --git a/lib/librte_eal/linuxapp/eal/eal_pci_vfio.c b/lib/librte_eal/linuxapp/eal/eal_pci_vfio.c
index f82368f..21aded7 100644
--- a/lib/librte_eal/linuxapp/eal/eal_pci_vfio.c
+++ b/lib/librte_eal/linuxapp/eal/eal_pci_vfio.c
@@ -203,40 +203,6 @@ pci_vfio_set_bus_master(int dev_fd)
 	return 0;
 }
 
-/* check if we have any supported extensions */
-static int
-pci_vfio_has_supported_extensions(int vfio_container_fd) {
-	int ret;
-	unsigned idx, n_extensions = 0;
-	for (idx = 0; idx < RTE_DIM(iommu_types); idx++) {
-		const struct vfio_iommu_type *t = &iommu_types[idx];
-
-		ret = ioctl(vfio_container_fd, VFIO_CHECK_EXTENSION,
-				t->type_id);
-		if (ret < 0) {
-			RTE_LOG(ERR, EAL, "  could not get IOMMU type, "
-				"error %i (%s)\n", errno,
-				strerror(errno));
-			close(vfio_container_fd);
-			return -1;
-		} else if (ret == 1) {
-			/* we found a supported extension */
-			n_extensions++;
-		}
-		RTE_LOG(DEBUG, EAL, "  IOMMU type %d (%s) is %s\n",
-				t->type_id, t->name,
-				ret ? "supported" : "not supported");
-	}
-
-	/* if we didn't find any supported IOMMU types, fail */
-	if (!n_extensions) {
-		close(vfio_container_fd);
-		return -1;
-	}
-
-	return 0;
-}
-
 /* set up interrupt support (but not enable interrupts) */
 static int
 pci_vfio_setup_interrupts(struct rte_pci_device *dev, int vfio_dev_fd)
@@ -360,7 +326,7 @@ pci_vfio_get_container_fd(void)
 			return -1;
 		}
 
-		ret = pci_vfio_has_supported_extensions(vfio_container_fd);
+		ret = vfio_has_supported_extensions(vfio_container_fd);
 		if (ret) {
 			RTE_LOG(ERR, EAL, "  no supported IOMMU "
 					"extensions found!\n");
diff --git a/lib/librte_eal/linuxapp/eal/eal_vfio.c b/lib/librte_eal/linuxapp/eal/eal_vfio.c
index ff85283..6a95d2a 100644
--- a/lib/librte_eal/linuxapp/eal/eal_vfio.c
+++ b/lib/librte_eal/linuxapp/eal/eal_vfio.c
@@ -62,6 +62,39 @@ vfio_set_iommu_type(int vfio_container_fd) {
 }
 
 int
+vfio_has_supported_extensions(int vfio_container_fd) {
+	int ret;
+	unsigned idx, n_extensions = 0;
+	for (idx = 0; idx < RTE_DIM(iommu_types); idx++) {
+		const struct vfio_iommu_type *t = &iommu_types[idx];
+
+		ret = ioctl(vfio_container_fd, VFIO_CHECK_EXTENSION,
+				t->type_id);
+		if (ret < 0) {
+			RTE_LOG(ERR, EAL, "  could not get IOMMU type, "
+				"error %i (%s)\n", errno,
+				strerror(errno));
+			close(vfio_container_fd);
+			return -1;
+		} else if (ret == 1) {
+			/* we found a supported extension */
+			n_extensions++;
+		}
+		RTE_LOG(DEBUG, EAL, "  IOMMU type %d (%s) is %s\n",
+				t->type_id, t->name,
+				ret ? "supported" : "not supported");
+	}
+
+	/* if we didn't find any supported IOMMU types, fail */
+	if (!n_extensions) {
+		close(vfio_container_fd);
+		return -1;
+	}
+
+	return 0;
+}
+
+int
 vfio_type1_dma_map(int vfio_container_fd)
 {
 	const struct rte_memseg *ms = rte_eal_get_physmem_layout();
diff --git a/lib/librte_eal/linuxapp/eal/eal_vfio.h b/lib/librte_eal/linuxapp/eal/eal_vfio.h
index afbb98a..8cb0d1d 100644
--- a/lib/librte_eal/linuxapp/eal/eal_vfio.h
+++ b/lib/librte_eal/linuxapp/eal/eal_vfio.h
@@ -111,6 +111,10 @@ struct vfio_iommu_type {
 const struct vfio_iommu_type *
 vfio_set_iommu_type(int vfio_container_fd);
 
+/* check if we have any supported extensions */
+int
+vfio_has_supported_extensions(int vfio_container_fd);
+
 int vfio_type1_dma_map(int);
 int vfio_noiommu_dma_map(int);
 
-- 
2.8.0

  parent reply	other threads:[~2016-04-29 13:46 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-29 13:44 [PATCH 00/15] Make VFIO support independent on PCI Jan Viktorin
2016-04-29 13:44 ` [PATCH 01/15] vfio: fix include of eal_private.h to be local Jan Viktorin
2016-04-29 13:44 ` [PATCH 02/15] vfio: move VFIO-specific stuff to eal_vfio.h Jan Viktorin
2016-04-29 13:44 ` [PATCH 03/15] vfio: move common vfio constants " Jan Viktorin
2016-04-29 13:44 ` [PATCH 04/15] vfio: move vfio_iommu_type and dma_map functions to eal_vfio Jan Viktorin
2016-04-29 13:44 ` [PATCH 05/15] vfio: generalize pci_vfio_set_iommu_type Jan Viktorin
2016-04-29 13:44 ` Jan Viktorin [this message]
2016-04-29 13:44 ` [PATCH 07/15] vfio: move vfio-specific SOCKET_* constants Jan Viktorin
2016-04-29 13:44 ` [PATCH 08/15] vfio: generalize pci_vfio_get_container_fd Jan Viktorin
2016-04-29 13:44 ` [PATCH 09/15] vfio: generalize pci_vfio_get_group_no Jan Viktorin
2016-04-29 13:44 ` [PATCH 10/15] vfio: extract setup logic out of pci_vfio_map_resource Jan Viktorin
2016-05-10 11:53   ` Burakov, Anatoly
2016-05-10 12:58     ` Jan Viktorin
2016-05-10 13:17       ` Jan Viktorin
2016-04-29 13:44 ` [PATCH 11/15] vfio: move global vfio_cfg to eal_vfio.c Jan Viktorin
2016-05-10 11:56   ` Burakov, Anatoly
2016-05-10 12:55     ` Jan Viktorin
2016-05-13 15:34   ` Jan Viktorin
2016-04-29 13:44 ` [PATCH 12/15] vfio: make vfio_*_dma_map and iommu_types private Jan Viktorin
2016-04-29 13:44 ` [PATCH 13/15] vfio: rename and generalize eal_pci_vfio_mp_sync Jan Viktorin
2016-04-29 13:44 ` [PATCH 14/15] vfio: initialize vfio out of the PCI subsystem Jan Viktorin
2016-04-29 13:44 ` [PATCH 15/15] vfio: change VFIO init to be extendable Jan Viktorin
2016-05-10 11:50   ` Burakov, Anatoly
2016-05-10 12:54     ` Jan Viktorin
2016-05-10 13:15       ` Burakov, Anatoly
2016-05-10 12:18 ` [PATCH 00/15] Make VFIO support independent on PCI Santosh Shukla
2016-05-10 12:45   ` Jan Viktorin
2016-06-13 13:01 ` [PATCH v2 00/16] Make VFIO support less dependent " Jan Viktorin
2016-06-13 13:01 ` [PATCH v2 01/16] vfio: fix include of eal_private.h to be local Jan Viktorin
2016-07-04 10:22   ` Burakov, Anatoly
2016-07-04 10:55     ` Jan Viktorin
2016-07-04 15:00     ` Jan Viktorin
2016-07-04 15:09       ` Burakov, Anatoly
2016-06-13 13:01 ` [PATCH v2 02/16] vfio: move VFIO-specific stuff to eal_vfio.h Jan Viktorin
2016-06-13 13:01 ` [PATCH v2 03/16] vfio: move common vfio constants " Jan Viktorin
2016-06-13 13:01 ` [PATCH v2 04/16] vfio: move vfio_iommu_type and dma_map functions to eal_vfio Jan Viktorin
2016-06-13 13:01 ` [PATCH v2 05/16] vfio: generalize pci_vfio_set_iommu_type Jan Viktorin
2016-06-13 13:01 ` [PATCH v2 06/16] vfio: generalize pci_vfio_has_supported_extensions Jan Viktorin
2016-06-13 13:01 ` [PATCH v2 07/16] vfio: move vfio-specific SOCKET_* constants Jan Viktorin
2016-06-13 13:01 ` [PATCH v2 08/16] vfio: generalize pci_vfio_get_container_fd Jan Viktorin
2016-06-13 13:01 ` [PATCH v2 09/16] vfio: generalize pci_vfio_get_group_no Jan Viktorin
2016-06-13 13:02 ` [PATCH v2 10/16] vfio: extract setup logic out of pci_vfio_map_resource Jan Viktorin
2016-06-13 13:02 ` [PATCH v2 11/16] vfio: move global vfio_cfg to eal_vfio.c Jan Viktorin
2016-06-13 13:02 ` [PATCH v2 12/16] vfio: fix typo in doc for vfio_setup_device Jan Viktorin
2016-06-24 15:55   ` Mcnamara, John
2016-06-13 13:02 ` [PATCH v2 13/16] vfio: make vfio_*_dma_map and iommu_types private Jan Viktorin
2016-06-13 13:02 ` [PATCH v2 14/16] vfio: rename and generalize eal_pci_vfio_mp_sync Jan Viktorin
2016-06-13 13:02 ` [PATCH v2 15/16] vfio: initialize vfio out of the PCI subsystem Jan Viktorin
2016-06-13 13:02 ` [PATCH v2 16/16] vfio: change VFIO init to be extendable Jan Viktorin

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=1461937456-22943-7-git-send-email-viktorin@rehivetech.com \
    --to=viktorin@rehivetech.com \
    --cc=anatoly.burakov@intel.com \
    --cc=david.marchand@6wind.com \
    --cc=dev@dpdk.org \
    --cc=keith.wiles@intel.com \
    --cc=sshukla@mvista.com \
    --cc=stephen@networkplumber.org \
    /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.