Re: [patch 60/71] sparc64: Fix PCI error interrupt registry onPSYCHO.

From: Geert Uytterhoeven
Date: Mon Dec 29 2008 - 12:14:43 EST


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 linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/