From: "Mario Limonciello (AMD)" <superm1@kernel.org>
To: Alex Deucher <alexander.deucher@amd.com>,
"Rafael J . Wysocki" <rafael@kernel.org>
Cc: Samuel Zhang <guoqing.zhang@amd.com>,
amd-gfx@lists.freedesktop.org (open list:RADEON and AMDGPU DRM
DRIVERS),
linux-pm@vger.kernel.org (open list:HIBERNATION (aka Software
Suspend, aka swsusp)), Mario Limonciello <superm1@kernel.org>,
Ionut Nechita <ionut_n2001@yahoo.com>
Subject: [PATCH 1/3] PM: hibernate: Fix hybrid-sleep
Date: Wed, 24 Sep 2025 15:52:09 -0500 [thread overview]
Message-ID: <20250924205211.1059571-2-superm1@kernel.org> (raw)
In-Reply-To: <20250924205211.1059571-1-superm1@kernel.org>
Hybrid sleep will hibernate the system followed by running through
the suspend routine. Since both the hibernate and the suspend routine
will call pm_restrict_gfp_mask(), pm_restore_gfp_mask() must be called
before starting the suspend sequence.
Add an explicit call to pm_restore_gfp_mask() to power_down() before
the suspend sequence starts. Don't call pm_restore_gfp_mask() when
exiting suspend sequence it is already called:
```
power_down()
->suspend_devices_and_enter()
-->dpm_resume_end()
```
Reported-by: Ionut Nechita <ionut_n2001@yahoo.com>
Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/4573
Tested-by: Ionut Nechita <ionut_n2001@yahoo.com>
Fixes: 12ffc3b1513eb ("PM: Restrict swap use to later in the suspend sequence")
Signed-off-by: Mario Limonciello (AMD) <superm1@kernel.org>
---
kernel/power/hibernate.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/kernel/power/hibernate.c b/kernel/power/hibernate.c
index 2f66ab453823..1defe8081e64 100644
--- a/kernel/power/hibernate.c
+++ b/kernel/power/hibernate.c
@@ -695,6 +695,7 @@ static void power_down(void)
#ifdef CONFIG_SUSPEND
if (hibernation_mode == HIBERNATION_SUSPEND) {
+ pm_restore_gfp_mask();
error = suspend_devices_and_enter(mem_sleep_current);
if (error) {
hibernation_mode = hibernation_ops ?
@@ -862,7 +863,8 @@ int hibernate(void)
power_down();
}
in_suspend = 0;
- pm_restore_gfp_mask();
+ if (hibernation_mode != HIBERNATION_SUSPEND)
+ pm_restore_gfp_mask();
} else {
pm_pr_dbg("Hibernation image restored successfully.\n");
}
--
2.51.0
next prev parent reply other threads:[~2025-09-24 20:52 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-24 20:52 [PATCH 0/3] Fixes for hybrid sleep Mario Limonciello (AMD)
2025-09-24 20:52 ` Mario Limonciello (AMD) [this message]
2025-09-25 15:30 ` [PATCH 1/3] PM: hibernate: Fix hybrid-sleep kernel test robot
2025-09-24 20:52 ` [PATCH 2/3] PM: hibernate: Add pm_hibernation_mode_is_suspend() Mario Limonciello (AMD)
2025-09-25 15:30 ` kernel test robot
2025-09-24 20:52 ` [PATCH 3/3] drm/amd: Fix hybrid sleep Mario Limonciello (AMD)
2025-09-24 21:05 ` Deucher, Alexander
2025-09-25 13:56 ` [PATCH 0/3] Fixes for " Kenneth Crudup
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250924205211.1059571-2-superm1@kernel.org \
--to=superm1@kernel.org \
--cc=alexander.deucher@amd.com \
--cc=amd-gfx@lists.freedesktop.org \
--cc=guoqing.zhang@amd.com \
--cc=ionut_n2001@yahoo.com \
--cc=linux-pm@vger.kernel.org \
--cc=rafael@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.