lkml.org 
[lkml]   [1998]   [Jun]   [10]   [last100]   RSS Feed
Views: [more markup]   [less markup]   [headers]   [forward]  
 
Messages in this thread
Patch in this message
/
From(Paul Gortmaker)
SubjectRe: eth0 interrupt handler problem in 2.1.10x on alpha
DateWed, 10 Jun 1998 15:14:27 +1000 (EST)
> Hi folks,
> 
> I have tried 2.1.105 (and some previous ones too) on an AlphaPC 164 LX (Durango
> II) machine.  Hardware is 600 MHz alpha EV56, 128 MB RAM, Adaptec 2940,
> ncr53c810a, PCI NE2000 clone, ES1688 AudioDrive.
> 
> Software is RH 5.0, BFD 2.9.1.0.4, EGCS 1.0.3, plus the recommended updates
> from the Changes file.
> 
> I can compile the kernel without problems.  Compiled *without* SMP.
> 
> Then things seem to go normally, until the system tries to mount NFS
> partitions, at which point a whole bunch of messages are displayed:
> eth0: Reentering the interrupt handler! isr=0x70 imr=0x0.
> eth0: Reentering the interrupt handler! isr=0x1 imr=0x0.

For others that are having this problem, a fix is to remove the
bogus "sti()" from the 8390 interrupt handler (8390.c).  Some of the
dis/enable_irq() stuff for SMP may also be avoided -- masking IRQs
on the card should be sufficient (if done in all the right places).

[Note: I am not 100% sure on the SMP stuff as I am still trying to 
clarify in my mind just what default exclusion guarantees exist on
SMP between (a) IRQ handlers and (b) themselves and (c) bh handlers.
Regardless, doing a __global_sti on each net IRQ is just plain wrong.]

From searching the patches, I found the sti() was included in 2.1.49 to
8390.c, along with adding SA_INTERRUPT to the ne2000 interrupt handler,
so I suspect it was an "attempt" to fix SMP behaviour.  (Of course
this neglects the fact that 10 or so other drivers also use 8390.c
without SA_INTERRUPT).  Then in 2.1.60, the SA_INTERRUPT was tossed
from ne.c when the SA_SHIRQ flag was added, but the sti was left behind.

[Minor gripe: it would have been nice if whoever did these patches had
at least cc'd me as per the MAINTAINERS file and the big fat warning at
the top of 8390.c -- even though I was travelling during a large part of
the 2.1.x development cycle, I was still following e-mail.]

Paul.

--- linux-21105/drivers/net/8390.c	Wed Jun 10 13:49:33 1998
+++ linux/drivers/net/8390.c	Tue Jun  9 13:42:25 1998
@@ -334,7 +334,6 @@
 	}
     
 	dev->interrupt = 1;
-	sti();
     
 	/* Change to page 0 and read the intr status reg. */
 	outb_p(E8390_NODMA+E8390_PAGE0, e8390_base + E8390_CMD);
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu

\
 
 \ /
  Last update: 2005-03-22 12:43    [W:0.626 / U:0.780 seconds]
©2003-2008 Jasper Spaans