* [igt-dev] [PATCH i-g-t] tests/perf: reuse the new i915-perf library
@ 2020-02-21 13:41 Lionel Landwerlin
2020-02-21 15:04 ` [igt-dev] ✗ Fi.CI.BAT: failure for " Patchwork
2020-02-21 15:04 ` [igt-dev] [PATCH i-g-t] " Chris Wilson
0 siblings, 2 replies; 4+ messages in thread
From: Lionel Landwerlin @ 2020-02-21 13:41 UTC (permalink / raw)
To: igt-dev
Now that most configs are stored inside IGT along with their uuid, we
can just source the correct one for that internal library.
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
---
tests/Makefile.am | 1 +
tests/meson.build | 8 +-
tests/perf.c | 291 +++++++++++++++++-----------------------------
3 files changed, 112 insertions(+), 188 deletions(-)
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 87ffec2e..8219e79b 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -130,6 +130,7 @@ prime_self_import_CFLAGS = $(AM_CFLAGS) $(THREAD_CFLAGS)
prime_self_import_LDADD = $(LDADD) -lpthread
gem_userptr_blits_CFLAGS = $(AM_CFLAGS) $(THREAD_CFLAGS)
gem_userptr_blits_LDADD = $(LDADD) -lpthread
+perf_LDADD = $(LDADD) $(top_builddir)/lib/libi915_perf.la
perf_pmu_LDADD = $(LDADD) $(top_builddir)/lib/libigt_perf.la
sw_sync_LDADD = $(LDADD) -latomic
diff --git a/tests/meson.build b/tests/meson.build
index fa0103e3..d945ca92 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -73,7 +73,6 @@ test_progs = [
'panfrost_gem_new',
'panfrost_prime',
'panfrost_submit',
- 'perf',
'prime_busy',
'prime_mmap',
'prime_mmap_coherency',
@@ -338,6 +337,13 @@ test_executables += executable('perf_pmu', 'perf_pmu.c',
install : true)
test_list += 'perf_pmu'
+test_executables += executable('perf', 'perf.c',
+ dependencies : test_deps + [ lib_igt_i915_perf ],
+ install_dir : libexecdir,
+ install_rpath : libexecdir_rpathdir,
+ install : true)
+test_list += 'perf'
+
executable('testdisplay', ['testdisplay.c', 'testdisplay_hotplug.c'],
dependencies : test_deps,
install_dir : libexecdir,
diff --git a/tests/perf.c b/tests/perf.c
index aa9a0085..4c77f558 100644
--- a/tests/perf.c
+++ b/tests/perf.c
@@ -40,6 +40,7 @@
#include "igt.h"
#include "igt_sysfs.h"
+#include "i915/perf.h"
#include "drm.h"
IGT_TEST_DESCRIPTION("Test the i915 perf metrics streaming interface");
@@ -194,13 +195,10 @@ static int sysfs = -1;
static int pm_fd = -1;
static int stream_fd = -1;
static uint32_t devid;
-static int n_eus;
-static uint64_t test_metric_set_id = UINT64_MAX;
-
-static uint64_t timestamp_frequency = 12500000;
static uint64_t gt_max_freq_mhz = 0;
-static enum drm_i915_oa_format test_oa_format;
+static struct intel_perf *intel_perf = NULL;
+static struct intel_perf_metric_set *test_set = NULL;
static bool *undefined_a_counters;
static uint64_t oa_exp_1_millisec;
@@ -389,7 +387,7 @@ gen8_read_report_reason(const uint32_t *report)
static uint64_t
timebase_scale(uint32_t u32_delta)
{
- return ((uint64_t)u32_delta * NSEC_PER_SEC) / timestamp_frequency;
+ return ((uint64_t)u32_delta * NSEC_PER_SEC) / intel_perf->devinfo.timestamp_frequency;
}
/* Returns: the largest OA exponent that will still result in a sampling period
@@ -429,7 +427,7 @@ max_oa_exponent_for_freq_gt(uint64_t frequency)
static uint64_t
oa_exponent_to_ns(int exponent)
{
- return 1000000000ULL * (2ULL << exponent) / timestamp_frequency;
+ return 1000000000ULL * (2ULL << exponent) / intel_perf->devinfo.timestamp_frequency;
}
static bool
@@ -580,7 +578,7 @@ hsw_sanity_check_render_basic_reports(uint32_t *oa_report0, uint32_t *oa_report1
*
* Sanity check that no counters exceed this delta.
*/
- max_delta = clock_delta * n_eus;
+ max_delta = clock_delta * intel_perf->devinfo.n_eus;
/* 40bit A counters were only introduced for Gen8+ */
igt_assert_eq(format.n_a40, 0);
@@ -770,7 +768,7 @@ gen8_sanity_check_test_oa_reports(uint32_t *oa_report0, uint32_t *oa_report1,
igt_debug("clock delta = %"PRIu32"\n", clock_delta);
- max_delta = clock_delta * n_eus;
+ max_delta = clock_delta * intel_perf->devinfo.n_eus;
/* Gen8+ has some 40bit A counters... */
for (int j = 0; j < format.n_a40; j++) {
@@ -854,142 +852,58 @@ gen8_sanity_check_test_oa_reports(uint32_t *oa_report0, uint32_t *oa_report1,
}
}
-static uint64_t
-get_cs_timestamp_frequency(void)
-{
- int cs_ts_freq = 0;
- drm_i915_getparam_t gp;
-
- gp.param = I915_PARAM_CS_TIMESTAMP_FREQUENCY;
- gp.value = &cs_ts_freq;
- if (igt_ioctl(drm_fd, DRM_IOCTL_I915_GETPARAM, &gp) == 0)
- return cs_ts_freq;
-
- igt_debug("Couldn't query CS timestamp frequency, trying to guess based on PCI-id\n");
-
- if (IS_GEN7(devid) || IS_GEN8(devid))
- return 12500000;
- if (IS_SKYLAKE(devid) || IS_KABYLAKE(devid) || IS_COFFEELAKE(devid))
- return 12000000;
- if (IS_BROXTON(devid) || IS_GEMINILAKE(devid))
- return 19200000;
-
- igt_skip("Kernel with PARAM_CS_TIMESTAMP_FREQUENCY support required\n");
-}
-
static bool
init_sys_info(void)
{
const char *test_set_name = NULL;
- const char *test_set_uuid = NULL;
- char buf[256];
+ struct intel_perf_metric_set *metric_set_iter;
+
+ igt_assert_neq(devid, 0);
- timestamp_frequency = get_cs_timestamp_frequency();
- igt_debug("timestamp_frequency = %"PRIu64"\n", timestamp_frequency);
- igt_require(timestamp_frequency);
+ intel_perf = intel_perf_for_fd(drm_fd);
+ igt_require(intel_perf);
+ igt_debug("timestamp_frequency = %"PRIu64"\n",
+ intel_perf->devinfo.timestamp_frequency);
+ igt_assert_neq(intel_perf->devinfo.timestamp_frequency, 0);
+
+ /* We don't have a TestOa metric set for Haswell so use
+ * RenderBasic
+ */
if (IS_HASWELL(devid)) {
- /* We don't have a TestOa metric set for Haswell so use
- * RenderBasic
- */
test_set_name = "RenderBasic";
- test_set_uuid = "403d8832-1a27-4aa6-a64e-f5389ce7b212";
- test_oa_format = I915_OA_FORMAT_A45_B8_C8;
- undefined_a_counters = hsw_undefined_a_counters;
read_report_ticks = hsw_read_report_ticks;
sanity_check_reports = hsw_sanity_check_render_basic_reports;
-
- if (intel_gt(devid) == 0)
- n_eus = 10;
- else if (intel_gt(devid) == 1)
- n_eus = 20;
- else if (intel_gt(devid) == 2)
- n_eus = 40;
- else {
- igt_assert(!"reached");
- return false;
- }
+ undefined_a_counters = hsw_undefined_a_counters;
} else {
- drm_i915_getparam_t gp;
-
test_set_name = "TestOa";
- test_oa_format = I915_OA_FORMAT_A32u40_A4u32_B8_C8;
- undefined_a_counters = gen8_undefined_a_counters;
read_report_ticks = gen8_read_report_ticks;
sanity_check_reports = gen8_sanity_check_test_oa_reports;
+ undefined_a_counters = gen8_undefined_a_counters;
+ }
- if (IS_BROADWELL(devid)) {
- test_set_uuid = "d6de6f55-e526-4f79-a6a6-d7315c09044e";
- } else if (IS_CHERRYVIEW(devid)) {
- test_set_uuid = "4a534b07-cba3-414d-8d60-874830e883aa";
- } else if (IS_SKYLAKE(devid)) {
- switch (intel_gt(devid)) {
- case 1:
- test_set_uuid = "1651949f-0ac0-4cb1-a06f-dafd74a407d1";
- break;
- case 2:
- test_set_uuid = "2b985803-d3c9-4629-8a4f-634bfecba0e8";
- break;
- case 3:
- test_set_uuid = "882fa433-1f4a-4a67-a962-c741888fe5f5";
- break;
- default:
- igt_debug("unsupported Skylake GT size\n");
- return false;
- }
- } else if (IS_BROXTON(devid)) {
- test_set_uuid = "5ee72f5c-092f-421e-8b70-225f7c3e9612";
- } else if (IS_KABYLAKE(devid)) {
- switch (intel_gt(devid)) {
- case 1:
- test_set_uuid = "baa3c7e4-52b6-4b85-801e-465a94b746dd";
- break;
- case 2:
- test_set_uuid = "f1792f32-6db2-4b50-b4b2-557128f1688d";
- break;
- default:
- igt_debug("unsupported Kabylake GT size\n");
- return false;
- }
- } else if (IS_GEMINILAKE(devid)) {
- test_set_uuid = "dd3fd789-e783-4204-8cd0-b671bbccb0cf";
- } else if (IS_COFFEELAKE(devid) || IS_COMETLAKE(devid)) {
- switch (intel_gt(devid)) {
- case 1:
- test_set_uuid = "74fb4902-d3d3-4237-9e90-cbdc68d0a446";
- break;
- case 2:
- test_set_uuid = "577e8e2c-3fa0-4875-8743-3538d585e3b0";
- break;
- default:
- igt_debug("unsupported Coffeelake GT size\n");
- return false;
- }
- } else if (IS_CANNONLAKE(devid)) {
- test_set_uuid = "db41edd4-d8e7-4730-ad11-b9a2d6833503";
- } else if (IS_ICELAKE(devid)) {
- test_set_uuid = "a291665e-244b-4b76-9b9a-01de9d3c8068";
- } else if (IS_TIGERLAKE(devid)) {
- test_set_uuid = "80a833f0-2504-4321-8894-e9277844ce7b";
- } else {
- igt_debug("unsupported GT\n");
- return false;
+ igt_list_for_each_entry(metric_set_iter, &intel_perf->metric_sets, link) {
+ if (strcmp(metric_set_iter->symbol_name, test_set_name) == 0) {
+ test_set = metric_set_iter;
+ break;
}
-
- gp.param = I915_PARAM_EU_TOTAL;
- gp.value = &n_eus;
- do_ioctl(drm_fd, DRM_IOCTL_I915_GETPARAM, &gp);
}
+ if (!test_set)
+ return false;
+
igt_debug("%s metric set UUID = %s\n",
- test_set_name,
- test_set_uuid);
+ test_set->symbol_name,
+ test_set->hw_config_guid);
- oa_exp_1_millisec = max_oa_exponent_for_period_lte(1000000);
+ intel_perf_load_perf_configs(intel_perf, drm_fd);
+
+ if (test_set->perf_oa_metrics_set == 0)
+ return false;
- snprintf(buf, sizeof(buf), "metrics/%s/id", test_set_uuid);
+ oa_exp_1_millisec = max_oa_exponent_for_period_lte(1000000);
- return try_sysfs_read_u64(buf, &test_metric_set_id);
+ return true;
}
static int
@@ -1058,8 +972,8 @@ test_system_wide_paranoid(void)
DRM_I915_PERF_PROP_SAMPLE_OA, true,
/* OA unit configuration */
- DRM_I915_PERF_PROP_OA_METRICS_SET, test_metric_set_id,
- DRM_I915_PERF_PROP_OA_FORMAT, test_oa_format,
+ 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_exp_1_millisec,
};
struct drm_i915_perf_open_param param = {
@@ -1084,8 +998,8 @@ test_system_wide_paranoid(void)
DRM_I915_PERF_PROP_SAMPLE_OA, true,
/* OA unit configuration */
- DRM_I915_PERF_PROP_OA_METRICS_SET, test_metric_set_id,
- DRM_I915_PERF_PROP_OA_FORMAT, test_oa_format,
+ 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_exp_1_millisec,
};
struct drm_i915_perf_open_param param = {
@@ -1116,8 +1030,8 @@ test_invalid_open_flags(void)
DRM_I915_PERF_PROP_SAMPLE_OA, true,
/* OA unit configuration */
- DRM_I915_PERF_PROP_OA_METRICS_SET, test_metric_set_id,
- DRM_I915_PERF_PROP_OA_FORMAT, test_oa_format,
+ 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_exp_1_millisec,
};
struct drm_i915_perf_open_param param = {
@@ -1137,7 +1051,7 @@ test_invalid_oa_metric_set_id(void)
DRM_I915_PERF_PROP_SAMPLE_OA, true,
/* OA unit configuration */
- DRM_I915_PERF_PROP_OA_FORMAT, test_oa_format,
+ DRM_I915_PERF_PROP_OA_FORMAT, test_set->perf_oa_format,
DRM_I915_PERF_PROP_OA_EXPONENT, oa_exp_1_millisec,
DRM_I915_PERF_PROP_OA_METRICS_SET, UINT64_MAX,
};
@@ -1154,7 +1068,7 @@ test_invalid_oa_metric_set_id(void)
do_ioctl_err(drm_fd, DRM_IOCTL_I915_PERF_OPEN, ¶m, EINVAL);
/* Check that we aren't just seeing false positives... */
- properties[ARRAY_SIZE(properties) - 1] = test_metric_set_id;
+ properties[ARRAY_SIZE(properties) - 1] = test_set->perf_oa_metrics_set;
stream_fd = __perf_open(drm_fd, ¶m, false);
__perf_close(stream_fd);
@@ -1171,7 +1085,7 @@ test_invalid_oa_format_id(void)
DRM_I915_PERF_PROP_SAMPLE_OA, true,
/* OA unit configuration */
- DRM_I915_PERF_PROP_OA_METRICS_SET, test_metric_set_id,
+ DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
DRM_I915_PERF_PROP_OA_EXPONENT, oa_exp_1_millisec,
DRM_I915_PERF_PROP_OA_FORMAT, UINT64_MAX,
};
@@ -1188,7 +1102,7 @@ test_invalid_oa_format_id(void)
do_ioctl_err(drm_fd, DRM_IOCTL_I915_PERF_OPEN, ¶m, EINVAL);
/* Check that we aren't just seeing false positives... */
- properties[ARRAY_SIZE(properties) - 1] = test_oa_format;
+ properties[ARRAY_SIZE(properties) - 1] = test_set->perf_oa_format;
stream_fd = __perf_open(drm_fd, ¶m, false);
__perf_close(stream_fd);
@@ -1204,9 +1118,9 @@ test_missing_sample_flags(void)
/* No _PROP_SAMPLE_xyz flags */
/* OA unit configuration */
- DRM_I915_PERF_PROP_OA_METRICS_SET, test_metric_set_id,
+ DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
DRM_I915_PERF_PROP_OA_EXPONENT, oa_exp_1_millisec,
- DRM_I915_PERF_PROP_OA_FORMAT, test_oa_format,
+ DRM_I915_PERF_PROP_OA_FORMAT, test_set->perf_oa_format,
};
struct drm_i915_perf_open_param param = {
.flags = I915_PERF_FLAG_FD_CLOEXEC,
@@ -1343,7 +1257,7 @@ open_and_read_2_oa_reports(int format_id,
DRM_I915_PERF_PROP_SAMPLE_OA, true,
/* OA unit configuration */
- DRM_I915_PERF_PROP_OA_METRICS_SET, test_metric_set_id,
+ DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
DRM_I915_PERF_PROP_OA_FORMAT, format_id,
DRM_I915_PERF_PROP_OA_EXPONENT, exponent,
@@ -1710,8 +1624,8 @@ test_oa_exponents(void)
DRM_I915_PERF_PROP_SAMPLE_OA, true,
/* OA unit configuration */
- DRM_I915_PERF_PROP_OA_METRICS_SET, test_metric_set_id,
- DRM_I915_PERF_PROP_OA_FORMAT, test_oa_format,
+ 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, exponent,
};
struct drm_i915_perf_open_param param = {
@@ -1720,7 +1634,7 @@ test_oa_exponents(void)
.properties_ptr = to_user_pointer(properties),
};
uint64_t expected_timestamp_delta = 2ULL << exponent;
- size_t format_size = get_oa_format(test_oa_format).size;
+ size_t format_size = get_oa_format(test_set->perf_oa_format).size;
size_t sample_size = (sizeof(struct drm_i915_perf_record_header) +
format_size);
int max_reports = MAX_OA_BUF_SIZE / format_size;
@@ -1828,8 +1742,8 @@ test_invalid_oa_exponent(void)
DRM_I915_PERF_PROP_SAMPLE_OA, true,
/* OA unit configuration */
- DRM_I915_PERF_PROP_OA_METRICS_SET, test_metric_set_id,
- DRM_I915_PERF_PROP_OA_FORMAT, test_oa_format,
+ 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, 31, /* maximum exponent expected
to be accepted */
};
@@ -1864,8 +1778,8 @@ test_low_oa_exponent_permissions(void)
DRM_I915_PERF_PROP_SAMPLE_OA, true,
/* OA unit configuration */
- DRM_I915_PERF_PROP_OA_METRICS_SET, test_metric_set_id,
- DRM_I915_PERF_PROP_OA_FORMAT, test_oa_format,
+ 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, bad_exponent,
};
struct drm_i915_perf_open_param param = {
@@ -1927,8 +1841,8 @@ test_per_context_mode_unprivileged(void)
DRM_I915_PERF_PROP_SAMPLE_OA, true,
/* OA unit configuration */
- DRM_I915_PERF_PROP_OA_METRICS_SET, test_metric_set_id,
- DRM_I915_PERF_PROP_OA_FORMAT, test_oa_format,
+ 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_exp_1_millisec,
};
struct drm_i915_perf_open_param param = {
@@ -2014,8 +1928,8 @@ test_blocking(void)
DRM_I915_PERF_PROP_SAMPLE_OA, true,
/* OA unit configuration */
- DRM_I915_PERF_PROP_OA_METRICS_SET, test_metric_set_id,
- DRM_I915_PERF_PROP_OA_FORMAT, test_oa_format,
+ 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 = {
@@ -2172,8 +2086,8 @@ test_polling(void)
DRM_I915_PERF_PROP_SAMPLE_OA, true,
/* OA unit configuration */
- DRM_I915_PERF_PROP_OA_METRICS_SET, test_metric_set_id,
- DRM_I915_PERF_PROP_OA_FORMAT, test_oa_format,
+ 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 = {
@@ -2354,8 +2268,8 @@ test_buffer_fill(void)
DRM_I915_PERF_PROP_SAMPLE_OA, true,
/* OA unit configuration */
- DRM_I915_PERF_PROP_OA_METRICS_SET, test_metric_set_id,
- DRM_I915_PERF_PROP_OA_FORMAT, test_oa_format,
+ 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 = {
@@ -2368,7 +2282,7 @@ test_buffer_fill(void)
uint8_t *buf = malloc(buf_size);
int len;
size_t oa_buf_size = MAX_OA_BUF_SIZE;
- size_t report_size = get_oa_format(test_oa_format).size;
+ size_t report_size = get_oa_format(test_set->perf_oa_format).size;
int n_full_oa_reports = oa_buf_size / report_size;
uint64_t fill_duration = n_full_oa_reports * oa_period;
@@ -2497,8 +2411,8 @@ test_enable_disable(void)
DRM_I915_PERF_PROP_SAMPLE_OA, true,
/* OA unit configuration */
- DRM_I915_PERF_PROP_OA_METRICS_SET, test_metric_set_id,
- DRM_I915_PERF_PROP_OA_FORMAT, test_oa_format,
+ 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 = {
@@ -2510,7 +2424,7 @@ test_enable_disable(void)
int buf_size = 65536 * (256 + sizeof(struct drm_i915_perf_record_header));
uint8_t *buf = malloc(buf_size);
size_t oa_buf_size = MAX_OA_BUF_SIZE;
- size_t report_size = get_oa_format(test_oa_format).size;
+ size_t report_size = get_oa_format(test_set->perf_oa_format).size;
int n_full_oa_reports = oa_buf_size / report_size;
uint64_t fill_duration = n_full_oa_reports * oa_period;
@@ -2642,8 +2556,8 @@ test_short_reads(void)
DRM_I915_PERF_PROP_SAMPLE_OA, true,
/* OA unit configuration */
- DRM_I915_PERF_PROP_OA_METRICS_SET, test_metric_set_id,
- DRM_I915_PERF_PROP_OA_FORMAT, test_oa_format,
+ 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 = {
@@ -2728,8 +2642,8 @@ test_non_sampling_read_error(void)
DRM_I915_PERF_PROP_SAMPLE_OA, true,
/* OA unit configuration */
- DRM_I915_PERF_PROP_OA_METRICS_SET, test_metric_set_id,
- DRM_I915_PERF_PROP_OA_FORMAT, test_oa_format,
+ DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
+ DRM_I915_PERF_PROP_OA_FORMAT, test_set->perf_oa_format,
/* XXX: no sampling exponent */
};
@@ -2764,8 +2678,8 @@ test_disabled_read_error(void)
DRM_I915_PERF_PROP_SAMPLE_OA, true,
/* OA unit configuration */
- DRM_I915_PERF_PROP_OA_METRICS_SET, test_metric_set_id,
- DRM_I915_PERF_PROP_OA_FORMAT, test_oa_format,
+ 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 = {
@@ -2791,7 +2705,7 @@ test_disabled_read_error(void)
param.flags &= ~I915_PERF_FLAG_DISABLED;
stream_fd = __perf_open(drm_fd, ¶m, false);
- read_2_oa_reports(test_oa_format,
+ read_2_oa_reports(test_set->perf_oa_format,
oa_exponent,
oa_report0,
oa_report1,
@@ -2805,7 +2719,7 @@ test_disabled_read_error(void)
do_ioctl(stream_fd, I915_PERF_IOCTL_ENABLE, 0);
- read_2_oa_reports(test_oa_format,
+ read_2_oa_reports(test_set->perf_oa_format,
oa_exponent,
oa_report0,
oa_report1,
@@ -2836,8 +2750,8 @@ gen12_test_mi_rpc(void)
* not rely on the OA buffer anymore to normalize the counter
* values.
*/
- DRM_I915_PERF_PROP_OA_METRICS_SET, test_metric_set_id,
- DRM_I915_PERF_PROP_OA_FORMAT, test_oa_format,
+ DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
+ DRM_I915_PERF_PROP_OA_FORMAT, test_set->perf_oa_format,
};
struct drm_i915_perf_open_param param = {
.flags = I915_PERF_FLAG_FD_CLOEXEC,
@@ -2853,7 +2767,7 @@ gen12_test_mi_rpc(void)
uint32_t *report32;
int ret;
size_t format_size_32;
- struct oa_format format = get_oa_format(test_oa_format);
+ struct oa_format format = get_oa_format(test_set->perf_oa_format);
/* Ensure perf_stream_paranoid is set to 1 by default */
write_u64_file("/proc/sys/dev/i915/perf_stream_paranoid", 1);
@@ -2932,8 +2846,8 @@ test_mi_rpc(void)
DRM_I915_PERF_PROP_SAMPLE_OA, true,
/* OA unit configuration */
- DRM_I915_PERF_PROP_OA_METRICS_SET, test_metric_set_id,
- DRM_I915_PERF_PROP_OA_FORMAT, test_oa_format,
+ DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
+ DRM_I915_PERF_PROP_OA_FORMAT, test_set->perf_oa_format,
/* Note: no OA exponent specified in this case */
};
@@ -3049,8 +2963,8 @@ hsw_test_single_ctx_counters(void)
DRM_I915_PERF_PROP_SAMPLE_OA, true,
/* OA unit configuration */
- DRM_I915_PERF_PROP_OA_METRICS_SET, test_metric_set_id,
- DRM_I915_PERF_PROP_OA_FORMAT, test_oa_format,
+ DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
+ DRM_I915_PERF_PROP_OA_FORMAT, test_set->perf_oa_format,
/* Note: no OA exponent specified in this case */
};
@@ -3204,7 +3118,7 @@ hsw_test_single_ctx_counters(void)
igt_assert_neq(report1_32[1], 0); /* timestamp */
print_reports(report0_32, report1_32,
- lookup_format(test_oa_format));
+ lookup_format(test_set->perf_oa_format));
/* A40 == N samples written to all render targets */
n_samples_written = report1_32[43] - report0_32[43];
@@ -3286,8 +3200,8 @@ gen8_test_single_ctx_render_target_writes_a_counter(void)
DRM_I915_PERF_PROP_SAMPLE_OA, true,
/* OA unit configuration */
- DRM_I915_PERF_PROP_OA_METRICS_SET, test_metric_set_id,
- DRM_I915_PERF_PROP_OA_FORMAT, test_oa_format,
+ 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,
/* Note: no OA exponent specified in this case */
@@ -3297,7 +3211,7 @@ gen8_test_single_ctx_render_target_writes_a_counter(void)
.num_properties = ARRAY_SIZE(properties) / 2,
.properties_ptr = to_user_pointer(properties),
};
- size_t format_size = get_oa_format(test_oa_format).size;
+ size_t format_size = get_oa_format(test_set->perf_oa_format).size;
size_t sample_size = (sizeof(struct drm_i915_perf_record_header) +
format_size);
int max_reports = MAX_OA_BUF_SIZE / format_size;
@@ -3333,7 +3247,7 @@ gen8_test_single_ctx_render_target_writes_a_counter(void)
uint32_t n_invalid_ctx = 0;
int ret;
struct accumulator accumulator = {
- .format = test_oa_format
+ .format = test_set->perf_oa_format
};
bufmgr = drm_intel_bufmgr_gem_init(drm_fd, 4096);
@@ -3508,7 +3422,7 @@ gen8_test_single_ctx_render_target_writes_a_counter(void)
exit(EAGAIN);
}
- len = i915_read_reports_until_timestamp(test_oa_format,
+ len = i915_read_reports_until_timestamp(test_set->perf_oa_format,
buf, buf_size,
report0_32[1],
report1_32[1]);
@@ -3523,7 +3437,7 @@ gen8_test_single_ctx_render_target_writes_a_counter(void)
uint32_t reason;
const char *skip_reason = NULL, *report_reason = NULL;
struct accumulator laccumulator = {
- .format = test_oa_format
+ .format = test_set->perf_oa_format
};
@@ -3654,7 +3568,7 @@ gen8_test_single_ctx_render_target_writes_a_counter(void)
if (report == report1_32) {
igt_debug("Breaking on end of report\n");
print_reports(report0_32, report1_32,
- lookup_format(test_oa_format));
+ lookup_format(test_set->perf_oa_format));
break;
}
}
@@ -3722,8 +3636,8 @@ static void gen12_single_ctx_helper(void)
* not rely on the OA buffer anymore to normalize the counter
* values.
*/
- DRM_I915_PERF_PROP_OA_METRICS_SET, test_metric_set_id,
- DRM_I915_PERF_PROP_OA_FORMAT, test_oa_format,
+ DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
+ DRM_I915_PERF_PROP_OA_FORMAT, test_set->perf_oa_format,
};
struct drm_i915_perf_open_param param = {
.flags = I915_PERF_FLAG_FD_CLOEXEC,
@@ -3747,7 +3661,7 @@ static void gen12_single_ctx_helper(void)
uint32_t ctx1_id = INVALID_CTX_ID;
int ret;
struct accumulator accumulator = {
- .format = test_oa_format
+ .format = test_set->perf_oa_format
};
bufmgr = drm_intel_bufmgr_gem_init(drm_fd, 4096);
@@ -4047,8 +3961,8 @@ test_rc6_disable(void)
DRM_I915_PERF_PROP_SAMPLE_OA, true,
/* OA unit configuration */
- DRM_I915_PERF_PROP_OA_METRICS_SET, test_metric_set_id,
- DRM_I915_PERF_PROP_OA_FORMAT, test_oa_format,
+ 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_exp_1_millisec,
};
struct drm_i915_perf_open_param param = {
@@ -4231,7 +4145,7 @@ test_create_destroy_userspace_config(void)
/* OA unit configuration */
DRM_I915_PERF_PROP_SAMPLE_OA, true,
- DRM_I915_PERF_PROP_OA_FORMAT, test_oa_format,
+ DRM_I915_PERF_PROP_OA_FORMAT, test_set->perf_oa_format,
DRM_I915_PERF_PROP_OA_EXPONENT, oa_exp_1_millisec,
DRM_I915_PERF_PROP_OA_METRICS_SET
};
@@ -4502,8 +4416,8 @@ test_i915_ref_count(void)
* init_sys_info()...
*/
igt_require(init_sys_info());
- properties[3] = test_metric_set_id;
- properties[5] = test_oa_format;
+ properties[3] = test_set->perf_oa_metrics_set;
+ properties[5] = test_set->perf_oa_format;
properties[7] = oa_exp_1_millisec;
ref_count0 = read_i915_module_ref();
@@ -4524,7 +4438,7 @@ test_i915_ref_count(void)
igt_assert(ref_count0 > baseline);
- read_2_oa_reports(test_oa_format,
+ read_2_oa_reports(test_set->perf_oa_format,
oa_exp_1_millisec,
oa_report0,
oa_report1,
@@ -4691,6 +4605,9 @@ igt_main
write_u64_file("/proc/sys/dev/i915/oa_max_sample_rate", 100000);
write_u64_file("/proc/sys/dev/i915/perf_stream_paranoid", 1);
+ if (intel_perf)
+ intel_perf_free(intel_perf);
+
close(drm_fd);
}
}
--
2.25.0
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [igt-dev] ✗ Fi.CI.BAT: failure for tests/perf: reuse the new i915-perf library
2020-02-21 13:41 [igt-dev] [PATCH i-g-t] tests/perf: reuse the new i915-perf library Lionel Landwerlin
@ 2020-02-21 15:04 ` Patchwork
2020-02-21 15:04 ` [igt-dev] [PATCH i-g-t] " Chris Wilson
1 sibling, 0 replies; 4+ messages in thread
From: Patchwork @ 2020-02-21 15:04 UTC (permalink / raw)
To: Lionel Landwerlin; +Cc: igt-dev
== Series Details ==
Series: tests/perf: reuse the new i915-perf library
URL : https://patchwork.freedesktop.org/series/73770/
State : failure
== Summary ==
CI Bug Log - changes from CI_DRM_7982 -> IGTPW_4210
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with IGTPW_4210 absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in IGTPW_4210, please notify your bug team to allow them
to document this new failure mode, which will reduce false positives in CI.
External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4210/index.html
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in IGTPW_4210:
### IGT changes ###
#### Possible regressions ####
* igt@i915_selftest@live_vma:
- fi-bwr-2160: [PASS][1] -> [INCOMPLETE][2]
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7982/fi-bwr-2160/igt@i915_selftest@live_vma.html
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4210/fi-bwr-2160/igt@i915_selftest@live_vma.html
New tests
---------
New tests have been introduced between CI_DRM_7982 and IGTPW_4210:
### New IGT tests (1) ###
* igt@i915_pm_rpm@module-reload:
- Statuses : 2 dmesg-warn(s) 27 pass(s) 8 skip(s)
- Exec time: [0.0, 48.79] s
Known issues
------------
Here are the changes found in IGTPW_4210 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@i915_selftest@live_gtt:
- fi-icl-dsi: [PASS][3] -> [TIMEOUT][4] ([fdo#112271])
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7982/fi-icl-dsi/igt@i915_selftest@live_gtt.html
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4210/fi-icl-dsi/igt@i915_selftest@live_gtt.html
* igt@i915_selftest@live_hangcheck:
- fi-skl-guc: [PASS][5] -> [INCOMPLETE][6] ([fdo#108744])
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7982/fi-skl-guc/igt@i915_selftest@live_hangcheck.html
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4210/fi-skl-guc/igt@i915_selftest@live_hangcheck.html
* igt@prime_self_import@basic-with_fd_dup:
- fi-tgl-y: [PASS][7] -> [DMESG-WARN][8] ([CI#94] / [i915#402]) +1 similar issue
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7982/fi-tgl-y/igt@prime_self_import@basic-with_fd_dup.html
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4210/fi-tgl-y/igt@prime_self_import@basic-with_fd_dup.html
#### Possible fixes ####
* igt@gem_exec_suspend@basic-s3:
- fi-skl-6600u: [INCOMPLETE][9] ([i915#146] / [i915#69]) -> [PASS][10]
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7982/fi-skl-6600u/igt@gem_exec_suspend@basic-s3.html
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4210/fi-skl-6600u/igt@gem_exec_suspend@basic-s3.html
* igt@kms_addfb_basic@addfb25-modifier-no-flag:
- fi-tgl-y: [DMESG-WARN][11] ([CI#94] / [i915#402]) -> [PASS][12] +1 similar issue
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7982/fi-tgl-y/igt@kms_addfb_basic@addfb25-modifier-no-flag.html
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4210/fi-tgl-y/igt@kms_addfb_basic@addfb25-modifier-no-flag.html
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[CI#94]: https://gitlab.freedesktop.org/gfx-ci/i915-infra/issues/94
[fdo#108744]: https://bugs.freedesktop.org/show_bug.cgi?id=108744
[fdo#112271]: https://bugs.freedesktop.org/show_bug.cgi?id=112271
[i915#1233]: https://gitlab.freedesktop.org/drm/intel/issues/1233
[i915#146]: https://gitlab.freedesktop.org/drm/intel/issues/146
[i915#402]: https://gitlab.freedesktop.org/drm/intel/issues/402
[i915#69]: https://gitlab.freedesktop.org/drm/intel/issues/69
Participating hosts (51 -> 42)
------------------------------
Additional (2): fi-hsw-peppy fi-snb-2520m
Missing (11): fi-kbl-soraka fi-ilk-m540 fi-hsw-4200u fi-skl-6770hq fi-byt-squawks fi-bsw-cyan fi-kbl-guc fi-ctg-p8600 fi-kbl-8809g fi-byt-clapper fi-bdw-samus
Build changes
-------------
* CI: CI-20190529 -> None
* IGT: IGT_5457 -> IGTPW_4210
CI-20190529: 20190529
CI_DRM_7982: f02659605b48dcabb562bbb96db2996b334e57fd @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_4210: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4210/index.html
IGT_5457: 3e686098d928aa928f668e00fa01e92234e173ff @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4210/index.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [igt-dev] [PATCH i-g-t] tests/perf: reuse the new i915-perf library
2020-02-21 13:41 [igt-dev] [PATCH i-g-t] tests/perf: reuse the new i915-perf library Lionel Landwerlin
2020-02-21 15:04 ` [igt-dev] ✗ Fi.CI.BAT: failure for " Patchwork
@ 2020-02-21 15:04 ` Chris Wilson
2020-02-21 15:09 ` Lionel Landwerlin
1 sibling, 1 reply; 4+ messages in thread
From: Chris Wilson @ 2020-02-21 15:04 UTC (permalink / raw)
To: Lionel Landwerlin, igt-dev
Quoting Lionel Landwerlin (2020-02-21 13:41:34)
> Now that most configs are stored inside IGT along with their uuid, we
> can just source the correct one for that internal library.
>
> Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Looked at several replacements, and the intel_perf_for_fd(), looks sane.
Acked-by: Chris Wilson <chris@chris-wilson.co.uk>
-Chris
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [igt-dev] [PATCH i-g-t] tests/perf: reuse the new i915-perf library
2020-02-21 15:04 ` [igt-dev] [PATCH i-g-t] " Chris Wilson
@ 2020-02-21 15:09 ` Lionel Landwerlin
0 siblings, 0 replies; 4+ messages in thread
From: Lionel Landwerlin @ 2020-02-21 15:09 UTC (permalink / raw)
To: Chris Wilson, igt-dev
On 21/02/2020 17:04, Chris Wilson wrote:
> Quoting Lionel Landwerlin (2020-02-21 13:41:34)
>> Now that most configs are stored inside IGT along with their uuid, we
>> can just source the correct one for that internal library.
>>
>> Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
> Looked at several replacements, and the intel_perf_for_fd(), looks sane.
>
> Acked-by: Chris Wilson <chris@chris-wilson.co.uk>
> -Chris
Thanks. Next step : removing generated code from i915.
-Lionel
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2020-02-21 15:09 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-02-21 13:41 [igt-dev] [PATCH i-g-t] tests/perf: reuse the new i915-perf library Lionel Landwerlin
2020-02-21 15:04 ` [igt-dev] ✗ Fi.CI.BAT: failure for " Patchwork
2020-02-21 15:04 ` [igt-dev] [PATCH i-g-t] " Chris Wilson
2020-02-21 15:09 ` Lionel Landwerlin
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox