diff --git a/drm-i915-Ignore-long-hpds-on-eDP-ports.patch b/drm-i915-Ignore-long-hpds-on-eDP-ports.patch new file mode 100644 index 000000000..43378cdd5 --- /dev/null +++ b/drm-i915-Ignore-long-hpds-on-eDP-ports.patch @@ -0,0 +1,54 @@ +From: =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= +Date: Fri, 28 Nov 2014 06:52:01 +1000 +Subject: [PATCH] drm/i915: Ignore long hpds on eDP ports +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Turning vdd on/off can generate a long hpd pulse on eDP ports. In order +to handle hpd we would need to turn on vdd to perform aux transfers. +This would lead to an endless cycle of +"vdd off -> long hpd -> vdd on -> detect -> vdd off -> ..." + +So ignore long hpd pulses on eDP ports. eDP panels should be physically +tied to the machine anyway so they should not actually disappear and +thus don't need long hpd handling. Short hpds are still needed for link +re-train and whatnot so we can't just turn off the hpd interrupt +entirely for eDP ports. Perhaps we could turn it off whenever the panel +is disabled, but just ignoring the long hpd seems sufficient. + +Signed-off-by: Ville Syrjälä +Cc: stable@vger.kernel.org +Reviewed-by: Dave Airlie +Reviewed-by: Todd Previte +Signed-off-by: Jani Nikula +--- + drivers/gpu/drm/i915/intel_dp.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c +index cff7f2e04de2..a6fb06cc6cf0 100644 +--- a/drivers/gpu/drm/i915/intel_dp.c ++++ b/drivers/gpu/drm/i915/intel_dp.c +@@ -4082,6 +4082,18 @@ intel_dp_hpd_pulse(struct intel_digital_port *intel_dig_port, bool long_hpd) + if (intel_dig_port->base.type != INTEL_OUTPUT_EDP) + intel_dig_port->base.type = INTEL_OUTPUT_DISPLAYPORT; + ++ if (long_hpd && intel_dig_port->base.type == INTEL_OUTPUT_EDP) { ++ /* ++ * vdd off can generate a long pulse on eDP which ++ * would require vdd on to handle it, and thus we ++ * would end up in an endless cycle of ++ * "vdd off -> long hpd -> vdd on -> detect -> vdd off -> ..." ++ */ ++ DRM_DEBUG_KMS("ignoring long hpd on eDP port %c\n", ++ port_name(intel_dig_port->port)); ++ return false; ++ } ++ + DRM_DEBUG_KMS("got hpd irq on port %d - %s\n", intel_dig_port->port, + long_hpd ? "long" : "short"); + +-- +1.9.3 + diff --git a/kernel.spec b/kernel.spec index e76d0dd3d..402440b3f 100644 --- a/kernel.spec +++ b/kernel.spec @@ -744,6 +744,8 @@ Patch26072: drm-radeon-initialize-sadb-to-NULL-in-the-audio-code.patch #rhbz 1094048 Patch26073: Input-xpad-use-proper-endpoint-type.patch +Patch26074: drm-i915-Ignore-long-hpds-on-eDP-ports.patch + # git clone ssh://git.fedorahosted.org/git/kernel-arm64.git, git diff master...devel Patch30000: kernel-arm64.patch @@ -1459,6 +1461,8 @@ ApplyPatch drm-radeon-initialize-sadb-to-NULL-in-the-audio-code.patch #rhbz 1094048 ApplyPatch Input-xpad-use-proper-endpoint-type.patch +ApplyPatch drm-i915-Ignore-long-hpds-on-eDP-ports.patch + %if 0%{?aarch64patches} ApplyPatch kernel-arm64.patch %ifnarch aarch64 # this is stupid, but i want to notice before secondary koji does. @@ -2278,6 +2282,7 @@ fi # || || %changelog * Mon Dec 01 2014 Josh Boyer +- Add patch to quiet i915 driver on long hdps - Add patch to fix oops when using xpad (rhbz 1094048) * Thu Nov 27 2014 Josh Boyer