summaryrefslogtreecommitdiff
path: root/init
diff options
context:
space:
mode:
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>2013-07-04 11:22:11 (GMT)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2013-07-04 11:22:11 (GMT)
commit91bdad0b6237c25a7bf8fd4604d0cc64a2005a23 (patch)
treecbb6b3e9fac5b9f2184ca16872c4bc4ba14df351 /init
parentf991fae5c6d42dfc5029150b05a78cf3f6c18cc9 (diff)
downloadlinux-fsl-qoriq-91bdad0b6237c25a7bf8fd4604d0cc64a2005a23.tar.xz
ACPI / PM: Fix corner case in acpi_bus_update_power()
The role of acpi_bus_update_power() is to update the given ACPI device object's power.state field to reflect the current physical state of the device (as inferred from the configuration of power resources and _PSC, if available). For this purpose it calls acpi_device_set_power() that should update the power resources' reference counters and set power.state as appropriate. However, that doesn't work if the "new" state is D1, D2 or D3hot and the the current value of power.state means D3cold, because in that case acpi_device_set_power() will refuse to transition the device from D3cold to non-D0. To address this problem, make acpi_bus_update_power() call acpi_power_transition() directly to update the power resources' reference counters and only use acpi_device_set_power() to put the device into D0 if the current physical state of it cannot be determined. Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Cc: 3.9+ <stable@vger.kernel.org>
Diffstat (limited to 'init')
0 files changed, 0 insertions, 0 deletions