Patch "drm/i915: Move long hpd handling into the hotplug work" has been added to the 4.8-stable tree
Subsystems (3)
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
1015811609c0328b5ed670d07748591b837e74ebMon 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.
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