• Rafael J. Wysocki's avatar
    PM / s2idle: Invoke the ->wake() platform callback earlier · 87cbde8d
    Rafael J. Wysocki authored
    The role of the ->wake() platform callback for suspend-to-idle is to
    deal with possible spurious wakeups, among other things.  The ACPI
    implementation of it, acpi_s2idle_wake(), additionally checks the
    conditions for entering the Low Power S0 Idle state by the platform
    and reports the ones that have not been met.
    
    However, the ->wake() platform callback is invoked after calling
    dpm_noirq_resume_devices(), which means that the power states of some
    devices may have changed since s2idle_enter() returned, so some unmet
    Low Power S0 Idle conditions may be reported incorrectly as a result
    of that.
    
    To avoid these false positives, reorder the invocations of the
    dpm_noirq_resume_devices() routine and the ->wake() platform callback
    in s2idle_loop().
    
    Fixes: 726fb6b4 (ACPI / PM: Check low power idle constraints for debug only)
    Tested-by: default avatarSrinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    87cbde8d
suspend.c 15 KB