Bug 22264

Summary: [945GM Macbook] Disabling LVDS corrupts output on TMDS-1
Product: xorg Reporter: Jacob Hart <jacob.hart+xorg>
Component: Driver/intelAssignee: Jesse Barnes <jbarnes>
Status: RESOLVED FIXED QA Contact: Xorg Project Team <xorg-team>
Severity: major    
Priority: high CC: screwtape
Version: 7.4 (2008.09)Keywords: NEEDINFO
Hardware: x86-64 (AMD64)   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:
Attachments:
Description Flags
xorg.conf
none
full output of xrandr -q --verbose
none
Log file with underruns none

Description Jacob Hart 2009-06-12 20:38:46 UTC
Disabling LVDS output causes corruption of the output on TMDS-1.  When this occurs the image generated on TMDS-1 looks like it's rolling or tearing, like a CRT does when it's set to a refresh rate it can't handle (see http://www.phoronix.net/image.php?id=intel_uxa&image=intel_uxa_corrupt1 for an example).

Some modes cause the corruption and others don't.  To reproduce the problem, I set TMDS-1 to an appropriate mode from the list below and then disable LVDS at the command line using "xrandr --output LVDS --off"

Modes that cause corruption are:

  1920x1200 (0x40)  154.0MHz +HSync -VSync *current +preferred                  
        h: width  1920 start 1968 end 2000 total 2080 skew    0 clock   74.0KHz 
        v: height 1200 start 1203 end 1209 total 1235           clock   60.0Hz  
  1600x1200 (0x41)  162.0MHz +HSync +VSync                                      
        h: width  1600 start 1664 end 1856 total 2160 skew    0 clock   75.0KHz 
        v: height 1200 start 1201 end 1204 total 1250           clock   60.0Hz  
  1680x1050 (0x42)  119.0MHz +HSync -VSync                                      
        h: width  1680 start 1728 end 1760 total 1840 skew    0 clock   64.7KHz 
        v: height 1050 start 1053 end 1059 total 1080           clock   59.9Hz  
  1280x1024 (0x43)  135.0MHz +HSync +VSync                                      
        h: width  1280 start 1296 end 1440 total 1688 skew    0 clock   80.0KHz 
        v: height 1024 start 1025 end 1028 total 1066           clock   75.0Hz  
  1280x1024 (0x44)  108.0MHz +HSync +VSync                                      
        h: width  1280 start 1328 end 1440 total 1688 skew    0 clock   64.0KHz 
        v: height 1024 start 1025 end 1028 total 1066           clock   60.0Hz  
  1152x864 (0x47)  108.0MHz +HSync +VSync                                       
        h: width  1152 start 1216 end 1344 total 1600 skew    0 clock   67.5KHz 
        v: height  864 start  865 end  868 total  900           clock   75.0Hz  


The remaining modes are ok:

  1440x900 (0x45)   88.8MHz +HSync -VSync                                       
        h: width  1440 start 1488 end 1520 total 1600 skew    0 clock   55.5KHz 
        v: height  900 start  903 end  909 total  926           clock   59.9Hz  
  1280x800 (0x46)   71.0MHz +HSync -VSync                                       
        h: width  1280 start 1328 end 1360 total 1440 skew    0 clock   49.3KHz 
        v: height  800 start  803 end  809 total  823           clock   59.9Hz  
  1152x720 (0x48)   67.3MHz -HSync +VSync                                       
        h: width  1152 start 1208 end 1328 total 1504 skew    0 clock   44.8KHz 
        v: height  720 start  721 end  724 total  746           clock   60.0Hz  
  1024x768 (0x49)   78.8MHz +HSync +VSync                                       
        h: width  1024 start 1040 end 1136 total 1312 skew    0 clock   60.0KHz 
        v: height  768 start  769 end  772 total  800           clock   75.0Hz  
  1024x768 (0x4a)   65.0MHz -HSync -VSync                                       
        h: width  1024 start 1048 end 1184 total 1344 skew    0 clock   48.4KHz 
        v: height  768 start  771 end  777 total  806           clock   60.0Hz  
  832x624 (0x4b)   57.3MHz -HSync -VSync                                        
        h: width   832 start  864 end  928 total 1152 skew    0 clock   49.7KHz 
        v: height  624 start  625 end  628 total  667           clock   74.6Hz  
  800x600 (0x4c)   49.5MHz +HSync +VSync                                        
        h: width   800 start  816 end  896 total 1056 skew    0 clock   46.9KHz 
        v: height  600 start  601 end  604 total  625           clock   75.0Hz  
  800x600 (0x4d)   40.0MHz +HSync +VSync                                        
        h: width   800 start  840 end  968 total 1056 skew    0 clock   37.9KHz 
        v: height  600 start  601 end  605 total  628           clock   60.3Hz  
  640x480 (0x4e)   31.5MHz -HSync -VSync                                        
        h: width   640 start  656 end  720 total  840 skew    0 clock   37.5KHz 
        v: height  480 start  481 end  484 total  500           clock   75.0Hz  
  640x480 (0x4f)   25.2MHz -HSync -VSync
        h: width   640 start  656 end  752 total  800 skew    0 clock   31.5KHz
        v: height  480 start  490 end  492 total  525           clock   59.9Hz
  720x400 (0x50)   28.3MHz -HSync +VSync
        h: width   720 start  738 end  846 total  900 skew    0 clock   31.5KHz
        v: height  400 start  412 end  414 total  449           clock   70.1Hz

The output corruption is accompanied by underruns reported in the log file with many lines like the following:

(EE) intel(0): underrun on pipe A!

My system is Ubuntu 9.04 with intel driver reverted to 2.4.1 (I had poor compositing performance with the stock driver from Jaunty, which also exhibits the described behaviour).  I have also tried the latest version in xorg-edgers ppa 2.7.99.901+git20090611 and can confirm the problem occurs in this version as well.
Comment 1 Jacob Hart 2009-06-12 20:39:59 UTC
Created attachment 26743 [details]
xorg.conf
Comment 2 Jacob Hart 2009-06-12 20:40:36 UTC
Created attachment 26744 [details]
full output of xrandr -q --verbose
Comment 3 Jacob Hart 2009-06-12 20:41:49 UTC
Created attachment 26745 [details]
Log file with underruns
Comment 4 Jesse Barnes 2009-06-23 18:28:40 UTC
Still happen with edgers bits and a more recent kernel from edgers too?
Comment 5 Tim Allen 2009-07-03 02:28:43 UTC
I reproduced a problem very much like this one in Ubuntu Karmic Alpha 2, which I believe uses kernel 2.6.30 and version 2.7.99 of the Intel driver.

The Ubuntu bug is here, with various logs and screenshots attached: https://bugs.launchpad.net/bugs/377598
Comment 6 Jesse Barnes 2009-07-15 15:26:50 UTC
Hm, if it really is underruns, then it may be fixed by a recent kernel commit (this assumes you're running KMS):

commit dff33cfcefa31c30b72c57f44586754ea9e8f3e2
Author: Jesse Barnes <jbarnes@virtuousgeek.org>
Date:   Tue Jul 14 10:15:56 2009 -0700

    drm/i915: FIFO watermark calculation fixes
Comment 7 Jesse Barnes 2009-08-17 18:16:43 UTC
Ok, marking as fixed... Please reopen if you see it again.

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.