|
@@ -2224,7 +2224,10 @@ void synchronize_sched(void)
|
|
"Illegal synchronize_sched() in RCU-sched read-side critical section");
|
|
"Illegal synchronize_sched() in RCU-sched read-side critical section");
|
|
if (rcu_blocking_is_gp())
|
|
if (rcu_blocking_is_gp())
|
|
return;
|
|
return;
|
|
- wait_rcu_gp(call_rcu_sched);
|
|
|
|
|
|
+ if (rcu_expedited)
|
|
|
|
+ synchronize_sched_expedited();
|
|
|
|
+ else
|
|
|
|
+ wait_rcu_gp(call_rcu_sched);
|
|
}
|
|
}
|
|
EXPORT_SYMBOL_GPL(synchronize_sched);
|
|
EXPORT_SYMBOL_GPL(synchronize_sched);
|
|
|
|
|
|
@@ -2245,7 +2248,10 @@ void synchronize_rcu_bh(void)
|
|
"Illegal synchronize_rcu_bh() in RCU-bh read-side critical section");
|
|
"Illegal synchronize_rcu_bh() in RCU-bh read-side critical section");
|
|
if (rcu_blocking_is_gp())
|
|
if (rcu_blocking_is_gp())
|
|
return;
|
|
return;
|
|
- wait_rcu_gp(call_rcu_bh);
|
|
|
|
|
|
+ if (rcu_expedited)
|
|
|
|
+ synchronize_rcu_bh_expedited();
|
|
|
|
+ else
|
|
|
|
+ wait_rcu_gp(call_rcu_bh);
|
|
}
|
|
}
|
|
EXPORT_SYMBOL_GPL(synchronize_rcu_bh);
|
|
EXPORT_SYMBOL_GPL(synchronize_rcu_bh);
|
|
|
|
|
|
@@ -2328,7 +2334,7 @@ void synchronize_sched_expedited(void)
|
|
if (trycount++ < 10) {
|
|
if (trycount++ < 10) {
|
|
udelay(trycount * num_online_cpus());
|
|
udelay(trycount * num_online_cpus());
|
|
} else {
|
|
} else {
|
|
- synchronize_sched();
|
|
|
|
|
|
+ wait_rcu_gp(call_rcu_sched);
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|