Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 750ab112 authored by Michael Ellerman's avatar Michael Ellerman Committed by Benjamin Herrenschmidt
Browse files

powerpc: Rearrange and fix show_interrupts() for sparse irq_descs



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: default avatarMichael Ellerman <michael@ellerman.id.au>
Acked-by: default avatarGrant Likely <grant.likely@secretlab.ca>
Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
parent 76f1d94f
Loading
Loading
Loading
Loading
+37 −27
Original line number Diff line number Diff line
@@ -187,14 +187,30 @@ int show_interrupts(struct seq_file *p, void *v)
		for_each_online_cpu(j)
			seq_printf(p, "CPU%d       ", j);
		seq_putc(p, '\n');
	} else if (i == nr_irqs) {
#if defined(CONFIG_PPC32) && defined(CONFIG_TAU_INT)
		if (tau_initialized){
			seq_puts(p, "TAU: ");
			for_each_online_cpu(j)
				seq_printf(p, "%10u ", tau_interrupts(j));
			seq_puts(p, "  PowerPC             Thermal Assist (cpu temp)\n");
		}
#endif /* CONFIG_PPC32 && CONFIG_TAU_INT*/
		seq_printf(p, "BAD: %10u\n", ppc_spurious_interrupts);

		return 0;
	}

	if (i < NR_IRQS) {
	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)
@@ -202,28 +218,22 @@ int show_interrupts(struct seq_file *p, void *v)
#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) {
#if defined(CONFIG_PPC32) && defined(CONFIG_TAU_INT)
		if (tau_initialized){
			seq_puts(p, "TAU: ");
			for_each_online_cpu(j)
				seq_printf(p, "%10u ", tau_interrupts(j));
			seq_puts(p, "  PowerPC             Thermal Assist (cpu temp)\n");
		}
#endif /* CONFIG_PPC32 && CONFIG_TAU_INT*/
		seq_printf(p, "BAD: %10u\n", ppc_spurious_interrupts);
	}

	return 0;
}