linux/drivers
Rafael J. Wysocki 91bdad0b62 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>
2013-07-04 13:22:11 +02:00
..
accessibility
acpi ACPI / PM: Fix corner case in acpi_bus_update_power() 2013-07-04 13:22:11 +02:00
amba
ata Merge branch 'pm-assorted' 2013-06-28 13:01:40 +02:00
atm
auxdisplay
base Power management and ACPI updates for 3.11-rc1 2013-07-03 14:35:40 -07:00
bcma
block Simple warning fix for module sections. If too late to pull, no big deal. 2013-07-03 13:09:06 -07:00
bluetooth
bus ARM SoC device tree changes 2013-07-02 14:23:01 -07:00
cdrom
char Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security 2013-07-03 14:04:58 -07:00
clk Power management and ACPI updates for 3.11-rc1 2013-07-03 14:35:40 -07:00
clocksource Merge branch 'for-linus' of git://git.linaro.org/people/rmk/linux-arm 2013-07-03 09:46:29 -07:00
connector
cpufreq Power management and ACPI updates for 3.11-rc1 2013-07-03 14:35:40 -07:00
cpuidle Power management and ACPI updates for 3.11-rc1 2013-07-03 14:35:40 -07:00
crypto ARM SoC driver specific changes 2013-07-02 14:33:21 -07:00
dca
devfreq
dio
dma Power management and ACPI updates for 3.11-rc1 2013-07-03 14:35:40 -07:00
edac Add MCE signatures for family 0x15, models 30-3f. 2013-07-03 13:11:18 -07:00
eisa
extcon
firewire
firmware Fixes for pstore for 3.11 merge window 2013-07-03 11:14:44 -07:00
fmc FMC: fix error handling in probe() function 2013-06-24 16:23:25 -07:00
gpio Power management and ACPI updates for 3.11-rc1 2013-07-03 14:35:40 -07:00
gpu Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2013-07-02 09:28:37 -07:00
hid
hsi
hv drivers: hv: allocate synic structures before hv_synic_init() 2013-06-24 16:24:17 -07:00
hwmon
hwspinlock
i2c Power management and ACPI updates for 3.11-rc1 2013-07-03 14:35:40 -07:00
ide
idle
iio
infiniband
input Merge branch 'exotic-arch-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k 2013-07-03 11:12:08 -07:00
iommu Merge branch 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2013-07-02 16:15:23 -07:00
ipack
irqchip Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2013-07-02 16:14:35 -07:00
isdn
leds
lguest x86, flags: Rename X86_EFLAGS_BIT1 to X86_EFLAGS_FIXED 2013-06-25 16:25:32 -07:00
macintosh
mailbox
md
media Merge branch 'exotic-arch-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k 2013-07-03 11:12:08 -07:00
memory
memstick
message
mfd Power management and ACPI updates for 3.11-rc1 2013-07-03 14:35:40 -07:00
misc Driver core patches for 3.11-rc1 2013-07-02 11:44:19 -07:00
mmc Power management and ACPI updates for 3.11-rc1 2013-07-03 14:35:40 -07:00
mtd Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2013-07-03 09:10:19 -07:00
net Pin control changes for the v3.11 kernel cycle: 2013-07-03 11:48:03 -07:00
nfc
ntb
nubus
of
oprofile
parisc Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2013-07-03 09:10:19 -07:00
parport
pci Power management and ACPI updates for 3.11-rc1 2013-07-03 14:35:40 -07:00
pcmcia Driver core patches for 3.11-rc1 2013-07-02 11:44:19 -07:00
pinctrl Pin control changes for the v3.11 kernel cycle: 2013-07-03 11:48:03 -07:00
platform
pnp Power management and ACPI updates for 3.11-rc1 2013-07-03 14:35:40 -07:00
power
pps
ps3
ptp build some drivers only when compile-testing 2013-06-24 16:41:32 -07:00
pwm
rapidio
regulator regulator: Updates for v3.11 2013-07-03 11:56:38 -07:00
remoteproc
reset
rpmsg
rtc
s390 s390/dasd: Fail all requests when DASD_FLAG_ABORTIO is set 2013-07-01 17:31:26 +02:00
sbus
scsi Power management and ACPI updates for 3.11-rc1 2013-07-03 14:35:40 -07:00
sfi
sh Merge branch 'pm-assorted' 2013-06-28 13:01:40 +02:00
sn
spi Power management and ACPI updates for 3.11-rc1 2013-07-03 14:35:40 -07:00
ssb
ssbi
staging Power management and ACPI updates for 3.11-rc1 2013-07-03 14:35:40 -07:00
target iscsi-target: Remove left over v3.10-rc debug printks 2013-06-20 16:47:41 -07:00
tc
thermal
tty Power management and ACPI updates for 3.11-rc1 2013-07-03 14:35:40 -07:00
uio drivers: uio_pdrv_genirq: Use of_match_ptr() macro 2013-06-25 17:22:30 -07:00
usb Power management and ACPI updates for 3.11-rc1 2013-07-03 14:35:40 -07:00
uwb USB: HWA: fix device probe failure 2013-06-24 16:20:43 -07:00
vfio vfio: remap_pfn_range() sets all those flags... 2013-06-29 12:46:41 +04:00
vhost
video Merge branch 'exotic-arch-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k 2013-07-03 11:12:08 -07:00
virt
virtio
vlynq
vme vme: vme_tsi148.c: fix error return code in tsi148_probe() 2013-06-24 16:23:25 -07:00
w1
watchdog ARM SoC specific changes 2013-07-02 13:43:38 -07:00
xen Bug-fixes: 2013-07-03 13:12:42 -07:00
zorro zorro: switch to fixed_size_llseek() 2013-06-29 12:57:28 +04:00
Kconfig
Makefile