[dpdk-dev] EAL : Input/output error on DPDK 1.7.1

Message ID CAFLKUz+p2zez0yLPgvQSeg+A=0KHUamccOJAK0wL_CDDe6=noA@mail.gmail.com (mailing list archive)
State Not Applicable, archived
Headers

Commit Message

Masaru OKI Oct. 24, 2014, 3:22 a.m. UTC
  Hi,
I got same result in VMware Workstation environment.
At least in my environment, INTX toggle check is not work with VMware
E1000 Ethernet.
Please try attached patch.

2014-10-17 3:04 GMT+09:00 Raghav K <rghvk@outlook.com>:
> Hey,
> I observe continuous burst of I/O Errors, as indicated below, with the testpmd application with DPDK 1.7.1.This seems to originate from eal_intr_process_interrupts() function. I seemed to have setup the DPDK prerequisites alright.
> Another recent post seemed to suggest moving back to 1.7.0, however I would like to persist with 1.7.1.
> Any help/pointers in resolving this would be greatly appreciated.
> Much thanks,Raghav
> root@sys6-vm6:/home/rghv/dpdk/dpdk-1.7.1/x86_64-native-linuxapp-gcc/app# ./testpmd -c 0xf -n3 -- -i --nb-cores=3 --nb-ports=2
> EAL: Error reading from file descriptor 21: Input/output errorEAL: Error reading from file descriptor 21: Input/output errorEAL: Error reading from file descriptor 21: Input/output errorEAL: Error reading from file descriptor 21: Input/output errorEAL: Error reading from file descriptor 21: Input/output errorEAL: Error reading from file descriptor 21: Input/output errorEAL: Error reading from file descriptor 21: Input/output errorEAL: Error reading from file descriptor 21: Input/output errorEAL: Error reading from file descriptor 21: Input/output errorEAL: Error reading from file descriptor 21: Input/output errorEAL: Error reading from file descriptor 21: Input/output errorEAL: Error reading from file descriptor 21: Input/output errorEAL: Error reading from file descriptor 21: Input/output errorEAL: Error reading from file descriptor 21: Input/output errorEAL: Error reading from file descriptor 21: Input/output errorEAL: Error reading from file descriptor 21: Input/output error
> ----
> root@sys6-vm6:/home/rghv/dpdk/dpdk-1.7.1# ./tools/dpdk_nic_bind.py --status
> Network devices using DPDK-compatible driver============================================0000:02:01.0 '82545EM Gigabit Ethernet Controller (Copper)' drv=igb_uio unused=e10000000:02:02.0 '82545EM Gigabit Ethernet Controller (Copper)' drv=igb_uio unused=e1000
> Network devices using kernel driver===================================0000:02:00.0 '82545EM Gigabit Ethernet Controller (Copper)' if=eth0 drv=e1000 unused=igb_uio *Active*0000:02:03.0 '82545EM Gigabit Ethernet Controller (Copper)' if=eth3 drv=e1000 unused=igb_uio 0000:02:05.0 '82545EM Gigabit Ethernet Controller (Copper)' if=eth4 drv=e1000 unused=igb_uio 0000:02:06.0 '82545EM Gigabit Ethernet Controller (Copper)' if=eth5 drv=e1000 unused=igb_uio
> Other network devices=====================<none>
  

Comments

Stephen Hemminger Oct. 24, 2014, 9:21 a.m. UTC | #1
INTX is badly emulated in VMWare; the disable logic doesn't work.
I thought the DPDK API detected when link state interrupt would not work.
But of course the application needs to check that before enabling link state

On Fri, Oct 24, 2014 at 8:52 AM, Masaru Oki <m-oki@stratosphere.co.jp>
wrote:

> Hi,
> I got same result in VMware Workstation environment.
> At least in my environment, INTX toggle check is not work with VMware
> E1000 Ethernet.
> Please try attached patch.
>
> 2014-10-17 3:04 GMT+09:00 Raghav K <rghvk@outlook.com>:
> > Hey,
> > I observe continuous burst of I/O Errors, as indicated below, with the
> testpmd application with DPDK 1.7.1.This seems to originate from
> eal_intr_process_interrupts() function. I seemed to have setup the DPDK
> prerequisites alright.
> > Another recent post seemed to suggest moving back to 1.7.0, however I
> would like to persist with 1.7.1.
> > Any help/pointers in resolving this would be greatly appreciated.
> > Much thanks,Raghav
> > root@sys6-vm6:/home/rghv/dpdk/dpdk-1.7.1/x86_64-native-linuxapp-gcc/app#
> ./testpmd -c 0xf -n3 -- -i --nb-cores=3 --nb-ports=2
> > EAL: Error reading from file descriptor 21: Input/output errorEAL: Error
> reading from file descriptor 21: Input/output errorEAL: Error reading from
> file descriptor 21: Input/output errorEAL: Error reading from file
> descriptor 21: Input/output errorEAL: Error reading from file descriptor
> 21: Input/output errorEAL: Error reading from file descriptor 21:
> Input/output errorEAL: Error reading from file descriptor 21: Input/output
> errorEAL: Error reading from file descriptor 21: Input/output errorEAL:
> Error reading from file descriptor 21: Input/output errorEAL: Error reading
> from file descriptor 21: Input/output errorEAL: Error reading from file
> descriptor 21: Input/output errorEAL: Error reading from file descriptor
> 21: Input/output errorEAL: Error reading from file descriptor 21:
> Input/output errorEAL: Error reading from file descriptor 21: Input/output
> errorEAL: Error reading from file descriptor 21: Input/output errorEAL:
> Error reading from file descriptor 21: Input/output error
> > ----
> > root@sys6-vm6:/home/rghv/dpdk/dpdk-1.7.1# ./tools/dpdk_nic_bind.py
> --status
> > Network devices using DPDK-compatible
> driver============================================0000:02:01.0 '82545EM
> Gigabit Ethernet Controller (Copper)' drv=igb_uio unused=e10000000:02:02.0
> '82545EM Gigabit Ethernet Controller (Copper)' drv=igb_uio unused=e1000
> > Network devices using kernel
> driver===================================0000:02:00.0 '82545EM Gigabit
> Ethernet Controller (Copper)' if=eth0 drv=e1000 unused=igb_uio
> *Active*0000:02:03.0 '82545EM Gigabit Ethernet Controller (Copper)' if=eth3
> drv=e1000 unused=igb_uio 0000:02:05.0 '82545EM Gigabit Ethernet Controller
> (Copper)' if=eth4 drv=e1000 unused=igb_uio 0000:02:06.0 '82545EM Gigabit
> Ethernet Controller (Copper)' if=eth5 drv=e1000 unused=igb_uio
> > Other network devices=====================<none>
>
  

Patch

diff --git a/lib/librte_eal/linuxapp/igb_uio/igb_uio.c b/lib/librte_eal/linuxapp/igb_uio/igb_uio.c
index d1ca26e..c46a00f 100644
--- a/lib/librte_eal/linuxapp/igb_uio/igb_uio.c
+++ b/lib/librte_eal/linuxapp/igb_uio/igb_uio.c
@@ -505,14 +505,11 @@  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)) {
-			dev_dbg(&dev->dev, "using INTX");
-			udev->info.irq_flags = IRQF_SHARED;
-			udev->info.irq = dev->irq;
-			udev->mode = RTE_INTR_MODE_LEGACY;
-			break;
-		}
-		dev_notice(&dev->dev, "PCI INTX mask not supported\n");
+		dev_dbg(&dev->dev, "using INTX");
+		udev->info.irq_flags = IRQF_SHARED;
+		udev->info.irq = dev->irq;
+		udev->mode = RTE_INTR_MODE_LEGACY;
+		break;
 		/* fall back to no IRQ */
 	case RTE_INTR_MODE_NONE:
 		udev->mode = RTE_INTR_MODE_NONE;