aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/nmi.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86/kernel/nmi.c')
-rw-r--r--arch/x86/kernel/nmi.c9
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
33struct nmi_desc { 36struct 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;