linux-uconsole/drivers/base/power
Sudeep Holla c7ca61734b 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>
2017-08-06 19:19:42 -07:00
..
opp PM / OPP: Initialize u_volt_min/max to a valid value 2016-05-04 14:48:51 -07:00
clock_ops.c ARM: SoC driver updates for v4.4 2015-11-10 15:00:03 -08:00
common.c PM: Convert dev_pm_put_subsys_data() into a void function 2015-02-03 22:59:25 +01:00
domain.c PM / Domains: defer dev_pm_domain_set() until genpd->attach_dev succeeds if present 2017-08-06 19:19:42 -07:00
domain_governor.c PM / Domains: Validate cases of a non-bound driver in genpd governor 2015-12-02 15:21:21 +01: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-26 09:54:53 +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:22:49 +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:39:36 +02:00
sysfs.c PM / QoS: return -EINVAL for bogus strings 2017-07-21 07:44:59 +02:00
trace.c PM / sleep: add pm-trace support for suspending phase 2015-03-18 15:54:27 +01:00
wakeirq.c PM / wakeirq: Fix dedicated wakeirq for drivers not using autosuspend 2017-01-12 11:22:49 +01:00
wakeup.c PM / wakeirq: Convert to SRCU 2017-07-21 07:44:59 +02:00