Thank you Jesse, > you also apparently are not using MSI interrupts.
No. I can see the kernel messages below in syslog. In the kernel options, I found APIC related items and MSI are disabled. kernel: e1000e: Intel(R) PRO/1000 Network Driver - 0.5.18.3 kernel: e1000e: Copyright(c) 1999 - 2009 Intel Corporation. kernel: ACPI: PCI interrupt 0000:02:00.0[A] -> GSI 11 (level, low)-> IRQ 11 kernel: PCI: Setting latency timer of device 0000:02:00.0 to 64 kernel: 0000:02:00.0: : Failed to initialize MSI interrupts. Falling back to legacy interrupts. kernel: e1000e 0000:02:00.0: Warning: detected DSPD enabled in EEPROM kernel: 0000:02:00.0: eth0: (PCI Express:2.5GB/s:Width x1) **:**:**:**:**:** kernel: 0000:02:00.0: eth0: Intel(R) PRO/1000 Network Connection kernel: 0000:02:00.0: eth0: MAC: 3, PHY: 2, PBA No: ffffff-0ff > this was probably a shared interrupt, does /proc/interrupts show ethX > sharing? Yes, it is shared with uhci controller and the our board. (dsppci*). CPU0 0: 4156373 XT-PIC timer 0/56373 1: 8 XT-PIC i8042 0/8 2: 0 XT-PIC cascade 0/0 4: 7 XT-PIC serial 0/7 5: 65122 XT-PIC HDA Intel, uhci_hcd, dsppci0 0/65122 7: 552750 XT-PIC ehci_hcd, uhci_hcd 0/52750 9: 0 XT-PIC acpi 0/0 10: 64995 XT-PIC dsppci1 0/64995 11: 192084 XT-PIC uhci_hcd, eth0, dsppci2 0/92084 14: 58499 XT-PIC ide0 0/58499 15: 794424 XT-PIC libata, uhci_hcd, dsppci3 0/94424 NMI: 0 ERR: 0 > If INT_ASSERTED was not set it was not our interrupt, but it > is normal to > have e1000_intr called in a shared interrupt case. > > We have fixed a bug in the latest release of e1000e, which is > available > now, look for e1000e-1.0.2.5 I understand as follows. Is it right understanding? - Irq11 for eth0 is shared with uhci_hdc and dsppci2 because MSI is unavailable. - When the interrupt for either uhci_hdc or dsppci2 is asserted, we can see e1000_intr() called with ICR.INT_ASSERTED=0b. - If the other device's interrupt is asserted during e1000 down state, e1000_intr() and clean_rx/tx_irq functions are processed in an uncertain initialize condition, then sometimes it could destroy some buffers and variables. - It is fixed in e1000e-1.0.2.5. Thanks, Hizume > -----Original Message----- > From: Brandeburg, Jesse [mailto:jesse.brandeb...@intel.com] > Sent: Thursday, July 02, 2009 1:39 AM > To: Yosuke HIZUME > Cc: e1000-devel@lists.sourceforge.net > Subject: Re: [E1000-devel] e1000e: Rx Descriptor FIFO Parity Error > > On Wed, 1 Jul 2009, Yosuke HIZUME wrote: > > I'm using e1000e-0.5.8.13 *Non-NAPI* on kernel 2.6.10 with 82573L. > > I found the receiving data was occasionally corrupted just after I > > changed the mtu or the speed and duplex setting. > > you also apparently are not using MSI interrupts. > > > Then I inserted some printk codes to investigate and found that > > e1000_intr() was infrequently called sometime in between > the beginning of > > e1000e_down() and the end of e1000e_up() despite the irq > was disabled. > > this was probably a shared interrupt, does /proc/interrupts show ethX > sharing? > > > In such case, the register ICR.INT_ASSERTED was not set and > > ICR.RX_DESC_FIFO_Par0 was set. (ex. icr=0x00100000h) > > If INT_ASSERTED was not set it was not our interrupt, but it > is normal to > have e1000_intr called in a shared interrupt case. > > We have fixed a bug in the latest release of e1000e, which is > available > now, look for e1000e-1.0.2.5 > > > I want to know the reason why the interrupt handler was called > > nevertheless interrupt disabled, and also the reason why > > RX_DESC_FIFO_Par0 was set. > > par0 was probably set as part of the reset process. > > > And hopefully, please let me know if there are any workarounds. > > yes, the e1000_intr routine can check to make sure it is not > running when > the __E1000_DOWN flag is set, you'll see that code in the new driver. > > Jesse ------------------------------------------------------------------------------ _______________________________________________ E1000-devel mailing list E1000-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/e1000-devel