aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/configs
diff options
context:
space:
mode:
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>2020-02-11 10:11:02 +0100
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2020-02-11 10:11:02 +0100
commite3728b50cd9be7d4b1469447cdf1feb93e3b7adb (patch)
tree446902616310615718c4615e9dbe1a1ea2e5a914 /kernel/configs
parentACPI: EC: Fix flushing of pending work (diff)
downloadlinux-dev-e3728b50cd9be7d4b1469447cdf1feb93e3b7adb.tar.xz
linux-dev-e3728b50cd9be7d4b1469447cdf1feb93e3b7adb.zip
ACPI: PM: s2idle: Avoid possible race related to the EC GPE
It is theoretically possible for the ACPI EC GPE to be set after the s2idle_ops->wake() called from s2idle_loop() has returned and before the subsequent pm_wakeup_pending() check is carried out. If that happens, the resulting wakeup event will cause the system to resume even though it may be a spurious one. To avoid that race, first make the ->wake() callback in struct platform_s2idle_ops return a bool value indicating whether or not to let the system resume and rearrange s2idle_loop() to use that value instad of the direct pm_wakeup_pending() call if ->wake() is present. Next, rework acpi_s2idle_wake() to process EC events and check pm_wakeup_pending() before re-arming the SCI for system wakeup to prevent it from triggering prematurely and add comments to that function to explain the rationale for the new code flow. Fixes: 56b991849009 ("PM: sleep: Simplify suspend-to-idle control flow") Cc: 5.4+ <stable@vger.kernel.org> # 5.4+ Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'kernel/configs')
0 files changed, 0 insertions, 0 deletions