v2 changes:
 change LOG level from ERR to INFO

virtio PMD could use IO port to configure the virtio device without
using uio driver.

There are two issues with previous implementation:
1) virtio PMD will take over each virtio device blindly even if some
are not intended for DPDK.
2) driver conflict between virtio PMD and virtio-net kernel driver.

This patch checks if there is any kernel driver manipulating the virtio
device before virtio PMD uses IO port to configure the device.

Fixes: da978dfdc43b ("virtio: use port IO to get PCI resource")

Signed-off-by: Huawei Xie <huawei.xie at intel.com>
---
 drivers/net/virtio/virtio_ethdev.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/net/virtio/virtio_ethdev.c 
b/drivers/net/virtio/virtio_ethdev.c
index e815acd..7a50dac 100644
--- a/drivers/net/virtio/virtio_ethdev.c
+++ b/drivers/net/virtio/virtio_ethdev.c
@@ -1138,6 +1138,13 @@ static int virtio_resource_init_by_ioports(struct 
rte_pci_device *pci_dev)
        int found = 0;
        size_t linesz;

+       if (pci_dev->kdrv != RTE_KDRV_NONE) {
+               PMD_INIT_LOG(INFO,
+                       "kernel driver is manipulating this device." \
+                       " Please unbind the kernel driver.");
+               return -1;
+       }
+
        snprintf(pci_id, sizeof(pci_id), PCI_PRI_FMT,
                 pci_dev->addr.domain,
                 pci_dev->addr.bus,
-- 
1.8.1.4

Reply via email to