Quoting Chris Wilson (2017-12-11 21:42:22) > In order to be sure that we catch the most recent request to be > executed, we need to finish on the global execution timeline. This > prevents a race where the request is being transferred between timelines > behind our back, jumping it ahead in the list onto the global execution > timeline that we have already processed causing us not to wait on that > request. Document this requirement with an assertion to protect > ourselves against future changes. > > References: 73cb97010d4f ("drm/i915: Combine seqno + tracking into a global timeline struct") > Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > Cc: Joonas Lahtinen <joonas.lahtinen@xxxxxxxxxxxxxxx> > --- > drivers/gpu/drm/i915/i915_gem.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c > index 9e957b213fdb..40db2258eb07 100644 > --- a/drivers/gpu/drm/i915/i915_gem.c > +++ b/drivers/gpu/drm/i915/i915_gem.c > @@ -3566,6 +3566,10 @@ int i915_gem_wait_for_idle(struct drm_i915_private *i915, unsigned int flags) > > lockdep_assert_held(&i915->drm.struct_mutex); > > + /* Must finish by waiting on the global execution_timeline */ > + GEM_BUG_ON(list_last_entry(&i915->gt.timelines, > + typeof(*tl), link) != > + &i915->gt.global_timeline); Scratch all that. It's just nice to have, rather than a hard requirement. We aren't looking at the timeline->requests list, but timeline->last_request which will not disappear behind our backs. -Chris _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx