diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2019-01-19 09:30:24 -0500 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2019-01-21 04:25:43 -0500 |
commit | f1e9c90947979c041130011fbcd070200b5527b5 (patch) | |
tree | 6ca5324b0dd43fa63385430a8334fa9a8c300894 /drivers/gpu/drm/i915/i915_request.c | |
parent | d25236a3290ce621033a76e15bf74613acdb3a6d (diff) |
drm/i915: Prevent use of global_seqno=0
We are not allowed to assign rq->global_seqno=0 as it has a special
meaning of "inactive" (not executing on HW).
Fixes: 6faf5916e6be ("drm/i915: Remove HW semaphores for gen7 inter-engine synchronisation")
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190119143024.26971-1-chris@chris-wilson.co.uk
Diffstat (limited to 'drivers/gpu/drm/i915/i915_request.c')
-rw-r--r-- | drivers/gpu/drm/i915/i915_request.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/i915_request.c b/drivers/gpu/drm/i915/i915_request.c index 33eb9df0dd0e..c7ce27785cda 100644 --- a/drivers/gpu/drm/i915/i915_request.c +++ b/drivers/gpu/drm/i915/i915_request.c | |||
@@ -343,6 +343,13 @@ static void move_to_timeline(struct i915_request *request, | |||
343 | spin_unlock(&request->timeline->lock); | 343 | spin_unlock(&request->timeline->lock); |
344 | } | 344 | } |
345 | 345 | ||
346 | static u32 next_global_seqno(struct i915_timeline *tl) | ||
347 | { | ||
348 | if (!++tl->seqno) | ||
349 | ++tl->seqno; | ||
350 | return tl->seqno; | ||
351 | } | ||
352 | |||
346 | void __i915_request_submit(struct i915_request *request) | 353 | void __i915_request_submit(struct i915_request *request) |
347 | { | 354 | { |
348 | struct intel_engine_cs *engine = request->engine; | 355 | struct intel_engine_cs *engine = request->engine; |
@@ -359,7 +366,7 @@ void __i915_request_submit(struct i915_request *request) | |||
359 | 366 | ||
360 | GEM_BUG_ON(request->global_seqno); | 367 | GEM_BUG_ON(request->global_seqno); |
361 | 368 | ||
362 | seqno = timeline_get_seqno(&engine->timeline); | 369 | seqno = next_global_seqno(&engine->timeline); |
363 | GEM_BUG_ON(!seqno); | 370 | GEM_BUG_ON(!seqno); |
364 | GEM_BUG_ON(intel_engine_signaled(engine, seqno)); | 371 | GEM_BUG_ON(intel_engine_signaled(engine, seqno)); |
365 | 372 | ||