]> git.baikalelectronics.ru Git - kernel.git/commit
PM Sleep: Do not extend wakeup paths to devices with ignore_children set
authorRafael J. Wysocki <rjw@sisk.pl>
Thu, 17 Nov 2011 20:39:33 +0000 (21:39 +0100)
committerRafael J. Wysocki <rjw@sisk.pl>
Thu, 17 Nov 2011 20:39:33 +0000 (21:39 +0100)
commit4a58d122872cf63e27f4edb3ad74c987bfbeadf6
tree9615636b05b04035af0c8eb11ee9711aa2b868a6
parent5dd3b6748d680d0613a709343340064aac3fff38
PM Sleep: Do not extend wakeup paths to devices with ignore_children set

Commit 67e90c4e33b2a08181873424bde5b69456865b02 (PM / Sleep: Mark
devices involved in wakeup signaling during suspend) introduced
the power.wakeup_path field in struct dev_pm_info to mark devices
whose children are enabled to wake up the system from sleep states,
so that power domains containing the parents that provide their
children with wakeup power and/or relay their wakeup signals are not
turned off.  Unfortunately, that introduced a PM regression on SH7372
whose power consumption in the system "memory sleep" state increased
as a result of it, because it prevented the power domain containing
the I2C controller from being turned off when some children of that
controller were enabled to wake up the system, although the
controller was not necessary for them to signal wakeup.

To fix this issue use the observation that devices whose
power.ignore_children flag is set for runtime PM should be treated
analogously during system suspend.  Namely, they shouldn't be
included in wakeup paths going through their children.  Since the
SH7372 I2C controller's power.ignore_children flag is set, doing so
will restore the previous behavior of that SOC.

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Acked-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/base/power/main.c
include/linux/device.h
include/linux/pm.h
include/linux/pm_runtime.h