Bug 27816

Summary: DVI corrupted output on dual setup VGA + DVI
Product: xorg Reporter: untitled.no4
Component: Driver/RadeonAssignee: xf86-video-ati maintainers <xorg-driver-ati>
Status: RESOLVED INVALID QA Contact: Xorg Project Team <xorg-team>
Severity: normal    
Priority: medium    
Version: unspecified   
Hardware: x86-64 (AMD64)   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:
Attachments:
Description Flags
Xorg log
none
dmesg file
none
Image showing the two screens displaying a text none

Description untitled.no4 2010-04-23 06:27:30 UTC
Created attachment 35255 [details] [review]
Xorg log

I have a Thinkpad T500 with ATI HD3650 which I use with a dock and have two identical Lenovo monitors connected, one to the VGA output and the other to DVI.

My problem is that if X starts with both monitors connected the DVI monitor's output is corrupted (image attached). If disconnect the VGA screen when starting the computer then the DVI output displays correctly and I can then connect the VGA monitor and use xrandr and to set it up. The issue is not present when using the fglrx driver.

I am currently running Kubuntu Lucid with xorg-edgers PPA enabled and with mainline kernel .34 RC5, but this is also the case with Karmic or with supported xorg and kernel. I don't have an xorg.conf file but I did try to use xorg.conf file generated by fglrx (changing the driver to radeon) but this didn't help.
Comment 1 untitled.no4 2010-04-23 06:29:42 UTC
Created attachment 35256 [details]
dmesg file
Comment 2 untitled.no4 2010-04-23 06:33:01 UTC
Created attachment 35257 [details]
Image showing the two screens displaying a text
Comment 3 untitled.no4 2010-04-23 06:34:17 UTC
The output of X -version:
X.Org X Server 1.8.0
Release Date: 2010-04-02
X Protocol Version 11, Revision 0
Build Operating System: Linux 2.6.24-27-xen x86_64 Ubuntu
Current Operating System: Linux ThinkPad-T500 2.6.34-020634rc5-generic #020634rc5 SMP Tue Apr 20 09:07:31 UTC 2010 x86_64
Kernel command line: BOOT_IMAGE=/boot/vmlinuz-2.6.34-020634rc5-generic root=UUID=dab0cf15-d409-49f2-ae26-0a30318d394f ro quiet splash
Build Date: 23 April 2010  12:11:28AM
xorg-server 2:1.8.0+git20100422+server-1.8-branch.5455df65-0ubuntu0sarvatt2 (Robert Hooker <sarvatt@ubuntu.com>)
Comment 4 Alex Deucher 2010-04-23 07:52:25 UTC
Does disabling dynpm (radeon.dynpm=0) fix the issue?
Comment 5 untitled.no4 2010-04-23 08:36:50 UTC
(In reply to comment #4)
> Does disabling dynpm (radeon.dynpm=0) fix the issue?

No it does not.
I'm not sure if it's related, but dynamic power management also doesn't seem work when laptop is docked while it works when it undocked.
Comment 6 untitled.no4 2010-04-23 08:39:29 UTC
Sorry, I wasn't clear in my last comment. When running dmesg | grep drm I see that dynamic power management is enabled and initialised but GPU temperature still rises to over 80c.
Comment 7 Alex Deucher 2010-04-23 11:53:17 UTC
The dynpm stuff is disabled when you have multiple heads active as it needs to change the clocks during the vertical blanking interval to avoid graphical glitches.  With two heads, your blanking intervals are rarely if ever aligned.
Comment 8 untitled.no4 2010-04-24 06:07:45 UTC
I have some more information about the issue.

I've decided to see whether running Kubuntu RC as a live CD also shows these problems and it doesn't. The computer starts with VGA-0 enabled and when I enable DVI-0 it works well.
Went a step further and re-installed. Check again and all was working fine.
Then another step, enabled xorg-edgers and installed updates, and that's where the problems started.

While doing this I noticed that at one point the DVI monitor was displaying an image (corrupted), but that it was shown as disabled, while the laptop's monitor was shown as enabled. I disabled the LCD monitor and enabled DVI-0 and the image on DVI was suddenly good. I then thought that perhaps the problem is that DVI is enabled using the settings for the LCD (DVI is 1440x900, LCD is 1680x1050). I rebooted and enabled the LCD, then disabled the LCD and enabled DVI and it was working well.
So, it looks to me as if when both external monitors are connected when X starts the system somehow sets the DVI screen with the settings of the LCD monitor. While if I disconnect the VGA monitor everything works fine.
Comment 9 Alex Deucher 2010-04-24 09:10:30 UTC
There are only two display controllers so you can only have two independent sets of timing.  If you have 3 monitors attached, you can only use two of them.  The encoder driving the 3rd monitor is probably not properly disabled so it's getting timing from whatever crtc was last sourced to it.  Can you identify which versions (kernel version, xf86-video-ati version) are working and which versions are problematic?  Or better you can you use git to bisect the problematic commit?
Comment 10 untitled.no4 2010-04-24 09:34:51 UTC
(In reply to comment #9)
> There are only two display controllers so you can only have two independent
> sets of timing.  If you have 3 monitors attached, you can only use two of them.
>  The encoder driving the 3rd monitor is probably not properly disabled so it's
> getting timing from whatever crtc was last sourced to it.  Can you identify
> which versions (kernel version, xf86-video-ati version) are working and which
> versions are problematic?  Or better you can you use git to bisect the
> problematic commit?

I spoke too soon... trying with fresh install of Lucid RC showed that sometimes the DVI screen will work correctly, but it's a matter of luck and most time it won't.

I'm not trying to have three monitors, just realised that that enabling and then disabling the LCD fixes the issue. The LCD should be disabled when two external screens are attached anyway.
Comment 11 Alex Deucher 2010-04-24 09:39:42 UTC
(In reply to comment #10)
> I spoke too soon... trying with fresh install of Lucid RC showed that sometimes
> the DVI screen will work correctly, but it's a matter of luck and most time it
> won't.

It depends what crtc was last sourced to the encoder.

> 
> I'm not trying to have three monitors, just realised that that enabling and
> then disabling the LCD fixes the issue. The LCD should be disabled when two
> external screens are attached anyway.

That's a user preference thing; different users want different things in that case.  The real problem appears to be that the encoder on the non-active head is not properly disabled.
Comment 12 untitled.no4 2010-04-24 09:49:56 UTC
(In reply to comment #11)

> > I'm not trying to have three monitors, just realised that that enabling and
> > then disabling the LCD fixes the issue. The LCD should be disabled when two
> > external screens are attached anyway.
> 
> That's a user preference thing; different users want different things in that
> case.  
By "it should be disabled" I mean that according to Lenovo the LCD is disabled automatically when the laptop is docked and two screens are attached. Mostly it comes out as disabled.


> The real problem appears to be that the encoder on the non-active head
> is not properly disabled.
Could there be a solution to that or am I just unlucky with my combination of hardware?
Comment 13 untitled.no4 2010-04-25 13:40:33 UTC
Have tested the monitors with Fedora 13 beta as well and had the same issues. 

According to Lenovo (http://209.85.129.132/search?q=cache:CSu9Vi1FYvwJ:www-307.ibm.com/pc/support/site.wss/MIGR-72148.html+http://www-307.ibm.com/pc/support/site.wss/MIGR-72148.html&cd=1&hl=en&ct=clnk) when two externals monitors are connected the Thinkpad display is disabled. When using fglrx with two external monitors the fglrx only sees the two external monitors and there is no option for the Thinkpad display. 
I think this the issue here. Xorg sees all three monitors and enables all three with the DVI using the settings of the LCD.
Comment 14 Adam Jackson 2018-06-12 19:07:58 UTC
Mass closure: This bug has been untouched for more than six years, and is not
obviously still valid. Please reopen this bug or file a new report if you continue to experience issues with current releases.

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.