]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - drivers/gpu/drm/i915/i915_gem.c
drm/i915: Free batch pool when idle
[karo-tx-linux.git] / drivers / gpu / drm / i915 / i915_gem.c
index d1ca192afaccb61a653f9fe9c60625fae389711d..4ec5d7e010db900e3c888a2ab6a46520b4ace7f1 100644 (file)
@@ -2795,8 +2795,19 @@ i915_gem_idle_work_handler(struct work_struct *work)
 {
        struct drm_i915_private *dev_priv =
                container_of(work, typeof(*dev_priv), mm.idle_work.work);
+       struct drm_device *dev = dev_priv->dev;
+
+       intel_mark_idle(dev);
 
-       intel_mark_idle(dev_priv->dev);
+       if (mutex_trylock(&dev->struct_mutex)) {
+               struct intel_engine_cs *ring;
+               int i;
+
+               for_each_ring(ring, dev_priv, i)
+                       i915_gem_batch_pool_fini(&ring->batch_pool);
+
+               mutex_unlock(&dev->struct_mutex);
+       }
 }
 
 /**