Bug 23178

Summary: Black screen out of sync when changing resolution on Q43/Q45 with VGA monitor
Product: xorg Reporter: Olivier Fourdan <fourdan>
Component: Driver/intelAssignee: ykzhao <yakui.zhao>
Status: RESOLVED FIXED QA Contact: Xorg Project Team <xorg-team>
Severity: normal    
Priority: medium Keywords: patch
Version: unspecified   
Hardware: All   
OS: All   
Whiteboard:
i915 platform: i915 features:
Attachments:
Description Flags
Xorg.log
none
Patch to unconditionally disable VGA plane
none
new patch to disable vga plane none

Description Olivier Fourdan 2009-08-06 08:47:27 UTC
Created attachment 28401 [details]
Xorg.log

Description of problem:

The fix for bug #17235 and #19715 (git commit db9f5915) introduced a regression when changing resolution with xrandr with a VGA connected monitor on a Q43/Q45 chipset.

When switching resolution, the screen sometimes goes black and out of sync.

How reproducible:

It's fairly random and does not happen all the times. Roughly, I'd say it happens 75% of the time.

Steps to Reproduce:

1. Connect a monitor to the VGA port of a system with a Q43/Q45
2. Log in graphically
3. Use xrandr to select a lower resolution, e.g. xrandr -s "1024x768"
4. If that works, switch back to the original resolution, then select a
lower resolution again.

Actual results:

The screen goes black and shows "out of sync" message

Additional info:

A possible workaround is either to repeat the last xrandr command or to switch to a text console and back again.

The problem has been reported on the ML here:

  http://lists.freedesktop.org/archives/intel-gfx/2009-July/003419.html

"lspci" on the affected hardware gives:

  00:02.0 VGA compatible controller: Intel Corporation 4 Series Chipset
  Integrated Graphics Controller (rev 03) (prog-if 00 [VGA controller])
         Subsystem: Fujitsu Siemens Computers Unknown device 114c
         Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- <TAbort- <MAbort- >SERR- <PERR-
         Latency: 0
         Interrupt: pin A routed to IRQ 11
         Region 0: Memory at fc000000 (64-bit, non-prefetchable) [size=4M]
         Region 2: Memory at e0000000 (64-bit, prefetchable) [size=256M]
         Region 4: I/O ports at 1c70 [size=8]
         Capabilities: [90] Message Signalled Interrupts: 64bit- Queue=0/0 Enable-
                 Address: 00000000  Data: 0000
         Capabilities: [d0] Power Management version 2
                 Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
                 Status: D0 PME-Enable- DSel=0 DScale=0 PME-
Comment 1 Olivier Fourdan 2009-08-06 08:50:21 UTC
Created attachment 28402 [details] [review]
Patch to unconditionally disable VGA plane

This patch seems to avoid the problem and the screen does not go out of sync.
Comment 2 Wang Zhenyu 2009-08-09 19:12:54 UTC
Created attachment 28462 [details] [review]
new patch to disable vga plane 

Olivier, could you test with patch to see if it fixes your problem?
Comment 3 Wang Zhenyu 2009-08-17 19:13:25 UTC
Pushed the patch. Close.
commit 376397c21eb9a7e4ea79d349af41da81c1af861f
Author: Zhenyu Wang <zhenyuw@linux.intel.com>
Date:   Tue Aug 18 10:01:12 2009 +0800

    Fix VGA plane disabling
    
    Only apply on G4X with SR01 bit5 workaround for VGA plane disable, and
    restore behavior back for other chips to make sure other modes got disabled
    too.
    
    For bug #17235, #19715, #21064, #23178
    
    Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
Comment 4 Olivier Fourdan 2009-10-12 01:13:04 UTC
However, this commit is not in current 2.8 branch:

    http://cgit.freedesktop.org/xorg/driver/xf86-video-intel/tree/src/i830_display.c?h=2.8

whereas the patch was committed in that branch apparently:

    http://cgit.freedesktop.org/xorg/driver/xf86-video-intel/tree/?id=376397c21eb9a7e4ea79d349af41da81c1af861f

Was there any reason for that patch not to be merged in 2.8?

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.