Created attachment 50130 [details] kernel log I have a laptop with build-in LVDS1 monitor and external crt monitor connected by VGA port. When I start X server the external monitor goes into 1280x800 mode (which is native mode for internal LVDS1 display) even when I disable LVDS1 by video:LVDS-1=d kernel parameter. Then I can change it's resolution to it's default 1280x1024@85 by xrandr --output VGA1 --auto. When I try any lower resolution other than 1280x1024 it doesn't change actual resolution but crops working space instead and keeps 1280x1024 (pictures attached). On the other hand when I try higher resolutions all I can get is 1280x1024 or 1280x800 and image cropped/going off the monitor.
Created attachment 50131 [details] xorg log
Created attachment 50133 [details] 800x600 resolution
Can you attach the kernel log, xorg log and the output of 'intel_reg_dumper' after you've set the new mode?
Created attachment 50144 [details] kernel log after setting 800x600
Created attachment 50145 [details] xorg log after setting 800x600
Created attachment 50146 [details] intel_reg_dumper output after setting 800x600
So the issue is that you have an S-Video connector (electronically connected to the chip even if there is no actual external header on the motherboard). As we are unable to determine whether there is a TV connected, the connector is left in the unknown status. X recognises this as a potential output, with a default set of modelines the intersection of which with your VGA monitor is 800x600. The reason we can't detect whether anything is attached seems to be a hardware limitation (lack of available pipes to perform the load testing), but it would be useful to check if the couple of recent fixes for gm45 TV (835bff7ef220f9d: drm/i915: Select correct pipe during TV detect) detection do help So you can either use video=SVIDEO-1:d to disable it during boot, or xrandr --output SVIDEO-1 --off (check the actual name using xrandr) at runtime.
I've tried disabling it and it didn't change anything. the results were the same as on attached picture (yellow area is unusable copy of border pixels). I've also tested it with some LCD monitor and picture was moved, half of it was off the screen. Also S-Video connector and VGA modelines intersect at 1024x768 and 800x600 yet I can't set 800x600 on VGA monitor.
I've bisected it to commit b690e96cf9e6a6cde6f0393de47bdd6317ddb5de (it turned out to be regression). Specifically this line of code (I'm on 2730p): /* HP Compaq 2730p needs pipe A force quirk (LP: #291555) */ { 0x2a42, 0x103c, 0x30eb, quirk_pipea_force }, Removing it from 3.1.4 kernel fixed my problems with external monitor. Also suspend to ram still works and this patch was supposed to fix problems with it (https://bugs.freedesktop.org/show_bug.cgi?id=22126)
Please try out the drm-intel-next queued git branch from git://people.freedesktop.org/~danvet/drm-intel Specifically the following commit commit d42c9e2c24f7e7897405b85816bdf4ac924881c0 Author: Daniel Vetter <daniel.vetter@ffwll.ch> Date: Sun Mar 25 22:56:14 2012 +0200 drm/i915: reinstate GM45 TV detection fix Given how many TV detection issues this patch fixed I'll close this bug. Please reopen if this is not the case and this patch doesn't fix your issues.
Niether the patch itself nor any branch in your tree fix it. Also I didn't mention it before but there is a accompanying bug that makes console output garbled (the lines aren't synchronized) in KMS mode.
Can you please attach a new dmesg with drm.debug=0xe with the latest -fixes branch from my drm-intel git repo (it obviously needs to include that patch)?
This bug got fixed in 3.4-rc1 by commit d12d04512c4430e29daede7f24b97f83f8cf259a Author: Philipp Grete <mail@pgrete.de> Date: Tue Feb 21 12:40:20 2012 +0100 drm/i915: Fixes distorted external screen image on HP 2730p Do you still want me to send this dmesg?
Woot, another bug accidentally fixed. dmesg not required, happy dance appropriate ;-) Thanks for reporting this issue (and bearing with us, this took way too long to fix).
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.