Re: [igt-dev] [PATCH i-g-t v4 2/4] test/perf: Dump the report and timestamp frequency for debug

Lionel Landwerlin
2019-12-06T13:10:07Z

On 20/11/2019 02:07, Umesh Nerlige Ramappa wrote:
> Add debug logs to view the reports in comparison with actual formats.
> Log the timestamp frequency used to calculate the period exponents.
>
> v2: Split debug patch from OAR test patch (Lionel)
>
> Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
> ---
> tests/perf.c | 19 +++++++++++++++++++
> 1 file changed, 19 insertions(+)
>
> diff --git a/tests/perf.c b/tests/perf.c
> index 2b6be134..506b64ec 100644
> --- a/tests/perf.c
> +++ b/tests/perf.c
> @@ -210,6 +210,19 @@ static uint32_t (*read_report_ticks)(uint32_t *report,
> static void (*sanity_check_reports)(uint32_t *oa_report0, uint32_t *oa_report1,
> enum drm_i915_oa_format format);
>
> +static void
> +dump_report(const uint32_t *report, uint32_t size, const char *message) {
> + uint32_t i;
> + igt_debug("%s\n", message);
> + for (i = 0; i < size; i += 4) {
> + igt_debug("%08x %08x %08x %08x\n",
> + report[i],
> + report[i + 1],
> + report[i + 2],
> + report[i + 3]);
> + }
> +}
> +
> static struct oa_format
> get_oa_format(enum drm_i915_oa_format format)
> {
> @@ -874,6 +887,7 @@ init_sys_info(void)
> igt_assert_neq(devid, 0);
>
> timestamp_frequency = get_cs_timestamp_frequency();
> + igt_debug("timestamp_frequency = %lu\n", timestamp_frequency);
> igt_assert_neq(timestamp_frequency, 0);
>
> if (IS_HASWELL(devid)) {
> @@ -1289,6 +1303,7 @@ read_2_oa_reports(int format_id,
> igt_assert_eq(header->size, sample_size);
>
> report = (const void *)(header + 1);
> + dump_report(report, 64, "oa-formats");
>
> igt_debug("read report: reason = %x, timestamp = %x, exponent mask=%x\n",
> report[0], report[1], exponent_mask);
> @@ -2856,6 +2871,7 @@ test_mi_rpc(void)
> igt_assert_eq(ret, 0);
>
> report32 = bo->virtual;
> + dump_report(report32, 64, "mi-rpc");
> igt_assert_eq(report32[0], 0xdeadbeef); /* report ID */
> igt_assert_neq(report32[1], 0); /* timestamp */
>
> @@ -3335,11 +3351,13 @@ gen8_test_single_ctx_render_target_writes_a_counter(void)
> prev = report0_32;
> ctx_id = prev[2];
> igt_debug("MI_RPC(start) CTX ID: %u\n", ctx_id);
> + dump_report(report0_32, 64, "report0_32");
>
> report1_32 = report0_32 + 64; /* 64 uint32_t = 256bytes offset */
> igt_assert_eq(report1_32[0], 0xbeefbeef); /* report ID */
> igt_assert_neq(report1_32[1], 0); /* timestamp */
> ctx1_id = report1_32[2];
> + dump_report(report1_32, 64, "report1_32");
>
> memset(accumulator.deltas, 0, sizeof(accumulator.deltas));
> accumulate_reports(&accumulator, report0_32, report1_32);
> @@ -3434,6 +3452,7 @@ gen8_test_single_ctx_render_target_writes_a_counter(void)
> igt_assert_eq(header->size, sample_size);
>
> report = (void *)(header + 1);
> + dump_report(report, 64, "OA report");
>
> /* Don't expect zero for timestamps */
> igt_assert_neq(report[1], 0);