On Thu, 2012-10-11 at 07:43 +0200, Holger Freyther wrote:
> Package: src:linux
> Version: 3.2.30-1
> Severity: normal
> 
> Dear Maintainer,
> 
> the upgrade from linux-image-3.2.0-3-686-pae to linux-image-3.2.0-4-686-pae
> introduced screen corruption. Once the i915.ko drm module is loaded the text
> console begins to flicker, once X/gdm starts the colors are corrupted and not
> the entire display is shown. Suspend/resume is fixing this configuration.
> 
> I bisected a different kernel branch and found a commit, it has been 
> backported
> to the v3.2 stable branch as 8147cc255b1ab84cdb0d4b28cccf7fe59103dcee. 
> Reverting
> the change is fixing the corruption.
[...]

Can you test the fix suggested by Daniel Vetter upstream?  I'm attaching
a backported version for 3.2, which you can apply to the Debian package
as described in
<http://kernel-handbook.alioth.debian.org/ch-common-tasks.html#s-common-official>.

Ben.

-- 
Ben Hutchings
Kids!  Bringing about Armageddon can be dangerous.  Do not attempt it in
your own home. - Terry Pratchett and Neil Gaiman, `Good Omens'
From: Jani Nikula <jani.nik...@intel.com>
Date: Wed, 26 Sep 2012 18:43:10 +0300
Subject: drm/i915: use adjusted_mode instead of mode for checking the 6bpc
 force flag

commit 0c96c65b48fba3ffe9822a554cbc0cd610765cd5 upstream.

The dithering introduced in

commit 3b5c78a35cf7511c15e09a9b0ffab290a42d9bcf
Author: Adam Jackson <a...@redhat.com>
Date:   Tue Dec 13 15:41:00 2011 -0800

    drm/i915/dp: Dither down to 6bpc if it makes the mode fit

stores the INTEL_MODE_DP_FORCE_6BPC flag in the private_flags of the
adjusted mode, while i9xx_crtc_mode_set() and ironlake_crtc_mode_set() use
the original mode, without the flag, so it would never have any
effect. However, the BPC was clamped by VBT settings, making things work by
coincidence, until that part was removed in

commit 4344b813f105a19f793f1fd93ad775b784648b95
Author: Daniel Vetter <daniel.vet...@ffwll.ch>
Date:   Fri Aug 10 11:10:20 2012 +0200

Use adjusted_mode instead of mode when checking for
INTEL_MODE_DP_FORCE_6BPC to make the flag have effect.

v2: Don't forget to fix this in i9xx_crtc_mode_set() also, pointed out by
Daniel both before and after sending the first patch.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=47621
CC: Adam Jackson <a...@redhat.com>
Signed-off-by: Jani Nikula <jani.nik...@intel.com>
Reviewed-by: Adam Jackson <a...@redhat.com>
Signed-off-by: Daniel Vetter <daniel.vet...@ffwll.ch>
[bwh: Backported to 3.2: adjust context; drop fb argument to
 intel_choose_pipe_bpp_dither()]
Signed-off-by: Ben Hutchings <b...@decadent.org.uk>
---
 drivers/gpu/drm/i915/intel_display.c |    5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -5027,7 +5027,7 @@ static int i9xx_crtc_mode_set(struct drm
 	/* default to 8bpc */
 	pipeconf &= ~(PIPECONF_BPP_MASK | PIPECONF_DITHER_EN);
 	if (is_dp) {
-		if (mode->private_flags & INTEL_MODE_DP_FORCE_6BPC) {
+		if (adjusted_mode->private_flags & INTEL_MODE_DP_FORCE_6BPC) {
 			pipeconf |= PIPECONF_BPP_6 |
 				    PIPECONF_DITHER_EN |
 				    PIPECONF_DITHER_TYPE_SP;
@@ -5495,7 +5495,8 @@ static int ironlake_crtc_mode_set(struct
 	/* determine panel color depth */
 	temp = I915_READ(PIPECONF(pipe));
 	temp &= ~PIPE_BPC_MASK;
-	dither = intel_choose_pipe_bpp_dither(crtc, &pipe_bpp, mode);
+	dither = intel_choose_pipe_bpp_dither(crtc, &pipe_bpp,
+					      adjusted_mode);
 	switch (pipe_bpp) {
 	case 18:
 		temp |= PIPE_6BPC;

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to