diff options
Diffstat (limited to 'include/linux/hardirq.h')
-rw-r--r-- | include/linux/hardirq.h | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/include/linux/hardirq.h b/include/linux/hardirq.h index 9b70b9231693..f83288347dda 100644 --- a/include/linux/hardirq.h +++ b/include/linux/hardirq.h | |||
@@ -4,6 +4,7 @@ | |||
4 | #include <linux/preempt.h> | 4 | #include <linux/preempt.h> |
5 | #include <linux/smp_lock.h> | 5 | #include <linux/smp_lock.h> |
6 | #include <linux/lockdep.h> | 6 | #include <linux/lockdep.h> |
7 | #include <linux/ftrace_irq.h> | ||
7 | #include <asm/hardirq.h> | 8 | #include <asm/hardirq.h> |
8 | #include <asm/system.h> | 9 | #include <asm/system.h> |
9 | 10 | ||
@@ -163,7 +164,20 @@ extern void irq_enter(void); | |||
163 | */ | 164 | */ |
164 | extern void irq_exit(void); | 165 | extern void irq_exit(void); |
165 | 166 | ||
166 | #define nmi_enter() do { lockdep_off(); rcu_nmi_enter(); __irq_enter(); } while (0) | 167 | #define nmi_enter() \ |
167 | #define nmi_exit() do { __irq_exit(); rcu_nmi_exit(); lockdep_on(); } while (0) | 168 | do { \ |
169 | ftrace_nmi_enter(); \ | ||
170 | lockdep_off(); \ | ||
171 | rcu_nmi_enter(); \ | ||
172 | __irq_enter(); \ | ||
173 | } while (0) | ||
174 | |||
175 | #define nmi_exit() \ | ||
176 | do { \ | ||
177 | __irq_exit(); \ | ||
178 | rcu_nmi_exit(); \ | ||
179 | lockdep_on(); \ | ||
180 | ftrace_nmi_exit(); \ | ||
181 | } while (0) | ||
168 | 182 | ||
169 | #endif /* LINUX_HARDIRQ_H */ | 183 | #endif /* LINUX_HARDIRQ_H */ |