[PATCH 1/1] drm/i915: Fix for nested_enable_signaling BUG_ON

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: John Harrison <John.C.Harrison@xxxxxxxxx>

The call to enable signaling was occuring after the request had been
sent to the GuC for execution on the hardware. That means that it is
possible for the request to actually complete before the code to
enable signaling has executed.

Potentially that means the request could be signalled before anyone is
ready to receive the signal and thus lead to a deadlock where the
driver is now waiting for a signal that will never arrive because it
has already missed it. Certainly it will lead to the BUG in
nested_enable_signaling() firing complaining that the request has
already been signaled.

This patch reverses the order. Signaling is now enabled before sending
the request to the GuC.

Signed-off-by: John Harrison <John.C.Harrison@xxxxxxxxx>
---
 drivers/gpu/drm/i915/i915_guc_submission.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_guc_submission.c b/drivers/gpu/drm/i915/i915_guc_submission.c
index ff82f0561ec1..edf29758f35a 100644
--- a/drivers/gpu/drm/i915/i915_guc_submission.c
+++ b/drivers/gpu/drm/i915/i915_guc_submission.c
@@ -721,7 +721,6 @@ static bool i915_guc_dequeue(struct intel_engine_cs *engine)
 			}
 
 			i915_gem_request_assign(&port->request, last);
-			nested_enable_signaling(last);
 			port++;
 		}
 
@@ -749,6 +748,7 @@ static bool i915_guc_dequeue(struct intel_engine_cs *engine)
 			}
 #endif
 		}
+		nested_enable_signaling(rq);
 		i915_guc_submit(rq);
 		trace_i915_gem_request_in(rq, port - engine->execlist_port);
 		last = rq;
@@ -758,7 +758,6 @@ static bool i915_guc_dequeue(struct intel_engine_cs *engine)
 	}
 	if (submit) {
 		i915_gem_request_assign(&port->request, last);
-		nested_enable_signaling(last);
 		engine->execlist_first = rb;
 	}
 out:
-- 
2.13.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/intel-gfx




[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux