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

Lionel Landwerlin lionel.g.landwerlin at intel.com
Thu Feb 27 11:10:16 UTC 2020


On 27/02/2020 12:23, Chris Wilson wrote:
> Quoting Lionel Landwerlin (2020-02-27 10:17:24)
>> This appears to trigger hard hangs...
> Didn't even require a bg load!


Good point actually... I think there was still a glxgears running.


>> 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