[igt-dev] [PATCH i-g-t] tests/perf: add a stress test opening/closing the stream

Chris Wilson chris at chris-wilson.co.uk
Thu Feb 27 10:23:36 UTC 2020


Quoting Lionel Landwerlin (2020-02-27 10:17:24)
> This appears to trigger hard hangs...

Didn't even require a bg load!
> 
> Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
> ---
>  tests/perf.c | 31 +++++++++++++++++++++++++++++++
>  1 file changed, 31 insertions(+)
> 
> diff --git a/tests/perf.c b/tests/perf.c
> index d9bac561..d9ff4edb 100644
> --- a/tests/perf.c
> +++ b/tests/perf.c
> @@ -3995,6 +3995,34 @@ test_rc6_disable(void)
>         igt_assert_neq(n_events_end - n_events_start, 0);
>  }
>  
> +static void
> +test_stress_open_close(void)
> +{
> +       igt_until_timeout(2) {
> +               int oa_exponent = 5; /* 5 micro seconds */
> +               uint64_t properties[] = {
> +                       /* XXX: even without periodic sampling we have to
> +                        * specify at least one sample layout property...
> +                        */
> +                       DRM_I915_PERF_PROP_SAMPLE_OA, true,
> +
> +                       /* OA unit configuration */
> +                       DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
> +                       DRM_I915_PERF_PROP_OA_FORMAT, test_set->perf_oa_format,
> +                       DRM_I915_PERF_PROP_OA_EXPONENT, oa_exponent,
> +               };
> +               struct drm_i915_perf_open_param param = {
> +                       .flags = I915_PERF_FLAG_FD_CLOEXEC |
> +                                I915_PERF_FLAG_DISABLED, /* XXX: open disabled */
> +                       .num_properties = sizeof(properties) / 16,

#define NUM_PROPERTIES(p) (sizeof(p) / (2 * sizeof(uint64_t)))

[and probably crib the kernels assert_pointer_is_array()]

> +                       .properties_ptr = to_user_pointer(properties),
> +               };
> +
> +               stream_fd = __perf_open(drm_fd, &param, false);
> +               __perf_close(stream_fd);

Ok, that looks as basic as can be -- I was struggling to decide what the
minimum parameters were :)

Reviewed-by: Chris Wilson <chris at chris-wilson.co.uk>
-Chris


More information about the igt-dev mailing list