All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ferruh Yigit <ferruh.yigit@intel.com>
To: Anatoly Burakov <anatoly.burakov@intel.com>
Cc: dev@dpdk.org, Ferruh Yigit <ferruh.yigit@intel.com>,
	Jerin Jacob <jerin.jacob@caviumnetworks.com>,
	Gaetan Rivet <gaetan.rivet@6wind.com>
Subject: [PATCH v4] bus/pci: fix vfio mode
Date: Mon, 30 Oct 2017 22:32:27 +0000	[thread overview]
Message-ID: <20171030223227.8852-1-ferruh.yigit@intel.com> (raw)
In-Reply-To: <8492fe4cf1a8d6f15d389c9148e4942f1d060a40.1509381300.git.gaetan.rivet@6wind.com>

Revert back to using VFIO_PRESENT as a marker to enable compilation
of VFIO-related segments.

VFIO_PRESENT is the combination of user configuration RTE_EAL_VFIO and
kernel version support check.

eal_vfio.h VFIO_PRESENT related check ordered to be compatible with
rte_vfio.h one, no functional modification.

Fixes: 279b581c897d ("vfio: expose functions")

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
v4:

* Alternative to v3, not superseding it, need to decide which one to
get. This one:
  * fixes vfio for new kernels
  * fixes build for old kernels for vfio enabled in config case
  * print warning if vfio enabled in config but not supported by kernel

* Independent from this patch, following may need fixing later
  * Kernel version check for vfio is broken for RTE_KERNELDIR
  * Kernel VFIO support check can be improved
---
 drivers/bus/pci/linux/pci_init.h             |  2 +-
 drivers/bus/pci/linux/pci_vfio.c             |  2 +-
 lib/librte_eal/common/include/rte_vfio.h     | 14 ++++++++++++++
 lib/librte_eal/linuxapp/eal/eal_interrupts.c |  1 -
 lib/librte_eal/linuxapp/eal/eal_vfio.h       | 14 ++++++++++----
 5 files changed, 26 insertions(+), 7 deletions(-)

diff --git a/drivers/bus/pci/linux/pci_init.h b/drivers/bus/pci/linux/pci_init.h
index 99d7a2e86..f342c47de 100644
--- a/drivers/bus/pci/linux/pci_init.h
+++ b/drivers/bus/pci/linux/pci_init.h
@@ -74,7 +74,7 @@ void pci_uio_ioport_write(struct rte_pci_ioport *p,
 			  const void *data, size_t len, off_t offset);
 int pci_uio_ioport_unmap(struct rte_pci_ioport *p);
 
-#ifdef RTE_EAL_VFIO
+#ifdef VFIO_PRESENT
 
 #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0)
 #define RTE_PCI_MSIX_TABLE_BIR    0x7
diff --git a/drivers/bus/pci/linux/pci_vfio.c b/drivers/bus/pci/linux/pci_vfio.c
index 360eed380..13d52a8b1 100644
--- a/drivers/bus/pci/linux/pci_vfio.c
+++ b/drivers/bus/pci/linux/pci_vfio.c
@@ -62,7 +62,7 @@
  * This file is only compiled if CONFIG_RTE_EAL_VFIO is set to "y".
  */
 
-#ifdef RTE_EAL_VFIO
+#ifdef VFIO_PRESENT
 
 #define PAGE_SIZE   (sysconf(_SC_PAGESIZE))
 #define PAGE_MASK   (~(PAGE_SIZE - 1))
diff --git a/lib/librte_eal/common/include/rte_vfio.h b/lib/librte_eal/common/include/rte_vfio.h
index a9b705741..d5934cdd3 100644
--- a/lib/librte_eal/common/include/rte_vfio.h
+++ b/lib/librte_eal/common/include/rte_vfio.h
@@ -34,6 +34,18 @@
 #ifndef _RTE_VFIO_H_
 #define _RTE_VFIO_H_
 
+/*
+ * determine if VFIO is present on the system
+ */
+#if !defined(VFIO_PRESENT) && defined(RTE_EAL_VFIO)
+#include <linux/version.h>
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 6, 0)
+#define VFIO_PRESENT
+#endif /* kernel version >= 3.6.0 */
+#endif /* RTE_EAL_VFIO */
+
+#ifdef VFIO_PRESENT
+
 #include <linux/vfio.h>
 
 #define VFIO_DIR "/dev/vfio"
