drm/i915: Bump priority of clean up work
authorChris Wilson <chris@chris-wilson.co.uk>
Thu, 12 Jul 2018 11:57:29 +0000 (12:57 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Mon, 13 Aug 2018 12:57:31 +0000 (13:57 +0100)
We require that we keep the list of outstanding work short so that we do
not "leak" memory while pageflipping under stress. However that system
stress may delay kernel workers virtually indefinitely, which incurs the
pageflips stall and eventually hit a timeout waiting for the cleanup.

Try to combat CPU starvation of our short-lived cleanup workers by
switching to a high priority workqueue.

Testcase: igt/kms_cursor_legacy/all-pipes-torture-move
References: https://bugs.freedesktop.org/show_bug.cgi?id=107122
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180712115729.3506-1-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/intel_display.c

index 53e7a7e75384b278c8ab327dae0183475f85ad8c..366ff66e927958e4534cf391b50a4922a958f557 100644 (file)
@@ -12738,7 +12738,7 @@ static void intel_atomic_commit_tail(struct drm_atomic_state *state)
         * down.
         */
        INIT_WORK(&state->commit_work, intel_atomic_cleanup_work);
-       schedule_work(&state->commit_work);
+       queue_work(system_highpri_wq, &state->commit_work);
 }
 
 static void intel_atomic_commit_work(struct work_struct *work)