Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> writes: > Keep track of our wakeref used to keep the device awake so we can catch > any leak. > > Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > Cc: Jani Nikula <jani.nikula@xxxxxxxxx> > --- > drivers/gpu/drm/i915/i915_drv.h | 2 ++ > drivers/gpu/drm/i915/i915_perf.c | 10 +++++----- > 2 files changed, 7 insertions(+), 5 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h > index a20bd2ec48de..bf25ae92f5de 100644 > --- a/drivers/gpu/drm/i915/i915_drv.h > +++ b/drivers/gpu/drm/i915/i915_drv.h > @@ -1320,6 +1320,8 @@ struct i915_perf_stream { > */ > struct list_head link; > > + intel_wakeref_t wakeref; > + > /** > * @sample_flags: Flags representing the `DRM_I915_PERF_PROP_SAMPLE_*` > * properties given when opening a stream, representing the contents > diff --git a/drivers/gpu/drm/i915/i915_perf.c b/drivers/gpu/drm/i915/i915_perf.c > index e4dfd1477c78..b0cbad2e83c5 100644 > --- a/drivers/gpu/drm/i915/i915_perf.c > +++ b/drivers/gpu/drm/i915/i915_perf.c > @@ -1364,14 +1364,14 @@ static void i915_oa_stream_destroy(struct i915_perf_stream *stream) > > free_oa_buffer(dev_priv); > > + put_oa_config(dev_priv, stream->oa_config); > + Hmm you wanted to put this inside the wakeref. But I fail to see the reason. -Mika > intel_uncore_forcewake_put(dev_priv, FORCEWAKE_ALL); > - intel_runtime_pm_put_unchecked(dev_priv); > + intel_runtime_pm_put(dev_priv, stream->wakeref); > > if (stream->ctx) > oa_put_render_ctx_id(stream); > > - put_oa_config(dev_priv, stream->oa_config); > - > if (dev_priv->perf.oa.spurious_report_rs.missed) { > DRM_NOTE("%d spurious OA report notices suppressed due to ratelimiting\n", > dev_priv->perf.oa.spurious_report_rs.missed); > @@ -2087,7 +2087,7 @@ static int i915_oa_stream_init(struct i915_perf_stream *stream, > * In our case we are expecting that taking pm + FORCEWAKE > * references will effectively disable RC6. > */ > - intel_runtime_pm_get(dev_priv); > + stream->wakeref = intel_runtime_pm_get(dev_priv); > intel_uncore_forcewake_get(dev_priv, FORCEWAKE_ALL); > > ret = alloc_oa_buffer(dev_priv); > @@ -2123,7 +2123,7 @@ static int i915_oa_stream_init(struct i915_perf_stream *stream, > put_oa_config(dev_priv, stream->oa_config); > > intel_uncore_forcewake_put(dev_priv, FORCEWAKE_ALL); > - intel_runtime_pm_put_unchecked(dev_priv); > + intel_runtime_pm_put(dev_priv, stream->wakeref); > > err_config: > if (stream->ctx) > -- > 2.20.1 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/intel-gfx _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx