Bug 31331

Summary: 2.6.36 monitor flickering regression.
Product: DRI Reporter: Roman Elshin <roman.elshin>
Component: DRM/IntelAssignee: Chris Wilson <chris>
Status: CLOSED NOTABUG QA Contact:
Severity: normal    
Priority: medium CC: jbarnes
Version: unspecified   
Hardware: Other   
OS: All   
i915 platform: i915 features:
Description Flags
dmesg output
possible fix none

Description Roman Elshin 2010-11-02 10:13:36 UTC
Created attachment 39985 [details]
dmesg output

The system is Lenovo x200s(GM45 video) + dock + 1920x1200 monitor connected to dock station DP via passive DP-DVI adapter, internal display are off, external are used as a primary with the native resolution. From time to time monitor goes black (as no signal) and immediately return to the normal state, has no such problem (but it unusable for me without drm_kms_helper.poll=N workaround).
Comment 1 Chris Wilson 2010-12-05 03:57:11 UTC
Did you try the drm_kms_helper.poll=N workaround with 2.6.36 as well? The periodic nature would seem to correlate with the connection polling.
Comment 2 Roman Elshin 2010-12-06 05:24:18 UTC
ops..., now I think that it always was with workaround, my /etc/rc.local

#!/bin/sh -e
if [ -e /sys/module/drm_kms_helper/parameters/poll ]; then
   echo "N" > /sys/module/drm_kms_helper/parameters/poll
exit 0
Comment 3 Roman Elshin 2010-12-25 11:08:16 UTC
Created attachment 41441 [details] [review]
possible fix

it revert

commit 81a14b46846fea0741902e8d8dfcc6c6c78154c8
drm/i915/sdvo: Set sync polarity based on actual mode

commit b599c0bca1e08a89a7fc4305bc84f4be30ada368
drm/i915/hdmi: Set sync polarity based on actual mode

commit d6d952689a48375afb97f619f77d548f16d45a92
drm/i915/pch: Set transcoder sync polarity for DP based on actual mode
Comment 4 Chris Wilson 2010-12-25 15:04:27 UTC
Ah, so you are saying you have a broken EDID.
Comment 5 Roman Elshin 2010-12-26 00:04:38 UTC
from attached dmesg :
Modeline 10:"1920x1200" 60 154000 1920 1968 2000 2080 1200 1203 1209 1235 0x48 0x9

0x9 - EDID tell that HSYNC + and VSYNC - , but it must be  HSYNC +  and VSYNC + ?
Comment 6 Roman Elshin 2010-12-26 01:58:50 UTC
may be this is monitor problem, there was strange behaviour with old radeon 9600 agp ( https://bugs.freedesktop.org/show_bug.cgi?id=28935 ), but it work fine with newer radeon hardware (has been tested with rs790, rv740), currently it work with rv530 connected to the other input.
Comment 7 Chris Wilson 2010-12-26 02:28:29 UTC

commit d6d952689a48375afb97f619f77d548f16d45a92
drm/i915/pch: Set transcoder sync polarity for DP based on actual mode

is the relevant commit. As I'm being lazy does inverting the logic for the sync modes make any different, so you would have "intel_dp->DP |= DP_SYNC_VS_HIGH;" only.
Comment 8 Roman Elshin 2010-12-26 04:38:24 UTC
Only this does not help. 

diff -urN a/drivers/gpu/drm/i915/intel_display.c 
--- a/drivers/gpu/drm/i915/intel_display.c	2010-12-10 01:17:27.000000000 +0300
+++ b/drivers/gpu/drm/i915/intel_display.c	2010-12-25 19:28:53.000000000 +0300
@@ -2043,15 +2043,11 @@
 				int reg;
 				reg = I915_READ(trans_dp_ctl);
-				reg &= ~(TRANS_DP_PORT_SEL_MASK |
+				reg &= ~TRANS_DP_PORT_SEL_MASK;
-				if (crtc->mode.flags & DRM_MODE_FLAG_PHSYNC)
-				      reg |= TRANS_DP_HSYNC_ACTIVE_HIGH;
-				if (crtc->mode.flags & DRM_MODE_FLAG_PVSYNC)
-				      reg |= TRANS_DP_VSYNC_ACTIVE_HIGH;
 				switch (intel_trans_dp_port_sel(crtc)) {
 				case PCH_DP_B:

Is it diff right?
Comment 9 Roman Elshin 2011-04-01 22:43:24 UTC
Using other DVI cable seems to solve this problem (it works fine without any quirks), I am sorry for noise.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.