diff options
Diffstat (limited to 'arch/x86/kernel/nmi.c')
-rw-r--r-- | arch/x86/kernel/nmi.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/arch/x86/kernel/nmi.c b/arch/x86/kernel/nmi.c index e9bae4c2f2dd..0920212e6159 100644 --- a/arch/x86/kernel/nmi.c +++ b/arch/x86/kernel/nmi.c | |||
@@ -30,6 +30,9 @@ | |||
30 | #include <asm/nmi.h> | 30 | #include <asm/nmi.h> |
31 | #include <asm/x86_init.h> | 31 | #include <asm/x86_init.h> |
32 | 32 | ||
33 | #define CREATE_TRACE_POINTS | ||
34 | #include <trace/events/nmi.h> | ||
35 | |||
33 | struct nmi_desc { | 36 | struct nmi_desc { |
34 | spinlock_t lock; | 37 | spinlock_t lock; |
35 | struct list_head head; | 38 | struct list_head head; |
@@ -108,11 +111,13 @@ static int __kprobes nmi_handle(unsigned int type, struct pt_regs *regs, bool b2 | |||
108 | */ | 111 | */ |
109 | list_for_each_entry_rcu(a, &desc->head, list) { | 112 | list_for_each_entry_rcu(a, &desc->head, list) { |
110 | u64 before, delta, whole_msecs; | 113 | u64 before, delta, whole_msecs; |
111 | int decimal_msecs; | 114 | int decimal_msecs, thishandled; |
112 | 115 | ||
113 | before = local_clock(); | 116 | before = local_clock(); |
114 | handled += a->handler(type, regs); | 117 | thishandled = a->handler(type, regs); |
118 | handled += thishandled; | ||
115 | delta = local_clock() - before; | 119 | delta = local_clock() - before; |
120 | trace_nmi_handler(a->handler, (int)delta, thishandled); | ||
116 | 121 | ||
117 | if (delta < nmi_longest_ns) | 122 | if (delta < nmi_longest_ns) |
118 | continue; | 123 | continue; |