When you try to run any DPDK-app in VMWare with e1000/82545EM NIC
you have a lot of lines like:

  EAL: Error reading from file descriptor 9: Input/output error

The reason of this error is bad INTX emulation in VMWare
and pci_intx_mask_supported return false every time.
---
 lib/librte_eal/linuxapp/igb_uio/igb_uio.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/lib/librte_eal/linuxapp/igb_uio/igb_uio.c 
b/lib/librte_eal/linuxapp/igb_uio/igb_uio.c
index 865a276..c85f7e5 100644
--- a/lib/librte_eal/linuxapp/igb_uio/igb_uio.c
+++ b/lib/librte_eal/linuxapp/igb_uio/igb_uio.c
@@ -36,6 +36,7 @@
 #ifdef CONFIG_XEN_DOM0
 #include <xen/xen.h>
 #endif
+#include <asm/hypervisor.h>
 #include <rte_pci_dev_features.h>

 #include "compat.h"
@@ -508,7 +509,8 @@ igbuio_pci_probe(struct pci_dev *dev, const struct 
pci_device_id *id)
                }
                /* fall back to INTX */
        case RTE_INTR_MODE_LEGACY:
-               if (pci_intx_mask_supported(dev)) {
+               /*  VMware emulated e1000 doesn't support INTX_DISABLE flag */
+               if (pci_intx_mask_supported(dev) || x86_hyper == 
&x86_hyper_vmware) {
                        dev_dbg(&dev->dev, "using INTX");
                        udev->info.irq_flags = IRQF_SHARED;
                        udev->info.irq = dev->irq;
-- 
2.5.3

Reply via email to