Skip to contentSkip to conversation

Patch "drm/i915: Move long hpd handling into the hotplug work" has been added to the 4.8-stable tree

PATCH [email protected] 1 participant 1 message Oct 28, 2016

Subsystems (3)
lore
Share & tools
lore

[email protected]

author maintainer Applied
#0 lore raw

This is a note to let you know that I've just added the patch titled

drm/i915: Move long hpd handling into the hotplug work

to the 4.8-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
drm-i915-move-long-hpd-handling-into-the-hotplug-work.patch
and it can be found in the queue-4.8 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

Quoted 1 line

From 1015811609c0328b5ed670d07748591b837e74eb Mon Sep 17 00:00:00 2001

From: =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= <[email protected]>
Date: Mon, 3 Oct 2016 10:55:15 +0300
Subject: drm/i915: Move long hpd handling into the hotplug work
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

From: Ville Syrjälä <[email protected]>

commit 1015811609c0328b5ed670d07748591b837e74eb upstream.

We can't rely on connector->status in the detect() hook if the long hpd was already handled by the dig_port_work as that won't update connector->status. Thus we have to defer the long hpd handling entirely until the hotplug work runs to avoid the double long hpd handling the "detect_done" flag is trying to prevent.

We'll start to depend on connector->status being up to date in a following patch.

Cc Damien Cassou <[email protected]>
Cc Shubhangi Shrivastava <[email protected]>
Cc Sivakumar Thulasimani <[email protected]>
Cc Ander Conselvan de Oliveira <[email protected]>

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=83348

---
 drivers/gpu/drm/i915/intel_dp.c |   48 +++++++++++++++++++---------------------
 1 file changed, 23 insertions(+), 25 deletions(-)
drivers/gpu/drm/i915/intel_dp.c +23 -25
@@ -4696,36 +4696,34 @@ intel_dp_hpd_pulse(struct intel_digital_
 		      port_name(intel_dig_port->port),
 		      long_hpd ? "long" : "short");
 
+	if (long_hpd) {
+		intel_dp->detect_done = false;
+		return IRQ_NONE;
+	}
+
 	power_domain = intel_display_port_aux_power_domain(intel_encoder);
 	intel_display_power_get(dev_priv, power_domain);
 
-	if (long_hpd) {
-		intel_dp_long_pulse(intel_dp->attached_connector);
-		if (intel_dp->is_mst)
-			ret = IRQ_HANDLED;
-		goto put_power;
-
-	} else {
-		if (intel_dp->is_mst) {
-			if (intel_dp_check_mst_status(intel_dp) == -EINVAL) {
-				/*
-				 * If we were in MST mode, and device is not
-				 * there, get out of MST mode
-				 */
-				DRM_DEBUG_KMS("MST device may have disappeared %d vs %d\n",
-					      intel_dp->is_mst, intel_dp->mst_mgr.mst_state);
-				intel_dp->is_mst = false;
-				drm_dp_mst_topology_mgr_set_mst(&intel_dp->mst_mgr,
-								intel_dp->is_mst);
-				goto put_power;
-			}
+	if (intel_dp->is_mst) {
+		if (intel_dp_check_mst_status(intel_dp) == -EINVAL) {
+			/*
+			 * If we were in MST mode, and device is not
+			 * there, get out of MST mode
+			 */
+			DRM_DEBUG_KMS("MST device may have disappeared %d vs %d\n",
+				      intel_dp->is_mst, intel_dp->mst_mgr.mst_state);
+			intel_dp->is_mst = false;
+			drm_dp_mst_topology_mgr_set_mst(&intel_dp->mst_mgr,
+							intel_dp->is_mst);
+			intel_dp->detect_done = false;
+			goto put_power;
 		}
+	}
 
-		if (!intel_dp->is_mst) {
-			if (!intel_dp_short_pulse(intel_dp)) {
-				intel_dp_long_pulse(intel_dp->attached_connector);
-				goto put_power;
-			}
+	if (!intel_dp->is_mst) {
+		if (!intel_dp_short_pulse(intel_dp)) {
+			intel_dp->detect_done = false;
+			goto put_power;
 		}
 	}
 

Patches currently in stable-queue which might be from [email protected] are

queue-4.8/drm-i915-backlight-setup-backlight-pwm-alternate-increment-on-backlight-enable.patch queue-4.8/drm-i915-skl-update-plane-watermarks-atomically-during-plane-updates.patch queue-4.8/drm-i915-skl-update-ddb-values-atomically-with-wms-plane-attrs.patch queue-4.8/drm-i915-allow-dp-to-work-w-o-edid.patch queue-4.8/drm-i915-move-crtc-updating-in-atomic_commit-into-it-s-own-hook.patch queue-4.8/drm-i915-backlight-setup-and-cache-pwm-alternate-increment-value.patch queue-4.8/drm-i915-skl-ensure-pipes-with-changed-wms-get-added-to-the-state.patch queue-4.8/drm-i915-allow-pch-dpll-sharing-regardless-of-dpll_sdvo_high_speed.patch queue-4.8/drm-i915-move-long-hpd-handling-into-the-hotplug-work.patch queue-4.8/drm-i915-account-for-tseg-size-when-determining-865g-stolen-base.patch