[RFC] [PATCH] ppc32: workaround for spurious IRQs on PQ2

Eugene Surovegin ebs at ebshome.net
Wed Apr 27 05:21:40 EST 2005


There is a problem with big amount of spurious IRQs on 8248-based 
design I'm working on.

I observed this problem with 2.4.30 kernel, but it was reported to be
still present on 2.6 as well.

Traces show that spurious IRQ happens right after handle_IRQ_events() 
enables external interrupts and _before_ even calling real IRQ 

I fixed this problem by adding sync at the end of cpm2_mask_and_ack. 
Using out_XXX macros for accessing SIU register doesn't seem to help.
Dan thinks there are some pipeline-related issues here, although I 
failed to found any mentions of them in 8272 user manual.

Also, there is a possibility, that we need more explicit sync's in 
cpm2_pic code.

Signed-off-by: Eugene Surovegin <ebs at ebshome.net>

===== arch/ppc/syslib/cpm2_pic.c 1.11 vs edited =====
--- 1.11/arch/ppc/syslib/cpm2_pic.c	2005-03-31 02:59:05 -08:00
+++ edited/arch/ppc/syslib/cpm2_pic.c	2005-04-26 11:55:51 -07:00
@@ -90,6 +90,7 @@
 	ppc_cached_irq_mask[word] &= ~(1 << bit);
 	simr[word] = ppc_cached_irq_mask[word];
 	sipnr[word] = 1 << bit;
+	mb();
 static void cpm2_end_irq(unsigned int irq_nr)

More information about the Linuxppc-embedded mailing list