summaryrefslogtreecommitdiffstats
path: root/drivers/base/power/main.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2013-01-07 16:17:18 -0800
committerLinus Torvalds <torvalds@linux-foundation.org>2013-01-07 16:17:18 -0800
commit2a893f91f57314c593f36cee689ad6e353af9daf (patch)
tree6c8287371612ddc9070991cd5c6b6c011c7d5dc1 /drivers/base/power/main.c
parent127aa93066261c2b8f03cb38e7165de8cd71736e (diff)
parentf67ffa95836b31be5d8fe336aee3bfc6412c5696 (diff)
Merge tag 'pm+acpi-for-3.8-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
Pull ACPI and power management fixes from Rafael Wysocki: - Removal of some ACPICA code that the kernel will never use from Lv Zheng. - APEI fix from Adrian Huang. - Removal of unnecessary ACPI memory hotplug driver code from Liu Jinsong. - Minor ACPI power management fixes. - ACPI debug code fix from Joe Perches. - ACPI fix to make system bus device nodes get the right names. - PNP resources handling fixes from Witold Szczeponik. - cpuidle fix for a recent regression stalling boot on systems with great numbers of CPUs from Daniel Lezcano. - cpuidle fixes from Sivaram Nair. - intel_idle debug message fix from Youquan Song. - cpufreq build regression fix from Larry Finger. - cpufreq fix for an obscure initialization race related to statistics from Konstantin Khlebnikov. - cpufreq change disabling the Longhaul driver by default from RafaƂ Bilski. - PM core fix preventing device suspend errors from happening during system suspend due to obscure race conditions. - PM QoS local variable name cleanup. * tag 'pm+acpi-for-3.8-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: PM: Move disabling/enabling runtime PM to late suspend/early resume PM / QoS: Rename local variable in dev_pm_qos_add_ancestor_request() ACPI / scan: Do not use dummy HID for system bus ACPI nodes cpufreq / governor: Fix problem with cpufreq_ondemand or cpufreq_conservative cpufreq / Longhaul: Disable driver by default cpufreq / stats: fix race between stats allocation and first usage cpuidle: fix lock contention in the idle path intel_idle: pr_debug information need separated cpuidle / coupled: fix ready counter decrement cpuidle: Fix finding state with min power_usage PNP: Handle IORESOURCE_BITS in resource allocation PNP: Simplify setting of resources ACPI / power: Remove useless message from device registering routine ACPI / glue: Update DBG macro to include KERN_DEBUG ACPI / PM: Do not apply ACPI_SUCCESS() to acpi_bus_get_device() result ACPI / memhotplug: remove redundant logic of acpi memory hotadd ACPI / APEI: Fix the returned value in erst_dbg_read ACPICA: Remove useless mini-C library.
Diffstat (limited to 'drivers/base/power/main.c')
-rw-r--r--drivers/base/power/main.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/drivers/base/power/main.c b/drivers/base/power/main.c
index a3c1404c793..2b7f77d3fcb 100644
--- a/drivers/base/power/main.c
+++ b/drivers/base/power/main.c
@@ -513,6 +513,8 @@ static int device_resume_early(struct device *dev, pm_message_t state)
Out:
TRACE_RESUME(error);
+
+ pm_runtime_enable(dev);
return error;
}
@@ -589,8 +591,6 @@ static int device_resume(struct device *dev, pm_message_t state, bool async)
if (!dev->power.is_suspended)
goto Unlock;
- pm_runtime_enable(dev);
-
if (dev->pm_domain) {
info = "power domain ";
callback = pm_op(&dev->pm_domain->ops, state);
@@ -930,6 +930,8 @@ static int device_suspend_late(struct device *dev, pm_message_t state)
pm_callback_t callback = NULL;
char *info = NULL;
+ __pm_runtime_disable(dev, false);
+
if (dev->power.syscore)
return 0;
@@ -1133,11 +1135,8 @@ static int __device_suspend(struct device *dev, pm_message_t state, bool async)
Complete:
complete_all(&dev->power.completion);
-
if (error)
async_error = error;
- else if (dev->power.is_suspended)
- __pm_runtime_disable(dev, false);
return error;
}