linux/drivers/base/power
Sudeep Holla 7bd804a05e PM / Domains: defer dev_pm_domain_set() until genpd->attach_dev succeeds if present
commit 975e83cfb8 upstream.

If the genpd->attach_dev or genpd->power_on fails, genpd_dev_pm_attach
may return -EPROBE_DEFER initially. However genpd_alloc_dev_data sets
the PM domain for the device unconditionally.

When subsequent attempts are made to call genpd_dev_pm_attach, it may
return -EEXISTS checking dev->pm_domain without re-attempting to call
attach_dev or power_on.

platform_drv_probe then attempts to call drv->probe as the return value
-EEXIST != -EPROBE_DEFER, which may end up in a situation where the
device is accessed without it's power domain switched on.

Fixes: f104e1e5ef (PM / Domains: Re-order initialization of generic_pm_domain_data)
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
Acked-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2017-07-27 15:08:08 -07:00
..
opp PM / OPP: Don't use OPP structure outside of rcu protected section 2017-01-06 10:40:15 +01:00
clock_ops.c PM / clk: Add support for adding a specific clock from device-tree 2016-06-28 00:42:10 +02:00
common.c PM: Avoid false-positive warnings in dev_pm_domain_set() 2016-02-03 19:10:37 +01:00
domain.c PM / Domains: defer dev_pm_domain_set() until genpd->attach_dev succeeds if present 2017-07-27 15:08:08 -07:00
domain_governor.c PM / Domains: Rename stop_ok to suspend_ok for the genpd governor 2016-04-22 02:29:17 +02:00
generic_ops.c PM / PCI / ACPI: Kick devices that might have been reset by firmware 2015-10-14 02:17:34 +02:00
main.c PM / sleep: don't suspend parent when async child suspend_{noirq, late} fails 2016-11-11 01:29:09 +01:00
Makefile PM / OPP: Move opp core to its own directory 2015-09-15 02:03:16 +02:00
power.h PM / wakeirq: Fix dedicated wakeirq for drivers not using autosuspend 2017-01-12 11:39:31 +01:00
qos.c PM / QoS: Make it possible to expose device latency tolerance to userspace 2015-07-28 08:50:41 +01:00
runtime.c PM / runtime: Avoid false-positive warnings from might_sleep_if() 2017-06-17 06:41:51 +02:00
sysfs.c PM / QoS: return -EINVAL for bogus strings 2017-07-21 07:42:24 +02:00
trace.c char/genrtc: x86: remove remnants of asm/rtc.h 2016-06-04 00:20:07 +02:00
wakeirq.c PM / wakeirq: Fix dedicated wakeirq for drivers not using autosuspend 2017-01-12 11:39:31 +01:00
wakeup.c PM / wakeirq: Convert to SRCU 2017-07-21 07:42:24 +02:00