FAILED: patch "[PATCH] drm/amd: Fix hybrid sleep" failed to apply to 6.17-stable tree
Subsystems (3)
[email protected]
maintainerThe patch below does not apply to the 6.17-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-6.17.y
git checkout FETCH_HEAD
git cherry-pick -x 0a6e9e098fcc318fec0f45a05a5c4743a81a60d9
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2025101656-trailside-reabsorb-e368@gregkh' --subject-prefix 'PATCH 6.17.y' HEAD^..
Possible dependencies:
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 0a6e9e098fcc318fec0f45a05a5c4743a81a60d9 Mon Sep 17 00:00:00 2001
From: "Mario Limonciello (AMD)" <[email protected]>
Date: Thu, 25 Sep 2025 13:51:08 -0500
Subject: [PATCH] drm/amd: Fix hybrid sleep
[Why]
commit 530694f54dd5e ("drm/amdgpu: do not resume device in thaw for normal hibernation") optimized the flow for systems that are going into S4 where the power would be turned off. Basically the thaw() callback wouldn't resume the device if the hibernation image was successfully created since the system would be powered off.
This however isn't the correct flow for a system entering into s0i3 after the hibernation image is created. Some of the amdgpu callbacks have different behavior depending upon the intended state of the suspend.
[How]
Use pm_hibernation_mode_is_suspend() as an input to decide whether to run resume during thaw() callback.
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +1 -1
@@ -2665,7 +2665,7 @@ static int amdgpu_pmops_thaw(struct device *dev)struct drm_device *drm_dev =dev_get_drvdata (dev);/* do not resume device if it's normal hibernation */ -if (!pm_hibernate_is_recovering ()) +if (!pm_hibernate_is_recovering () && !pm_hibernation_mode_is_suspend ())return 0 ;return amdgpu_device_resume (drm_dev, true);
Sasha Levin
maintainerPATCH 1/2 PM: hibernate: Add pm_hibernation_mode_is_suspend()
From: "Mario Limonciello (AMD)" <[email protected]>
[ 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.
Stable-dep-of: 0a6e9e098fcc ("drm/amd: Fix hybrid sleep")
--- include/linux/suspend.h | 2 ++ kernel/power/hibernate.c | 11 +++++++++++ 2 files changed, 13 insertions(+)
include/linux/suspend.h +2 -0
@@ -276,6 +276,7 @@ extern void arch_suspend_enable_irqs(void);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_firmware(void) { return false; }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 ; }
kernel/power/hibernate.c +11 -0
@@ -80,6 +80,17 @@ static const struct platform_hibernation_ops *hibernation_ops;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 );
Signature · 1 line
2.51.0
Sasha Levin
maintainerPATCH 2/2 drm/amd: Fix hybrid sleep
From: "Mario Limonciello (AMD)" <[email protected]>
[ Upstream commit 0a6e9e098fcc318fec0f45a05a5c4743a81a60d9 ]
[Why]
commit 530694f54dd5e ("drm/amdgpu: do not resume device in thaw for normal hibernation") optimized the flow for systems that are going into S4 where the power would be turned off. Basically the thaw() callback wouldn't resume the device if the hibernation image was successfully created since the system would be powered off.
This however isn't the correct flow for a system entering into s0i3 after the hibernation image is created. Some of the amdgpu callbacks have different behavior depending upon the intended state of the suspend.
[How]
Use pm_hibernation_mode_is_suspend() as an input to decide whether to run resume during thaw() callback.
--- drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +1 -1
@@ -2665,7 +2665,7 @@ static int amdgpu_pmops_thaw(struct device *dev)struct drm_device *drm_dev =dev_get_drvdata (dev);/* do not resume device if it's normal hibernation */ -if (!pm_hibernate_is_recovering ()) +if (!pm_hibernate_is_recovering () && !pm_hibernation_mode_is_suspend ())return 0 ;return amdgpu_device_resume (drm_dev, true);
Signature · 1 line
2.51.0