Message ID | 1317745977.30431.24.camel@adamo |
---|---|
State | New |
Headers | show |
On Tue, Oct 04, 2011 at 09:32:57AM -0700, Leann Ogasawara wrote: > 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@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@amd.com> > Cc: stable@kernel.org > > Signed-off-by: Leann Ogasawara <leann.ogasawara@canonical.com> Looks reasonable and has positive test result. Acked-by: Seth Forshee <seth.forshee@canonical.com>
On 10/04/2011 10:32 AM, Leann Ogasawara wrote: > 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@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@amd.com> > Cc: stable@kernel.org > > Signed-off-by: Leann Ogasawara<leann.ogasawara@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; > } > }
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; } }