Quoting Lionel Landwerlin (2020-05-04 12:12:47)
> +static int i915_perf_stream_sync(struct i915_perf_stream *stream,
> +                                bool enable)
> +{
> +       struct i915_active *active;
> +       int err = 0;
> +
> +       active = i915_active_create();
> +       if (!active)
> +               return -ENOMEM;
> +
> +       if (enable)
> +               err = stream->perf->ops.enable_metric_set(stream, active);
> +       else
> +               stream->perf->ops.disable_metric_set(stream, active);
> +       if (err == 0)
> +               __i915_active_wait(active, TASK_UNINTERRUPTIBLE);
> +
> +       i915_active_put(active);
> +       return err;
> +}
> +
>  static void i915_oa_stream_destroy(struct i915_perf_stream *stream)
>  {
>         struct i915_perf *perf = stream->perf;
> +       int err;
>  
>         BUG_ON(stream != perf->exclusive_stream);
>  
> @@ -1367,7 +1389,14 @@ static void i915_oa_stream_destroy(struct 
> i915_perf_stream *stream)
>          * See i915_oa_init_reg_state() and lrc_configure_all_contexts()
>          */
>         WRITE_ONCE(perf->exclusive_stream, NULL);
> -       perf->ops.disable_metric_set(stream);
> +       err = i915_perf_stream_sync(stream, false /* enable */);
> +       if (err) {
> +               drm_err(&perf->i915->drm,
> +                       "Error while disabling OA stream\n");
> +       }

And that error should be impossible, so explosions are fine :)

> +       intel_context_unpin(stream->config_context);
> +       intel_context_put(stream->config_context);

Reviewed-by: Chris Wilson <ch...@chris-wilson.co.uk>
-Chris
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to