X-Git-Url: https://git.karo-electronics.de/?a=blobdiff_plain;f=kernel%2Frcupreempt.c;h=5d59e850fb71f6f58b854cdbd0a1f1792f59c8ad;hb=b54fc8dd2c43888f2754505cca2b6e88604a8ffa;hp=f9dc8f3720f67ae977628f76f250d0ed8b05b4d5;hpb=ac8cc0fa5395fe2278e305a4cbed48e90d88d878;p=mv-sheeva.git diff --git a/kernel/rcupreempt.c b/kernel/rcupreempt.c index f9dc8f3720f..5d59e850fb7 100644 --- a/kernel/rcupreempt.c +++ b/kernel/rcupreempt.c @@ -1177,7 +1177,19 @@ EXPORT_SYMBOL_GPL(call_rcu_sched); * in -rt this does -not- necessarily result in all currently executing * interrupt -handlers- having completed. */ -synchronize_rcu_xxx(__synchronize_sched, call_rcu_sched) +void __synchronize_sched(void) +{ + struct rcu_synchronize rcu; + + if (num_online_cpus() == 1) + return; /* blocking is gp if only one CPU! */ + + init_completion(&rcu.completion); + /* Will wake me after RCU finished. */ + call_rcu_sched(&rcu.head, wakeme_after_rcu); + /* Wait for it. */ + wait_for_completion(&rcu.completion); +} EXPORT_SYMBOL_GPL(__synchronize_sched); /*