[Oneiric][SRU][PATCH 1/1] UBUNTU: SAUCE: drm/radeon/kms: Fix logic error in DP HPD handler

Leann Ogasawara leann.ogasawara at canonical.com
Tue Oct 4 16:32:57 UTC 2011


BugLink: https://bugs.launchpad.net/bugs/860868

== SRU Justification ==
A regression was introduced in the v3.0.3 upstream stable update.  The
bug reporter has a HD5770 card with 3 screens connected (1 monitor to
DisplayPort-0, 1 monitor to the DVI-0, and a TV to the HDMI-0).  The
screen connected to display port immediately goes black and reports "no
signal".  To wake the screen again, they had to issue the command "xset
dpms force suspend" which then wakes the screen connected to the display
port.  The same thing also happens when turning the tv off.

We narrowed down the 2 problematic patches introduced in v3.0.3.  I
escalated the issue back to upstream stable as well as the author of the
patches.  We were provided the following fix which has been tested and
confirmed to resolve this regression.  It has been sent to upstream
dri-devel and CC'd upstream stable but has not yet been applied.  As
this resolves a regression, I think we should carry this as a SAUCE
patch until it comes back down through stable.

== Fix ==
http://lists.freedesktop.org/archives/dri-devel/2011-October/014882.html

== Test Case ==
With the fix applied, turn tv on and off and confirm it does not
interfere with other connected displays.

>From 2826ac1eb77c3741265a115ef67a671f290dd5d0 Mon Sep 17 00:00:00 2001
From: Alex Deucher <alexander.deucher at amd.com>
Date: Fri, 30 Sep 2011 13:05:44 -0700
Subject: [PATCH] UBUNTU: SAUCE: drm/radeon/kms: Fix logic error in DP HPD handler

BugLink: https://bugs.launchpad.net/bugs/860868

Only disable the pipe if the monitor is physically
disconnected.  The previous logic also disabled the
pipe if the link was trained.

Fixes:
https://bugs.freedesktop.org/show_bug.cgi?id=41248

http://lists.freedesktop.org/archives/dri-devel/2011-October/014882.html

Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
Cc: stable at kernel.org

Signed-off-by: Leann Ogasawara <leann.ogasawara at canonical.com>
---
 drivers/gpu/drm/radeon/radeon_connectors.c |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/radeon/radeon_connectors.c b/drivers/gpu/drm/radeon/radeon_connectors.c
index d1b36f8..05b8b2c 100644
--- a/drivers/gpu/drm/radeon/radeon_connectors.c
+++ b/drivers/gpu/drm/radeon/radeon_connectors.c
@@ -68,11 +68,11 @@ void radeon_connector_hotplug(struct drm_connector *connector)
 	if (connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort) {
 		int saved_dpms = connector->dpms;
 
-		if (radeon_hpd_sense(rdev, radeon_connector->hpd.hpd) &&
-		    radeon_dp_needs_link_train(radeon_connector))
-			drm_helper_connector_dpms(connector, DRM_MODE_DPMS_ON);
-		else
+		/* Only turn off the display it it's physically disconnected */
+		if (!radeon_hpd_sense(rdev, radeon_connector->hpd.hpd))
 			drm_helper_connector_dpms(connector, DRM_MODE_DPMS_OFF);
+		else if (radeon_dp_needs_link_train(radeon_connector))
+			drm_helper_connector_dpms(connector, DRM_MODE_DPMS_ON);
 		connector->dpms = saved_dpms;
 	}
 }
-- 
1.7.4.1







More information about the kernel-team mailing list