netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* 3c59x: shared interrupt problem
@ 2009-03-09 22:42 Gerhard Pircher
  2009-03-09 23:49 ` Stephen Hemminger
  2009-03-27  7:59 ` Steffen Klassert
  0 siblings, 2 replies; 16+ messages in thread
From: Gerhard Pircher @ 2009-03-09 22:42 UTC (permalink / raw)
  To: netdev

Hi!

Large network transfers fail on my machine (with kernel versions
>v2.6.26) with the kernel oops below. eth0 (3c59x driver) normally
shares its IRQ line with 3 OHCI USB ports (IRQ 7), as the excerpt of
/proc/interrupt shows. Removing USB support from the kernel makes it
work again. I wasn't able to do a full git bisect run yet, as v2.6.27
didn't produce a bootable kernel image for my machine. The machine is
an AmigaOne PowerPC G4 with an onboard 3c920 network chip.

Any idea?

best regards,

Gerhard

PS: Please put me on CC:, as I'm not subscribed to this mailing list.

/proc/interrupts:
           CPU0
  1:       1648   i8259     Level     i8042
  5:          0   i8259     Level     uhci_hcd:usb4, uhci_hcd:usb5
  6:          4   i8259     Level     floppy
  7:     236520   i8259     Level     ohci_hcd:usb1, ohci_hcd:usb2, ohci_hcd:usb3, eth0
  8:          2   i8259     Level     rtc0
  9:          0   i8259     Level     eth2
 12:        117   i8259     Level     i8042
 14:       8277   i8259     Level     ide0
 15:      17559   i8259     Level     ide1
BAD:          1

Kernel log:
Badness at net/sched/sch_generic.c:226
NIP: c0250118 LR: c0250118 CTR: c0013020
REGS: efffde90 TRAP: 0700   Not tainted  (2.6.29-rc6)
MSR: 00029032 <EE,ME,CE,IR,DR>  CR: 42024024  XER: 00000000
TASK = c03915a0[0] 'swapper' THREAD: c03b2000
GPR00: c0250118 efffdf40 c03915a0 00000035 00008a62 ffffffff ffffffff 00000000 
GPR08: 00000000 c03c0000 00008a62 c0393104 22024042 00000000 0ffd5900 0080044c 
GPR16: 00000001 ffffffff 00000000 007ffc00 0ffd3158 0f0689b0 0ffff220 007ffbc0 
GPR24: 00000000 00000000 0000000a 00000004 efffc000 c024ffb0 00000100 ef847000 
NIP [c0250118] dev_watchdog+0x168/0x244
LR [c0250118] dev_watchdog+0x168/0x244
Call Trace:
[efffdf40] [c0250118] dev_watchdog+0x168/0x244 (unreliable)
[efffdfa0] [c002f564] run_timer_softirq+0x12c/0x1b4
[efffdfd0] [c002ab0c] __do_softirq+0x6c/0x108
[efffdff0] [c0011ef0] call_do_softirq+0x14/0x24
[c03b3e90] [c0006c30] do_softirq+0x64/0x88
[c03b3eb0] [c002a968] irq_exit+0x38/0x7c
[c03b3ec0] [c000f634] timer_interrupt+0x138/0x150
[c03b3ee0] [c0012bd4] ret_from_except+0x0/0x14
--- Exception: 901 at cpu_idle+0xa4/0xec
    LR = cpu_idle+0x98/0xec
[c03b3fa0] [c0009f38] cpu_idle+0x4c/0xec (unreliable)
[c03b3fb0] [c0297214] __got2_end+0x58/0x68
[c03b3fc0] [c03637e4] start_kernel+0x28c/0x2a0
[c03b3ff0] [0000380c] 0x380c
Instruction dump:
80099d6c 2f800000 40be0038 38810008 7fe3fb78 38a00040 4bfee811 7fe4fb78 
7c651b78 3c60c034 3863f264 4bdd6005 <0fe00000> 38000001 3d20c03c 90099d6c 
eth0: transmit timed out, tx_status 00 status e601.
  diagnostics: net 0ccc media 8880 dma 0000003a fifo 0000
eth0: Interrupt posted but not delivered -- IRQ blocked by another device?
  Flags; bus-master 1, dirty 16(0) current 16(0)
  Transmit list 00000000 vs. f101a200.
  0: @f101a200  length 80000156 status 00010156
  1: @f101a2a0  length 80000156 status 00010156
  2: @f101a340  length 80000156 status 00010156
  3: @f101a3e0  length 80000156 status 00010156
  4: @f101a480  length 80000156 status 00010156
  5: @f101a520  length 80000156 status 00010156
  6: @f101a5c0  length 80000156 status 00010156
  7: @f101a660  length 80000156 status 00010156
  8: @f101a700  length 8000003c status 0001003c
  9: @f101a7a0  length 8000003c status 0001003c
  10: @f101a840  length 8000003c status 0001003c
  11: @f101a8e0  length 8000003c status 0001003c
  12: @f101a980  length 8000003c status 0001003c
  13: @f101aa20  length 8000003c status 0001003c
  14: @f101aac0  length 80000036 status 80010036
  15: @f101ab60  length 800000f5 status 8c0100f5
