OSDN Git Service

drm/i915: Free batch pool when idle
[uclinux-h8/linux.git] / drivers / gpu / drm / i915 / i915_gem.c
index d1ca192..4ec5d7e 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);
+       }
 }
 
 /**