On 9/16/24 14:30, David Marchand wrote:
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

Reviewed-by: Maxime Coquelin <maxime.coque...@redhat.com>

Also wondering if it could be considered a fix.

Thanks,
Maxime

Reply via email to