Bug 11525

Summary: [945GM] hang during VT switch after specific xrandr commands
Product: xorg Reporter: Tomas Janousek <tomi>
Component: Driver/intelAssignee: Jesse Barnes <jbarnes>
Status: RESOLVED FIXED QA Contact: Xorg Project Team <xorg-team>
Severity: normal    
Priority: medium    
Version: git   
Hardware: x86 (IA32)   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:
Bug Depends on:    
Bug Blocks: 13027    

Description Tomas Janousek 2007-07-10 04:07:25 UTC
I did these commands:
xrandr \
    --output VGA --mode 1280x1024 --pos 0x0 --dpi 96 \
    --output LVDS --mode 1280x800 --pos 0x1024 --dpi 96
# now some sleep maybe
xrandr \
    --output LVDS --mode 1280x800 --pos 0x0 --dpi 96 \
    --output VGA --off
And now pressed Ctrl-Alt-F1 and the machine hangs with blinking grey rectangles all over the screen.

Issuing a plain "xrandr" command after the layout change prevents this behaviour in 99% of cases.

My hardware:
HP Compaq nx7300
00:02.0 VGA compatible controller: Intel Corporation Mobile 945GM/GMS/940GML Express Integrated Graphics Controller (rev 03)
(II) intel(0): Integrated Graphics Chipset: Intel(R) 945GM

Software:
xorg-server 1.3
intel driver 2.0.0 (I think I didn't run into this with earlier versions, but I definitely encounter this with current git versions)
Comment 1 Gordon Jin 2007-10-09 00:37:53 UTC
Does it work if you skip the first step (dualhead setup) and directly switch x to console in singlehead? We even see this broken with the git tip, as described in bug#12605. Please take a look at the attached photo there to see if it's identical to your issue.
Comment 2 Tomas Janousek 2007-10-09 00:55:03 UTC
Yes, the first step is the key step. If I use this dualhead setup:
xrandr \
    --output LVDS --mode 1280x800 --pos 0x0 --dpi 96 \
    --output VGA --mode 1024x768 --pos 0x800 --dpi 96,
it works.
But if the LVDS is below VGA, then it almost always crashes.

The picture on my screen is a bit different though. It has much more black around and there are a few rectangles 1cm high and .5cm wide, and they're blinking. I could possibly make a photo if it really helps, but if not necessary, I wouldn't crash my machine just for this.

Also, as issuing the xrandr command really helps only in 99% of cases (and maybe even less), I changed my switch-to-normal layout script to read this way:
xrandr \
    --output LVDS --mode 1280x800 --pos 0x0 --dpi 96 \
    --output VGA --mode 1280x1024 --pos 0x800 --dpi 96
sleep 0.1
xrandr \
    --output LVDS --mode 1280x800 --pos 0x0 --dpi 96 \
    --output VGA --off
xrandr
Ie. to switch to a mode it works with and then switch to normal. I hope this workaround will save me from crashes, but if there's any way to gather some debugging info, let me know and I'll crash it.
(which reminds me that I looked at the register dumps (when they were being printed out, this seems not to be the case with 2.1.1 any more) after the dualhead->normal xrandr command and after the plain xrandr command and there was no difference)
Comment 3 Michael Fu 2007-11-05 16:40:33 UTC
a dup of bug# 12555?
Comment 4 Jesse Barnes 2007-11-08 13:13:47 UTC
Yeah, this might be a DUP, and I hope it was fixed by Peter's patch from 12297.  Tomas, can you retest and update or close the bug?

Thanks,
Jesse
Comment 5 Tomas Janousek 2007-11-10 07:41:54 UTC
I applied the patch from commit eecd3ccedee6c4acf101591f7e60673660379e62 to 2.1.1 package and wasn't able to reproduce it since. Thank you guys.

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.