Created attachment 353832 [details] Proposed patch Description of problem: The fix for bug #487657 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. Version-Release number of selected component (if applicable): xorg-x11-drv-i810-1.6.5-9.25.el5 How reproducible: 50% Steps to Reproduce: 1. Connect a monitor to the VGA port 2. Select a lower resolution, e.g. xrandr -s "1024x768" 3. 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 Expected results: The screen does not go "out of sync" Additional info: The workaround is either to repeat the last xrandr command or to switch to a text console and back again. The problem has been introduced initially with commit db9f5915 upstream, which was backported in el5 as a fix for bug #487657. The bug is still present upstream and I have reported it here: http://lists.freedesktop.org/archives/intel-gfx/2009-July/003419.html KMS seems to be immune to the problem (ie it works in F11). So comparing the code of i9xx_crtc_dpms() in intel_display.c in the kernel modesetting code: http://git.kernel.org/?p=linux/kernel/git/anholt/drm-intel.git;a=blob;f=drivers/gpu/drm/i915/intel_display.c With the one from its equivalent i830_crtc_dpms() in i830_display.c: http://cgit.freedesktop.org/xorg/driver/xf86-video-intel/tree/src/i830_display.c We see in the kernel, the VGA_DISP_DISABLE is disabled no matter what whereas in i830_disable_vga_plane(), the function returns immediately if the bit is already set. The attached patch disables the vga plane no matter what, and that seems to fix the issue with xrandr without breaking to fix for bug #487657.
Created attachment 357792 [details] Patch from upstream bug 23178
Test build at http://people.redhat.com/~ajackson/511896/ with the patch from comment #2.
Built xorg-x11-drv-i810 1.6.5-9.26.el5 MODIFIED
Technical note added. If any revisions are required, please edit the "Technical Notes" field accordingly. All revisions will be proofread by the Engineering Content Services team. New Contents: Previously, using xrandr to change the screen resolution of a video device under the Intel Q43/Q45 chipset sometimes failed. After attempting the switch, the screen may have blanked and gone out of sync. With this update, this issue has been resolved.
An advisory has been issued which should help the problem described in this bug report. This report is therefore being closed with a resolution of ERRATA. For more information on therefore solution and/or where to find the updated files, please follow the link below. You may reopen this bug report if the solution does not work for you. http://rhn.redhat.com/errata/RHBA-2010-0262.html