]> git.karo-electronics.de Git - karo-tx-linux.git/commit
rcu: Make offline-CPU checking allow for indefinite delays
authorPaul E. McKenney <paul.mckenney@linaro.org>
Wed, 1 Aug 2012 21:29:20 +0000 (14:29 -0700)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Tue, 4 Sep 2012 23:36:27 +0000 (16:36 -0700)
commitc9af5dca1dc904ce0dbb19cae3ce707dd19f1696
tree0edd6edb18cc62107bfd479a846c14dbdf7822d8
parent7205828059b52ec1879d9c7eff8a33b4e41bea32
rcu: Make offline-CPU checking allow for indefinite delays

The rcu_implicit_offline_qs() function implicitly assumed that execution
would progress predictably when interrupts are disabled, which is of course
not guaranteed when running on a hypervisor.  Furthermore, this function
is short, and is called from one place only in a short function.

This commit therefore ensures that the timing is checked before
checking the condition, which guarantees correct behavior even given
indefinite delays.  It also inlines rcu_implicit_offline_qs() into
rcu_implicit_dynticks_qs().

Signed-off-by: Paul E. McKenney <paul.mckenney@linaro.org>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Reviewed-by: Josh Triplett <josh@joshtriplett.org>
kernel/rcutree.c