Bug 27272

Summary: After resume of S4 overlay stays active on Pineview
Product: Drivers Reporter: Matthias Hopf (mat)
Component: Video(DRI - Intel)Assignee: drivers_video-dri-intel (drivers_video-dri-intel)
Status: CLOSED CODE_FIX    
Severity: high CC: chris, eric, florian, rjw, sndirsch, tiwai
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: 2.6.38-rc1 Tree: Mainline
Regression: Yes
Attachments: Patch fixing this regression
Revised patch for 2.6.37

Description Matthias Hopf 2011-01-21 14:30:52 UTC
Created attachment 44602 [details]
Patch fixing this regression

Git commit 032d2a0 "drm/i915: Prevent double dpms on" results in a weird regression on intel Pineview (8086:a011) - after resume from S4 the previous framebuffer contents (in resolution 800x600) are displayed in a sort-of overlay in the upper left part of the screen, only vanishing after an S3 cycle.

Interestingly, the regular XV overlay seems to be a different overlay, because using the XV overlay (the second XVideo adapter) doesn't change the display.


Patch from Takashi attached.
Comment 1 Takashi Iwai 2011-01-21 15:36:33 UTC
Note that the patch above doesn't apply / work alone with 2.6.37.
But similar fixes (checking crtc->active as well) in intel_display.c makes working on 2.6.37, too.

The problem is obviously that DPMS isn't set up properly at S3 resume.  A saner fix would be to clear up intel_crtc->dpms and active flags somehow so that the next dpms call takes real action.
Comment 2 Takashi Iwai 2011-01-21 15:39:43 UTC
(In reply to comment #1)
> The problem is obviously that DPMS isn't set up properly at S3 resume.

Grr, of course, I meant S4 resume.
Comment 3 Chris Wilson 2011-01-21 15:47:41 UTC
(In reply to comment #1)
> The problem is obviously that DPMS isn't set up properly at S3 resume.  A
> saner
> fix would be to clear up intel_crtc->dpms and active flags somehow so that
> the
> next dpms call takes real action.

Right, that sounds like the underlying problem. Thanks!
Comment 4 Takashi Iwai 2011-01-24 09:37:09 UTC
Below is a revised patch for 2.6.37.  Now it has resume_count field to check whether the forced update is required after resume.
Note that this change is used in another patch for yet-another-S3-regression (bug 26952).
Comment 5 Takashi Iwai 2011-01-24 09:41:41 UTC
Created attachment 44982 [details]
Revised patch for 2.6.37
Comment 6 Chris Wilson 2011-02-01 09:22:15 UTC
In drm-intel-fixes [pull requests en route]:

http://git.kernel.org/?p=linux/kernel/git/ickle/drm-intel.git;a=commit;h=5d1d0cc87fc0887921993ea0742932e0c8adeda0
Comment 7 Florian Mickler 2011-02-19 23:57:45 UTC
merged in .38-rc5