> On 28 Sep 2015, at 01:41, Stephen Hemminger <stephen at networkplumber.org> > wrote: > > On Sun, 27 Sep 2015 12:51:06 +0400 > "Kirill A. Korinsky" <kirill at korins.ky> wrote: > >> 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; > > I don't think driver should be expecting INTx to work on VMware. > If kernel test fails, it means masking is broken (in VMware). > > > It is better for driver (E1000 PMD) to report that Link state interrupt does > not work (if IRQ setup fails). Then application can test if LSC irq works > and not enable it.
I found temporary workaround for VMware: you must change ethernet[ID].virtualDev = "e1000" to "e1000e" in vmx configuration file this virtual machine.