powerpc/xive: Add a debugfs file to dump internal XIVE state
As does XMON, the debugfs file /sys/kernel/debug/powerpc/xive exposes the XIVE internal state of the machine CPUs and interrupts. Available on the PowerNV and sPAPR platforms. Signed-off-by: Cédric Le Goater <clg@kaod.org> [mpe: Make the debugfs file 0400] Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/20200306150143.5551-5-clg@kaod.org
This commit is contained in:

committed by
Michael Ellerman

parent
5191e0ba51
commit
930914b7d5
@@ -18,6 +18,7 @@
|
||||
#include <linux/delay.h>
|
||||
#include <linux/libfdt.h>
|
||||
|
||||
#include <asm/machdep.h>
|
||||
#include <asm/prom.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/smp.h>
|
||||
@@ -645,6 +646,21 @@ static void xive_spapr_sync_source(u32 hw_irq)
|
||||
plpar_int_sync(0, hw_irq);
|
||||
}
|
||||
|
||||
static int xive_spapr_debug_show(struct seq_file *m, void *private)
|
||||
{
|
||||
struct xive_irq_bitmap *xibm;
|
||||
char *buf = kmalloc(PAGE_SIZE, GFP_KERNEL);
|
||||
|
||||
list_for_each_entry(xibm, &xive_irq_bitmaps, list) {
|
||||
memset(buf, 0, PAGE_SIZE);
|
||||
bitmap_print_to_pagebuf(true, buf, xibm->bitmap, xibm->count);
|
||||
seq_printf(m, "bitmap #%d: %s", xibm->count, buf);
|
||||
}
|
||||
kfree(buf);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct xive_ops xive_spapr_ops = {
|
||||
.populate_irq_data = xive_spapr_populate_irq_data,
|
||||
.configure_irq = xive_spapr_configure_irq,
|
||||
@@ -662,6 +678,7 @@ static const struct xive_ops xive_spapr_ops = {
|
||||
#ifdef CONFIG_SMP
|
||||
.get_ipi = xive_spapr_get_ipi,
|
||||
.put_ipi = xive_spapr_put_ipi,
|
||||
.debug_show = xive_spapr_debug_show,
|
||||
#endif /* CONFIG_SMP */
|
||||
.name = "spapr",
|
||||
};
|
||||
@@ -839,3 +856,5 @@ bool __init xive_spapr_init(void)
|
||||
pr_info("Using %dkB queues\n", 1 << (xive_queue_shift - 10));
|
||||
return true;
|
||||
}
|
||||
|
||||
machine_arch_initcall(pseries, xive_core_debug_init);
|
||||
|
Reference in New Issue
Block a user