diff options
author | kaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk> | 2006-01-13 23:41:28 +0100 |
---|---|---|
committer | kaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk> | 2006-01-13 23:41:28 +0100 |
commit | c9a14b06a442b2030969d766e67cdbd5d1b9dd62 (patch) | |
tree | 3bc844821fabe70eb7e57312af915056c9fc982d /xen/arch/x86/nmi.c | |
parent | 0828aa84f798e1553348322962f73a843ecdfb8c (diff) | |
download | xen-c9a14b06a442b2030969d766e67cdbd5d1b9dd62.tar.gz xen-c9a14b06a442b2030969d766e67cdbd5d1b9dd62.tar.bz2 xen-c9a14b06a442b2030969d766e67cdbd5d1b9dd62.zip |
Make all nmi debugkey tracing arch specific.
Signed-off-by: Keir Fraser <keir@xensource.com>
Diffstat (limited to 'xen/arch/x86/nmi.c')
-rw-r--r-- | xen/arch/x86/nmi.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/xen/arch/x86/nmi.c b/xen/arch/x86/nmi.c index 96c55572cd..e2a053fe93 100644 --- a/xen/arch/x86/nmi.c +++ b/xen/arch/x86/nmi.c @@ -448,9 +448,31 @@ static void do_nmi_trigger(unsigned char key) local_irq_enable(); } +static void do_nmi_stats(unsigned char key) +{ + int i; + struct domain *d; + struct vcpu *v; + printk("CPU\tNMI\n"); + for_each_cpu(i) + printk("%3d\t%3d\n", i, nmi_count(i)); + + if ((d = dom0) == NULL) + return; + if ((v = d->vcpu[0]) == NULL) + return; + if (v->vcpu_flags & (VCPUF_nmi_pending|VCPUF_nmi_masked)) + printk("dom0 vpu0: NMI %s%s\n", + v->vcpu_flags & VCPUF_nmi_pending ? "pending " : "", + v->vcpu_flags & VCPUF_nmi_masked ? "masked " : ""); + else + printk("dom0 vcpu0: NMI neither pending nor masked\n"); +} + static __init int register_nmi_trigger(void) { register_keyhandler('n', do_nmi_trigger, "trigger an NMI"); + register_keyhandler('N', do_nmi_stats, "NMI statistics"); return 0; } __initcall(register_nmi_trigger); |