diff options
Diffstat (limited to 'include/linux/hardirq.h')
-rw-r--r-- | include/linux/hardirq.h | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/include/linux/hardirq.h b/include/linux/hardirq.h index 624ef3f45c8e..c1d6555d2567 100644 --- a/include/linux/hardirq.h +++ b/include/linux/hardirq.h | |||
@@ -118,10 +118,8 @@ | |||
118 | 118 | ||
119 | #ifdef CONFIG_PREEMPT_COUNT | 119 | #ifdef CONFIG_PREEMPT_COUNT |
120 | # define preemptible() (preempt_count() == 0 && !irqs_disabled()) | 120 | # define preemptible() (preempt_count() == 0 && !irqs_disabled()) |
121 | # define IRQ_EXIT_OFFSET (HARDIRQ_OFFSET-1) | ||
122 | #else | 121 | #else |
123 | # define preemptible() 0 | 122 | # define preemptible() 0 |
124 | # define IRQ_EXIT_OFFSET HARDIRQ_OFFSET | ||
125 | #endif | 123 | #endif |
126 | 124 | ||
127 | #if defined(CONFIG_SMP) || defined(CONFIG_GENERIC_HARDIRQS) | 125 | #if defined(CONFIG_SMP) || defined(CONFIG_GENERIC_HARDIRQS) |
@@ -153,7 +151,7 @@ extern void rcu_nmi_exit(void); | |||
153 | */ | 151 | */ |
154 | #define __irq_enter() \ | 152 | #define __irq_enter() \ |
155 | do { \ | 153 | do { \ |
156 | vtime_account_irq_enter(current); \ | 154 | account_irq_enter_time(current); \ |
157 | add_preempt_count(HARDIRQ_OFFSET); \ | 155 | add_preempt_count(HARDIRQ_OFFSET); \ |
158 | trace_hardirq_enter(); \ | 156 | trace_hardirq_enter(); \ |
159 | } while (0) | 157 | } while (0) |
@@ -169,7 +167,7 @@ extern void irq_enter(void); | |||
169 | #define __irq_exit() \ | 167 | #define __irq_exit() \ |
170 | do { \ | 168 | do { \ |
171 | trace_hardirq_exit(); \ | 169 | trace_hardirq_exit(); \ |
172 | vtime_account_irq_exit(current); \ | 170 | account_irq_exit_time(current); \ |
173 | sub_preempt_count(HARDIRQ_OFFSET); \ | 171 | sub_preempt_count(HARDIRQ_OFFSET); \ |
174 | } while (0) | 172 | } while (0) |
175 | 173 | ||
@@ -180,10 +178,10 @@ extern void irq_exit(void); | |||
180 | 178 | ||
181 | #define nmi_enter() \ | 179 | #define nmi_enter() \ |
182 | do { \ | 180 | do { \ |
181 | lockdep_off(); \ | ||
183 | ftrace_nmi_enter(); \ | 182 | ftrace_nmi_enter(); \ |
184 | BUG_ON(in_nmi()); \ | 183 | BUG_ON(in_nmi()); \ |
185 | add_preempt_count(NMI_OFFSET + HARDIRQ_OFFSET); \ | 184 | add_preempt_count(NMI_OFFSET + HARDIRQ_OFFSET); \ |
186 | lockdep_off(); \ | ||
187 | rcu_nmi_enter(); \ | 185 | rcu_nmi_enter(); \ |
188 | trace_hardirq_enter(); \ | 186 | trace_hardirq_enter(); \ |
189 | } while (0) | 187 | } while (0) |
@@ -192,10 +190,10 @@ extern void irq_exit(void); | |||
192 | do { \ | 190 | do { \ |
193 | trace_hardirq_exit(); \ | 191 | trace_hardirq_exit(); \ |
194 | rcu_nmi_exit(); \ | 192 | rcu_nmi_exit(); \ |
195 | lockdep_on(); \ | ||
196 | BUG_ON(!in_nmi()); \ | 193 | BUG_ON(!in_nmi()); \ |
197 | sub_preempt_count(NMI_OFFSET + HARDIRQ_OFFSET); \ | 194 | sub_preempt_count(NMI_OFFSET + HARDIRQ_OFFSET); \ |
198 | ftrace_nmi_exit(); \ | 195 | ftrace_nmi_exit(); \ |
196 | lockdep_on(); \ | ||
199 | } while (0) | 197 | } while (0) |
200 | 198 | ||
201 | #endif /* LINUX_HARDIRQ_H */ | 199 | #endif /* LINUX_HARDIRQ_H */ |