[PATCH 5/6] powerpc: Rearrange and fix show_interrupts() for sparse irq_descs
Grant Likely
grant.likely at secretlab.ca
Thu Oct 15 05:37:16 EST 2009
On Tue, Oct 13, 2009 at 11:45 PM, Michael Ellerman
<michael at ellerman.id.au> wrote:
> Move the default case out of the if, ie. when we're just displaying
> an irq. And consolidate all the odd cases at the top, ie. printing
> the header and footer.
>
> And in the process cope with sparse irq_descs.
>
> Signed-off-by: Michael Ellerman <michael at ellerman.id.au>
Looks reasonable to me
Acked-by: Grant Likely <grant.likely at secretlab.ca>
> ---
> arch/powerpc/kernel/irq.c | 64 ++++++++++++++++++++++++++-------------------
> 1 files changed, 37 insertions(+), 27 deletions(-)
>
> diff --git a/arch/powerpc/kernel/irq.c b/arch/powerpc/kernel/irq.c
> index baa49eb..63e27d5 100644
> --- a/arch/powerpc/kernel/irq.c
> +++ b/arch/powerpc/kernel/irq.c
> @@ -187,33 +187,7 @@ int show_interrupts(struct seq_file *p, void *v)
> for_each_online_cpu(j)
> seq_printf(p, "CPU%d ", j);
> seq_putc(p, '\n');
> - }
> -
> - if (i < NR_IRQS) {
> - desc = irq_to_desc(i);
> - spin_lock_irqsave(&desc->lock, flags);
> - action = desc->action;
> - if (!action || !action->handler)
> - goto skip;
> - seq_printf(p, "%3d: ", i);
> -#ifdef CONFIG_SMP
> - for_each_online_cpu(j)
> - seq_printf(p, "%10u ", kstat_irqs_cpu(i, j));
> -#else
> - seq_printf(p, "%10u ", kstat_irqs(i));
> -#endif /* CONFIG_SMP */
> - if (desc->chip)
> - seq_printf(p, " %s ", desc->chip->typename);
> - else
> - seq_puts(p, " None ");
> - seq_printf(p, "%s", (desc->status & IRQ_LEVEL) ? "Level " : "Edge ");
> - seq_printf(p, " %s", action->name);
> - for (action = action->next; action; action = action->next)
> - seq_printf(p, ", %s", action->name);
> - seq_putc(p, '\n');
> -skip:
> - spin_unlock_irqrestore(&desc->lock, flags);
> - } else if (i == NR_IRQS) {
> + } else if (i == nr_irqs) {
> #if defined(CONFIG_PPC32) && defined(CONFIG_TAU_INT)
> if (tau_initialized){
> seq_puts(p, "TAU: ");
> @@ -223,7 +197,43 @@ skip:
> }
> #endif /* CONFIG_PPC32 && CONFIG_TAU_INT*/
> seq_printf(p, "BAD: %10u\n", ppc_spurious_interrupts);
> +
> + return 0;
> }
> +
> + desc = irq_to_desc(i);
> + if (!desc)
> + return 0;
> +
> + spin_lock_irqsave(&desc->lock, flags);
> +
> + action = desc->action;
> + if (!action || !action->handler)
> + goto skip;
> +
> + seq_printf(p, "%3d: ", i);
> +#ifdef CONFIG_SMP
> + for_each_online_cpu(j)
> + seq_printf(p, "%10u ", kstat_irqs_cpu(i, j));
> +#else
> + seq_printf(p, "%10u ", kstat_irqs(i));
> +#endif /* CONFIG_SMP */
> +
> + if (desc->chip)
> + seq_printf(p, " %s ", desc->chip->typename);
> + else
> + seq_puts(p, " None ");
> +
> + seq_printf(p, "%s", (desc->status & IRQ_LEVEL) ? "Level " : "Edge ");
> + seq_printf(p, " %s", action->name);
> +
> + for (action = action->next; action; action = action->next)
> + seq_printf(p, ", %s", action->name);
> + seq_putc(p, '\n');
> +
> +skip:
> + spin_unlock_irqrestore(&desc->lock, flags);
> +
> return 0;
> }
>
> --
> 1.6.2.1
>
> _______________________________________________
> Linuxppc-dev mailing list
> Linuxppc-dev at lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/linuxppc-dev
>
--
Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.
More information about the Linuxppc-dev
mailing list