linux/drivers/base/power
Ulf Hansson cdb300a041 PM / Domains: Fix potential deadlock while adding/removing subdomains
We must preserve the same order of how we acquire and release the lock for
genpd, as otherwise we may encounter deadlocks.

The power on phase of a genpd starts by acquiring its lock. Then it walks
the hierarchy of its parent domains to be able to power on these first, as
per design of genpd.

From a locking perspective this means the locks of the parents becomes
acquired after the lock of the subdomain.

Let's fix pm_genpd_add|remove_subdomain() to maintain the same order of
acquiring/releasing the genpd lock as being applied in the power on/off
sequence.

Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2016-01-27 23:01:25 +01:00
..
opp More power management and ACPI updates for v4.4-rc1 2015-11-12 11:50:33 -08: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_governor.c PM / Domains: Validate cases of a non-bound driver in genpd governor 2015-12-02 15:21:21 +01:00
domain.c PM / Domains: Fix potential deadlock while adding/removing subdomains 2016-01-27 23:01:25 +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: Allow devices without runtime PM to do direct-complete 2015-07-21 23:14:22 +02:00
Makefile PM / OPP: Move opp core to its own directory 2015-09-15 02:03:16 +02:00
power.h PM / QoS: Make it possible to expose device latency tolerance to userspace 2015-07-28 08:50:41 +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 / Wakeirq: Add automated device wake IRQ handling 2015-05-20 01:56:31 +02:00
sysfs.c PM / QoS: Make it possible to expose device latency tolerance to userspace 2015-07-28 08:50:41 +01:00
trace.c PM / sleep: add pm-trace support for suspending phase 2015-03-18 15:54:27 +01:00
wakeirq.c PM / wakeirq: check that wake IRQ is valid before accepting it 2015-11-16 23:10:20 +01:00
wakeup.c PM / wakeup: wakeup_source_create: use kstrdup_const 2015-09-25 02:30:50 +02:00