From: Rafael J. Wysocki Date: Sat, 16 Dec 2017 01:05:48 +0000 (+0100) Subject: Merge back PM core material for v4.16. X-Git-Tag: Ubuntu-5.2.0-15.16~5165^2~2^2~21 X-Git-Url: https://git.proxmox.com/?a=commitdiff_plain;h=c51a024e3913e9dbaf4dfcb9aaba825668a89ace;p=mirror_ubuntu-eoan-kernel.git Merge back PM core material for v4.16. --- c51a024e3913e9dbaf4dfcb9aaba825668a89ace diff --cc drivers/base/power/main.c index 08744b572af6,cd48b1c69167..6e8cc5de93fd --- a/drivers/base/power/main.c +++ b/drivers/base/power/main.c @@@ -525,21 -524,18 +524,33 @@@ static void dpm_watchdog_clear(struct d /*------------------------- Resume routines -------------------------*/ +/** + * dev_pm_skip_next_resume_phases - Skip next system resume phases for device. + * @dev: Target device. + * + * Make the core skip the "early resume" and "resume" phases for @dev. + * + * This function can be called by middle-layer code during the "noirq" phase of + * system resume if necessary, but not by device drivers. + */ +void dev_pm_skip_next_resume_phases(struct device *dev) +{ + dev->power.is_late_suspended = false; + dev->power.is_suspended = false; +} + + /** + * dev_pm_may_skip_resume - System-wide device resume optimization check. + * @dev: Target device. + * + * Checks whether or not the device may be left in suspend after a system-wide + * transition to the working state. + */ + bool dev_pm_may_skip_resume(struct device *dev) + { + return !dev->power.must_resume && pm_transition.event != PM_EVENT_RESTORE; + } + /** * device_resume_noirq - Execute a "noirq resume" callback for given device. * @dev: Device to handle. diff --cc include/linux/pm.h index 492ed473ba7e,b5a40b713e9e..e723b78d8357 --- a/include/linux/pm.h +++ b/include/linux/pm.h @@@ -765,7 -772,7 +772,8 @@@ extern int pm_generic_poweroff_late(str extern int pm_generic_poweroff(struct device *dev); extern void pm_generic_complete(struct device *dev); +extern void dev_pm_skip_next_resume_phases(struct device *dev); + extern bool dev_pm_may_skip_resume(struct device *dev); extern bool dev_pm_smart_suspend_and_suspended(struct device *dev); #else /* !CONFIG_PM_SLEEP */