[PATCH] kick-once

Chris Wilson chris at chris-wilson.co.uk
Thu Dec 17 01:49:48 UTC 2020


---
 drivers/gpu/drm/i915/gt/intel_breadcrumbs.c | 12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/intel_breadcrumbs.c b/drivers/gpu/drm/i915/gt/intel_breadcrumbs.c
index 00918300f53f..4ee11acb7444 100644
--- a/drivers/gpu/drm/i915/gt/intel_breadcrumbs.c
+++ b/drivers/gpu/drm/i915/gt/intel_breadcrumbs.c
@@ -334,15 +334,13 @@ void intel_breadcrumbs_reset(struct intel_breadcrumbs *b)
 
 void intel_breadcrumbs_park(struct intel_breadcrumbs *b)
 {
+	if (!READ_ONCE(b->irq_armed))
+		return;
+
 	/* Kick the work once more to drain the signalers */
 	irq_work_sync(&b->irq_work);
-	while (unlikely(READ_ONCE(b->irq_armed))) {
-		local_irq_disable();
-		signal_irq_work(&b->irq_work);
-		local_irq_enable();
-		cond_resched();
-	}
-	GEM_BUG_ON(!list_empty(&b->signalers));
+	if (unlikely(READ_ONCE(b->irq_armed)))
+		irq_work_queue(&b->irq_work);
 }
 
 void intel_breadcrumbs_free(struct intel_breadcrumbs *b)
-- 
2.20.1



More information about the Intel-gfx-trybot mailing list