[Intel-gfx] [PATCH 18/17] drm/i915: Don't call intel_get_hpd_pins() when there's no hotplug interrupt
Paulo Zanoni
przanoni at gmail.com
Fri Aug 28 15:15:15 PDT 2015
2015-08-28 16:59 GMT-03:00 <ville.syrjala at linux.intel.com>:
> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
>
> On GMCH plaforms we are now getting the following spew on aux
> interrupts:
> [drm:intel_get_hpd_pins] hotplug event received, stat 0x00000000, dig 0x00000000, pins 0x00000000
> [drm:intel_get_hpd_pins] hotplug event received, stat 0x00000000, dig 0x00000000, pins 0x00000000
> [drm:intel_get_hpd_pins] hotplug event received, stat 0x00000000, dig 0x00000000, pins 0x00000000
> [drm:intel_get_hpd_pins] hotplug event received, stat 0x00000000, dig 0x00000000, pins 0x00000000
> [drm:intel_get_hpd_pins] hotplug event received, stat 0x00000000, dig 0x00000000, pins 0x00000000
> [drm:intel_dp_aux_ch] dp_aux_ch timeout status 0x71450064
>
> Prevent it by not calling intel_get_hpd_pins() unless one of the HPD
> interrupt bits are actually set.
>
> I already fixed similar annoyance once with
> 4bca26d0a6518d51a9abe64fbde4b12f04c74053 drm/i915: Use HOTPLUG_INT_STATUS_G4X on VLV/CHV
>
> but another source for it got added in
> fd63e2a972c670887e5e8a08440111d3812c0996 drm/i915: combine i9xx_get_hpd_pins and pch_get_hpd_pins
>
> due to pch_get_hpd_pins() being chosen over i9xx_get_hpd_pins() to
> serve as the new unified piece of code. pch_get_hpd_pins() had the debug
> print, and i9xx_get_hpd_pins() didn't.
>
> Cc: Imre Deak <imre.deak at intel.com>
> Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
Reviewed-by: Paulo Zanoni <paulo.r.zanoni at intel.com>
> ---
> drivers/gpu/drm/i915/i915_irq.c | 22 ++++++++++++++--------
> 1 file changed, 14 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
> index 610d301..07e539d 100644
> --- a/drivers/gpu/drm/i915/i915_irq.c
> +++ b/drivers/gpu/drm/i915/i915_irq.c
> @@ -1639,20 +1639,26 @@ static void i9xx_hpd_irq_handler(struct drm_device *dev)
> if (IS_G4X(dev) || IS_VALLEYVIEW(dev)) {
> u32 hotplug_trigger = hotplug_status & HOTPLUG_INT_STATUS_G4X;
>
> - intel_get_hpd_pins(&pin_mask, &long_mask, hotplug_trigger,
> - hotplug_trigger, hpd_status_g4x,
> - i9xx_port_hotplug_long_detect);
> - intel_hpd_irq_handler(dev, pin_mask, long_mask);
> + if (hotplug_trigger) {
> + intel_get_hpd_pins(&pin_mask, &long_mask, hotplug_trigger,
> + hotplug_trigger, hpd_status_g4x,
> + i9xx_port_hotplug_long_detect);
> +
> + intel_hpd_irq_handler(dev, pin_mask, long_mask);
> + }
>
> if (hotplug_status & DP_AUX_CHANNEL_MASK_INT_STATUS_G4X)
> dp_aux_irq_handler(dev);
> } else {
> u32 hotplug_trigger = hotplug_status & HOTPLUG_INT_STATUS_I915;
>
> - intel_get_hpd_pins(&pin_mask, &long_mask, hotplug_trigger,
> - hotplug_trigger, hpd_status_i915,
> - i9xx_port_hotplug_long_detect);
> - intel_hpd_irq_handler(dev, pin_mask, long_mask);
> + if (hotplug_trigger) {
> + intel_get_hpd_pins(&pin_mask, &long_mask, hotplug_trigger,
> + hotplug_trigger, hpd_status_i915,
> + i9xx_port_hotplug_long_detect);
> +
> + intel_hpd_irq_handler(dev, pin_mask, long_mask);
> + }
> }
> }
>
> --
> 2.4.6
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
--
Paulo Zanoni
More information about the Intel-gfx
mailing list