https://github.com/torvalds/linux
Revision 3e26c5feed2add218046ecf91bab3cfa9bf762a6 authored by Rafael J. Wysocki on 13 June 2019, 21:59:45 UTC, committed by Rafael J. Wysocki on 13 June 2019, 22:03:27 UTC
Commit d491f2b75237 ("PCI: PM: Avoid possible suspend-to-idle issue")
attempted to avoid a problem with devices whose drivers want them to
stay in D0 over suspend-to-idle and resume, but it did not go as far
as it should with that.

Namely, first of all, the power state of a PCI bridge with a
downstream device in D0 must be D0 (based on the PCI PM spec r1.2,
sec 6, table 6-1, if the bridge is not in D0, there can be no PCI
transactions on its secondary bus), but that is not actively enforced
during system-wide PM transitions, so use the skip_bus_pm flag
introduced by commit d491f2b75237 for that.

Second, the configuration of devices left in D0 (whatever the reason)
during suspend-to-idle need not be changed and attempting to put them
into D0 again by force is pointless, so explicitly avoid doing that.

Fixes: d491f2b75237 ("PCI: PM: Avoid possible suspend-to-idle issue")
Reported-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Tested-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
1 parent d1fdb6d
History
Tip revision: 3e26c5feed2add218046ecf91bab3cfa9bf762a6 authored by Rafael J. Wysocki on 13 June 2019, 21:59:45 UTC
PCI: PM: Skip devices in D0 for suspend-to-idle
Tip revision: 3e26c5f
File Mode Size
broadcom
intel
qcom
samsung
st
tegra
ti-soc-thermal
Kconfig -rw-r--r-- 13.3 KB
Makefile -rw-r--r-- 2.0 KB
armada_thermal.c -rw-r--r-- 25.6 KB
clock_cooling.c -rw-r--r-- 13.0 KB
cpu_cooling.c -rw-r--r-- 23.1 KB
da9062-thermal.c -rw-r--r-- 7.8 KB
db8500_thermal.c -rw-r--r-- 13.5 KB
devfreq_cooling.c -rw-r--r-- 15.7 KB
dove_thermal.c -rw-r--r-- 4.6 KB
fair_share.c -rw-r--r-- 3.4 KB
gov_bang_bang.c -rw-r--r-- 3.5 KB
hisi_thermal.c -rw-r--r-- 17.1 KB
imx_thermal.c -rw-r--r-- 25.3 KB
kirkwood_thermal.c -rw-r--r-- 2.8 KB
max77620_thermal.c -rw-r--r-- 4.6 KB
mtk_thermal.c -rw-r--r-- 26.4 KB
of-thermal.c -rw-r--r-- 27.7 KB
power_allocator.c -rw-r--r-- 18.8 KB
qoriq_thermal.c -rw-r--r-- 7.2 KB
rcar_gen3_thermal.c -rw-r--r-- 12.9 KB
rcar_thermal.c -rw-r--r-- 15.3 KB
rockchip_thermal.c -rw-r--r-- 37.2 KB
spear_thermal.c -rw-r--r-- 4.6 KB
step_wise.c -rw-r--r-- 6.1 KB
tango_thermal.c -rw-r--r-- 3.2 KB
thermal-generic-adc.c -rw-r--r-- 4.1 KB
thermal_core.c -rw-r--r-- 43.0 KB
thermal_core.h -rw-r--r-- 5.0 KB
thermal_helpers.c -rw-r--r-- 5.6 KB
thermal_hwmon.c -rw-r--r-- 6.3 KB
thermal_hwmon.h -rw-r--r-- 906 bytes
thermal_mmio.c -rw-r--r-- 3.0 KB
thermal_sysfs.c -rw-r--r-- 24.4 KB
uniphier_thermal.c -rw-r--r-- 9.3 KB
user_space.c -rw-r--r-- 1.5 KB
zx2967_thermal.c -rw-r--r-- 6.2 KB

back to top