[igt-dev] [PATCH i-g-t v2] tests/perf: add a stress test opening/closing the stream
Lionel Landwerlin
lionel.g.landwerlin at intel.com
Fri Feb 28 11:13:38 UTC 2020
This appears to trigger hard hangs...
v2: Add NUM_PROPERTIES()
Add describe
Add background load
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
Reviewed-by: Chris Wilson <chris at chris-wilson.co.uk> (v1)
---
tests/perf.c | 40 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 40 insertions(+)
diff --git a/tests/perf.c b/tests/perf.c
index d9bac561..14645047 100644
--- a/tests/perf.c
+++ b/tests/perf.c
@@ -85,6 +85,8 @@ IGT_TEST_DESCRIPTION("Test the i915 perf metrics streaming interface");
#define MAX_OA_BUF_SIZE (16 * 1024 * 1024)
+#define NUM_PROPERTIES(p) (sizeof(p) / (2 * sizeof(uint64_t)))
+
struct accumulator {
#define MAX_RAW_OA_COUNTERS 62
enum drm_i915_oa_format format;
@@ -3995,6 +3997,40 @@ test_rc6_disable(void)
igt_assert_neq(n_events_end - n_events_start, 0);
}
+static void
+test_stress_open_close(void)
+{
+ load_helper_init();
+ load_helper_run(HIGH);
+
+ 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 = NUM_PROPERTIES(properties),
+ .properties_ptr = to_user_pointer(properties),
+ };
+
+ stream_fd = __perf_open(drm_fd, ¶m, false);
+ __perf_close(stream_fd);
+ }
+
+ load_helper_stop();
+ load_helper_fini();
+}
+
static int __i915_perf_add_config(int fd, struct drm_i915_perf_oa_config *config)
{
int ret = igt_ioctl(fd, DRM_IOCTL_I915_PERF_ADD_CONFIG, config);
@@ -4590,6 +4626,10 @@ igt_main
igt_subtest("rc6-disable")
test_rc6_disable();
+ igt_describe("Stress tests opening & closing the i915-perf stream in a busy loop");
+ igt_subtest("stress-open-close")
+ test_stress_open_close();
+
igt_subtest("invalid-create-userspace-config")
test_invalid_create_userspace_config();
--
2.25.1
More information about the igt-dev
mailing list