From: David Woodhouse Date: Sat, 5 Nov 2005 17:54:22 +0000 (+0000) Subject: [PATCH] powerpc: Fix i8259 cascade IRQ X-Git-Tag: v2.6.15-rc1~421^2~26 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9d2ba6faa1c2e10546a4bdf0f9687436d7681b2f;p=linux-2.6 [PATCH] powerpc: Fix i8259 cascade IRQ setup_irq() aborts immediately if there's no handler for the IRQ in question. So i8259_init() should set up its handlers before trying to set up the cascade on IRQ 2. With this and the patch I sent a few days ago to fix initrd on ppc32, my Pegasos now runs the arch/powerpc kernel. Signed-off-by: David Woodhouse Signed-off-by: Paul Mackerras --- diff --git a/arch/powerpc/sysdev/i8259.c b/arch/powerpc/sysdev/i8259.c index 90bce6e0c1..b7ac32fdd7 100644 --- a/arch/powerpc/sysdev/i8259.c +++ b/arch/powerpc/sysdev/i8259.c @@ -207,6 +207,9 @@ void __init i8259_init(unsigned long intack_addr, int offset) spin_unlock_irqrestore(&i8259_lock, flags); + for (i = 0; i < NUM_ISA_INTERRUPTS; ++i) + irq_desc[offset + i].handler = &i8259_pic; + /* reserve our resources */ setup_irq(offset + 2, &i8259_irqaction); request_resource(&ioport_resource, &pic1_iores); @@ -216,6 +219,4 @@ void __init i8259_init(unsigned long intack_addr, int offset) if (intack_addr != 0) pci_intack = ioremap(intack_addr, 1); - for (i = 0; i < NUM_ISA_INTERRUPTS; ++i) - irq_desc[offset + i].handler = &i8259_pic; }