Linux MIPS Architecture development
 help / color / mirror / Atom feed
* [PATCH] Cobalt interrupthandler fix
@ 2003-01-24 14:15 Karsten Merker
  2003-01-28  0:51 ` Liam Davies
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Karsten Merker @ 2003-01-24 14:15 UTC (permalink / raw)
  To: linux-mips; +Cc: tom

[-- Attachment #1: Type: text/plain, Size: 723 bytes --]

Hallo,

the Cobalt NASRaQ (as well as other RaQ models) has the problem of freezing
when there is activity on the serial port and on the ethernet at the same
time. Peter de Schrijver has tracked this down to a bug in the interrupt
handler. The handler currently does not check whether an interrupt is masked
and calls the handling routine for _every_ interrupt, not only for those
that are not masked out currently.

The following patch fixes this. Ralf, could you please apply the fix
to the CVS?

Regards,
Karsten
-- 
#include <standard_disclaimer>
Nach Paragraph 28 Abs. 3 Bundesdatenschutzgesetz widerspreche ich der Nutzung
oder Uebermittlung meiner Daten fuer Werbezwecke oder fuer die Markt- oder
Meinungsforschung.

[-- Attachment #2: cobalt-irqhandler.diff --]
[-- Type: text/plain, Size: 524 bytes --]

diff -Nur linux/arch/mips/cobalt/int-handler.S linux-cobalt/arch/mips/cobalt/int-handler.S
--- linux/arch/mips/cobalt/int-handler.S	Fri Sep 13 21:21:58 2002
+++ linux-cobalt/arch/mips/cobalt/int-handler.S	Tue Dec 31 22:26:18 2002
@@ -30,7 +30,9 @@
 		/*
 		 * Get pending Interrupts
 		 */
-		mfc0	s0,CP0_CAUSE	# get irq mask
+		mfc0	s0,CP0_CAUSE	# get raw irq status
+		mfc0	a0,CP0_STATUS	# get irq mask
+		and	s0,s0,a0	# compute masked irq status
 
 		andi	a0,s0,CAUSEF_IP2	/* Check for Galileo timer */
 		beq	a0,zero,1f

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

end of thread, other threads:[~2003-02-06  0:52 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-01-24 14:15 [PATCH] Cobalt interrupthandler fix Karsten Merker
2003-01-28  0:51 ` Liam Davies
2003-02-02 21:17 ` Greg Lindahl
2003-02-06  0:29 ` hidden bug in 32 bit kernel ejtag Greg Lindahl

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox