--- drivers/gpu/drm/i915/intel_guc_submission.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_guc_submission.c b/drivers/gpu/drm/i915/intel_guc_submission.c index eae668442ebe..4c45da01ea1c 100644 --- a/drivers/gpu/drm/i915/intel_guc_submission.c +++ b/drivers/gpu/drm/i915/intel_guc_submission.c @@ -654,11 +654,10 @@ static void complete_preempt_context(struct intel_engine_cs *engine) if (inject_preempt_hang(execlists)) return; + wait_for_guc_preempt_report(engine); + execlists_cancel_port_requests(execlists); execlists_unwind_incomplete_requests(execlists); - - wait_for_guc_preempt_report(engine); - intel_write_status_page(engine, I915_GEM_HWS_PREEMPT_INDEX, 0); } /** @@ -726,6 +725,9 @@ static bool __guc_dequeue(struct intel_engine_cs *engine) int prio = execlists->queue_priority; if (__execlists_need_preempt(prio, port_prio(port))) { + intel_write_status_page(engine, + I915_GEM_HWS_PREEMPT_INDEX, + 0); execlists_set_active(execlists, EXECLISTS_ACTIVE_PREEMPT); queue_work(engine->i915->guc.preempt_wq, @@ -816,8 +818,7 @@ static void guc_submission_tasklet(unsigned long data) } if (execlists_is_active(execlists, EXECLISTS_ACTIVE_PREEMPT) && - intel_read_status_page(engine, I915_GEM_HWS_PREEMPT_INDEX) == - GUC_PREEMPT_FINISHED) + intel_read_status_page(engine, I915_GEM_HWS_PREEMPT_INDEX)) complete_preempt_context(engine); if (!execlists_is_active(execlists, EXECLISTS_ACTIVE_PREEMPT)) -- 2.19.1 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx