From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stephen Hemminger Subject: Re: [PATCH] Fix VMware emulated e1000 doesn't support INTX_DISABLE flag Date: Sun, 27 Sep 2015 14:41:57 -0700 Message-ID: <20150927144157.77708f7c@urahara> References: <1443343866-363-1-git-send-email-kirill@korins.ky> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Cc: dev@dpdk.org To: "Kirill A. Korinsky" Return-path: Received: from mail-pa0-f43.google.com (mail-pa0-f43.google.com [209.85.220.43]) by dpdk.org (Postfix) with ESMTP id C5266593A for ; Sun, 27 Sep 2015 23:41:48 +0200 (CEST) Received: by pacex6 with SMTP id ex6so154447588pac.0 for ; Sun, 27 Sep 2015 14:41:48 -0700 (PDT) In-Reply-To: <1443343866-363-1-git-send-email-kirill@korins.ky> List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On Sun, 27 Sep 2015 12:51:06 +0400 "Kirill A. Korinsky" 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 > #endif > +#include > #include > > #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.