[Intel-gfx] [PATCH] drm/i915: Make the GEM reclaim workqueue high priority
Chris Wilson
chris at chris-wilson.co.uk
Tue Oct 13 10:32:56 UTC 2020
Since removing dev->struct_mutex usage, we only use i915->wq for batch
freeing of GEM objects and ppGTT, it is essential for memory reclaim. If
we let the workqueue dawdle, we trap excess amounts of memory, so give
it a priority boost. Although since we no longer depend on a singular
mutex, we could run unbounded, but first lets try to keep some
constraint upon the worker.
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
Cc: CQ Tang <cq.tang at intel.com>
---
drivers/gpu/drm/i915/i915_drv.c | 16 +++-------------
1 file changed, 3 insertions(+), 13 deletions(-)
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index 8bb7e2dcfaaa..8c9198f0d2ad 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -219,20 +219,10 @@ intel_teardown_mchbar(struct drm_i915_private *dev_priv)
static int i915_workqueues_init(struct drm_i915_private *dev_priv)
{
/*
- * The i915 workqueue is primarily used for batched retirement of
- * requests (and thus managing bo) once the task has been completed
- * by the GPU. i915_retire_requests() is called directly when we
- * need high-priority retirement, such as waiting for an explicit
- * bo.
- *
- * It is also used for periodic low-priority events, such as
- * idle-timers and recording error state.
- *
- * All tasks on the workqueue are expected to acquire the dev mutex
- * so there is no point in running more than one instance of the
- * workqueue at any time. Use an ordered one.
+ * The i915 workqueue is primarily used for batched freeing of
+ * GEM objects and ppGTT, and is essential for memory reclaim.
*/
- dev_priv->wq = alloc_ordered_workqueue("i915", 0);
+ dev_priv->wq = alloc_ordered_workqueue("i915", WQ_HIGHPRI);
if (dev_priv->wq == NULL)
goto out_err;
--
2.20.1
More information about the Intel-gfx
mailing list