DPDK patches and discussions
 help / color / mirror / Atom feed
From: David Marchand <david.marchand@redhat.com>
To: dev@dpdk.org
Cc: thomas@monjalon.net, maxime.coquelin@redhat.com,
	anatoly.burakov@intel.com, Rosen Xu <rosen.xu@altera.com>,
	Ajit Khaparde <ajit.khaparde@broadcom.com>,
	Vikas Gupta <vikas.gupta@broadcom.com>,
	Hemant Agrawal <hemant.agrawal@nxp.com>,
	Sachin Saxena <sachin.saxena@nxp.com>,
	Chenbo Xia <chenbox@nvidia.com>,
	Nipun Gupta <nipun.gupta@amd.com>,
	Tomasz Duszynski <tduszynski@marvell.com>,
	Tyler Retzlaff <roretzla@linux.microsoft.com>,
	Harman Kalra <hkalra@marvell.com>
Subject: [RFC v2 2/9] vfio: remove confusing check on VFIO presence
Date: Wed,  3 Sep 2025 17:13:19 +0200	[thread overview]
Message-ID: <20250903151327.1964490-3-david.marchand@redhat.com> (raw)
In-Reply-To: <20250903151327.1964490-1-david.marchand@redhat.com>

Contrary to what the VFIO_PRESENT macro may suggest, there is no check on
whether VFIO is enabled in the (build system) Linux kernel configuration.

Replace check on VFIO_PRESENT with RTE_EAL_VFIO (for components built on
FreeBSD or Windows), or simply remove it otherwise.

Then remove inclusion of rte_vfio.h when the only purpose was checking
VFIO_PRESENT.

Signed-off-by: David Marchand <david.marchand@redhat.com>
Reviewed-by: Rosen Xu <rosen.xu@altera.com>
---
 doc/api/doxy-api.conf.in                   |  1 -
 doc/guides/cryptodevs/bcmfs.rst            |  4 ----
 drivers/bus/fslmc/fslmc_bus.c              | 12 +----------
 drivers/bus/pci/linux/pci.c                | 22 --------------------
 drivers/bus/pci/linux/pci_init.h           |  6 ------
 drivers/bus/pci/linux/pci_vfio.c           | 12 -----------
 drivers/bus/platform/bus_platform_driver.h | 20 +-----------------
 drivers/bus/platform/platform.c            |  4 ----
 drivers/bus/platform/platform_params.c     |  5 -----
 drivers/crypto/bcmfs/bcmfs_vfio.c          | 11 +++++-----
 drivers/raw/ifpga/afu_pmd_n3000.c          |  4 ----
 lib/eal/include/rte_vfio.h                 | 24 ++++++++--------------
 lib/eal/linux/eal.c                        |  4 ----
 lib/eal/linux/eal_interrupts.c             | 15 --------------
 lib/eal/linux/eal_vfio.h                   | 16 ---------------
 lib/eal/linux/eal_vfio_mp_sync.c           | 10 ---------
 16 files changed, 16 insertions(+), 154 deletions(-)

diff --git a/doc/api/doxy-api.conf.in b/doc/api/doxy-api.conf.in
index 28cec3232f..bedd944681 100644
--- a/doc/api/doxy-api.conf.in
+++ b/doc/api/doxy-api.conf.in
@@ -92,7 +92,6 @@ FILE_PATTERNS           = rte_*.h \
 PREDEFINED              = __DOXYGEN__ \
                           RTE_ATOMIC \
                           RTE_HAS_CPUSET \
-                          VFIO_PRESENT \
                           __rte_lockable= \
                           __rte_guarded_by(x)= \
                           __rte_exclusive_locks_required(x)= \
diff --git a/doc/guides/cryptodevs/bcmfs.rst b/doc/guides/cryptodevs/bcmfs.rst
index d18a253913..049808a49c 100644
--- a/doc/guides/cryptodevs/bcmfs.rst
+++ b/doc/guides/cryptodevs/bcmfs.rst
@@ -59,10 +59,6 @@ Information about kernel, rootfs and toolchain can be found at
 `Broadcom Official Website <https://www.broadcom.com/products/ethernet-connectivity
 /network-adapters/smartnic/stingray-software>`__.
 
-    .. Note::
-        To execute BCMFS PMD, it must be compiled with VFIO_PRESENT flag on the
-        compiling platform and same gets enabled in rte_vfio.h.
-
 The BCMFS PMD may be compiled natively on a Stingray platform or
 cross-compiled on an x86 platform. For example, below commands can be executed
 for cross compiling on x86 platform.
