summaryrefslogtreecommitdiffstats
path: root/drivers/cpufreq/acpi-cpufreq.c
diff options
context:
space:
mode:
authorRichard Cochran2016-03-18 22:26:11 +0100
committerRafael J. Wysocki2016-03-20 00:39:04 +0100
commited72662a84771fec1337dd8b187e070af6fd3890 (patch)
treebd57ede6bda570eaabd4da0069da727ef2ebfcd3 /drivers/cpufreq/acpi-cpufreq.c
parentintel_pstate: Do not call wrmsrl_on_cpu() with disabled interrupts (diff)
downloadkernel-qcow2-linux-ed72662a84771fec1337dd8b187e070af6fd3890.tar.gz
kernel-qcow2-linux-ed72662a84771fec1337dd8b187e070af6fd3890.tar.xz
kernel-qcow2-linux-ed72662a84771fec1337dd8b187e070af6fd3890.zip
cpufreq: acpi-cpufreq: Clean up hot plug notifier callback
This driver has two issues. First, it tries to fiddle with the hot plugged CPU's MSR on the UP_PREPARE event, at a time when the CPU is not yet online. Second, the driver sets the "boost-disable" bit for a CPU when going down, but does not clear the bit again if the CPU comes up again due to DOWN_FAILED. This patch fixes the issues by changing the driver to react to the ONLINE/DOWN_FAILED events instead of UP_PREPARE. As an added benefit, the driver also becomes symmetric with respect to the hot plug mechanism. Signed-off-by: Richard Cochran <rcochran@linutronix.de> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'drivers/cpufreq/acpi-cpufreq.c')
-rw-r--r--drivers/cpufreq/acpi-cpufreq.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/cpufreq/acpi-cpufreq.c b/drivers/cpufreq/acpi-cpufreq.c
index 59a7b380fbe2..e7801e0112bb 100644
--- a/drivers/cpufreq/acpi-cpufreq.c
+++ b/drivers/cpufreq/acpi-cpufreq.c
@@ -514,8 +514,10 @@ static int boost_notify(struct notifier_block *nb, unsigned long action,
*/
switch (action) {
- case CPU_UP_PREPARE:
- case CPU_UP_PREPARE_FROZEN:
+ case CPU_DOWN_FAILED:
+ case CPU_DOWN_FAILED_FROZEN:
+ case CPU_ONLINE:
+ case CPU_ONLINE_FROZEN:
boost_set_msrs(acpi_cpufreq_driver.boost_enabled, cpumask);
break;