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>
This commit is contained in:
Riwen Lu 2025-11-13 09:26:38 +08:00 committed by Rafael J. Wysocki
parent 7b9725b3d1
commit a10ad1b104
1 changed files with 5 additions and 1 deletions

View File

@ -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 */