@@ -496,6 +496,7 @@ bool i915_semaphore_is_enabled(struct dr
void intel_hpd_cancel_work(struct drm_i915_private *dev_priv)
{
+ trace_printk("CANCEL\n");
spin_lock_irq(&dev_priv->irq_lock);
dev_priv->long_hpd_port_mask = 0;
@@ -507,6 +508,7 @@ void intel_hpd_cancel_work(struct drm_i9
cancel_work_sync(&dev_priv->dig_port_work);
cancel_work_sync(&dev_priv->hotplug_work);
cancel_delayed_work_sync(&dev_priv->hotplug_reenable_work);
+ trace_printk("CANCEL DONE\n");
}
static void intel_suspend_encoders(struct drm_i915_private *dev_priv)
@@ -1100,6 +1100,7 @@ static void i915_digport_work_func(struc
int i, ret;
u32 old_bits = 0;
+ trace_printk("WORK\n");
spin_lock_irqsave(&dev_priv->irq_lock, irqflags);
long_port_mask = dev_priv->long_hpd_port_mask;
dev_priv->long_hpd_port_mask = 0;
@@ -1757,10 +1758,13 @@ static inline void intel_hpd_irq_handler
spin_lock(&dev_priv->irq_lock);
for (i = 1; i < HPD_NUM_PINS; i++) {
- if (!(hpd[i] & hotplug_trigger))
+ if (!(hpd[i] & hotplug_trigger)) {
+ trace_printk("PIN %d continue\n", i);
continue;
+ }
port = get_port_from_pin(i);
+ trace_printk("PORT %d PIN %d continue\n", port, i);
if (port && dev_priv->hpd_irq_port[port]) {
bool long_hpd;
@@ -1784,6 +1788,7 @@ static inline void intel_hpd_irq_handler
hotplug_trigger &= ~hpd[i];
}
queue_dig = true;
+ trace_printk("PORT %d PIN %d sets queue_dig = true\n", port, i);
}
}
@@ -1840,8 +1845,10 @@ static inline void intel_hpd_irq_handler
* queue for otherwise the flush_work in the pageflip code will
* deadlock.
*/
- if (queue_dig)
+ if (queue_dig) {
+ trace_printk("QUEUE\n");
queue_work(dev_priv->dp_wq, &dev_priv->dig_port_work);
+ }
if (queue_hp)
schedule_work(&dev_priv->hotplug_work);
}