[dpdk-dev,v3,1/2] bus/pci: fix vfio mode
Checks
Commit Message
From: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Revert back to using VFIO_PRESENT as a marker to enable compilation
of VFIO-related segments.
Fixes: 279b581c897d ("vfio: expose functions")
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
---
In addition to simply re-defining VFIO_PRESENT, the previous #ifdef
removed in favor of RTE_EAL_VFIO must be switched back as well.
Not doing so would break compilation on kernels prior to 3.6.
Additionally, the following patch adds a warning for users.
This fix is left as-is, instead of a more involved solution like
Ferruh's. The reasoning behind it is that it should be made abundantly
clear that the VFIO_PRESENT symbol is defined in eal_vfio.h and
eal_vfio.h only, that it is a private EAL symbol that is currently
bleeding out of the EAL. It should be visible when those private symbols
will be removed from libs external to the EAL.
v3:
- Fix build by include eal_vfio.h in pci_init.h and pci.c as well.
drivers/bus/pci/linux/pci.c | 1 +
drivers/bus/pci/linux/pci_init.h | 4 +++-
drivers/bus/pci/linux/pci_vfio.c | 3 ++-
3 files changed, 6 insertions(+), 2 deletions(-)
Comments
On 10/30/2017 9:36 AM, Gaetan Rivet wrote:
> From: Jerin Jacob <jerin.jacob@caviumnetworks.com>
>
> Revert back to using VFIO_PRESENT as a marker to enable compilation
> of VFIO-related segments.
>
> Fixes: 279b581c897d ("vfio: expose functions")
>
> Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
> Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
Tested-by: Ferruh Yigit <ferruh.yigit@intel.com>
On 10/30/2017 10:26 AM, Ferruh Yigit wrote:
> On 10/30/2017 9:36 AM, Gaetan Rivet wrote:
>> From: Jerin Jacob <jerin.jacob@caviumnetworks.com>
>>
>> Revert back to using VFIO_PRESENT as a marker to enable compilation
>> of VFIO-related segments.
>>
>> Fixes: 279b581c897d ("vfio: expose functions")
>>
>> Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
>> Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
>
> Tested-by: Ferruh Yigit <ferruh.yigit@intel.com>
Opps, this still will break the build with kernel < 3.6
Because rte_vfio.h includes "linux/vfio.h" unconditionally, I am still for
adding a version check in it to fix build for old kernels.
@@ -46,6 +46,7 @@
#include "eal_private.h"
#include "eal_filesystem.h"
+#include "eal_vfio.h"
#include "private.h"
#include "pci_init.h"
@@ -38,6 +38,8 @@
#include <rte_vfio.h>
+#include "eal_vfio.h"
+
/** IO resource type: */
#define IORESOURCE_IO 0x00000100
#define IORESOURCE_MEM 0x00000200
@@ -74,7 +76,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
@@ -48,6 +48,7 @@
#include <rte_vfio.h>
#include "eal_filesystem.h"
+#include "eal_vfio.h"
#include "pci_init.h"
#include "private.h"
@@ -62,7 +63,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))