[PATCH] ppc64: Fix irq parsing on powermac

Paul Mackerras paulus at samba.org
Tue Apr 19 19:53:24 EST 2005

When I tried Ben's patches to the powermac sound driver on my G5, I
found that it was taking enormous numbers of sound DMA transmit
interrupts.  This turned out to be because it was incorrectly
configured as level-sensitive instead of edge-sensitive, which in turn
was because the code that parses the interrupt tree that Open Firmware
gives us was incorrectly assigning another device the same irq number
as the sound DMA transmit interrupt (i.e. 1).

This patch fixes the problem, in a somewhat quick and dirty way for
now, but one which will work for all the machines we currently run
on.  Ultimately Ben and I want to do something more general and
robust, but this should go in for 2.6.12.

Signed-off-by: Paul Mackerras <paulus at samba.org>

diff -urN linux/arch/ppc64/kernel/prom.c g5-ppc64/arch/ppc64/kernel/prom.c
--- linux/arch/ppc64/kernel/prom.c	2005-04-05 16:04:02.000000000 +1000
+++ g5-ppc64/arch/ppc64/kernel/prom.c	2005-04-19 12:26:50.000000000 +1000
@@ -321,6 +321,10 @@
 			char *name = get_property(ic->parent, "name", NULL);
 			if (name && !strcmp(name, "u3"))
 				np->intrs[intrcount].line += 128;
+			else if (!(name && !strcmp(name, "mac-io")))
+				/* ignore other cascaded controllers, such as
+				   the k2-sata-root */
+				break;
 		np->intrs[intrcount].sense = 1;
 		if (n > 1)

More information about the Linuxppc64-dev mailing list