Re: i915 wakes from suspend to RAM with blank screen after commit cd9dde44f47501394b9f0715b6a36a92aa74c0d0

From: Keith Packard
Date: Sun Jan 22 2012 - 23:00:40 EST


On Sun, 22 Jan 2012 11:29:12 +0100, Lubos Kolouch <lubos.kolouch@xxxxxxxxx> wrote:

> Thanks, here you go:
> dmesg after boot - http://paste.pocoo.org/show/538625/
> dmesg after failed resume - http://paste.pocoo.org/show/538626/

Ok, looks like my theory is correct. We're fitting a 24bpp mode to an
18bpp data rate, which doesn't work.

I'm in the middle of bisecting a bluetooth failure in 3.3-rc1, so I
don't have a working kernel at present, but here's a section of
intel_dp.c in the intel_dp_mode_fixup function:

int max_clock = intel_dp_max_link_bw(intel_dp) == DP_LINK_BW_2_7 ? 1 : 0;
- int bpp = mode->private_flags & INTEL_MODE_DP_FORCE_6BPC ? 18 : 0;
+ int bpp = mode->private_flags & INTEL_MODE_DP_FORCE_6BPC ? 18 : 24;
static int bws[2] = { DP_LINK_BW_1_62, DP_LINK_BW_2_7 };

(this is completely hand-generated, so 'patch' will almost certainly not work)

This will force it to use the correct bpp when computing the bandwidth
used by the new mode. This should fix your problem. If so, I'll have a
larger patch which stops the underlying function from (almost always
incorrectly) using the current bpp when computing bandwidth.

--
keith.packard@xxxxxxxxx

Attachment: pgp00000.pgp
Description: PGP signature