VFIO modules may get loaded/initialized after DPDK initialized (like when starting an application without knowing which devices will be used, and whether their drivers require VFIO).
Retry enabling VFIO if not available. This way, it is not required to restart the DPDK application anymore. Signed-off-by: David Marchand <david.march...@redhat.com> --- drivers/bus/pci/linux/pci_vfio.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/bus/pci/linux/pci_vfio.c b/drivers/bus/pci/linux/pci_vfio.c index adc34a5c51..5317170231 100644 --- a/drivers/bus/pci/linux/pci_vfio.c +++ b/drivers/bus/pci/linux/pci_vfio.c @@ -1319,6 +1319,12 @@ pci_vfio_mmio_write(const struct rte_pci_device *dev, int bar, int pci_vfio_is_enabled(void) { - return rte_vfio_is_enabled("vfio_pci"); + int status = rte_vfio_is_enabled("vfio_pci"); + + if (!status) { + rte_vfio_enable("vfio"); + status = rte_vfio_is_enabled("vfio_pci"); + } + return status; } #endif -- 2.46.0