lkml.org 
[lkml]   [2012]   [Jan]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
SubjectRe: i915 wakes from suspend to RAM with blank screen after commit cd9dde44f47501394b9f0715b6a36a92aa74c0d0
Date
On Sat, 21 Jan 2012 19:44:53 +0100, Lubos Kolouch <lubos.kolouch@gmail.com> wrote:

> dmesg after boot - http://paste.pocoo.org/show/538343/
> dmesg after failed resume - http://paste.pocoo.org/show/538344/

Ok, that's weird -- we're choosing a different display port link speed
on resume than at boot time. I have a theory that intel_dp_mode_fixup is
accidentally using the current bpp value when computing the values
needed for the new mode, and that this value may differ between boot and
resume.

Here's a patch to dump some debug info out to test this theory.

[unhandled content-type:application/pgp-signature]From 2b16db9fccc6927f3e09020144d5148acc025f58 Mon Sep 17 00:00:00 2001
From: Keith Packard <keithp@keithp.com>
Date: Sat, 21 Jan 2012 12:48:38 -0800
Subject: [PATCH] drm/i915: Output a bit of debug info for display port
bandwidth

Something weird is going on with link bandwidth testing; this may
help sort out what's wrong.

Signed-off-by: Keith Packard <keithp@keithp.com>
---
drivers/gpu/drm/i915/intel_dp.c | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index db3b461..796d534 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -697,10 +697,13 @@ intel_dp_mode_fixup(struct drm_encoder *encoder, struct drm_display_mode *mode,
mode->clock = intel_dp->panel_fixed_mode->clock;
}

+ DRM_DEBUG_KMS("using bpp %d to find link_bw and lane_count\n", bpp);
for (lane_count = 1; lane_count <= max_lane_count; lane_count <<= 1) {
for (clock = 0; clock <= max_clock; clock++) {
int link_avail = intel_dp_max_data_rate(intel_dp_link_clock(bws[clock]), lane_count);

+ DRM_DEBUG_KMS("lane_count %d clock %d link_avail %d link_required %d\n",
+ lane_count, clock, link_avail, intel_dp_link_required(intel_dp, mode->clock, bpp));
if (intel_dp_link_required(intel_dp, mode->clock, bpp)
<= link_avail) {
intel_dp->link_bw = bws[clock];
--
1.7.8.3

Please try this on the broken kernel, sending along the dmesg output at
boot and resume time again.

--
keith.packard@intel.com
\
 
 \ /
  Last update: 2012-01-21 21:55    [W:0.195 / U:0.220 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site