]> git.karo-electronics.de Git - karo-tx-linux.git/commit
PM / Domains: Do not measure start time for "irq safe" devices
authorRafael J. Wysocki <rjw@sisk.pl>
Sun, 5 Aug 2012 23:47:29 +0000 (01:47 +0200)
committerRafael J. Wysocki <rjw@sisk.pl>
Thu, 9 Aug 2012 09:10:38 +0000 (11:10 +0200)
commitd8d01f73a9dd99e025ebce7d09b42eb1300958b2
tree7a568a0c0ff7f4fd8c300eaf2b4143bc696ac690
parentefbaeee9e30ee1392a72e4f04f6cd710210c199f
PM / Domains: Do not measure start time for "irq safe" devices

The genpd_start_dev() routine used by pm_genpd_runtime_resume()
to put "irq safe" devices into the full power state measures the
time necessary to "start" the device and updates its PM QoS timing
data if necessary.  This may lead to a deadlock if the given device
is a clock source and genpd_start_dev() is invoked from within the
clock source's .enable() routine, which will happen if that routine
uses pm_runtime_get_sync(), for example, to ensure that the device
is operational.

For this reason, introduce a special routine analogous to
genpd_start_dev(), called genpd_start_dev_no_timing(), that doesn't
carry out the time measurement, and make pm_genpd_runtime_resume()
use it instead of genpd_start_dev() to power up "irq safe" devices.

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
drivers/base/power/domain.c