Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> writes: > Before we grab the engine wakeref, tidy up the previous heartbeat > request. If we then abort because the engine powerwell is off, we ensure > the request is freed as we know we will not have freed it when > cancelling the work (as the work is running!). > > Fixes: 841e86728615 ("drm/i915/gt: Only drop heartbeat.systole if the sole owner") > References: 058179e72e09 ("drm/i915/gt: Replace hangcheck by heartbeats") > Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > Cc: Mika Kuoppala <mika.kuoppala@xxxxxxxxxxxxxxx> Reviewed-by: Mika Kuoppala <mika.kuoppala@xxxxxxxxxxxxxxx> > --- > drivers/gpu/drm/i915/gt/intel_engine_heartbeat.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/i915/gt/intel_engine_heartbeat.c b/drivers/gpu/drm/i915/gt/intel_engine_heartbeat.c > index 06aa14c7aa8c..c91fd4e4af29 100644 > --- a/drivers/gpu/drm/i915/gt/intel_engine_heartbeat.c > +++ b/drivers/gpu/drm/i915/gt/intel_engine_heartbeat.c > @@ -63,15 +63,15 @@ static void heartbeat(struct work_struct *wrk) > struct intel_context *ce = engine->kernel_context; > struct i915_request *rq; > > - if (!intel_engine_pm_get_if_awake(engine)) > - return; > - > rq = engine->heartbeat.systole; > if (rq && i915_request_completed(rq)) { > i915_request_put(rq); > engine->heartbeat.systole = NULL; > } > > + if (!intel_engine_pm_get_if_awake(engine)) > + return; > + > if (intel_gt_is_wedged(engine->gt)) > goto out; > > -- > 2.24.0 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx