Suspend with s2idle or by the following steps cause screen frozen: # echo devices > /sys/power/pm_test # echo freeze > /sys/power/mem [ 289.625461] [drm:uvd_v1_0_ib_test [radeon]] *ERROR* radeon: fence wait timed out. [ 289.625494] [drm:radeon_ib_ring_tests [radeon]] *ERROR* radeon: failed testing IB on ring 5 (-110). The issue doesn't happen on traditional S3, probably because firmware or hardware provides extra power management. Inspired by Daniel Drake's patch [1] on amdgpu, using a similar approach can fix the issue. [1] https://patchwork.freedesktop.org/patch/335839/ Signed-off-by: Kai-Heng Feng <kai.heng.feng@xxxxxxxxxxxxx> --- drivers/gpu/drm/radeon/radeon_device.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c index 266e3cbbd09b..df823b9ad79f 100644 --- a/drivers/gpu/drm/radeon/radeon_device.c +++ b/drivers/gpu/drm/radeon/radeon_device.c @@ -33,6 +33,7 @@ #include <linux/slab.h> #include <linux/vga_switcheroo.h> #include <linux/vgaarb.h> +#include <linux/suspend.h> #include <drm/drm_cache.h> #include <drm/drm_crtc_helper.h> @@ -1643,6 +1644,8 @@ int radeon_suspend_kms(struct drm_device *dev, bool suspend, rdev->asic->asic_reset(rdev, true); pci_restore_state(dev->pdev); } else if (suspend) { + if (pm_suspend_no_platform()) + rdev->asic->asic_reset(rdev, true); /* Shut down the device */ pci_disable_device(dev->pdev); pci_set_power_state(dev->pdev, PCI_D3hot); -- 2.17.1 _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel