Commit 855d9140 authored by Cédric Le Goater's avatar Cédric Le Goater Committed by Michael Ellerman

powerpc/xmon: Fix output of XIVE IPI

When dumping the XIVE state of an CPU IPI, xmon does not check if the
CPU is started or not which can cause an error. Add a check for that
and change the output to be on one line just as the XIVE interrupts of
the machine.
Signed-off-by: default avatarCédric Le Goater <clg@kaod.org>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20190910081850.26038-3-clg@kaod.org
parent 5896163f
...@@ -237,25 +237,30 @@ static notrace void xive_dump_eq(const char *name, struct xive_q *q) ...@@ -237,25 +237,30 @@ static notrace void xive_dump_eq(const char *name, struct xive_q *q)
i0 = be32_to_cpup(q->qpage + idx); i0 = be32_to_cpup(q->qpage + idx);
idx = (idx + 1) & q->msk; idx = (idx + 1) & q->msk;
i1 = be32_to_cpup(q->qpage + idx); i1 = be32_to_cpup(q->qpage + idx);
xmon_printf(" %s Q T=%d %08x %08x ...\n", name, xmon_printf("%s idx=%d T=%d %08x %08x ...", name,
q->toggle, i0, i1); q->idx, q->toggle, i0, i1);
} }
notrace void xmon_xive_do_dump(int cpu) notrace void xmon_xive_do_dump(int cpu)
{ {
struct xive_cpu *xc = per_cpu(xive_cpu, cpu); struct xive_cpu *xc = per_cpu(xive_cpu, cpu);
xmon_printf("XIVE state for CPU %d:\n", cpu); xmon_printf("CPU %d:", cpu);
xmon_printf(" pp=%02x cppr=%02x\n", xc->pending_prio, xc->cppr); if (xc) {
xive_dump_eq("IRQ", &xc->queue[xive_irq_priority]); xmon_printf("pp=%02x CPPR=%02x ", xc->pending_prio, xc->cppr);
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
{ {
u64 val = xive_esb_read(&xc->ipi_data, XIVE_ESB_GET); u64 val = xive_esb_read(&xc->ipi_data, XIVE_ESB_GET);
xmon_printf(" IPI state: %x:%c%c\n", xc->hw_ipi,
val & XIVE_ESB_VAL_P ? 'P' : 'p', xmon_printf("IPI=0x%08x PQ=%c%c ", xc->hw_ipi,
val & XIVE_ESB_VAL_Q ? 'Q' : 'q'); val & XIVE_ESB_VAL_P ? 'P' : '-',
} val & XIVE_ESB_VAL_Q ? 'Q' : '-');
}
#endif #endif
xive_dump_eq("EQ", &xc->queue[xive_irq_priority]);
}
xmon_printf("\n");
} }
int xmon_xive_get_irq_config(u32 hw_irq, struct irq_data *d) int xmon_xive_get_irq_config(u32 hw_irq, struct irq_data *d)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment