Commit 0a6e9e09 authored by Mario Limonciello (AMD)'s avatar Mario Limonciello (AMD) Committed by Rafael J. Wysocki
Browse files

drm/amd: Fix hybrid sleep



[Why]
commit 530694f5 ("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: default avatarIonut Nechita <ionut_n2001@yahoo.com>
Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/4573


Tested-by: default avatarIonut Nechita <ionut_n2001@yahoo.com>
Fixes: 530694f5 ("drm/amdgpu: do not resume device in thaw for normal hibernation")
Acked-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Tested-by: default avatarKenneth Crudup <kenny@panix.com>
Signed-off-by: default avatarMario Limonciello (AMD) <superm1@kernel.org>
Cc: 6.17+ <stable@vger.kernel.org> # 6.17+: 495c8d35: PM: hibernate: Add pm_hibernation_mode_is_suspend()
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent 495c8d35
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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);