summaryrefslogtreecommitdiffstats
path: root/include/trace
diff options
context:
space:
mode:
authorPaul E. McKenney <paul.mckenney@linaro.org>2012-03-15 12:16:26 -0700
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>2012-05-01 08:22:50 -0700
commitf511fc624642f0bb8cf65aaa28979737514d4746 (patch)
treedb1395c5d33da33c8ea6c82f6e5b7346cc5beb91 /include/trace
parent79b9a75fb703b6a2670e46b9dc495af5bc7029b3 (diff)
downloadop-kernel-dev-f511fc624642f0bb8cf65aaa28979737514d4746.zip
op-kernel-dev-f511fc624642f0bb8cf65aaa28979737514d4746.tar.gz
rcu: Ensure that RCU_FAST_NO_HZ timers expire on correct CPU
Timers are subject to migration, which can lead to the following system-hang scenario when CONFIG_RCU_FAST_NO_HZ=y: 1. CPU 0 executes synchronize_rcu(), which posts an RCU callback. 2. CPU 0 then goes idle. It cannot immediately invoke the callback, but there is nothing RCU needs from ti, so it enters dyntick-idle mode after posting a timer. 3. The timer gets migrated to CPU 1. 4. CPU 0 never wakes up, so the synchronize_rcu() never returns, so the system hangs. This commit fixes this problem by using mod_timer_pinned(), as suggested by Peter Zijlstra, to ensure that the timer is actually posted on the running CPU. Reported-by: Dipankar Sarma <dipankar@in.ibm.com> Signed-off-by: Paul E. McKenney <paul.mckenney@linaro.org> Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Diffstat (limited to 'include/trace')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud