sched: Fix endless sync_sched/rcu() loop inside _cpu_down()
Commit 6acce3ef8: sched: Remove get_online_cpus() usage tries to do sync_sched/rcu() inside _cpu_down() but triggers: INFO: task swapper/0:1 blocked for more than 120 seconds. ... [<ffffffff811263dc>] synchronize_rcu+0x2c/0x30 [<ffffffff81d1bd82>] _cpu_down+0x2b2/0x340 ... It was caused by that in the rcu boost case we rely on smpboot thread to finish the rcu callback, which has already been parked before sync in here and leads to the endless sync_sched/rcu(). This patch exchanges the sequence of smpboot_park_threads() and sync_sched/rcu() to fix the bug. CRs-fixed: 647141 Change-Id: Ia8b325d7c3c778f428d9fb51271977c849df32ad Reported-by:Fengguang Wu <fengguang.wu@intel.com> Tested-by:
Fengguang Wu <fengguang.wu@intel.com> Signed-off-by:
Michael Wang <wangyun@linux.vnet.ibm.com> Signed-off-by:
Peter Zijlstra <peterz@infradead.org> Link: http://lkml.kernel.org/r/5282EDC0.6060003@linux.vnet.ibm.com Signed-off-by:
Ingo Molnar <mingo@kernel.org> Git-commit: 106dd5afde3cd10db7e1370b6ddc77f0b2496a75 Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git Signed-off-by:
Kaushal Kumar <kaushalk@codeaurora.org>
Loading
Please register or sign in to comment