lkml.org 
[lkml]   [2008]   [Dec]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [patch 60/71] sparc64: Fix PCI error interrupt registry on PSYCHO.
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@davemloft.net>
>
> [ 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@davemloft.net>
> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
>
> ---
> 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@linux-m68k.org

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


\
 
 \ /
  Last update: 2008-12-29 18:17    [W:0.255 / U:0.100 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site