RPM: Apex: Backport patch to dpdk to fix PCI walk to fix segfault to
[ovsnfv.git] / build / patches / dpdk-16.04-virtio-devargs.patch
diff --git a/build/patches/dpdk-16.04-virtio-devargs.patch b/build/patches/dpdk-16.04-virtio-devargs.patch
new file mode 100644 (file)
index 0000000..f5a3bc4
--- /dev/null
@@ -0,0 +1,22 @@
+diff --git a/drivers/net/virtio/virtio_pci.c b/drivers/net/virtio/virtio_pci.c
+index c007959..3a25f82 100644
+--- a/drivers/net/virtio/virtio_pci.c
++++ b/drivers/net/virtio/virtio_pci.c
+@@ -626,6 +626,7 @@ next:
+  * Return -1:
+  *   if there is error mapping with VFIO/UIO.
+  *   if port map error when driver type is KDRV_NONE.
++ *   if whitelisted but driver type is KDRV_UNKNOWN.
+  * Return 1 if kernel driver is managing the device.
+  * Return 0 on success.
+  */
+@@ -650,7 +651,8 @@ vtpci_init(struct rte_pci_device *dev, struct virtio_hw *hw)
+       PMD_INIT_LOG(INFO, "trying with legacy virtio pci.");
+       if (legacy_virtio_resource_init(dev, hw) < 0) {
+               if (dev->kdrv == RTE_KDRV_UNKNOWN &&
+-                  dev->devargs->type != RTE_DEVTYPE_WHITELISTED_PCI) {
++                    (!dev->devargs ||
++                   dev->devargs->type != RTE_DEVTYPE_WHITELISTED_PCI)) {
+                       PMD_INIT_LOG(INFO,
+                               "skip kernel managed virtio device.");
+                       return 1;