On Mon, 6 Oct 2008, Greg KH wrote: > 2.6.26-stable review patch. If anyone has any objections, please let us > know. > > ------------------ > From: David S. Miller <davem@xxxxxxxxxxxxx> > > [ Upstream commit 80a56ab626c70468be92e74cf3d288ffaed23fdb ] > > We need to pass IRQF_SHARED, otherwise we get things like: But you forgot to update the comment (see below)... > IRQ handler type mismatch for IRQ 33 > current handler: PSYCHO_UE > Call Trace: > [000000000048394c] request_irq+0xac/0x120 > [00000000007c5f6c] psycho_scan_bus+0x98/0x158 > [00000000007c2bc0] pcibios_init+0xdc/0x12c > [0000000000426a5c] do_one_initcall+0x1c/0x160 > [00000000007c0180] kernel_init+0x9c/0xfc > [0000000000427050] kernel_thread+0x30/0x60 > [00000000006ae1d0] rest_init+0x10/0x60 > > on e3500 and similar systems. > > On a single board, the UE interrupts of two Psycho nodes > are funneled through the same interrupt, from of_debug=3 > dump: > > /pci@b,4000: direct translate 2ee --> 21 > ... > /pci@b,2000: direct translate 2ee --> 21 > > Decimal "33" mentioned above is the hex "21" mentioned here. > > Thanks to Meelis Roos for dumps and testing. > > Signed-off-by: David S. Miller <davem@xxxxxxxxxxxxx> > Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxx> > > --- > arch/sparc64/kernel/pci_psycho.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > --- a/arch/sparc64/kernel/pci_psycho.c > +++ b/arch/sparc64/kernel/pci_psycho.c > @@ -744,16 +744,16 @@ static void psycho_register_error_handle > * the second will just error out since we do not pass in ^^^^^^^^^^^^^^^^^^^^^^^ > * IRQF_SHARED. ^^^^^^^^^^^ > */ > - err = request_irq(op->irqs[1], psycho_ue_intr, 0, > + err = request_irq(op->irqs[1], psycho_ue_intr, IRQF_SHARED, > "PSYCHO_UE", pbm); > - err = request_irq(op->irqs[2], psycho_ce_intr, 0, > + err = request_irq(op->irqs[2], psycho_ce_intr, IRQF_SHARED, > "PSYCHO_CE", pbm); > > /* This one, however, ought not to fail. We can just warn > * about it since the system can still operate properly even > * if this fails. > */ > - err = request_irq(op->irqs[0], psycho_pcierr_intr, 0, > + err = request_irq(op->irqs[0], psycho_pcierr_intr, IRQF_SHARED, > "PSYCHO_PCIERR", pbm); > if (err) > printk(KERN_WARNING "%s: Could not register PCIERR, " Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds -- To unsubscribe from this list: send the line "unsubscribe sparclinux" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html