Re: Lenovo x120e resume regression in 3.15-rc1 bisected to 'drm/crtc-helpers: fix dpms on logic'

Alex Deucher
2014-05-02T17:22:01Z

[-- Attachment #1: Type: text/plain, Size: 680 bytes --]

On Fri, May 2, 2014 at 12:40 PM, Tim Gardner <tim.gardner@canonical.com> wrote:
> I've bisected a resume regression on a Lenovo x120e to
> 177cf92de4aa97ec1435987e91696ed8b5023130 (drm/crtc-helpers: fix dpms on
> logic). Everything works fine with this patch reverted on top of
> 3.15-rc3. I realize it is correcting a coding error that has been in
> place since 3.11, but it is also causing this laptop to resume to a
> black screen wherein the platform appears to be locked up (no console,
> no network). See attached bisect log and lspci. The BIOS version is 1.15.
>

Does the attached patch help? I haven't had a chance to unwind all
the logic in the crtc helper code.

Alex

[-- Attachment #2: 0001-drm-radeon-force-connector-dpm-state-to-ON-on-modese.patch --]
[-- Type: text/x-diff, Size: 1219 bytes --]

From dc318b2c8583d3726c64177024d777c9408d3538 Mon Sep 17 00:00:00 2001
From: Alex Deucher <alexander.deucher@amd.com>
Date: Fri, 2 May 2014 13:18:23 -0400
Subject: [PATCH] drm/radeon: force connector dpm state to ON on modeset

We turn the display on as part of the modeset, so mark it
as such.

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
---
drivers/gpu/drm/radeon/atombios_encoders.c | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/drivers/gpu/drm/radeon/atombios_encoders.c b/drivers/gpu/drm/radeon/atombios_encoders.c
index e6eb509..0ba025c 100644
--- a/drivers/gpu/drm/radeon/atombios_encoders.c
+++ b/drivers/gpu/drm/radeon/atombios_encoders.c
@@ -2397,9 +2397,13 @@ static void radeon_atom_encoder_prepare(struct drm_encoder *encoder)

static void radeon_atom_encoder_commit(struct drm_encoder *encoder)
{
+ struct drm_connector *connector = radeon_get_connector_for_encoder(encoder);
+
/* need to call this here as we need the crtc set up */
radeon_atom_encoder_dpms(encoder, DRM_MODE_DPMS_ON);
radeon_atom_output_lock(encoder, false);
+ if (connector)
+ connector->dpms = DRM_MODE_DPMS_ON;
}

static void radeon_atom_encoder_disable(struct drm_encoder *encoder)
--
1.8.3.1