@@ -136,4 +148,6 @@ int vfio_is_enabled(const char *modname);
  */
 int vfio_noiommu_is_enabled(void);
 
+#endif /* VFIO_PRESENT */
+
 #endif /* _RTE_VFIO_H_ */
diff --git a/lib/librte_eal/linuxapp/eal/eal_interrupts.c b/lib/librte_eal/linuxapp/eal/eal_interrupts.c
index cdd74ee10..0bebf004b 100644
--- a/lib/librte_eal/linuxapp/eal/eal_interrupts.c
+++ b/lib/librte_eal/linuxapp/eal/eal_interrupts.c
@@ -64,7 +64,6 @@
 #include <rte_errno.h>
 #include <rte_spinlock.h>
 #include <rte_pause.h>
-#include <rte_vfio.h>
 
 #include "eal_private.h"
 #include "eal_vfio.h"
diff --git a/lib/librte_eal/linuxapp/eal/eal_vfio.h b/lib/librte_eal/linuxapp/eal/eal_vfio.h
index 766d0042d..ba7892b72 100644
--- a/lib/librte_eal/linuxapp/eal/eal_vfio.h
+++ b/lib/librte_eal/linuxapp/eal/eal_vfio.h
@@ -37,9 +37,17 @@
 /*
  * determine if VFIO is present on the system
  */
-#ifdef RTE_EAL_VFIO
+#if !defined(VFIO_PRESENT) && defined(RTE_EAL_VFIO)
 #include <linux/version.h>
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 6, 0)
+#define VFIO_PRESENT
+#else
+#pragma message("VFIO configured but not supported by this kernel, disabling.")
+#endif /* kernel version >= 3.6.0 */
+#endif /* RTE_EAL_VFIO */
+
+#ifdef VFIO_PRESENT
+
 #include <linux/vfio.h>
 
 #define RTE_VFIO_TYPE1 VFIO_TYPE1_IOMMU
@@ -182,8 +190,6 @@ int vfio_mp_sync_setup(void);
 #define SOCKET_NO_FD 0x1
 #define SOCKET_ERR 0xFF
 
-#define VFIO_PRESENT
-#endif /* kernel version */
-#endif /* RTE_EAL_VFIO */
+#endif /* VFIO_PRESENT */
 
 #endif /* EAL_VFIO_H_ */
-- 
2.13.6

  parent reply	other threads:[~2017-10-30 22:32 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-10-28  6:20 [PATCH] bus/pci: fix vfio mode Jerin Jacob
2017-10-30  8:06 ` Gaëtan Rivet
2017-10-30  9:00   ` Ferruh Yigit
2017-10-30  9:17     ` Gaëtan Rivet
2017-10-30  9:27       ` Thomas Monjalon
2017-10-30 11:24         ` Thomas Monjalon
2017-10-30 16:57           ` Ferruh Yigit
2017-10-30 17:13             ` Gaëtan Rivet
2017-10-30  9:10   ` Jerin Jacob
2017-10-30 12:55 ` [PATCH v2 1/2] " Gaetan Rivet
2017-10-30 12:55   ` [PATCH v2 2/2] eal: warn user that VFIO is disabled Gaetan Rivet
2017-10-30 16:36   ` [PATCH v3 1/2] bus/pci: fix vfio mode Gaetan Rivet
2017-10-30 16:36     ` [PATCH v3 2/2] eal: warn user that VFIO is disabled Gaetan Rivet
2017-10-30 17:31       ` Ferruh Yigit
2017-10-30 17:26     ` [PATCH v3 1/2] bus/pci: fix vfio mode Ferruh Yigit
2017-10-30 19:07       ` Ferruh Yigit
2017-10-30 22:32     ` Ferruh Yigit [this message]
2017-10-31 12:03       ` [PATCH v4] " Bruce Richardson
2017-10-31 16:58         ` Ferruh Yigit
2017-10-31 18:21         ` Thomas Monjalon
2017-10-31 14:11       ` Gaëtan Rivet

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=20171030223227.8852-1-ferruh.yigit@intel.com \
    --to=ferruh.yigit@intel.com \
    --cc=anatoly.burakov@intel.com \
    --cc=dev@dpdk.org \
    --cc=gaetan.rivet@6wind.com \
    --cc=jerin.jacob@caviumnetworks.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.