• Santosh Shilimkar's avatar
    oprofile: Fix the hang while taking the cpu offline · 4ac3dbec
    Santosh Shilimkar authored
    The kernel build with CONFIG_OPROFILE and CPU_HOTPLUG enabled.
    The oprofile is initialised using system timer in absence of hardware
    counters supports. Oprofile isn't started from userland.
    
    In this setup while doing a CPU offline the kernel hangs in infinite
    for loop inside lock_hrtimer_base() function
    
    This happens because as part of oprofile_cpu_notify(, it tries to
    stop an hrtimer which was never started. These per-cpu hrtimers
    are started when the oprfile is started.
    	echo 1	> /dev/oprofile/enable
    
    This problem also existwhen the cpu is booted with maxcpus parameter
    set. When bringing the remaining cpus online the timers are started
    even if oprofile is not yet enabled.
    
    This patch fix this issue by adding a state variable so that
    these hrtimer start/stop is only attempted when oprofile is
    started
    
    For stable kernels v2.6.35.y and v2.6.36.y.
    Reported-by: default avatarJan Sebastien <s-jan@ti.com>
    Tested-by: default avatarsricharan <r.sricharan@ti.com>
    Signed-off-by: default avatarSantosh Shilimkar <santosh.shilimkar@ti.com>
    Cc: stable@kernel.org
    Signed-off-by: default avatarRobert Richter <robert.richter@amd.com>
    4ac3dbec
timer_int.c 2.43 KB