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>
This commit is contained in:
		
					parent
					
						
							
								950eabaf5a
							
						
					
				
			
			
				commit
				
					
						7cd512f152
					
				
			
		
					 2 changed files with 8 additions and 11 deletions
				
			
		| 
						 | 
				
			
			@ -1063,7 +1063,7 @@ static bool gen8_logical_ring_get_irq(struct intel_engine_cs *ring)
 | 
			
		|||
	struct drm_i915_private *dev_priv = dev->dev_private;
 | 
			
		||||
	unsigned long flags;
 | 
			
		||||
 | 
			
		||||
	if (!dev->irq_enabled)
 | 
			
		||||
	if (WARN_ON(!intel_irqs_enabled(dev_priv)))
 | 
			
		||||
		return false;
 | 
			
		||||
 | 
			
		||||
	spin_lock_irqsave(&dev_priv->irq_lock, flags);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1197,7 +1197,7 @@ gen5_ring_get_irq(struct intel_engine_cs *ring)
 | 
			
		|||
	struct drm_i915_private *dev_priv = dev->dev_private;
 | 
			
		||||
	unsigned long flags;
 | 
			
		||||
 | 
			
		||||
	if (!dev->irq_enabled)
 | 
			
		||||
	if (WARN_ON(!intel_irqs_enabled(dev_priv)))
 | 
			
		||||
		return false;
 | 
			
		||||
 | 
			
		||||
	spin_lock_irqsave(&dev_priv->irq_lock, flags);
 | 
			
		||||
| 
						 | 
				
			
			@ -1228,7 +1228,7 @@ i9xx_ring_get_irq(struct intel_engine_cs *ring)
 | 
			
		|||
	struct drm_i915_private *dev_priv = dev->dev_private;
 | 
			
		||||
	unsigned long flags;
 | 
			
		||||
 | 
			
		||||
	if (!dev->irq_enabled)
 | 
			
		||||
	if (!intel_irqs_enabled(dev_priv))
 | 
			
		||||
		return false;
 | 
			
		||||
 | 
			
		||||
	spin_lock_irqsave(&dev_priv->irq_lock, flags);
 | 
			
		||||
| 
						 | 
				
			
			@ -1265,7 +1265,7 @@ i8xx_ring_get_irq(struct intel_engine_cs *ring)
 | 
			
		|||
	struct drm_i915_private *dev_priv = dev->dev_private;
 | 
			
		||||
	unsigned long flags;
 | 
			
		||||
 | 
			
		||||
	if (!dev->irq_enabled)
 | 
			
		||||
	if (!intel_irqs_enabled(dev_priv))
 | 
			
		||||
		return false;
 | 
			
		||||
 | 
			
		||||
	spin_lock_irqsave(&dev_priv->irq_lock, flags);
 | 
			
		||||
| 
						 | 
				
			
			@ -1399,7 +1399,7 @@ gen6_ring_get_irq(struct intel_engine_cs *ring)
 | 
			
		|||
	struct drm_i915_private *dev_priv = dev->dev_private;
 | 
			
		||||
	unsigned long flags;
 | 
			
		||||
 | 
			
		||||
	if (!dev->irq_enabled)
 | 
			
		||||
	if (WARN_ON(!intel_irqs_enabled(dev_priv)))
 | 
			
		||||
		return false;
 | 
			
		||||
 | 
			
		||||
	spin_lock_irqsave(&dev_priv->irq_lock, flags);
 | 
			
		||||
| 
						 | 
				
			
			@ -1442,7 +1442,7 @@ hsw_vebox_get_irq(struct intel_engine_cs *ring)
 | 
			
		|||
	struct drm_i915_private *dev_priv = dev->dev_private;
 | 
			
		||||
	unsigned long flags;
 | 
			
		||||
 | 
			
		||||
	if (!dev->irq_enabled)
 | 
			
		||||
	if (WARN_ON(!intel_irqs_enabled(dev_priv)))
 | 
			
		||||
		return false;
 | 
			
		||||
 | 
			
		||||
	spin_lock_irqsave(&dev_priv->irq_lock, flags);
 | 
			
		||||
| 
						 | 
				
			
			@ -1462,9 +1462,6 @@ hsw_vebox_put_irq(struct intel_engine_cs *ring)
 | 
			
		|||
	struct drm_i915_private *dev_priv = dev->dev_private;
 | 
			
		||||
	unsigned long flags;
 | 
			
		||||
 | 
			
		||||
	if (!dev->irq_enabled)
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
	spin_lock_irqsave(&dev_priv->irq_lock, flags);
 | 
			
		||||
	if (--ring->irq_refcount == 0) {
 | 
			
		||||
		I915_WRITE_IMR(ring, ~0);
 | 
			
		||||
| 
						 | 
				
			
			@ -1480,7 +1477,7 @@ gen8_ring_get_irq(struct intel_engine_cs *ring)
 | 
			
		|||
	struct drm_i915_private *dev_priv = dev->dev_private;
 | 
			
		||||
	unsigned long flags;
 | 
			
		||||
 | 
			
		||||
	if (!dev->irq_enabled)
 | 
			
		||||
	if (WARN_ON(!intel_irqs_enabled(dev_priv)))
 | 
			
		||||
		return false;
 | 
			
		||||
 | 
			
		||||
	spin_lock_irqsave(&dev_priv->irq_lock, flags);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue