Messages in this thread Patch in this message | | | From | Keith Packard <> | Subject | Re: i915 wakes from suspend to RAM with blank screen after commit cd9dde44f47501394b9f0715b6a36a92aa74c0d0 | Date | Sat, 21 Jan 2012 12:53:00 -0800 |
| |
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
| |