summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRiwen Lu <luriwen@kylinos.cn>2025-11-13 09:26:38 +0800
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2025-11-14 17:09:16 +0100
commita10ad1b104024efe0a01d21ce7c08002cf4034c4 (patch)
tree15c35044e84408189483f6c1face052446cd84c6
parent7b9725b3d1222c60571e8117f15fd8057b38ee83 (diff)
PM: suspend: Make pm_test delay interruptible by wakeup events
Modify the suspend_test() function to allow the test delay to be interrupted by wakeup events. This improves the responsiveness of the system during suspend testing when wakeup events occur, allowing the suspend process to proceed without waiting for the full test delay to complete when wakeup events are detected. Additionally, using msleep() instead of mdelay() avoids potential soft lockup "CPU stuck" issues when long test delays are configured. Co-developed-by: xiongxin <xiongxin@kylinos.cn> Signed-off-by: xiongxin <xiongxin@kylinos.cn> Signed-off-by: Riwen Lu <luriwen@kylinos.cn> [ rjw: Changelog edits ] Link: https://patch.msgid.link/20251113012638.1362013-1-luriwen@kylinos.cn Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
-rw-r--r--kernel/power/suspend.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/kernel/power/suspend.c b/kernel/power/suspend.c
index b4ca17c2fecf..1c2f777da367 100644
--- a/kernel/power/suspend.c
+++ b/kernel/power/suspend.c
@@ -344,10 +344,14 @@ MODULE_PARM_DESC(pm_test_delay,
static int suspend_test(int level)
{
#ifdef CONFIG_PM_DEBUG
+ int i;
+
if (pm_test_level == level) {
pr_info("suspend debug: Waiting for %d second(s).\n",
pm_test_delay);
- mdelay(pm_test_delay * 1000);
+ for (i = 0; i < pm_test_delay && !pm_wakeup_pending(); i++)
+ msleep(1000);
+
return 1;
}
#endif /* !CONFIG_PM_DEBUG */