drm/i915/perf: Track the rpm wakeref
Keep track of our wakeref used to keep the device awake so we can catch any leak. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Jani Nikula <jani.nikula@intel.com> Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20190114142129.24398-7-chris@chris-wilson.co.uk
This commit is contained in:
Родитель
a037121c3c
Коммит
6619c0075f
|
@ -1333,6 +1333,8 @@ struct i915_perf_stream {
|
||||||
*/
|
*/
|
||||||
struct list_head link;
|
struct list_head link;
|
||||||
|
|
||||||
|
intel_wakeref_t wakeref;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @sample_flags: Flags representing the `DRM_I915_PERF_PROP_SAMPLE_*`
|
* @sample_flags: Flags representing the `DRM_I915_PERF_PROP_SAMPLE_*`
|
||||||
* properties given when opening a stream, representing the contents
|
* properties given when opening a stream, representing the contents
|
||||||
|
|
|
@ -1365,7 +1365,7 @@ static void i915_oa_stream_destroy(struct i915_perf_stream *stream)
|
||||||
free_oa_buffer(dev_priv);
|
free_oa_buffer(dev_priv);
|
||||||
|
|
||||||
intel_uncore_forcewake_put(dev_priv, FORCEWAKE_ALL);
|
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)
|
if (stream->ctx)
|
||||||
oa_put_render_ctx_id(stream);
|
oa_put_render_ctx_id(stream);
|
||||||
|
@ -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
|
* In our case we are expecting that taking pm + FORCEWAKE
|
||||||
* references will effectively disable RC6.
|
* 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);
|
intel_uncore_forcewake_get(dev_priv, FORCEWAKE_ALL);
|
||||||
|
|
||||||
ret = alloc_oa_buffer(dev_priv);
|
ret = alloc_oa_buffer(dev_priv);
|
||||||
|
@ -2123,7 +2123,7 @@ err_oa_buf_alloc:
|
||||||
put_oa_config(dev_priv, stream->oa_config);
|
put_oa_config(dev_priv, stream->oa_config);
|
||||||
|
|
||||||
intel_uncore_forcewake_put(dev_priv, FORCEWAKE_ALL);
|
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:
|
err_config:
|
||||||
if (stream->ctx)
|
if (stream->ctx)
|
||||||
|
|
Загрузка…
Ссылка в новой задаче