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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [Kernel Development]     [DCCP]     [Linux ARM Development]     [Linux]     [Photo]     [Yosemite Help]     [Linux ARM Kernel]     [Linux SCSI]     [Linux x86_64]     [Linux Hams]

  Powered by Linux