eth0: Resetting the Tx ring pointer.

-- 
Psssst! Schon vom neuen GMX MultiMessenger gehört? Der kann`s mit allen: http://www.gmx.net/de/go/multimessenger01

^ permalink raw reply	[flat|nested] 16+ messages in thread
* Re: 3c59x: shared interrupt problem
@ 2009-03-11 22:42 Gerhard Pircher
  2009-03-12 14:39 ` Steffen Klassert
  0 siblings, 1 reply; 16+ messages in thread
From: Gerhard Pircher @ 2009-03-11 22:42 UTC (permalink / raw)
  To: Steffen Klassert; +Cc: akpm, netdev, shemminger


-------- Original-Nachricht --------
> Datum: Wed, 11 Mar 2009 12:31:30 +0100
> Von: Steffen Klassert <klassert@mathematik.tu-chemnitz.de>
> An: Gerhard Pircher <gerhard_pircher@gmx.net>
> CC: shemminger@vyatta.com, netdev@vger.kernel.org, akpm@linux-foundation.org
> Betreff: Re: 3c59x: shared interrupt problem

> On Tue, Mar 10, 2009 at 10:00:53AM +0100, Gerhard Pircher wrote:
> > > 
> > > This basically reverts a patch from akpm (bitkeeper cset 1.1046.95.8)
> > > This patch was to workaround lots of "nobody cared" warnings 
> > > generated by boomerang_interrupt().
> > > I added Andrew to the Cc, perhaps he can remember some details on
> > > this.
> > I'm afraid this patch didn't fix the problem. I'm using scp to copy a
> > big ISO file from my PC to the AmigaOne and the network transfer still
> > stalls.
> > I made a photo from the kernel oops printed out during shutdown.
> 
> Your photo shows exactly such a "nobody cared" warning that Andrew wanted 
> to get rid of with his patch.
> 
> > BTW: shouldn't the driver use vortex_interrupt() to handle interrupts
> > for a 3c920?
> 
> It depends on the content of your NIC's eeprom which ISR the driver will
> use.
> If your NIC is full bus master capable boomerang_interrupt() will be
> used, if not vortex_interrupt() will be used. As far as I know the 3c920
> is of "tornado" type, so it should be full bus master capable.
Okay, I thought there is something wrong, because the 3c920 is listed in
the "vortex" device table.

> Your first report showed dnComplete as a pending interrupt source.
> Since the driver uses tx_interrupt_mitigation, this happens just if the 
> tx ring is full. Could you please test the patch below? This disables
> tx_interrupt_mitigation, so the dnComplete interrupt will be triggered 
> with every packet.
I disabled tx_interrupt_mitigation and tested it with and w/o the patch
for boomerang_interrupt(). The network transfer stalls in both cases
sooner or later.

Here are two photos from the kernel output:
- no tx_interrupt_mitigation and patch for booomerang_interrupt():
http://boot.homelinux.org:8080/kernel/oops_boomerang_irq_tx_irq_mitig.jpg
- no tx_interrupt_mitigation only:
http://boot.homelinux.org:8080/kernel/oops_tx_irq_mitig.jpg

Thanks!

best regards,

Gerhard
-- 
Psssst! Schon vom neuen GMX MultiMessenger gehört? Der kann`s mit allen: http://www.gmx.net/de/go/multimessenger01

^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2009-04-21 18:36 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-03-09 22:42 3c59x: shared interrupt problem Gerhard Pircher
2009-03-09 23:49 ` Stephen Hemminger
2009-03-10  8:16   ` Steffen Klassert
2009-03-10 21:55     ` Andrew Morton
2009-03-11 11:38       ` Steffen Klassert
2009-03-13 22:51         ` David Miller
2009-03-14 14:08           ` Steffen Klassert
2009-03-14 18:40             ` David Miller
2009-03-17  9:37             ` Gerhard Pircher
     [not found]     ` <20090310090053.322240@gmx.net>
2009-03-11 11:31       ` Steffen Klassert
2009-03-27  7:59 ` Steffen Klassert
2009-03-28 14:17   ` Gerhard Pircher
2009-04-21 18:36   ` Gerhard Pircher
  -- strict thread matches above, loose matches on Subject: below --
2009-03-11 22:42 Gerhard Pircher
2009-03-12 14:39 ` Steffen Klassert
2009-03-12 15:12   ` Gerhard Pircher

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).