| From e8b83ad337464dbd862bbae90e82be22031a1a6f Mon Sep 17 00:00:00 2001 |
| From: Egbert Eich <eich@suse.de> |
| Date: Fri, 26 Jul 2013 14:14:24 +0200 |
| Subject: drm/i915: Add messages useful for HPD storm detection debugging (v2) |
| |
| For HPD storm detection we now mask out individual interrupt source |
| bits. We have already seen a case where HPD interrupt enable bits |
| were assigned to the wrong pins. To track these conditions more |
| easily add some debugging messages. |
| |
| v2: Spelling fixes as suggested by Jani Nikula <jani.nikula@linux.intel.com> |
| |
| Signed-off-by: Egbert Eich <eich@suse.de> |
| Reviewed-by: Jani Nikula <jani.nikula@intel.com> |
| Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> |
| (cherry picked from commit b8f102e8bf71cacf33326360fdf9dcfd1a63925b) |
| Signed-off-by: Darren Hart <dvhart@linux.intel.com> |
| --- |
| drivers/gpu/drm/i915/i915_irq.c | 7 +++++++ |
| 1 file changed, 7 insertions(+) |
| |
| diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c |
| index a588cd5745aa..97f60282d397 100644 |
| --- a/drivers/gpu/drm/i915/i915_irq.c |
| +++ b/drivers/gpu/drm/i915/i915_irq.c |
| @@ -919,6 +919,10 @@ static inline void intel_hpd_irq_handler(struct drm_device *dev, |
| spin_lock(&dev_priv->irq_lock); |
| for (i = 1; i < HPD_NUM_PINS; i++) { |
| |
| + WARN(((hpd[i] & hotplug_trigger) && |
| + dev_priv->hpd_stats[i].hpd_mark != HPD_ENABLED), |
| + "Received HPD interrupt although disabled\n"); |
| + |
| if (!(hpd[i] & hotplug_trigger) || |
| dev_priv->hpd_stats[i].hpd_mark != HPD_ENABLED) |
| continue; |
| @@ -929,6 +933,7 @@ static inline void intel_hpd_irq_handler(struct drm_device *dev, |
| + msecs_to_jiffies(HPD_STORM_DETECT_PERIOD))) { |
| dev_priv->hpd_stats[i].hpd_last_jiffies = jiffies; |
| dev_priv->hpd_stats[i].hpd_cnt = 0; |
| + DRM_DEBUG_KMS("Received HPD interrupt on PIN %d - cnt: 0\n", i); |
| } else if (dev_priv->hpd_stats[i].hpd_cnt > HPD_STORM_THRESHOLD) { |
| dev_priv->hpd_stats[i].hpd_mark = HPD_MARK_DISABLED; |
| dev_priv->hpd_event_bits &= ~(1 << i); |
| @@ -936,6 +941,8 @@ static inline void intel_hpd_irq_handler(struct drm_device *dev, |
| storm_detected = true; |
| } else { |
| dev_priv->hpd_stats[i].hpd_cnt++; |
| + DRM_DEBUG_KMS("Received HPD interrupt on PIN %d - cnt: %d\n", i, |
| + dev_priv->hpd_stats[i].hpd_cnt); |
| } |
| } |
| |
| -- |
| 1.8.5.rc3 |
| |