OpenCloudOS-Kernel/drivers/cpufreq
Ashok Raj a9d9baa1e8 [PATCH] clean up lock_cpu_hotplug() in cpufreq
There are some callers in cpufreq hotplug notify path that the lowest
function calls lock_cpu_hotplug().  The lock is already held during
cpu_up() and cpu_down() calls when the notify calls are broadcast to
registered clients.

Ideally if possible, we could disable_preempt() at the highest caller and
make sure we dont sleep in the path down in cpufreq->driver_target() calls
but the calls are so intertwined and cumbersome to cleanup.

Hence we consistently use lock_cpu_hotplug() and unlock_cpu_hotplug() in
all places.

 - Removed export of cpucontrol semaphore and made it static.
 - removed explicit uses of up/down with lock_cpu_hotplug()
   so we can keep track of the the callers in same thread context and
   just keep refcounts without calling a down() that causes a deadlock.
 - Removed current_in_hotplug() uses
 - Removed PF_HOTPLUG_CPU in sched.h introduced for the current_in_hotplug()
   temporary workaround.

Tested with insmod of cpufreq_stat.ko, and logical online/offline
to make sure we dont have any hang situations.

Signed-off-by: Ashok Raj <ashok.raj@intel.com>
Cc: Zwane Mwaikambo <zwane@linuxpower.ca>
Cc: Shaohua Li <shaohua.li@intel.com>
Cc: "Siddha, Suresh B" <suresh.b.siddha@intel.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-11-28 14:42:23 -08:00
..
Kconfig [CPUFREQ] Conservative cpufreq governer 2005-05-31 19:03:47 -07:00
Makefile [CPUFREQ] Conservative cpufreq governer 2005-05-31 19:03:47 -07:00
cpufreq.c [PATCH] clean up lock_cpu_hotplug() in cpufreq 2005-11-28 14:42:23 -08:00
cpufreq_conservative.c [PATCH] cpufreq: SMP fix for conservative governor 2005-10-27 16:29:24 -07:00
cpufreq_ondemand.c [CPUFREQ] Avoid the ondemand cpufreq governor to use a too high frequency for stats. 2005-09-20 12:39:35 -07:00
cpufreq_performance.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
cpufreq_powersave.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
cpufreq_stats.c Merge master.kernel.org:/pub/scm/linux/kernel/git/davej/cpufreq 2005-11-07 13:28:20 -08:00
cpufreq_userspace.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
freq_table.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00