diff options
Diffstat (limited to 'kernel/rcutree.c')
-rw-r--r-- | kernel/rcutree.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/kernel/rcutree.c b/kernel/rcutree.c index d903e2f2b840..71bc79791cd9 100644 --- a/kernel/rcutree.c +++ b/kernel/rcutree.c | |||
@@ -229,7 +229,6 @@ static int rcu_implicit_offline_qs(struct rcu_data *rdp) | |||
229 | #endif /* #ifdef CONFIG_SMP */ | 229 | #endif /* #ifdef CONFIG_SMP */ |
230 | 230 | ||
231 | #ifdef CONFIG_NO_HZ | 231 | #ifdef CONFIG_NO_HZ |
232 | static DEFINE_RATELIMIT_STATE(rcu_rs, 10 * HZ, 5); | ||
233 | 232 | ||
234 | /** | 233 | /** |
235 | * rcu_enter_nohz - inform RCU that current CPU is entering nohz | 234 | * rcu_enter_nohz - inform RCU that current CPU is entering nohz |
@@ -249,7 +248,7 @@ void rcu_enter_nohz(void) | |||
249 | rdtp = &__get_cpu_var(rcu_dynticks); | 248 | rdtp = &__get_cpu_var(rcu_dynticks); |
250 | rdtp->dynticks++; | 249 | rdtp->dynticks++; |
251 | rdtp->dynticks_nesting--; | 250 | rdtp->dynticks_nesting--; |
252 | WARN_ON_RATELIMIT(rdtp->dynticks & 0x1, &rcu_rs); | 251 | WARN_ON_ONCE(rdtp->dynticks & 0x1); |
253 | local_irq_restore(flags); | 252 | local_irq_restore(flags); |
254 | } | 253 | } |
255 | 254 | ||
@@ -268,7 +267,7 @@ void rcu_exit_nohz(void) | |||
268 | rdtp = &__get_cpu_var(rcu_dynticks); | 267 | rdtp = &__get_cpu_var(rcu_dynticks); |
269 | rdtp->dynticks++; | 268 | rdtp->dynticks++; |
270 | rdtp->dynticks_nesting++; | 269 | rdtp->dynticks_nesting++; |
271 | WARN_ON_RATELIMIT(!(rdtp->dynticks & 0x1), &rcu_rs); | 270 | WARN_ON_ONCE(!(rdtp->dynticks & 0x1)); |
272 | local_irq_restore(flags); | 271 | local_irq_restore(flags); |
273 | smp_mb(); /* CPUs seeing ++ must see later RCU read-side crit sects */ | 272 | smp_mb(); /* CPUs seeing ++ must see later RCU read-side crit sects */ |
274 | } | 273 | } |
@@ -287,7 +286,7 @@ void rcu_nmi_enter(void) | |||
287 | if (rdtp->dynticks & 0x1) | 286 | if (rdtp->dynticks & 0x1) |
288 | return; | 287 | return; |
289 | rdtp->dynticks_nmi++; | 288 | rdtp->dynticks_nmi++; |
290 | WARN_ON_RATELIMIT(!(rdtp->dynticks_nmi & 0x1), &rcu_rs); | 289 | WARN_ON_ONCE(!(rdtp->dynticks_nmi & 0x1)); |
291 | smp_mb(); /* CPUs seeing ++ must see later RCU read-side crit sects */ | 290 | smp_mb(); /* CPUs seeing ++ must see later RCU read-side crit sects */ |
292 | } | 291 | } |
293 | 292 | ||
@@ -306,7 +305,7 @@ void rcu_nmi_exit(void) | |||
306 | return; | 305 | return; |
307 | smp_mb(); /* CPUs seeing ++ must see prior RCU read-side crit sects */ | 306 | smp_mb(); /* CPUs seeing ++ must see prior RCU read-side crit sects */ |
308 | rdtp->dynticks_nmi++; | 307 | rdtp->dynticks_nmi++; |
309 | WARN_ON_RATELIMIT(rdtp->dynticks_nmi & 0x1, &rcu_rs); | 308 | WARN_ON_ONCE(rdtp->dynticks_nmi & 0x1); |
310 | } | 309 | } |
311 | 310 | ||
312 | /** | 311 | /** |
@@ -322,7 +321,7 @@ void rcu_irq_enter(void) | |||
322 | if (rdtp->dynticks_nesting++) | 321 | if (rdtp->dynticks_nesting++) |
323 | return; | 322 | return; |
324 | rdtp->dynticks++; | 323 | rdtp->dynticks++; |
325 | WARN_ON_RATELIMIT(!(rdtp->dynticks & 0x1), &rcu_rs); | 324 | WARN_ON_ONCE(!(rdtp->dynticks & 0x1)); |
326 | smp_mb(); /* CPUs seeing ++ must see later RCU read-side crit sects */ | 325 | smp_mb(); /* CPUs seeing ++ must see later RCU read-side crit sects */ |
327 | } | 326 | } |
328 | 327 | ||
@@ -341,7 +340,7 @@ void rcu_irq_exit(void) | |||
341 | return; | 340 | return; |
342 | smp_mb(); /* CPUs seeing ++ must see prior RCU read-side crit sects */ | 341 | smp_mb(); /* CPUs seeing ++ must see prior RCU read-side crit sects */ |
343 | rdtp->dynticks++; | 342 | rdtp->dynticks++; |
344 | WARN_ON_RATELIMIT(rdtp->dynticks & 0x1, &rcu_rs); | 343 | WARN_ON_ONCE(rdtp->dynticks & 0x1); |
345 | 344 | ||
346 | /* If the interrupt queued a callback, get out of dyntick mode. */ | 345 | /* If the interrupt queued a callback, get out of dyntick mode. */ |
347 | if (__get_cpu_var(rcu_sched_data).nxtlist || | 346 | if (__get_cpu_var(rcu_sched_data).nxtlist || |