Bug 18189 - Screen flickering using radeonhd > 1.2.1 and HD2400 AGP
Summary: Screen flickering using radeonhd > 1.2.1 and HD2400 AGP
Status: RESOLVED FIXED
Alias: None
Product: xorg
Classification: Unclassified
Component: Driver/radeonhd (show other bugs)
Version: unspecified
Hardware: x86 (IA32) Linux (All)
: medium normal
Assignee: Luc Verhaegen
QA Contact: Xorg Project Team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2008-10-23 10:30 UTC by Jim
Modified: 2008-11-04 11:30 UTC (History)
2 users (show)

See Also:
i915 platform:
i915 features:


Attachments
Xorg.0.log (36.68 KB, application/octet-stream)
2008-10-23 10:30 UTC, Jim
no flags Details
Xorg log with coherent=true is crashing the server (27.50 KB, application/octet-stream)
2008-11-02 04:11 UTC, Jim
no flags Details

Description Jim 2008-10-23 10:30:48 UTC
Created attachment 19828 [details]
Xorg.0.log

Sometime after the radeonhd release 1.2.1 I got problems with the LCD-monitor going black for a second or two then everything appears fine for a random time ranging from few seconds to up to half a minute before going dark again.
This is using DVI

Using git bisect I found the commit which introduced this bug for my setup:
========
commit 2ea7cdd78a5ebc80754be2f1a4d0700d2b2dfb2d
Author: Luc Verhaegen <libv@skynet.be>
Date:   Fri May 16 22:35:32 2008 +0200

    R5xx TMDSA/LVTMA: fix flickering/dark monitors.

    * Coherent mode is always disabled per default in hardware, follow
      this strategy in our driver.
    * Fix the TMDSA macro control value for R600.
=========
Reverting this fixed the issue and I have a very stable picture.

Further narrowing down, with this PATCH all is well again.
--- rhd_lvtma.c.ORIG    2008-10-23 18:34:30.000000000 +0200
+++ rhd_lvtma.c 2008-10-23 18:48:57.000000000 +0200
@@ -1308,7 +1308,7 @@
        Output->Private = Private;

        Private->RunsDualLink = FALSE;
-       Private->Coherent = FALSE;
+       Private->Coherent = TRUE;
     }

     return Output;
--- rhd_tmds.c.ORIG     2008-10-23 18:34:30.000000000 +0200
+++ rhd_tmds.c  2008-10-23 18:46:43.000000000 +0200
@@ -521,7 +521,7 @@

     Private = xnfcalloc(sizeof(struct rhdTMDSPrivate), 1);
     Private->RunsDualLink = FALSE;
-    Private->Coherent = FALSE;
+    Private->Coherent = TRUE;
     Private->PowerState = RHD_POWER_UNKNOWN;

     Output->Private = Private;


Card is an HD2400 AGP (sapphire)
$ lspci -n | grep 1:00
01:00.0 0300: 1002:94c4
$ lspci | grep 1:00
01:00.0 VGA compatible controller: ATI Technologies Inc RV610LE [Radeon HD 2400 Series]

Attached Xorg.0.log using above patch (i.e. the correctly working case).
Comment 1 jp fournier 2008-10-25 03:56:26 UTC
I have observed the same problem using an onboard HD 3200 using HDMI video+audio into an LG TV (47LG70).  The screen+audio blanks for a few seconds then returns.  The frequency of occurrence seems to be related to what is being displayed on the screen. At one point it was blanking every 5 seconds with a particular firefox dialog visible.  Once I closed the dialog, the frequency immediately reduced to once/minute.
 
Comment 2 Egbert Eich 2008-10-28 02:38:33 UTC
ATI Radeon HW offers the two settings for digital outputs: coherent and non-coherent. We've asked - so far noone at ATI was able to explain what the difference is and how to find out which setting is correct for which monitor. We have therefore choosen a default setting which the user can change thru a property: xrandr --output <output_id> --set COHERENT 0/1.

I should add a config file option where the user can set this and document this in the man page/README.
This is a setting which the user has to determine for himself in the case where he sees issues. Even the fglrx driver offers this as an option to the user. This is really NOTABUG.
Comment 3 Ian Pilcher 2008-10-30 07:02:23 UTC
(In reply to comment #2)
> I should add a config file option where the user can set this and document this
> in the man page/README.

How about leaving this open until such a config file option exists?
Comment 4 Egbert Eich 2008-11-01 11:14:08 UTC
It does now. Closing.
Comment 5 Jim 2008-11-02 04:11:32 UTC
Created attachment 20005 [details]
Xorg log with coherent=true is crashing the server
Comment 6 Jim 2008-11-02 04:14:55 UTC
Hmm, with git from this morning (Sunday morning 2008-11-2) and the new options coherent added to driver section in xorg:

Section "Device"
    Identifier                          "ATI Graphics Adapter"
    Driver                              "radeonhd"
    Screen 0
    Option "Coherent"  "True"
#    Option "noRandR"
#    Option "ForceDPI" "100"
#    Option "UseConfiguredMonitor" "on"
EndSection

The driver is crashing (see also attached complete xorg.0.log) 

Backtrace:
0: /usr/bin/X(xf86SigHandler+0x7e) [0x80d8b5e]
1: [0xb7f4c400]
2: /usr/lib/xorg/modules/drivers//radeonhd_drv.so(RHDLVTMAInit+0xf5) [0xb7b51165]
3: /usr/lib/xorg/modules/drivers//radeonhd_drv.so(RHDConnectorsInit+0x641) [0xb7b3b6f1]
4: /usr/lib/xorg/modules/drivers//radeonhd_drv.so [0xb7b48d31]
5: /usr/bin/X(InitOutput+0x9b7) [0x80a2317]
6: /usr/bin/X(main+0x296) [0x806dbb6]
7: /lib/libc.so.6(__libc_start_main+0xe0) [0xb7d14390]
8: /usr/bin/X(FontFileCompleteXLFD+0x20d) [0x806d121]

Fatal server error:
Caught signal 11.  Server aborting


Commenting out the coherent option, the drivers is working but obviously the screen flickering is back again.
Comment 7 Egbert Eich 2008-11-03 12:35:12 UTC
Fixed.
Comment 8 Jim 2008-11-04 09:16:41 UTC
Sorry to keep re-opening this bug but still something is wrong, server isn't crashing anymore, but the coherent setting isn't applied either (monitor flickering).

I see this in the Xorg.0.log:

(**) RADEONHD(0): Option "COHERENT" "True"

but (notice the 'incoherent')

(--) RADEONHD(0): Attaching Output DAC B to Connector TV 7PIN_DIN
(--) RADEONHD(0): Attaching Output DAC A to Connector VGA 1
(==) RADEONHD(0): Setting TMDS B to incoherent
(--) RADEONHD(0): Attaching Output TMDS B to Connector DVI-I 1
(--) RADEONHD(0): Attaching Output DAC B to Connector DVI-I 1
Comment 9 Christian König 2008-11-04 09:56:20 UTC
There is the problem:
    Option "Coherent"  "True"

This option is a boolean list, try this:
    Option "Coherent"  "all=on"

(Note to me: Make True/False also work instead of On/Off, 1/0... :)
Comment 10 Jim 2008-11-04 10:28:23 UTC
Yes, now it's working

(**) RADEONHD(0): Option "COHERENT" "all=on"
..
(**) RADEONHD(0): Setting TMDS B to coherent
(--) RADEONHD(0): Attaching Output TMDS B to Connector DVI-I 1

and NO flickering :-)

Thx.
Comment 11 Egbert Eich 2008-11-04 11:30:47 UTC
Also there is now an man page entry describing that you can either do
Option "Coherent" "all=on"
or (in your case)
Option "Coherent" "tmds_b=on"


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.