aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/rcutree.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/rcutree.c')
-rw-r--r--kernel/rcutree.c13
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
232static 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 ||