diff --git a/arch/powerpc/xmon/xmon.c b/arch/powerpc/xmon/xmon.c index 4ea53e05053f74ae975d6560c801cae839467964..dc9832e062561f03066fa576d42c4620b8caa077 100644 --- a/arch/powerpc/xmon/xmon.c +++ b/arch/powerpc/xmon/xmon.c @@ -2584,6 +2584,25 @@ static void dump_one_xive_irq(u32 num) num, target, prio, lirq, rc); } +static void dump_all_xive_irq(void) +{ + unsigned int i; + struct irq_desc *desc; + + for_each_irq_desc(i, desc) { + struct irq_data *d = irq_desc_get_irq_data(desc); + unsigned int hwirq; + + if (!d) + continue; + + hwirq = (unsigned int)irqd_to_hwirq(d); + /* IPIs are special (HW number 0) */ + if (hwirq) + dump_one_xive_irq(hwirq); + } +} + static void dump_xives(void) { unsigned long num; @@ -2601,6 +2620,8 @@ static void dump_xives(void) } else if (c == 'i') { if (scanhex(&num)) dump_one_xive_irq(num); + else + dump_all_xive_irq(); return; }