aboutsummaryrefslogtreecommitdiffstats
path: root/xen/arch/x86/nmi.c
diff options
context:
space:
mode:
authorkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>2006-01-13 23:41:28 +0100
committerkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>2006-01-13 23:41:28 +0100
commitc9a14b06a442b2030969d766e67cdbd5d1b9dd62 (patch)
tree3bc844821fabe70eb7e57312af915056c9fc982d /xen/arch/x86/nmi.c
parent0828aa84f798e1553348322962f73a843ecdfb8c (diff)
downloadxen-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.c22
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);