summaryrefslogtreecommitdiffstats
path: root/include/linux/isa.h
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2007-09-16 15:36:43 +0200
committerThomas Gleixner <tglx@chaos.(none)>2007-09-16 15:36:43 +0200
commit5e41d0d60a534d2a5dc9772600a58f44c8d12506 (patch)
treed020ec1e72c338f3bf9dc4558ac3c82527a02384 /include/linux/isa.h
parent31d9b3938c0459e5e9755ce0a98ac1e24eeff972 (diff)
downloadlinux-5e41d0d60a534d2a5dc9772600a58f44c8d12506.tar.gz
linux-5e41d0d60a534d2a5dc9772600a58f44c8d12506.tar.bz2
linux-5e41d0d60a534d2a5dc9772600a58f44c8d12506.zip
clockevents: prevent stale tick update on offline cpu
Taking a cpu offline removes the cpu from the online mask before the CPU_DEAD notification is done. The clock events layer does the cleanup of the dead CPU from the CPU_DEAD notifier chain. tick_do_timer_cpu is used to avoid xtime lock contention by assigning the task of jiffies xtime updates to one CPU. If a CPU is taken offline, then this assignment becomes stale. This went unnoticed because most of the time the offline CPU went dead before the online CPU reached __cpu_die(), where the CPU_DEAD state is checked. In the case that the offline CPU did not reach the DEAD state before we reach __cpu_die(), the code in there goes to sleep for 100ms. Due to the stale time update assignment, the system is stuck forever. Take the assignment away when a cpu is not longer in the cpu_online_mask. We do this in the last call to tick_nohz_stop_sched_tick() when the offline CPU is on the way to the final play_dead() idle entry. Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'include/linux/isa.h')
0 files changed, 0 insertions, 0 deletions