[2025-10-20 10:36] gregkh linuxfoundation ! org:
This is a note to let you know that I've just added the patch titled
PM: hibernate: Add pm_hibernation_mode_is_suspend()to the 6.17-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git%3Ba=su...
The filename of the patch is: pm-hibernate-add-pm_hibernation_mode_is_suspend.patch and it can be found in the queue-6.17 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let stable@vger.kernel.org know about it.
From stable+bounces-187839-greg=kroah.com@vger.kernel.org Sat Oct 18 15:51:25 2025 From: Sasha Levin sashal@kernel.org Date: Sat, 18 Oct 2025 09:51:01 -0400 Subject: PM: hibernate: Add pm_hibernation_mode_is_suspend() To: stable@vger.kernel.org Cc: "Mario Limonciello (AMD)" superm1@kernel.org, Ionut Nechita ionut_n2001@yahoo.com, Kenneth Crudup kenny@panix.com, Alex Deucher alexander.deucher@amd.com, "Rafael J. Wysocki" rafael.j.wysocki@intel.com, Sasha Levin sashal@kernel.org Message-ID: 20251018135102.711457-1-sashal@kernel.org
From: "Mario Limonciello (AMD)" superm1@kernel.org
[ Upstream commit 495c8d35035edb66e3284113bef01f3b1b843832 ]
Some drivers have different flows for hibernation and suspend. If the driver opportunistically will skip thaw() then it needs a hint to know what is happening after the hibernate.
Introduce a new symbol pm_hibernation_mode_is_suspend() that drivers can call to determine if suspending the system for this purpose.
Tested-by: Ionut Nechita ionut_n2001@yahoo.com Tested-by: Kenneth Crudup kenny@panix.com Acked-by: Alex Deucher alexander.deucher@amd.com Signed-off-by: Mario Limonciello (AMD) superm1@kernel.org Signed-off-by: Rafael J. Wysocki rafael.j.wysocki@intel.com Stable-dep-of: 0a6e9e098fcc ("drm/amd: Fix hybrid sleep") Signed-off-by: Sasha Levin sashal@kernel.org Signed-off-by: Greg Kroah-Hartman gregkh@linuxfoundation.org
include/linux/suspend.h | 2 ++ kernel/power/hibernate.c | 11 +++++++++++ 2 files changed, 13 insertions(+)
--- a/include/linux/suspend.h +++ b/include/linux/suspend.h @@ -276,6 +276,7 @@ extern void arch_suspend_enable_irqs(voi extern int pm_suspend(suspend_state_t state); extern bool sync_on_suspend_enabled; +bool pm_hibernation_mode_is_suspend(void); #else /* !CONFIG_SUSPEND */ #define suspend_valid_only_mem NULL @@ -288,6 +289,7 @@ static inline bool pm_suspend_via_firmwa static inline bool pm_resume_via_firmware(void) { return false; } static inline bool pm_suspend_no_platform(void) { return false; } static inline bool pm_suspend_default_s2idle(void) { return false; } +static inline bool pm_hibernation_mode_is_suspend(void) { return false; } static inline void suspend_set_ops(const struct platform_suspend_ops *ops) {} static inline int pm_suspend(suspend_state_t state) { return -ENOSYS; } --- a/kernel/power/hibernate.c +++ b/kernel/power/hibernate.c @@ -80,6 +80,17 @@ static const struct platform_hibernation static atomic_t hibernate_atomic = ATOMIC_INIT(1); +#ifdef CONFIG_SUSPEND +/**
- pm_hibernation_mode_is_suspend - Check if hibernation has been set to suspend
- */
+bool pm_hibernation_mode_is_suspend(void) +{
- return hibernation_mode == HIBERNATION_SUSPEND;
+} +EXPORT_SYMBOL_GPL(pm_hibernation_mode_is_suspend); +#endif
bool hibernate_acquire(void) { return atomic_add_unless(&hibernate_atomic, -1, 0);
Patches currently in stable-queue which might be from sashal@kernel.org are
queue-6.17/drm-amd-fix-hybrid-sleep.patch queue-6.17/usb-gadget-introduce-free_usb_request-helper.patch queue-6.17/pm-hibernate-add-pm_hibernation_mode_is_suspend.patch queue-6.17/usb-gadget-store-endpoint-pointer-in-usb_request.patch queue-6.17/media-nxp-imx8-isi-m2m-fix-streaming-cleanup-on-release.patch queue-6.17/usb-gadget-f_rndis-refactor-bind-path-to-use-__free.patch
Hi,
I kept getting "ERROR: modpost: "pm_hibernation_mode_is_suspend" [drivers/gpu/drm/amd/amdgpu/amdgpu.ko] undefined!" when trying to build a 6.17.4 kernel with all the patches from queue-6.17 applied on top (from the stable-queue git repo at commit id 6aceec507fd0d3cefa7cac227eaf897edf09bf32). That build-time error is gone and the resulting kernel boots/runs fine on various x86_64 machines and VMs since I've removed/omitted both this patch and queue-6.17/drm-amd-fix-hybrid-sleep.patch.
I'm not sure if omitting queue-6.17/drm-amd-fix-hybrid-sleep.patch would have been sufficient, but both patches are part of the same patch set anyway.
Sadly, I haven't been able to figure out what about the changes actually causes the issue. My first guess was that if CONFIG_SUSPEND is not selected/enabled, then the whole pm_hibernation_mode_is_suspend() function and the corresponding export symbol would be missing. However, the kernel that I was trying to build *does* have CONFIG_SUSPEND=y in its config, so this shouldn't be the cause…
Regards Pascal
On 10/21/2025 3:43 PM, Pascal Ernster wrote:
[2025-10-20 10:36] gregkh linuxfoundation ! org:
This is a note to let you know that I've just added the patch titled
PM: hibernate: Add pm_hibernation_mode_is_suspend()to the 6.17-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git%3Ba=su...
The filename of the patch is: pm-hibernate-add-pm_hibernation_mode_is_suspend.patch and it can be found in the queue-6.17 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let stable@vger.kernel.org know about it.
From stable+bounces-187839-greg=kroah.com@vger.kernel.org Sat Oct 18 15:51:25 2025 From: Sasha Levin sashal@kernel.org Date: Sat, 18 Oct 2025 09:51:01 -0400 Subject: PM: hibernate: Add pm_hibernation_mode_is_suspend() To: stable@vger.kernel.org Cc: "Mario Limonciello (AMD)" superm1@kernel.org, Ionut Nechita ionut_n2001@yahoo.com, Kenneth Crudup kenny@panix.com, Alex Deucher alexander.deucher@amd.com, "Rafael J. Wysocki" rafael.j.wysocki@intel.com, Sasha Levin sashal@kernel.org Message-ID: 20251018135102.711457-1-sashal@kernel.org
From: "Mario Limonciello (AMD)" superm1@kernel.org
[ Upstream commit 495c8d35035edb66e3284113bef01f3b1b843832 ]
Some drivers have different flows for hibernation and suspend. If the driver opportunistically will skip thaw() then it needs a hint to know what is happening after the hibernate.
Introduce a new symbol pm_hibernation_mode_is_suspend() that drivers can call to determine if suspending the system for this purpose.
Tested-by: Ionut Nechita ionut_n2001@yahoo.com Tested-by: Kenneth Crudup kenny@panix.com Acked-by: Alex Deucher alexander.deucher@amd.com Signed-off-by: Mario Limonciello (AMD) superm1@kernel.org Signed-off-by: Rafael J. Wysocki rafael.j.wysocki@intel.com Stable-dep-of: 0a6e9e098fcc ("drm/amd: Fix hybrid sleep") Signed-off-by: Sasha Levin sashal@kernel.org Signed-off-by: Greg Kroah-Hartman gregkh@linuxfoundation.org
include/linux/suspend.h | 2 ++ kernel/power/hibernate.c | 11 +++++++++++ 2 files changed, 13 insertions(+)
--- a/include/linux/suspend.h +++ b/include/linux/suspend.h @@ -276,6 +276,7 @@ extern void arch_suspend_enable_irqs(voi extern int pm_suspend(suspend_state_t state); extern bool sync_on_suspend_enabled; +bool pm_hibernation_mode_is_suspend(void); #else /* !CONFIG_SUSPEND */ #define suspend_valid_only_mem NULL @@ -288,6 +289,7 @@ static inline bool pm_suspend_via_firmwa static inline bool pm_resume_via_firmware(void) { return false; } static inline bool pm_suspend_no_platform(void) { return false; } static inline bool pm_suspend_default_s2idle(void) { return false; } +static inline bool pm_hibernation_mode_is_suspend(void) { return false; } static inline void suspend_set_ops(const struct platform_suspend_ops *ops) {} static inline int pm_suspend(suspend_state_t state) { return -ENOSYS; } --- a/kernel/power/hibernate.c +++ b/kernel/power/hibernate.c @@ -80,6 +80,17 @@ static const struct platform_hibernation static atomic_t hibernate_atomic = ATOMIC_INIT(1); +#ifdef CONFIG_SUSPEND +/**
- pm_hibernation_mode_is_suspend - Check if hibernation has been set to suspend
- */
+bool pm_hibernation_mode_is_suspend(void) +{
- return hibernation_mode == HIBERNATION_SUSPEND;
+} +EXPORT_SYMBOL_GPL(pm_hibernation_mode_is_suspend); +#endif
- bool hibernate_acquire(void) { return atomic_add_unless(&hibernate_atomic, -1, 0);
Patches currently in stable-queue which might be from sashal@kernel.org are
queue-6.17/drm-amd-fix-hybrid-sleep.patch queue-6.17/usb-gadget-introduce-free_usb_request-helper.patch queue-6.17/pm-hibernate-add-pm_hibernation_mode_is_suspend.patch queue-6.17/usb-gadget-store-endpoint-pointer-in-usb_request.patch queue-6.17/media-nxp-imx8-isi-m2m-fix-streaming-cleanup-on-release.patch queue-6.17/usb-gadget-f_rndis-refactor-bind-path-to-use-__free.patch
Hi,
I kept getting "ERROR: modpost: "pm_hibernation_mode_is_suspend" [drivers/gpu/drm/amd/amdgpu/amdgpu.ko] undefined!" when trying to build a 6.17.4 kernel with all the patches from queue-6.17 applied on top (from the stable-queue git repo at commit id 6aceec507fd0d3cefa7cac227eaf897edf09bf32). That build-time error is gone and the resulting kernel boots/runs fine on various x86_64 machines and VMs since I've removed/omitted both this patch and queue-6.17/drm-amd-fix-hybrid-sleep.patch.
I'm not sure if omitting queue-6.17/drm-amd-fix-hybrid-sleep.patch would have been sufficient, but both patches are part of the same patch set anyway.
Sadly, I haven't been able to figure out what about the changes actually causes the issue. My first guess was that if CONFIG_SUSPEND is not selected/enabled, then the whole pm_hibernation_mode_is_suspend() function and the corresponding export symbol would be missing. However, the kernel that I was trying to build *does* have CONFIG_SUSPEND=y in its config, so this shouldn't be the cause…
Regards Pascal
Are you cleaning your tree between builds?
[2025-10-21 22:45] Mario Limonciello (AMD) (kernel.org):
Are you cleaning your tree between builds?
Yes.
I'm building custom kernel packages in a clean chroot for my private package repo. The kernel config and the PKGBUILD can be found here:
https://remotehost.online/linux-6.17.4/debug2/config https://remotehost.online/linux-6.17.4/debug2/PKGBUILD
Here's a tarball that contains the PKGBUILD, the config, and all source files that I used:
https://remotehost.online/linux-6.17.4/debug2/linux-hardened-6.17.4.hardened...
Here's a log of stdout and stderr of the build process:
https://remotehost.online/linux-6.17.4/debug2/stdout_stderr_combined.log
Here's a fixed PKGBUILD that I used successfully to build my kernel packages:
https://remotehost.online/linux-6.17.4/debug2/PKGBUILD.fixed
The only difference is that I've commented out the two patches from your patch set, and removed the corresponding sha256 sums.
Regards Pascal
On 10/21/2025 4:08 PM, Pascal Ernster wrote:
[2025-10-21 22:45] Mario Limonciello (AMD) (kernel.org):
Are you cleaning your tree between builds?
Yes.
I'm building custom kernel packages in a clean chroot for my private package repo. The kernel config and the PKGBUILD can be found here:
https://remotehost.online/linux-6.17.4/debug2/config https://remotehost.online/linux-6.17.4/debug2/PKGBUILD
Here's a tarball that contains the PKGBUILD, the config, and all source files that I used:
https://remotehost.online/linux-6.17.4/debug2/linux-hardened-6.17.4.hardened...
Here's a log of stdout and stderr of the build process:
https://remotehost.online/linux-6.17.4/debug2/stdout_stderr_combined.log
Here's a fixed PKGBUILD that I used successfully to build my kernel packages:
https://remotehost.online/linux-6.17.4/debug2/PKGBUILD.fixed
The only difference is that I've commented out the two patches from your patch set, and removed the corresponding sha256 sums.
Regards Pascal
It looks to me that you have CONFIG_HIBERNATE_CALLBACKS set but not CONFIG_HIBERNATION set.
How does this happen? HIBERNATE_CALLBACKS is hidden, and it's only selected by CONFIG_HIBERNATE.
The fix for now for you is to either turn off CONFIG_HIBERNATE_CALLBACKS or turn on CONFIG_HIBERNATION.
On 10/21/2025 4:19 PM, Mario Limonciello (AMD) (kernel.org) wrote:
On 10/21/2025 4:08 PM, Pascal Ernster wrote:
[2025-10-21 22:45] Mario Limonciello (AMD) (kernel.org):
Are you cleaning your tree between builds?
Yes.
I'm building custom kernel packages in a clean chroot for my private package repo. The kernel config and the PKGBUILD can be found here:
https://remotehost.online/linux-6.17.4/debug2/config https://remotehost.online/linux-6.17.4/debug2/PKGBUILD
Here's a tarball that contains the PKGBUILD, the config, and all source files that I used:
https://remotehost.online/linux-6.17.4/debug2/linux- hardened-6.17.4.hardened0-0.src.tar.zst
Here's a log of stdout and stderr of the build process:
https://remotehost.online/linux-6.17.4/debug2/stdout_stderr_combined.log
Here's a fixed PKGBUILD that I used successfully to build my kernel packages:
https://remotehost.online/linux-6.17.4/debug2/PKGBUILD.fixed
The only difference is that I've commented out the two patches from your patch set, and removed the corresponding sha256 sums.
Regards Pascal
It looks to me that you have CONFIG_HIBERNATE_CALLBACKS set but not CONFIG_HIBERNATION set.
How does this happen? HIBERNATE_CALLBACKS is hidden, and it's only selected by CONFIG_HIBERNATE.
The fix for now for you is to either turn off CONFIG_HIBERNATE_CALLBACKS or turn on CONFIG_HIBERNATION.
Alternatively does picking https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?i... help your issue?
[2025-10-21 23:34] Mario Limonciello (AMD) (kernel.org):
On 10/21/2025 4:19 PM, Mario Limonciello (AMD) (kernel.org) wrote:
It looks to me that you have CONFIG_HIBERNATE_CALLBACKS set but not CONFIG_HIBERNATION set.
How does this happen? HIBERNATE_CALLBACKS is hidden, and it's only selected by CONFIG_HIBERNATE.
Excerpt from "make menuconfig":
│ Symbol: HIBERNATE_CALLBACKS [=y] │ Type : bool │ Defined at kernel/power/Kconfig:35 │ Selected by [y]: │ - XEN_SAVE_RESTORE [=y] && HYPERVISOR_GUEST [=y] && XEN [=y] │ Selected by [n]: │ - HIBERNATION [=n] && SWAP [=y] && ARCH_HIBERNATION_POSSIBLE [=y]
The fix for now for you is to either turn off CONFIG_HIBERNATE_CALLBACKS or turn on CONFIG_HIBERNATION.
Alternatively does picking https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?i... help your issue?
Thanks for the hint! :)
I'll give that patch a try, but compiling will take a while.
Regards Pascal
[2025-10-21 23:34] Mario Limonciello (AMD) (kernel.org):
Alternatively does picking https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?i... help your issue?
Thanks again, this patch does indeed fix the build issue for me :)
Regards Pascal
On Wed, Oct 22, 2025 at 05:52:17AM +0200, Pascal Ernster wrote:
[2025-10-21 23:34] Mario Limonciello (AMD) (kernel.org):
Alternatively does picking https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?i... help your issue?
Thanks again, this patch does indeed fix the build issue for me :)
My fault, I should have noticed that this was required, now picked up, thanks!
greg k-h
linux-stable-mirror@lists.linaro.org