Pull up following revision(s) (requested by riastradh in ticket #99):
sys/external/bsd/drm2/dist/drm/i915/i915_irq.c: revision 1.8 Fix two mistakes in previous. - i915_error_wake_up is given irq_lock, so it need not take that. - Unlock irq_lock on exit from i915_hangcheck_elapsed if ring_hung. XXX This introduces the lock order irq_lock -> pending_flip_lock. How about just using irq_lock for pending flips?
This commit is contained in:
parent
bd1d34ddce
commit
233b42c828
|
@ -2138,11 +2138,10 @@ static void i915_error_wake_up(struct drm_i915_private *dev_priv,
|
|||
* a gpu reset pending so that i915_error_work_func can acquire them).
|
||||
*/
|
||||
|
||||
assert_spin_locked(&dev_priv->irq_lock);
|
||||
#ifdef __NetBSD__
|
||||
spin_lock(&dev_priv->irq_lock);
|
||||
for_each_ring(ring, dev_priv, i)
|
||||
DRM_SPIN_WAKEUP_ALL(&ring->irq_queue, &dev_priv->irq_lock);
|
||||
spin_unlock(&dev_priv->irq_lock);
|
||||
|
||||
spin_lock(&dev_priv->pending_flip_lock);
|
||||
DRM_SPIN_WAKEUP_ALL(&dev_priv->pending_flip_queue,
|
||||
|
@ -2851,8 +2850,11 @@ static void i915_hangcheck_elapsed(unsigned long data)
|
|||
}
|
||||
}
|
||||
|
||||
if (rings_hung)
|
||||
return i915_handle_error(dev, true, "Ring hung");
|
||||
if (rings_hung) {
|
||||
i915_handle_error(dev, true, "Ring hung");
|
||||
spin_unlock(&dev_priv->irq_lock);
|
||||
return;
|
||||
}
|
||||
|
||||
spin_unlock(&dev_priv->irq_lock);
|
||||
|
||||
|
|
Loading…
Reference in New Issue