[Problem] After a suspend-resume cycle, dual-head configuration is corrupted until I switch to a virtual VT and back. This bug report is a duplicate of bug 24035, but I didn't want to cause confusion by mixing my attachments with Volker's I have a Thinkpad X61 Tablet with 965G Chipset. I'm running the latest xorg-edgers. Intel driver 2:2.9.0+git20091026.10946118-0ubuntu0tormod, xserver 2:1.6.4.901+git20091005+server-1.6-branch.c07b2368-0ubuntu0sarvatt.
Created attachment 30713 [details] dmesg-0.txt
Created attachment 30714 [details] dmesg-1.txt
Created attachment 30715 [details] dmesg-2.txt
Created attachment 30716 [details] dmesg-3.txt
Created attachment 30717 [details] intel_gpu_dump-0.txt.gz
Created attachment 30718 [details] intel_gpu_dump-1.txt.gz
Created attachment 30719 [details] intel_gpu_dump-2.txt.gz
Created attachment 30720 [details] intel_gpu_dump-3.txt.gz
Created attachment 30721 [details] intel_reg_dumper-0.txt
Created attachment 30722 [details] intel_reg_dumper-1.txt
Created attachment 30723 [details] intel_reg_dumper-2.txt
Created attachment 30724 [details] intel_reg_dumper-3.txt
Created attachment 30725 [details] lspci-vvnn.txt
Created attachment 30726 [details] Xorg.0.log.txt
Created attachment 30727 [details] xrandr.txt
I have added attachments dmesg output, intel_gpu_dump output, and intel_reg_dumper output in 4 different versions. The files with *-0.txt are after login with dual-head enabled. *-1.txt is after `echo mem >/sys/power/state` has been run from a terminal (i.e. no VT switch yet) and resume back to X. *-2.txt is after switching to VT2 (so its run from there) and *-3.txt is after switching back to X on VT7. Since the LVDS output is mirrored on the VGA output at *-1.txt and no longer at *-3.txt, I assume the difference between *-1.txt and *-3.txt is the most interesting one. In particular: # diff intel_reg_dumper-1.txt intel_reg_dumper-3.txt 53c53 < DSPABASE: 0x00000000 --- > DSPABASE: 0x000459e0 55c55 < DSPATILEOFF: 0x00000000 --- > DSPATILEOFF: 0x001a0578 94c94 < CURSOR_B_POSITION: 0x00e10124 --- > CURSOR_B_POSITION: 0x00d7013f So it seems that DSPABASE and DSPATILEOFF are reset when the unwanted mirroring occurs. In intel_reg_dumper-3.txt it's back to the state it had before the suspend: # diff intel_reg_dumper-0.txt intel_reg_dumper-1.txt 25,26c25,26 < SDVOB: 0x00080018 (disabled, pipe A, stall disabled, not detected) < SDVOC: 0x00080018 (disabled, pipe A, stall disabled, not detected) --- > SDVOB: 0x00000018 (disabled, pipe A, stall disabled, not detected) > SDVOC: 0x00000018 (disabled, pipe A, stall disabled, not detected) 35,36c35,36 < DVOB: 0x00080018 (disabled, pipe A, no stall, +hsync, +vsync) < DVOC: 0x00080018 (disabled, pipe A, no stall, +hsync, +vsync) --- > DVOB: 0x00000018 (disabled, pipe A, no stall, +hsync, +vsync) > DVOC: 0x00000018 (disabled, pipe A, no stall, +hsync, +vsync) 46,48c46,48 < PFIT_PGM_RATIOS: 0x0f9b0ea1 < PORT_HOTPLUG_EN: 0x06040220 < PORT_HOTPLUG_STAT: 0x0000c300 --- > PFIT_PGM_RATIOS: 0x00000000 > PORT_HOTPLUG_EN: 0x06040200 > PORT_HOTPLUG_STAT: 0x00000300 53c53 < DSPABASE: 0x000459e0 --- > DSPABASE: 0x00000000 55c55 < DSPATILEOFF: 0x001a0578 --- > DSPATILEOFF: 0x00000000 58c58 < PIPEASTAT: 0x00000307 (status: VSYNC_INT_STATUS DLINE_COMPARE_STATUS SVBLANK_INT_STATUS VBLANK_INT_STATUS OREG_UPDATE_STATUS) --- > PIPEASTAT: 0x00000207 (status: VSYNC_INT_STATUS SVBLANK_INT_STATUS VBLANK_INT_STATUS OREG_UPDATE_STATUS) 94c94 < CURSOR_B_POSITION: 0x00e00109 --- > CURSOR_B_POSITION: 0x00e10124
*** This bug has been marked as a duplicate of bug 24035 ***
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.