On 14/11/16 11:12 PM, Max Staudt wrote:
> On 11/14/2016 02:46 AM, Michel Dänzer wrote:
>> On 11/11/16 02:21 AM, Max Staudt wrote:
>>> Hi,
>>>
>>> I have bisected a commit in v4.6 that fixes a freeze of the screen on
>>> DPMS sleep:
>>>
>>> 777e3cbc791f131806d9bf24b3325637c7fc228d drm/radeon: Switch to 
>>> drm_vblank_on/off
>>>
>>>
>>> When running 'xset dpms force off' in a GNOME session (I tested this on
>>> openSUSE Leap 42.2), sometimes the screen will freeze, sometimes it will
>>> not. It may take several tries.
>>>
>>> When it does freeze, the mouse can still be used, but clicking anything
>>> will (seem to?) have no effect. Typing in an open terminal still works,
>>> albeit the screen will still be frozen. Run "xterm" and the screen will
>>> unfreeze. Running "xlogo" does not unfreeze it.
>>
>> Does this still happen with current xf86-video-ati Git master?
> 
> 
> Hmm, good idea!
> 
> 
> I bisected this, and the problem goes away in this xf86-video-ati commit:
> 
> 1181b9c582f10b6c523e4b2988e2ce87ecf3d367 Enable DRI3 by default when building 
> for Xorg >= 1.18.3
> 
> 
> I tested this on Kabini.
> 
> 
> So... what about DRI2?

Does the attached kernel patch help with pre-4.6 kernels?


-- 
Earthling Michel Dänzer               |               http://www.amd.com
Libre software enthusiast             |             Mesa and X developer
diff --git a/drivers/gpu/drm/radeon/atombios_crtc.c b/drivers/gpu/drm/radeon/atombios_crtc.c
index 801dd60..3d41415 100644
--- a/drivers/gpu/drm/radeon/atombios_crtc.c
+++ b/drivers/gpu/drm/radeon/atombios_crtc.c
@@ -276,6 +276,7 @@ void atombios_crtc_dpms(struct drm_crtc *crtc, int mode)
 			atombios_enable_crtc_memreq(crtc, ATOM_ENABLE);
 		atombios_blank_crtc(crtc, ATOM_DISABLE);
 		drm_vblank_post_modeset(dev, radeon_crtc->crtc_id);
+		radeon_irq_set(rdev);
 		radeon_crtc_load_lut(crtc);
 		break;
 	case DRM_MODE_DPMS_STANDBY:
diff --git a/drivers/gpu/drm/radeon/radeon_legacy_crtc.c b/drivers/gpu/drm/radeon/radeon_legacy_crtc.c
index 32b338f..911efe5 100644
--- a/drivers/gpu/drm/radeon/radeon_legacy_crtc.c
+++ b/drivers/gpu/drm/radeon/radeon_legacy_crtc.c
@@ -332,6 +332,7 @@ static void radeon_crtc_dpms(struct drm_crtc *crtc, int mode)
 			WREG32_P(RADEON_CRTC_EXT_CNTL, crtc_ext_cntl, ~(mask | crtc_ext_cntl));
 		}
 		drm_vblank_post_modeset(dev, radeon_crtc->crtc_id);
+		radeon_irq_set(rdev);
 		radeon_crtc_load_lut(crtc);
 		break;
 	case DRM_MODE_DPMS_STANDBY:
_______________________________________________
amd-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to