diff mbox

Linux 3.x: Flickering when logging into GNOME Shell or Unity

Message ID CADnq5_Ps3VaOuZxOyyZ2ot8TPmSk35cjU6FQwDcCdw9Pm+f0Qg@mail.gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Alex Deucher Oct. 19, 2012, 1:34 p.m. UTC
On Fri, Oct 19, 2012 at 9:10 AM, Paul Menzel
<paulepanter@users.sourceforge.net> wrote:
> Am Donnerstag, den 18.10.2012, 18:14 -0400 schrieb Alex Deucher:
>> On Wed, Oct 17, 2012 at 4:48 PM, Paul Menzel wrote:
>> > Am Mittwoch, den 17.10.2012, 16:25 -0400 schrieb Alex Deucher:
>> >> On Wed, Oct 17, 2012 at 11:26 AM, Paul Menzel wrote:
>> >
>> >> > Am Mittwoch, den 17.10.2012, 16:49 +0200 schrieb Paul Menzel:
>> >> >
>> >> >> setting up an ASUS M2A-VM after some months with
>> >> >>
>> >> >>         [    3.178337] [drm] initializing kernel modesetting (RS690 0x1002:0x791E 0x1043:0x826D).
>> >> >>
>> >> >> logging in into GNOME Shell (GNOME 3) or for testing with Ubuntu 12.04
>> >> >> and Unity, the image flickers for a second and then works normally.
>> >> >>
>> >> >> Turning on debugging
>> >> >>
>> >> >>         /sys/module/drm/parameters$ echo "0x06" | sudo tee debug
>> >> >>         sudo: unable to resolve host granit
>> >> >>         0x06
>> >> >>
>> >> >> before logging in, the following is logged. Looking at the source code,
>> >> >> I do not see that this is supposed to be a problem. But maybe you can
>> >> >> figure out more.
>> >> >>
>> >> >>         [  454.896408] [drm:drm_mode_addfb], [FB:41]
>> >> >>         [  454.896427] [drm:radeon_crtc_page_flip], flip-ioctl() cur_fbo = ffff880072438400, cur_bbo = ffff880037072400
>> >> >
>> >> > trying Linux 3.5
>> >> >
>> >> >         $ dpkg -l linux-image-3.5* | grep ii | tr -s ' ' | cut -d ' ' -f 2-4
>> >> >         linux-image-3.5-trunk-amd64 3.5.5-1~experimental.1 amd64
>> >> >
>> >> > the flickering is still there.
>> >>
>> >> I don't see anything wrong in the log.  Does the flicker occur at
>> >> regular intervals or just at start up?
>> >
>> > As far as I see, one second after hitting enter in the graphical login
>> > manager (LightDM in this case).
>> >
>> >> I suspect the flicker may be due to your desktop environment probing
>> >> for monitors at startup
>> >
>> > Hmm. Only a VGA monitor is detected and I do not see that issue on
>> > different system where I tested GNOME Shell to reproduce this. I have
>> > test Unity too again.
>>
>> Depends on the system and what connectors they have and whether or not
>> they support load detection.
>
> Is there a way to find out? This is an ASUS M2A-VM [1] with a VGA and
> DVI connector.

The VGA and S-video ports on your system support load detection.  I
don't know what your other system supports.

>
>> > Though the probing should be in the logs somehow? But there are not
>> > during the time of login.
>> >
>> >> which causes a flicker if nothing is attached to the analog ports
>> >> (VGA, s-video) as that results in a load detection operation to probe
>> >> for old monitors without EDIDs or analog TVs.
>> >
>> > Any hint on how to rule that out? Disable some outputs on the command
>> > line or so?
>>
>> Depending on what is doing the probing you could try starting bare X
>> without a desktop environment.  Or disable the analog outputs you
>> aren't using in your xorg.conf.  E.g.,
>>
>>   Section "Monitor"
>>     Identifier "S-video"
>>     Option "Disable" "true"
>>   EndSection
>
> I added that to the new file `/etc/X11/xorg.conf.d/99-disable.conf` also
> disabling HDMI-0 and DVI-0. Nothing changed though after restarting the
> graphical login manager (logging out and back in).

You can try this kernel patch to disable load detection in the driver
altogether:

                                       ATOM_DEVICE_CV_SUPPORT |
                                       ATOM_DEVICE_CRT_SUPPORT)) {

Alex

>
>
> Thanks,
>
> Paul
>
>
> [1] http://www.asus.com/Motherboards/AMD_AM2/M2AVM/
diff mbox

Patch

diff --git a/drivers/gpu/drm/radeon/atombios_encoders.c
b/drivers/gpu/drm/radeon/atombios_encoders.c
index 57c8277..3ffa5bb 100644
--- a/drivers/gpu/drm/radeon/atombios_encoders.c
+++ b/drivers/gpu/drm/radeon/atombios_encoders.c
@@ -2197,6 +2197,8 @@  atombios_dac_load_detect(struct drm_encoder
*encoder, struct drm_connector *conn
        struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
        struct radeon_connector *radeon_connector =
to_radeon_connector(connector);

+       return true;
+
        if (radeon_encoder->devices & (ATOM_DEVICE_TV_SUPPORT |