[Public]

> -----Original Message-----
> From: amd-gfx <[email protected]> On Behalf Of Mario
> Limonciello (AMD)
> Sent: Wednesday, September 24, 2025 4:52 PM
> To: Deucher, Alexander <[email protected]>; Rafael J . Wysocki
> <[email protected]>
> Cc: Zhang, GuoQing (Sam) <[email protected]>; open list:RADEON and
> AMDGPU DRM DRIVERS <[email protected]>; open
> list:HIBERNATION (aka Software Suspend, aka swsusp) <linux-
> [email protected]>; Mario Limonciello <[email protected]>; Ionut Nechita
> <[email protected]>
> Subject: [PATCH 3/3] 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.
>
> Reported-by: Ionut Nechita <[email protected]>
> Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/4573
> Tested-by: Ionut Nechita <[email protected]>
> Fixes: 530694f54dd5e ("drm/amdgpu: do not resume device in thaw for normal
> hibernation")
> Signed-off-by: Mario Limonciello (AMD) <[email protected]>

Series is:
Acked-by: Alex Deucher <[email protected]>
Feel free to take it through the Linux pm tree.

Alex

> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> index 395c6be901ce..dcea66aadfa3 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> @@ -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);
> --
> 2.51.0

Reply via email to