aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Vetter <daniel.vetter@ffwll.ch>2014-09-15 05:38:57 -0400
committerDaniel Vetter <daniel.vetter@ffwll.ch>2014-09-19 08:43:13 -0400
commit7cd512f1520f85bf8e45f75b82fece58f0265cec (patch)
tree7d07a85afba99cadfcabe4715fe405bc9b9d1eef
parent950eabaf5a87257040e0c207be09487954113f54 (diff)
drm/i915: Fix irq checks in ring->irq_get/put functions
Yet another place that wasn't properly transformed when implementing SOix. While at it convert the checks to WARN_ON on gen5+ (since we don't have UMS potentially doing stupid things on those platforms). And also add the corresponding checks to the put functions (again with a WARN_ON) for gen5+. v2: Drop the WARNINGS in the irq_put functions (including the existing one for vebox), Chris convinced me that they're not that terribly useful. v3: Don't forget about execlist code. Cc: Imre Deak <imre.deak@intel.com> Cc: Jesse Barnes <jbarnes@virtuousgeek.org> Cc: "Volkin, Bradley D" <bradley.d.volkin@intel.com> Cc: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
-rw-r--r--drivers/gpu/drm/i915/intel_lrc.c2
-rw-r--r--drivers/gpu/drm/i915/intel_ringbuffer.c17
2 files changed, 8 insertions, 11 deletions
diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
index bafd38b5703e..803fc38664c4 100644
--- a/drivers/gpu/drm/i915/intel_lrc.c
+++ b/drivers/gpu/drm/i915/intel_lrc.c
@@ -1063,7 +1063,7 @@ static bool gen8_logical_ring_get_irq(struct intel_engine_cs *ring)
1063 struct drm_i915_private *dev_priv = dev->dev_private; 1063 struct drm_i915_private *dev_priv = dev->dev_private;
1064 unsigned long flags; 1064 unsigned long flags;
1065 1065
1066 if (!dev->irq_enabled) 1066 if (WARN_ON(!intel_irqs_enabled(dev_priv)))
1067 return false; 1067 return false;
1068 1068
1069 spin_lock_irqsave(&dev_priv->irq_lock, flags); 1069 spin_lock_irqsave(&dev_priv->irq_lock, flags);
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
index 25795f2efdcb..922d6bc1a1b3 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
@@ -1197,7 +1197,7 @@ gen5_ring_get_irq(struct intel_engine_cs *ring)
1197 struct drm_i915_private *dev_priv = dev->dev_private; 1197 struct drm_i915_private *dev_priv = dev->dev_private;
1198 unsigned long flags; 1198 unsigned long flags;
1199 1199
1200 if (!dev->irq_enabled) 1200 if (WARN_ON(!intel_irqs_enabled(dev_priv)))
1201 return false; 1201 return false;
1202 1202
1203 spin_lock_irqsave(&dev_priv->irq_lock, flags); 1203 spin_lock_irqsave(&dev_priv->irq_lock, flags);
@@ -1228,7 +1228,7 @@ i9xx_ring_get_irq(struct intel_engine_cs *ring)
1228 struct drm_i915_private *dev_priv = dev->dev_private; 1228 struct drm_i915_private *dev_priv = dev->dev_private;
1229 unsigned long flags; 1229 unsigned long flags;
1230 1230
1231 if (!dev->irq_enabled) 1231 if (!intel_irqs_enabled(dev_priv))
1232 return false; 1232 return false;
1233 1233
1234 spin_lock_irqsave(&dev_priv->irq_lock, flags); 1234 spin_lock_irqsave(&dev_priv->irq_lock, flags);
@@ -1265,7 +1265,7 @@ i8xx_ring_get_irq(struct intel_engine_cs *ring)
1265 struct drm_i915_private *dev_priv = dev->dev_private; 1265 struct drm_i915_private *dev_priv = dev->dev_private;
1266 unsigned long flags; 1266 unsigned long flags;
1267 1267
1268 if (!dev->irq_enabled) 1268 if (!intel_irqs_enabled(dev_priv))
1269 return false; 1269 return false;
1270 1270
1271 spin_lock_irqsave(&dev_priv->irq_lock, flags); 1271 spin_lock_irqsave(&dev_priv->irq_lock, flags);
@@ -1399,8 +1399,8 @@ gen6_ring_get_irq(struct intel_engine_cs *ring)
1399 struct drm_i915_private *dev_priv = dev->dev_private; 1399 struct drm_i915_private *dev_priv = dev->dev_private;
1400 unsigned long flags; 1400 unsigned long flags;
1401 1401
1402 if (!dev->irq_enabled) 1402 if (WARN_ON(!intel_irqs_enabled(dev_priv)))
1403 return false; 1403 return false;
1404 1404
1405 spin_lock_irqsave(&dev_priv->irq_lock, flags); 1405 spin_lock_irqsave(&dev_priv->irq_lock, flags);
1406 if (ring->irq_refcount++ == 0) { 1406 if (ring->irq_refcount++ == 0) {
@@ -1442,7 +1442,7 @@ hsw_vebox_get_irq(struct intel_engine_cs *ring)
1442 struct drm_i915_private *dev_priv = dev->dev_private; 1442 struct drm_i915_private *dev_priv = dev->dev_private;
1443 unsigned long flags; 1443 unsigned long flags;
1444 1444
1445 if (!dev->irq_enabled) 1445 if (WARN_ON(!intel_irqs_enabled(dev_priv)))
1446 return false; 1446 return false;
1447 1447
1448 spin_lock_irqsave(&dev_priv->irq_lock, flags); 1448 spin_lock_irqsave(&dev_priv->irq_lock, flags);
@@ -1462,9 +1462,6 @@ hsw_vebox_put_irq(struct intel_engine_cs *ring)
1462 struct drm_i915_private *dev_priv = dev->dev_private; 1462 struct drm_i915_private *dev_priv = dev->dev_private;
1463 unsigned long flags; 1463 unsigned long flags;
1464 1464
1465 if (!dev->irq_enabled)
1466 return;
1467
1468 spin_lock_irqsave(&dev_priv->irq_lock, flags); 1465 spin_lock_irqsave(&dev_priv->irq_lock, flags);
1469 if (--ring->irq_refcount == 0) { 1466 if (--ring->irq_refcount == 0) {
1470 I915_WRITE_IMR(ring, ~0); 1467 I915_WRITE_IMR(ring, ~0);
@@ -1480,7 +1477,7 @@ gen8_ring_get_irq(struct intel_engine_cs *ring)
1480 struct drm_i915_private *dev_priv = dev->dev_private; 1477 struct drm_i915_private *dev_priv = dev->dev_private;
1481 unsigned long flags; 1478 unsigned long flags;
1482 1479
1483 if (!dev->irq_enabled) 1480 if (WARN_ON(!intel_irqs_enabled(dev_priv)))
1484 return false; 1481 return false;
1485 1482
1486 spin_lock_irqsave(&dev_priv->irq_lock, flags); 1483 spin_lock_irqsave(&dev_priv->irq_lock, flags);