Hi Chris, On Friday, September 27, 2019 6:03:35 PM CEST Chris Wilson wrote: > Unwedging the GPU requires a successful GPU reset before we restore the > default submission, or else we may see residual context switch events > that we were not expecting. > > v2: Pull in the special-case reset_clobbers_display, and explain why it > should be safe in the context of unwedging. > > v3: Just forget all about resets before unwedging if it will clobber the > display; risk it all. AFAICU, the risk we take is, when running on hardware with support for execlists, if reset clobbers the display we never unwedge, even if maybe we could. On the other hand, when running on hardware which doesn't support execlists, we optimistically unwedge unless we can try the reset and it fails. Assuming the issue we are trying to fix here is specific to execlists mode, that seems to be a safe choice. Thanks, Janusz > Reported-by: Janusz Krzysztofik <janusz.krzysztofik@xxxxxxxxxxxxxxx> > Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > Cc: Janusz Krzysztofik <janusz.krzysztofik@xxxxxxxxxxxxxxx> > Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@xxxxxxxxx> > Cc: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > Reviewed-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@xxxxxxxxx> #v1 > --- > drivers/gpu/drm/i915/gt/intel_reset.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/i915/gt/intel_reset.c b/drivers/gpu/drm/i915/ gt/intel_reset.c > index d08226f5bea5..11781a626f75 100644 > --- a/drivers/gpu/drm/i915/gt/intel_reset.c > +++ b/drivers/gpu/drm/i915/gt/intel_reset.c > @@ -807,6 +807,7 @@ static bool __intel_gt_unset_wedged(struct intel_gt *gt) > struct intel_gt_timelines *timelines = >->timelines; > struct intel_timeline *tl; > unsigned long flags; > + bool ok; > > if (!test_bit(I915_WEDGED, >->reset.flags)) > return true; > @@ -853,7 +854,12 @@ static bool __intel_gt_unset_wedged(struct intel_gt *gt) > } > spin_unlock_irqrestore(&timelines->lock, flags); > > - intel_gt_sanitize(gt, false); > + /* We must reset pending GPU events before restoring our submission */ > + ok = !HAS_EXECLISTS(gt->i915); > + if (!INTEL_INFO(gt->i915)->gpu_reset_clobbers_display) > + ok = __intel_gt_reset(gt, ALL_ENGINES) == 0; > + if (!ok) > + return false; > > /* > * Undo nop_submit_request. We prevent all new i915 requests from > _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx