|
@@ -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);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/**
|