Quoting Chris Wilson (2020-07-10 13:07:17) > If the HW throws a curve ball and reports either en event before it is > possible, or just a completely impossible event, we have to grin and > bear it. The first few events, we will likely not notice as we would be > expecting some event, but as soon as we stop expecting an event and yet > they still keep coming, then we enter into undefined state terrority. > In which case, bail out, stop processing the events, and reset the > engine and our set of queued requests to recover. > > The sporadic hangs and warnings will continue to plague CI, but at least > system stability should not be compromised. > > Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/2045 > Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > Cc: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxx> > --- > drivers/gpu/drm/i915/gt/intel_lrc.c | 8 ++++++-- > drivers/gpu/drm/i915/i915_gem.h | 2 ++ > 2 files changed, 8 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c b/drivers/gpu/drm/i915/gt/intel_lrc.c > index fbcfeaed6441..f22cf8ed47ac 100644 > --- a/drivers/gpu/drm/i915/gt/intel_lrc.c > +++ b/drivers/gpu/drm/i915/gt/intel_lrc.c > @@ -2567,6 +2567,7 @@ static void process_csb(struct intel_engine_cs *engine) > tail = READ_ONCE(*execlists->csb_write); > if (unlikely(head == tail)) > return; > + execlists->csb_head = tail; > > /* > * Hopefully paired with a wmb() in HW! > @@ -2613,6 +2614,9 @@ static void process_csb(struct intel_engine_cs *engine) > if (promote) { > struct i915_request * const *old = execlists->active; > > + if (GEM_WARN_ON_ONCE(!*execlists->pending)) I wonder if we should just default GEM_WARN_ON to be GEM_WARN_ON_ONCE, CI reboots after a warning so the spam is unhelpful. -Chris _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx