Bug 24745

Summary: [i965GM] Corrupted dualhead configuration after waking up from suspend
Product: xorg Reporter: Geir Ove Myhr <gomyhr>
Component: Driver/intelAssignee: Carl Worth <cworth>
Status: RESOLVED DUPLICATE QA Contact: Xorg Project Team <xorg-team>
Severity: normal    
Priority: medium    
Version: unspecified   
Hardware: x86-64 (AMD64)   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:
Attachments:
Description Flags
dmesg-0.txt
none
dmesg-1.txt
none
dmesg-2.txt
none
dmesg-3.txt
none
intel_gpu_dump-0.txt.gz
none
intel_gpu_dump-1.txt.gz
none
intel_gpu_dump-2.txt.gz
none
intel_gpu_dump-3.txt.gz
none
intel_reg_dumper-0.txt
none
intel_reg_dumper-1.txt
none
intel_reg_dumper-2.txt
none
intel_reg_dumper-3.txt
none
lspci-vvnn.txt
none
Xorg.0.log.txt
none
xrandr.txt none

Description Geir Ove Myhr 2009-10-26 20:45:35 UTC
[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.
Comment 1 Geir Ove Myhr 2009-10-26 20:47:56 UTC
Created attachment 30713 [details]
dmesg-0.txt
Comment 2 Geir Ove Myhr 2009-10-26 20:48:17 UTC
Created attachment 30714 [details]
dmesg-1.txt
Comment 3 Geir Ove Myhr 2009-10-26 20:48:49 UTC
Created attachment 30715 [details]
dmesg-2.txt
Comment 4 Geir Ove Myhr 2009-10-26 20:49:19 UTC
Created attachment 30716 [details]
dmesg-3.txt
Comment 5 Geir Ove Myhr 2009-10-26 20:50:42 UTC
Created attachment 30717 [details]
intel_gpu_dump-0.txt.gz
Comment 6 Geir Ove Myhr 2009-10-26 20:51:09 UTC
Created attachment 30718 [details]
intel_gpu_dump-1.txt.gz
Comment 7 Geir Ove Myhr 2009-10-26 20:51:40 UTC
Created attachment 30719 [details]
intel_gpu_dump-2.txt.gz
Comment 8 Geir Ove Myhr 2009-10-26 20:52:11 UTC
Created attachment 30720 [details]
intel_gpu_dump-3.txt.gz
Comment 9 Geir Ove Myhr 2009-10-26 20:52:53 UTC
Created attachment 30721 [details]
intel_reg_dumper-0.txt
Comment 10 Geir Ove Myhr 2009-10-26 20:53:20 UTC
Created attachment 30722 [details]
intel_reg_dumper-1.txt
Comment 11 Geir Ove Myhr 2009-10-26 20:53:45 UTC
Created attachment 30723 [details]
intel_reg_dumper-2.txt
Comment 12 Geir Ove Myhr 2009-10-26 20:54:20 UTC
Created attachment 30724 [details]
intel_reg_dumper-3.txt
Comment 13 Geir Ove Myhr 2009-10-26 20:54:47 UTC
Created attachment 30725 [details]
lspci-vvnn.txt
Comment 14 Geir Ove Myhr 2009-10-26 20:55:12 UTC
Created attachment 30726 [details]
Xorg.0.log.txt
Comment 15 Geir Ove Myhr 2009-10-26 20:56:16 UTC
Created attachment 30727 [details]
xrandr.txt
Comment 16 Geir Ove Myhr 2009-10-26 21:05:58 UTC
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

Comment 17 Geir Ove Myhr 2009-10-26 21:06:54 UTC

*** 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.