diff --git a/drivers/bus/fslmc/fslmc_bus.c b/drivers/bus/fslmc/fslmc_bus.c
index ebc0c1fb4f..20458d5030 100644
--- a/drivers/bus/fslmc/fslmc_bus.c
+++ b/drivers/bus/fslmc/fslmc_bus.c
@@ -574,9 +574,6 @@ fslmc_all_device_support_iova(void)
 static enum rte_iova_mode
 rte_dpaa2_get_iommu_class(void)
 {
-	bool is_vfio_noiommu_enabled = 1;
-	bool has_iova_va;
-
 	if (rte_eal_iova_mode() == RTE_IOVA_PA)
 		return RTE_IOVA_PA;
 
@@ -584,14 +581,7 @@ rte_dpaa2_get_iommu_class(void)
 		return RTE_IOVA_DC;
 
 	/* check if all devices on the bus support Virtual addressing or not */
-	has_iova_va = fslmc_all_device_support_iova();
-
-#ifdef VFIO_PRESENT
-	is_vfio_noiommu_enabled = rte_vfio_noiommu_is_enabled() == true ?
-						true : false;
-#endif
-
-	if (has_iova_va && !is_vfio_noiommu_enabled)
+	if (fslmc_all_device_support_iova() != 0 && rte_vfio_noiommu_is_enabled() == 0)
 		return RTE_IOVA_VA;
 
 	return RTE_IOVA_PA;
diff --git a/drivers/bus/pci/linux/pci.c b/drivers/bus/pci/linux/pci.c
index c20d159218..66d7e09a6e 100644
--- a/drivers/bus/pci/linux/pci.c
+++ b/drivers/bus/pci/linux/pci.c
@@ -64,10 +64,8 @@ rte_pci_map_device(struct rte_pci_device *dev)
 	/* try mapping the NIC resources using VFIO if it exists */
 	switch (dev->kdrv) {
 	case RTE_PCI_KDRV_VFIO:
-#ifdef VFIO_PRESENT
 		if (pci_vfio_is_enabled())
 			ret = pci_vfio_map_resource(dev);
-#endif
 		break;
 	case RTE_PCI_KDRV_IGB_UIO:
 	case RTE_PCI_KDRV_UIO_GENERIC:
@@ -93,10 +91,8 @@ rte_pci_unmap_device(struct rte_pci_device *dev)
 	/* try unmapping the NIC resources using VFIO if it exists */
 	switch (dev->kdrv) {
 	case RTE_PCI_KDRV_VFIO:
-#ifdef VFIO_PRESENT
 		if (pci_vfio_is_enabled())
 			pci_vfio_unmap_resource(dev);
-#endif
 		break;
 	case RTE_PCI_KDRV_IGB_UIO:
 	case RTE_PCI_KDRV_UIO_GENERIC:
@@ -599,7 +595,6 @@ pci_device_iova_mode(const struct rte_pci_driver *pdrv,
 
 	switch (pdev->kdrv) {
 	case RTE_PCI_KDRV_VFIO: {
-#ifdef VFIO_PRESENT
 		static int is_vfio_noiommu_enabled = -1;
 
 		if (is_vfio_noiommu_enabled == -1) {
@@ -612,7 +607,6 @@ pci_device_iova_mode(const struct rte_pci_driver *pdrv,
 			iova_mode = RTE_IOVA_PA;
 		else if ((pdrv->drv_flags & RTE_PCI_DRV_NEED_IOVA_AS_VA) != 0)
 			iova_mode = RTE_IOVA_VA;
-#endif
 		break;
 	}
 
@@ -641,10 +635,8 @@ int rte_pci_read_config(const struct rte_pci_device *device,
 	case RTE_PCI_KDRV_IGB_UIO:
 	case RTE_PCI_KDRV_UIO_GENERIC:
 		return pci_uio_read_config(intr_handle, buf, len, offset);
-#ifdef VFIO_PRESENT
 	case RTE_PCI_KDRV_VFIO:
 		return pci_vfio_read_config(device, buf, len, offset);
-#endif
 	default:
 		rte_pci_device_name(&device->addr, devname,
 				    RTE_DEV_NAME_MAX_LEN);
@@ -665,10 +657,8 @@ int rte_pci_write_config(const struct rte_pci_device *device,
 	case RTE_PCI_KDRV_IGB_UIO:
 	case RTE_PCI_KDRV_UIO_GENERIC:
 		return pci_uio_write_config(intr_handle, buf, len, offset);
-#ifdef VFIO_PRESENT
 	case RTE_PCI_KDRV_VFIO:
 		return pci_vfio_write_config(device, buf, len, offset);
-#endif
 	default:
 		rte_pci_device_name(&device->addr, devname,
 				    RTE_DEV_NAME_MAX_LEN);
@@ -688,10 +678,8 @@ int rte_pci_mmio_read(const struct rte_pci_device *device, int bar,
 	case RTE_PCI_KDRV_IGB_UIO:
 	case RTE_PCI_KDRV_UIO_GENERIC:
 		return pci_uio_mmio_read(device, bar, buf, len, offset);
-#ifdef VFIO_PRESENT
 	case RTE_PCI_KDRV_VFIO:
 		return pci_vfio_mmio_read(device, bar, buf, len, offset);
-#endif
 	default:
 		rte_pci_device_name(&device->addr, devname,
 				    RTE_DEV_NAME_MAX_LEN);
@@ -711,10 +699,8 @@ int rte_pci_mmio_write(const struct rte_pci_device *device, int bar,
 	case RTE_PCI_KDRV_IGB_UIO:
 	case RTE_PCI_KDRV_UIO_GENERIC:
 		return pci_uio_mmio_write(device, bar, buf, len, offset);
-#ifdef VFIO_PRESENT
 	case RTE_PCI_KDRV_VFIO:
 		return pci_vfio_mmio_write(device, bar, buf, len, offset);
-#endif
 	default:
 		rte_pci_device_name(&device->addr, devname,
 				    RTE_DEV_NAME_MAX_LEN);
@@ -731,12 +717,10 @@ rte_pci_ioport_map(struct rte_pci_device *dev, int bar,
 	int ret = -1;
 
 	switch (dev->kdrv) {
-#ifdef VFIO_PRESENT
 	case RTE_PCI_KDRV_VFIO:
 		if (pci_vfio_is_enabled())
 			ret = pci_vfio_ioport_map(dev, bar, p);
 		break;
-#endif
 	case RTE_PCI_KDRV_IGB_UIO:
 	case RTE_PCI_KDRV_UIO_GENERIC:
 		ret = pci_uio_ioport_map(dev, bar, p);
@@ -757,11 +741,9 @@ rte_pci_ioport_read(struct rte_pci_ioport *p,
 		void *data, size_t len, off_t offset)
 {
 	switch (p->dev->kdrv) {
-#ifdef VFIO_PRESENT
 	case RTE_PCI_KDRV_VFIO:
 		pci_vfio_ioport_read(p, data, len, offset);
 		break;
-#endif
 	case RTE_PCI_KDRV_IGB_UIO:
 	case RTE_PCI_KDRV_UIO_GENERIC:
 		pci_uio_ioport_read(p, data, len, offset);
@@ -777,11 +759,9 @@ rte_pci_ioport_write(struct rte_pci_ioport *p,
 		const void *data, size_t len, off_t offset)
 {
 	switch (p->dev->kdrv) {
-#ifdef VFIO_PRESENT
 	case RTE_PCI_KDRV_VFIO:
 		pci_vfio_ioport_write(p, data, len, offset);
 		break;
-#endif
 	case RTE_PCI_KDRV_IGB_UIO:
 	case RTE_PCI_KDRV_UIO_GENERIC:
 		pci_uio_ioport_write(p, data, len, offset);
@@ -798,12 +778,10 @@ rte_pci_ioport_unmap(struct rte_pci_ioport *p)
 	int ret = -1;
 
 	switch (p->dev->kdrv) {
-#ifdef VFIO_PRESENT
 	case RTE_PCI_KDRV_VFIO:
 		if (pci_vfio_is_enabled())
 			ret = pci_vfio_ioport_unmap(p);
 		break;
-#endif
 	case RTE_PCI_KDRV_IGB_UIO:
 	case RTE_PCI_KDRV_UIO_GENERIC:
 		ret = pci_uio_ioport_unmap(p);
diff --git a/drivers/bus/pci/linux/pci_init.h b/drivers/bus/pci/linux/pci_init.h
index a4d37c0d0a..6949dd57d9 100644
--- a/drivers/bus/pci/linux/pci_init.h
+++ b/drivers/bus/pci/linux/pci_init.h
@@ -5,8 +5,6 @@
 #ifndef EAL_PCI_INIT_H_
 #define EAL_PCI_INIT_H_
 
-#include <rte_vfio.h>
-
 #include "private.h"
 
 /** IO resource type: */
@@ -50,8 +48,6 @@ 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 VFIO_PRESENT
-
 /* access config space */
 int pci_vfio_read_config(const struct rte_pci_device *dev,
 			 void *buf, size_t len, off_t offs);
@@ -77,6 +73,4 @@ int pci_vfio_unmap_resource(struct rte_pci_device *dev);
 
 int pci_vfio_is_enabled(void);
 
-#endif
-
 #endif /* EAL_PCI_INIT_H_ */
diff --git a/drivers/bus/pci/linux/pci_vfio.c b/drivers/bus/pci/linux/pci_vfio.c
index 5317170231..d0844585fe 100644
--- a/drivers/bus/pci/linux/pci_vfio.c
+++ b/drivers/bus/pci/linux/pci_vfio.c
@@ -27,17 +27,6 @@
 #include "pci_init.h"
 #include "private.h"
 
-/**
- * @file
- * PCI probing using Linux VFIO.
- *
- * This code tries to determine if the PCI device is bound to VFIO driver,
- * and initialize it (map BARs, set up interrupts) if that's the case.
- *
- */
-
-#ifdef VFIO_PRESENT
-
 static struct rte_tailq_elem rte_vfio_tailq = {
 	.name = "VFIO_RESOURCE_LIST",
 };
@@ -1327,4 +1316,3 @@ pci_vfio_is_enabled(void)
 	}
 	return status;
 }
-#endif
diff --git a/drivers/bus/platform/bus_platform_driver.h b/drivers/bus/platform/bus_platform_driver.h
index ef4b27c0c0..76403043c1 100644
--- a/drivers/bus/platform/bus_platform_driver.h
+++ b/drivers/bus/platform/bus_platform_driver.h
@@ -15,9 +15,9 @@
 
 #include <dev_driver.h>
 #include <rte_common.h>
+#include <rte_compat.h>
 #include <rte_dev.h>
 #include <rte_os.h>
-#include <rte_vfio.h>
 
 #ifdef __cplusplus
 extern "C" {
@@ -144,8 +144,6 @@ RTE_PMD_EXPORT_NAME(nm)
 #define RTE_PMD_REGISTER_ALIAS(nm, alias) \
 static const char *pdrvinit_ ## nm ## _alias = RTE_STR(alias)
 
-#ifdef VFIO_PRESENT
-
 /**
  * Register a platform device driver.
  *
@@ -170,22 +168,6 @@ void rte_platform_register(struct rte_platform_driver *pdrv);
 __rte_internal
 void rte_platform_unregister(struct rte_platform_driver *pdrv);
 
-#else
-
-__rte_internal
-static inline void
-rte_platform_register(struct rte_platform_driver *pdrv __rte_unused)
-{
-}
-
-__rte_internal
-static inline void
-rte_platform_unregister(struct rte_platform_driver *pdrv __rte_unused)
-{
-}
-
-#endif /* VFIO_PRESENT */
-
 #ifdef __cplusplus
 }
 #endif
diff --git a/drivers/bus/platform/platform.c b/drivers/bus/platform/platform.c
index 0f50027236..90524fd961 100644
--- a/drivers/bus/platform/platform.c
+++ b/drivers/bus/platform/platform.c
@@ -25,8 +25,6 @@
 
 #include "private.h"
 
-#ifdef VFIO_PRESENT
-
 #define PLATFORM_BUS_DEVICES_PATH "/sys/bus/platform/devices"
 
 RTE_EXPORT_INTERNAL_SYMBOL(rte_platform_register)
@@ -647,5 +645,3 @@ struct rte_platform_bus platform_bus = {
 
 RTE_REGISTER_BUS(platform, platform_bus.bus);
 RTE_LOG_REGISTER_DEFAULT(platform_bus_logtype, NOTICE);
-
-#endif /* VFIO_PRESENT */
diff --git a/drivers/bus/platform/platform_params.c b/drivers/bus/platform/platform_params.c
index 8a6214b97c..65b20d121f 100644
--- a/drivers/bus/platform/platform_params.c
+++ b/drivers/bus/platform/platform_params.c
@@ -10,13 +10,10 @@
 #include <rte_dev.h>
 #include <rte_errno.h>
 #include <rte_kvargs.h>
-#include <rte_vfio.h>
 
 #include "bus_platform_driver.h"
 #include "private.h"
 
-#ifdef VFIO_PRESENT
-
 enum platform_params {
 	RTE_PLATFORM_PARAM_NAME,
 };
@@ -73,5 +70,3 @@ platform_bus_dev_iterate(const void *start, const char *str,
 
 	return dev;
 }
-
-#endif /* VFIO_PRESENT */
diff --git a/drivers/crypto/bcmfs/bcmfs_vfio.c b/drivers/crypto/bcmfs/bcmfs_vfio.c
index dc2def580f..8d6ea16544 100644
--- a/drivers/crypto/bcmfs/bcmfs_vfio.c
+++ b/drivers/crypto/bcmfs/bcmfs_vfio.c
@@ -7,13 +7,14 @@
 #include <sys/mman.h>
 #include <sys/ioctl.h>
 
-#include <rte_vfio.h>
-
 #include "bcmfs_device.h"
 #include "bcmfs_logs.h"
 #include "bcmfs_vfio.h"
 
-#ifdef VFIO_PRESENT
+#ifdef RTE_EAL_VFIO
+
+#include <rte_vfio.h>
+
 static int
 vfio_map_dev_obj(const char *path, const char *dev_obj,
 		 uint32_t *size, void **addr, int *dev_fd)
@@ -93,7 +94,7 @@ bcmfs_release_vfio(struct bcmfs_device *dev)
 		return;
 	}
 }
-#else
+#else /* ! RTE_EAL_VFIO */
 int
 bcmfs_attach_vfio(struct bcmfs_device *dev __rte_unused)
 {
@@ -104,4 +105,4 @@ void
 bcmfs_release_vfio(struct bcmfs_device *dev __rte_unused)
 {
 }
-#endif
+#endif /* RTE_EAL_VFIO */
diff --git a/drivers/raw/ifpga/afu_pmd_n3000.c b/drivers/raw/ifpga/afu_pmd_n3000.c
index 6aae1b224e..0882a27701 100644
--- a/drivers/raw/ifpga/afu_pmd_n3000.c
+++ b/drivers/raw/ifpga/afu_pmd_n3000.c
@@ -1473,7 +1473,6 @@ static struct rte_pci_device *n3000_afu_get_pci_dev(struct afu_rawdev *dev)
 	return RTE_DEV_TO_PCI(afudev->rawdev->device);
 }
 
-#ifdef VFIO_PRESENT
 static int dma_afu_set_irqs(struct afu_rawdev *dev, uint32_t vec_start,
 	uint32_t count, int *efds)
 {
@@ -1511,7 +1510,6 @@ static int dma_afu_set_irqs(struct afu_rawdev *dev, uint32_t vec_start,
 	rte_free(irq_set);
 	return ret;
 }
-#endif
 
 static void *n3000_afu_get_port_addr(struct afu_rawdev *dev)
 {
@@ -1724,10 +1722,8 @@ static int dma_afu_ctx_init(struct afu_rawdev *dev, int index, uint8_t *addr)
 			IFPGA_RAWDEV_PMD_ERR("eventfd create failed");
 			return -EBADF;
 		}
-#ifdef VFIO_PRESENT
 		if (dma_afu_set_irqs(dev, vec_start, 1, efds))
 			IFPGA_RAWDEV_PMD_ERR("DMA interrupt setup failed");
-#endif
 	}
 	ctx->event_fd = efds[0];
 
diff --git a/lib/eal/include/rte_vfio.h b/lib/eal/include/rte_vfio.h
index 923293040b..594d504c56 100644
--- a/lib/eal/include/rte_vfio.h
+++ b/lib/eal/include/rte_vfio.h
@@ -15,24 +15,16 @@
 
 #include <rte_compat.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 */
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0)
-#define HAVE_VFIO_DEV_REQ_INTERFACE
-#endif /* kernel version >= 4.0.0 */
-#endif /* RTE_EAL_VFIO */
-
 #ifdef __cplusplus
 extern "C" {
 #endif
 
-#ifdef VFIO_PRESENT
+#ifdef RTE_EAL_VFIO
+
+#include <linux/version.h>
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0)
+#define HAVE_VFIO_DEV_REQ_INTERFACE
+#endif /* kernel version >= 4.0.0 */
 
 #include <linux/vfio.h>
 
@@ -102,12 +94,12 @@ struct vfio_device_feature_bus_master {
 };
 #endif
 
-#else /* not VFIO_PRESENT */
+#else /* ! RTE_EAL_VFIO */
 
 /* we don't need an actual definition, only pointer is used */
 struct vfio_device_info;
 
-#endif /* VFIO_PRESENT */
+#endif /* RTE_EAL_VFIO */
 
 #define RTE_VFIO_DEFAULT_CONTAINER_FD (-1)
 
diff --git a/lib/eal/linux/eal.c b/lib/eal/linux/eal.c
index 52efb8626b..708a387265 100644
--- a/lib/eal/linux/eal.c
+++ b/lib/eal/linux/eal.c
@@ -1121,14 +1121,12 @@ rte_eal_init(int argc, char **argv)
 #endif
 	}
 
-#ifdef VFIO_PRESENT
 	if (rte_vfio_enable("vfio")) {
 		rte_eal_init_alert("Cannot init VFIO");
 		rte_errno = EAGAIN;
 		rte_atomic_store_explicit(&run_once, 0, rte_memory_order_relaxed);
 		return -1;
 	}
-#endif
 	/* in secondary processes, memory init may allocate additional fbarrays
 	 * not present in primary processes, so to avoid any potential issues,
 	 * initialize memzones first.
@@ -1330,9 +1328,7 @@ rte_eal_cleanup(void)
 		rte_memseg_walk(mark_freeable, NULL);
 
 	rte_service_finalize();
-#ifdef VFIO_PRESENT
 	vfio_mp_sync_cleanup();
-#endif
 	rte_mp_channel_cleanup();
 	eal_bus_cleanup();
 	rte_eal_alarm_cleanup();
diff --git a/lib/eal/linux/eal_interrupts.c b/lib/eal/linux/eal_interrupts.c
index 4ec78de82c..d420ecf947 100644
--- a/lib/eal/linux/eal_interrupts.c
+++ b/lib/eal/linux/eal_interrupts.c
@@ -57,9 +57,7 @@ union intr_pipefds{
  */
 union rte_intr_read_buffer {
 	int uio_intr_count;              /* for uio device */
-#ifdef VFIO_PRESENT
 	uint64_t vfio_intr_count;        /* for vfio device */
-#endif
 	uint64_t timerfd_num;            /* for timerfd */
 	char charbuf[16];                /* for others */
 };
@@ -95,8 +93,6 @@ static struct rte_intr_source_list intr_sources;
 static rte_thread_t intr_thread;
 
 /* VFIO interrupts */
-#ifdef VFIO_PRESENT
-
 #define IRQ_SET_BUF_LEN  (sizeof(struct vfio_irq_set) + sizeof(int))
 /* irq set buffer length for queue interrupts and LSC interrupt */
 #define MSIX_IRQ_SET_BUF_LEN (sizeof(struct vfio_irq_set) + \
@@ -401,7 +397,6 @@ vfio_disable_req(const struct rte_intr_handle *intr_handle)
 	return ret;
 }
 #endif
-#endif
 
 static int
 uio_intx_intr_disable(const struct rte_intr_handle *intr_handle)
@@ -734,7 +729,6 @@ rte_intr_enable(const struct rte_intr_handle *intr_handle)
 	case RTE_INTR_HANDLE_ALARM:
 		rc = -1;
 		break;
-#ifdef VFIO_PRESENT
 	case RTE_INTR_HANDLE_VFIO_MSIX:
 		if (vfio_enable_msix(intr_handle))
 			rc = -1;
@@ -752,7 +746,6 @@ rte_intr_enable(const struct rte_intr_handle *intr_handle)
 		if (vfio_enable_req(intr_handle))
 			rc = -1;
 		break;
-#endif
 #endif
 	/* not used at this moment */
 	case RTE_INTR_HANDLE_DEV_EVENT:
@@ -807,7 +800,6 @@ rte_intr_ack(const struct rte_intr_handle *intr_handle)
 	/* not used at this moment */
 	case RTE_INTR_HANDLE_ALARM:
 		return -1;
-#ifdef VFIO_PRESENT
 	/* VFIO MSI* is implicitly acked unlike INTx, nothing to do */
 	case RTE_INTR_HANDLE_VFIO_MSIX:
 	case RTE_INTR_HANDLE_VFIO_MSI:
@@ -819,7 +811,6 @@ rte_intr_ack(const struct rte_intr_handle *intr_handle)
 #ifdef HAVE_VFIO_DEV_REQ_INTERFACE
 	case RTE_INTR_HANDLE_VFIO_REQ:
 		return -1;
-#endif
 #endif
 	/* not used at this moment */
 	case RTE_INTR_HANDLE_DEV_EVENT:
@@ -868,7 +859,6 @@ rte_intr_disable(const struct rte_intr_handle *intr_handle)
 	case RTE_INTR_HANDLE_ALARM:
 		rc = -1;
 		break;
-#ifdef VFIO_PRESENT
 	case RTE_INTR_HANDLE_VFIO_MSIX:
 		if (vfio_disable_msix(intr_handle))
 			rc = -1;
@@ -886,7 +876,6 @@ rte_intr_disable(const struct rte_intr_handle *intr_handle)
 		if (vfio_disable_req(intr_handle))
 			rc = -1;
 		break;
-#endif
 #endif
 	/* not used at this moment */
 	case RTE_INTR_HANDLE_DEV_EVENT:
@@ -948,7 +937,6 @@ eal_intr_process_interrupts(struct epoll_event *events, int nfds)
 		case RTE_INTR_HANDLE_ALARM:
 			bytes_read = sizeof(buf.timerfd_num);
 			break;
-#ifdef VFIO_PRESENT
 #ifdef HAVE_VFIO_DEV_REQ_INTERFACE
 		case RTE_INTR_HANDLE_VFIO_REQ:
 #endif
@@ -957,7 +945,6 @@ eal_intr_process_interrupts(struct epoll_event *events, int nfds)
 		case RTE_INTR_HANDLE_VFIO_LEGACY:
 			bytes_read = sizeof(buf.vfio_intr_count);
 			break;
-#endif
 		case RTE_INTR_HANDLE_VDEV:
 		case RTE_INTR_HANDLE_EXT:
 			bytes_read = 0;
@@ -1221,13 +1208,11 @@ eal_intr_proc_rxtx_intr(int fd, const struct rte_intr_handle *intr_handle)
 	case RTE_INTR_HANDLE_UIO_INTX:
 		bytes_read = sizeof(buf.uio_intr_count);
 		break;
-#ifdef VFIO_PRESENT
 	case RTE_INTR_HANDLE_VFIO_MSIX:
 	case RTE_INTR_HANDLE_VFIO_MSI:
 	case RTE_INTR_HANDLE_VFIO_LEGACY:
 		bytes_read = sizeof(buf.vfio_intr_count);
 		break;
-#endif
 	case RTE_INTR_HANDLE_VDEV:
 		bytes_read = rte_intr_efd_counter_size_get(intr_handle);
 		/* For vdev, number of bytes to read is set by driver */
diff --git a/lib/eal/linux/eal_vfio.h b/lib/eal/linux/eal_vfio.h
index 23a787ad20..e7d855c032 100644
--- a/lib/eal/linux/eal_vfio.h
+++ b/lib/eal/linux/eal_vfio.h
@@ -7,20 +7,6 @@
 
 #include <rte_common.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
-#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 <stdint.h>
 #include <linux/vfio.h>
 
@@ -154,6 +140,4 @@ struct vfio_mp_param {
 	};
 };
 
-#endif /* VFIO_PRESENT */
-
 #endif /* EAL_VFIO_H_ */
diff --git a/lib/eal/linux/eal_vfio_mp_sync.c b/lib/eal/linux/eal_vfio_mp_sync.c
index ce14e260fe..8230f3d24d 100644
--- a/lib/eal/linux/eal_vfio_mp_sync.c
+++ b/lib/eal/linux/eal_vfio_mp_sync.c
@@ -14,15 +14,6 @@
 #include "eal_private.h"
 #include "eal_vfio.h"
 
-/**
- * @file
- * VFIO socket for communication between primary and secondary processes.
- *
- * This file is only compiled if RTE_EAL_VFIO is set.
- */
-
-#ifdef VFIO_PRESENT
-
 static int
 vfio_mp_primary(const struct rte_mp_msg *msg, const void *peer)
 {
@@ -129,4 +120,3 @@ vfio_mp_sync_cleanup(void)
 
 	rte_mp_action_unregister(EAL_VFIO_MP);
 }
-#endif
-- 
2.51.0


  parent reply	other threads:[~2025-09-03 15:13 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-09-03  7:28 [RFC 0/8] Cleanup VFIO API and import Linux uAPI header David Marchand
2025-09-03  7:28 ` [RFC 1/8] vfio: remove confusing check on VFIO presence David Marchand
2025-09-03  9:38   ` Xu, Rosen
2025-09-03  7:28 ` [RFC 2/8] vfio: assume VFIO is always and only present on Linux David Marchand
2025-09-03  7:28 ` [RFC 3/8] vfio: remove public wrappers David Marchand
2025-09-03  7:28 ` [RFC 4/8] eal/linux: remove more internal VFIO macros David Marchand
2025-09-03  7:28 ` [RFC 5/8] eal/linux: remove internal VFIO wrappers for old Linux David Marchand
2025-09-03  7:28 ` [RFC 6/8] vfio: stop including Linux kernel header in public and driver API David Marchand
2025-09-03  9:38   ` Xu, Rosen
2025-09-03  7:28 ` [RFC 7/8] uapi: import VFIO header David Marchand
2025-09-03  7:28 ` [RFC 8/8] vfio: use imported uAPI header David Marchand
2025-09-03  9:38   ` Xu, Rosen
2025-09-03  7:50 ` [RFC 0/8] Cleanup VFIO API and import Linux " David Marchand
2025-09-03  9:29 ` Burakov, Anatoly
2025-09-03  9:52   ` David Marchand
2025-09-03 14:25     ` Burakov, Anatoly
2025-09-03 15:13 ` [RFC v2 0/9] " David Marchand
2025-09-03 15:13   ` [RFC v2 1/9] drivers: remove unneeded VFIO header inclusion David Marchand
2025-09-03 15:13   ` David Marchand [this message]
2025-09-03 15:13   ` [RFC v2 3/9] vfio: assume VFIO is always and only present on Linux David Marchand
2025-09-03 15:13   ` [RFC v2 4/9] vfio: remove public wrappers David Marchand
2025-09-03 15:13   ` [RFC v2 5/9] eal/linux: remove more internal VFIO macros David Marchand
2025-09-03 15:13   ` [RFC v2 6/9] eal/linux: remove internal VFIO wrappers for old Linux David Marchand
2025-09-03 15:22   ` [RFC v2 0/9] Cleanup VFIO API and import Linux uAPI header David Marchand
2025-09-03 15:17 ` David Marchand
2025-09-03 15:17   ` [RFC v2 1/9] drivers: remove unneeded VFIO header inclusion David Marchand
2025-09-03 15:17   ` [RFC v2 2/9] vfio: remove confusing check on VFIO presence David Marchand
2025-09-03 15:17   ` [RFC v2 3/9] vfio: assume VFIO is always and only present on Linux David Marchand
2025-09-03 15:17   ` [RFC v2 4/9] vfio: remove public wrappers David Marchand
2025-09-03 15:17   ` [RFC v2 5/9] eal/linux: remove more internal VFIO macros David Marchand
2025-09-03 15:17   ` [RFC v2 6/9] eal/linux: remove internal VFIO wrappers for old Linux David Marchand
2025-09-03 15:17   ` [RFC v2 7/9] vfio: stop including Linux kernel header in public and driver API David Marchand
2025-09-03 15:17   ` [RFC v2 8/9] uapi: import VFIO header David Marchand
2025-09-03 15:17   ` [RFC v2 9/9] vfio: use imported uAPI header David Marchand
2025-09-04  7:08   ` [RFC v2 0/9] Cleanup VFIO API and import Linux " David Marchand

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=20250903151327.1964490-3-david.marchand@redhat.com \
    --to=david.marchand@redhat.com \
    --cc=ajit.khaparde@broadcom.com \
    --cc=anatoly.burakov@intel.com \
    --cc=chenbox@nvidia.com \
    --cc=dev@dpdk.org \
    --cc=hemant.agrawal@nxp.com \
    --cc=hkalra@marvell.com \
    --cc=maxime.coquelin@redhat.com \
    --cc=nipun.gupta@amd.com \
    --cc=roretzla@linux.microsoft.com \
    --cc=rosen.xu@altera.com \
    --cc=sachin.saxena@nxp.com \
    --cc=tduszynski@marvell.com \
    --cc=thomas@monjalon.net \
    --cc=vikas.gupta@broadcom.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).