mirror of https://gitee.com/openkylin/linux.git
drm/i915: Free batch pool when idle
At runtime, this helps ensure that the batch pools are kept trim and fast. Then at suspend, this releases memory that we do not need to restore. It also ties into the oom-notifier to ensure that we recover as much kernel memory as possible during OOM. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
parent
06fbca713e
commit
35c94185c5
|
@ -2795,8 +2795,19 @@ i915_gem_idle_work_handler(struct work_struct *work)
|
||||||
{
|
{
|
||||||
struct drm_i915_private *dev_priv =
|
struct drm_i915_private *dev_priv =
|
||||||
container_of(work, typeof(*dev_priv), mm.idle_work.work);
|
container_of(work, typeof(*dev_priv), mm.idle_work.work);
|
||||||
|
struct drm_device *dev = dev_priv->dev;
|
||||||
|
|
||||||
intel_mark_idle(dev_priv->dev);
|
intel_mark_idle(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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue