|
@@ -224,7 +224,7 @@ static void intel_hpd_irq_storm_reenable_work(struct work_struct *work)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- if (dev_priv->display.hpd_irq_setup)
|
|
|
|
|
|
+ if (dev_priv->display_irqs_enabled && dev_priv->display.hpd_irq_setup)
|
|
dev_priv->display.hpd_irq_setup(dev_priv);
|
|
dev_priv->display.hpd_irq_setup(dev_priv);
|
|
spin_unlock_irq(&dev_priv->irq_lock);
|
|
spin_unlock_irq(&dev_priv->irq_lock);
|
|
|
|
|
|
@@ -430,7 +430,7 @@ void intel_hpd_irq_handler(struct drm_i915_private *dev_priv,
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- if (storm_detected)
|
|
|
|
|
|
+ if (storm_detected && dev_priv->display_irqs_enabled)
|
|
dev_priv->display.hpd_irq_setup(dev_priv);
|
|
dev_priv->display.hpd_irq_setup(dev_priv);
|
|
spin_unlock(&dev_priv->irq_lock);
|
|
spin_unlock(&dev_priv->irq_lock);
|
|
|
|
|
|
@@ -476,10 +476,12 @@ void intel_hpd_init(struct drm_i915_private *dev_priv)
|
|
* Interrupt setup is already guaranteed to be single-threaded, this is
|
|
* Interrupt setup is already guaranteed to be single-threaded, this is
|
|
* just to make the assert_spin_locked checks happy.
|
|
* just to make the assert_spin_locked checks happy.
|
|
*/
|
|
*/
|
|
- spin_lock_irq(&dev_priv->irq_lock);
|
|
|
|
- if (dev_priv->display.hpd_irq_setup)
|
|
|
|
- dev_priv->display.hpd_irq_setup(dev_priv);
|
|
|
|
- spin_unlock_irq(&dev_priv->irq_lock);
|
|
|
|
|
|
+ if (dev_priv->display_irqs_enabled && dev_priv->display.hpd_irq_setup) {
|
|
|
|
+ spin_lock_irq(&dev_priv->irq_lock);
|
|
|
|
+ if (dev_priv->display_irqs_enabled)
|
|
|
|
+ dev_priv->display.hpd_irq_setup(dev_priv);
|
|
|
|
+ spin_unlock_irq(&dev_priv->irq_lock);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
static void i915_hpd_poll_init_work(struct work_struct *work)
|
|
static void i915_hpd_poll_init_work(struct work_struct *work)
|