From: Kamil Konieczny <kamil.konieczny@linux.intel.com>
To: igt-dev@lists.freedesktop.org
Cc: Lionel G Landwerlin <lionel.g.landwerlin@linux.intel.com>
Subject: Re: [igt-dev] [PATCH i-g-t 11/31] i915/perf: Move OA format array from stack to heap
Date: Tue, 7 Mar 2023 14:32:23 +0100 [thread overview]
Message-ID: <20230307133223.edu4bprpas3ta7lr@kamilkon-desk1> (raw)
In-Reply-To: <20230215004648.2100655-12-umesh.nerlige.ramappa@intel.com>
Hi Umesh,
On 2023-02-14 at 16:46:28 -0800, Umesh Nerlige Ramappa wrote:
> The OA format size will change based on the specific format used in some
> of the tests. In preparation for that, allocated the space required for
> the format on heap.
>
> Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
> ---
> tests/i915/perf.c | 48 ++++++++++++++++++++++++-----------------------
> 1 file changed, 25 insertions(+), 23 deletions(-)
>
> diff --git a/tests/i915/perf.c b/tests/i915/perf.c
> index e9613dc9..add41f7d 100644
> --- a/tests/i915/perf.c
> +++ b/tests/i915/perf.c
> @@ -1950,9 +1950,9 @@ test_oa_exponents(const struct intel_execution_engine2 *e)
> uint8_t *buf = calloc(1, buf_size);
> int ret, n_timer_reports = 0;
> uint32_t matches = 0;
> - struct {
> - uint32_t report[64];
> - } timer_reports[30];
> +#define NUM_TIMER_REPORTS 30
> + uint32_t *reports = malloc(NUM_TIMER_REPORTS * format_size);
I assume that format_size is size in bytes.
> + uint32_t *timer_reports = reports;
>
> igt_debug("testing OA exponent %d,"
> " expected ts delta = %"PRIu64" (%"PRIu64"ns/%.2fus/%.2fms)\n",
> @@ -1963,7 +1963,7 @@ test_oa_exponents(const struct intel_execution_engine2 *e)
>
> stream_fd = __perf_open(drm_fd, ¶m, true /* prevent_pm */);
>
> - while (n_timer_reports < ARRAY_SIZE(timer_reports)) {
> + while (n_timer_reports < NUM_TIMER_REPORTS) {
> struct drm_i915_perf_record_header *header;
>
> while ((ret = read(stream_fd, buf, buf_size)) < 0 &&
> @@ -1976,7 +1976,7 @@ test_oa_exponents(const struct intel_execution_engine2 *e)
> igt_assert(ret > 0);
>
> for (int offset = 0;
> - offset < ret && n_timer_reports < ARRAY_SIZE(timer_reports);
> + offset < ret && n_timer_reports < NUM_TIMER_REPORTS;
> offset += header->size) {
> uint32_t *report;
>
> @@ -1998,25 +1998,25 @@ test_oa_exponents(const struct intel_execution_engine2 *e)
> if (!oa_report_is_periodic(exponent, report))
> continue;
>
> - memcpy(timer_reports[n_timer_reports].report, report,
> - sizeof(timer_reports[n_timer_reports].report));
> + memcpy(timer_reports, report, format_size);
> n_timer_reports++;
> + timer_reports += (format_size / 4);
--------------------------------------------------------------- ^
imho better: / sizeof(*timer_reports)
timer_reports += (format_size / sizeof(*timer_reports));
With or without this,
Reviewed-by: Kamil Konieczny <kamil.konieczny@linux.intel.com>
> }
> }
>
> __perf_close(stream_fd);
>
> igt_debug("report%04i ts=%"PRIx64" hw_id=0x%08x\n", 0,
> - oa_timestamp(timer_reports[0].report, fmt),
> - oa_report_get_ctx_id(timer_reports[0].report));
> + oa_timestamp(&reports[0], fmt),
> + oa_report_get_ctx_id(&reports[0]));
> for (int i = 1; i < n_timer_reports; i++) {
> - uint64_t delta = oa_timestamp_delta(timer_reports[i].report,
> - timer_reports[i - 1].report,
> + uint64_t delta = oa_timestamp_delta(&reports[i],
> + &reports[i - 1],
> fmt);
>
> igt_debug("report%04i ts=%"PRIx64" hw_id=0x%08x delta=%"PRIu64" %s\n", i,
> - oa_timestamp(timer_reports[i].report, fmt),
> - oa_report_get_ctx_id(timer_reports[i].report),
> + oa_timestamp(&reports[i], fmt),
> + oa_report_get_ctx_id(&reports[i]),
> delta, expected_report_timing_delta(delta,
> expected_timestamp_delta) ? "" : "******");
>
> @@ -2033,6 +2033,8 @@ test_oa_exponents(const struct intel_execution_engine2 *e)
> * etc...
> */
> igt_assert_lte(n_timer_reports / 2, matches);
> +
> + free(reports);
> }
>
> load_helper_stop();
> @@ -2754,13 +2756,14 @@ test_buffer_fill(const struct intel_execution_engine2 *e)
> .properties_ptr = to_user_pointer(properties),
> };
> struct drm_i915_perf_record_header *header;
> - int buf_size = 65536 * (256 + sizeof(struct drm_i915_perf_record_header));
> + size_t report_size = get_oa_format(fmt).size;
> + int buf_size = 65536 * (report_size + sizeof(struct drm_i915_perf_record_header));
> uint8_t *buf = malloc(buf_size);
> int len;
> size_t oa_buf_size = MAX_OA_BUF_SIZE;
> - size_t report_size = get_oa_format(fmt).size;
> int n_full_oa_reports = oa_buf_size / report_size;
> uint64_t fill_duration = n_full_oa_reports * oa_period;
> + uint32_t *last_periodic_report = malloc(report_size / 4);
>
> igt_assert(fill_duration < 1000000000);
>
> @@ -2770,7 +2773,6 @@ test_buffer_fill(const struct intel_execution_engine2 *e)
> bool overflow_seen;
> uint32_t n_periodic_reports;
> uint32_t first_timestamp = 0, last_timestamp = 0;
> - uint32_t last_periodic_report[64];
>
> do_ioctl(stream_fd, I915_PERF_IOCTL_ENABLE, 0);
>
> @@ -2849,8 +2851,7 @@ test_buffer_fill(const struct intel_execution_engine2 *e)
> break;
>
> if (oa_report_is_periodic(oa_exponent, report)) {
> - memcpy(last_periodic_report, report,
> - sizeof(last_periodic_report));
> + memcpy(last_periodic_report, report, report_size);
> n_periodic_reports++;
> }
> break;
> @@ -2876,6 +2877,7 @@ test_buffer_fill(const struct intel_execution_engine2 *e)
> report_size * n_full_oa_reports * 0.55);
> }
>
> + free(last_periodic_report);
> free(buf);
>
> __perf_close(stream_fd);
> @@ -2990,12 +2992,13 @@ test_enable_disable(const struct intel_execution_engine2 *e)
> (ARRAY_SIZE(properties) / 2) - 2,
> .properties_ptr = to_user_pointer(properties),
> };
> - int buf_size = 65536 * (256 + sizeof(struct drm_i915_perf_record_header));
> + size_t report_size = get_oa_format(fmt).size;
> + int buf_size = 65536 * (report_size + 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(fmt).size;
> int n_full_oa_reports = oa_buf_size / report_size;
> uint64_t fill_duration = n_full_oa_reports * oa_period;
> + uint32_t *last_periodic_report = malloc(report_size / 4);
>
> load_helper_init();
> load_helper_run(HIGH);
> @@ -3007,7 +3010,6 @@ test_enable_disable(const struct intel_execution_engine2 *e)
> uint32_t n_periodic_reports;
> struct drm_i915_perf_record_header *header;
> uint64_t first_timestamp = 0, last_timestamp = 0;
> - uint32_t last_periodic_report[64];
>
> /* Giving enough time for an overflow might help catch whether
> * the OA unit has been enabled even if the driver might at
> @@ -3069,8 +3071,7 @@ test_enable_disable(const struct intel_execution_engine2 *e)
> break;
>
> if (oa_report_is_periodic(oa_exponent, report)) {
> - memcpy(last_periodic_report, report,
> - sizeof(last_periodic_report));
> + memcpy(last_periodic_report, report, report_size);
>
> /* We want to measure only the
> * periodic reports, ctx-switch
> @@ -3113,6 +3114,7 @@ test_enable_disable(const struct intel_execution_engine2 *e)
> igt_assert_eq(errno, EIO);
> }
>
> + free(last_periodic_report);
> free(buf);
>
> __perf_close(stream_fd);
> --
> 2.36.1
>
next prev parent reply other threads:[~2023-03-07 13:32 UTC|newest]
Thread overview: 73+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-02-15 0:46 [igt-dev] [PATCH i-g-t 00/31] Enable OAM support in IGT and GPUvis Umesh Nerlige Ramappa
2023-02-15 0:46 ` [igt-dev] [PATCH i-g-t 01/31] i915/perf: Add support for 64-bit OA formats Umesh Nerlige Ramappa
2023-03-04 2:55 ` Dixit, Ashutosh
2023-02-15 0:46 ` [igt-dev] [PATCH i-g-t 02/31] i915/perf: Define a default engine for OA Umesh Nerlige Ramappa
2023-03-04 3:05 ` Dixit, Ashutosh
2023-02-15 0:46 ` [igt-dev] [PATCH i-g-t 03/31] i915/perf: Use default engine for sseu tests Umesh Nerlige Ramappa
2023-03-04 3:08 ` Dixit, Ashutosh
2023-02-15 0:46 ` [igt-dev] [PATCH i-g-t 04/31] i915/perf: Ensure rcs0 is present for gen12-mi-rpc Umesh Nerlige Ramappa
2023-03-04 3:26 ` Dixit, Ashutosh
2023-02-15 0:46 ` [igt-dev] [PATCH i-g-t 05/31] i915/perf: Use ARRAY_SIZE for buffer-fill test Umesh Nerlige Ramappa
2023-03-04 3:28 ` Dixit, Ashutosh
2023-02-15 0:46 ` [igt-dev] [PATCH i-g-t 06/31] i915/perf: Add class:instance support to OA tests Umesh Nerlige Ramappa
2023-03-04 3:38 ` Dixit, Ashutosh
2023-02-15 0:46 ` [igt-dev] [PATCH i-g-t 07/31] i915/perf: Enable tests to run on specific engines Umesh Nerlige Ramappa
2023-03-06 22:19 ` Dixit, Ashutosh
2023-02-15 0:46 ` [igt-dev] [PATCH i-g-t 08/31] i915/perf: Treat ticks as 64 bit Umesh Nerlige Ramappa
2023-03-06 23:13 ` Dixit, Ashutosh
2023-03-09 22:55 ` Umesh Nerlige Ramappa
2023-03-09 23:00 ` Dixit, Ashutosh
2023-02-15 0:46 ` [igt-dev] [PATCH i-g-t 09/31] i915/perf: Treat timestamp as 64 bit value Umesh Nerlige Ramappa
2023-03-07 12:53 ` Kamil Konieczny
2023-02-15 0:46 ` [igt-dev] [PATCH i-g-t 10/31] i915/perf: Add OAM format type Umesh Nerlige Ramappa
2023-03-07 13:45 ` Kamil Konieczny
2023-03-09 22:39 ` Umesh Nerlige Ramappa
2023-02-15 0:46 ` [igt-dev] [PATCH i-g-t 11/31] i915/perf: Move OA format array from stack to heap Umesh Nerlige Ramappa
2023-03-07 13:32 ` Kamil Konieczny [this message]
2023-02-15 0:46 ` [igt-dev] [PATCH i-g-t 12/31] i915/perf: Use a helper for OA format Umesh Nerlige Ramappa
2023-03-07 13:49 ` Kamil Konieczny
2023-02-15 0:46 ` [igt-dev] [PATCH i-g-t 13/31] i915/perf: Add support for oa perf groups Umesh Nerlige Ramappa
2023-03-07 14:09 ` Kamil Konieczny
2023-02-15 0:46 ` [igt-dev] [PATCH i-g-t 14/31] i915/perf: Test concurrent access to OA in different groups Umesh Nerlige Ramappa
2023-03-13 15:04 ` Kamil Konieczny
2023-03-14 23:17 ` Dixit, Ashutosh
2023-03-15 20:40 ` Umesh Nerlige Ramappa
2023-02-15 0:46 ` [igt-dev] [PATCH i-g-t 15/31] i915/perf: Add OAM support Umesh Nerlige Ramappa
2023-03-13 15:21 ` Kamil Konieczny
2023-03-15 0:38 ` Dixit, Ashutosh
2023-03-15 20:37 ` Umesh Nerlige Ramappa
2023-03-15 21:52 ` Dixit, Ashutosh
2023-02-15 0:46 ` [igt-dev] [PATCH i-g-t 16/31] lib/perf: Make chipsets aware of oa formats Umesh Nerlige Ramappa
2023-03-13 15:49 ` Kamil Konieczny
2023-02-15 0:46 ` [igt-dev] [PATCH i-g-t 17/31] i915/perf: Choose OAM format for media metrics Umesh Nerlige Ramappa
2023-03-13 15:52 ` Kamil Konieczny
2023-02-15 0:46 ` [igt-dev] [PATCH i-g-t 18/31] lib/perf" Set missing metric unit for some counters Umesh Nerlige Ramappa
2023-02-24 13:22 ` Kamil Konieczny
2023-03-15 4:44 ` Dixit, Ashutosh
2023-03-15 19:58 ` Umesh Nerlige Ramappa
2023-02-15 0:46 ` [igt-dev] [PATCH i-g-t 19/31] lib/perf: Add MTL to supprted HW in oa guid registry Umesh Nerlige Ramappa
2023-03-13 15:55 ` Kamil Konieczny
2023-03-13 15:57 ` Kamil Konieczny
2023-02-15 0:46 ` [igt-dev] [PATCH i-g-t 20/31] lib/perf: Add support for OAM format in codegen Umesh Nerlige Ramappa
2023-03-13 16:04 ` Kamil Konieczny
2023-02-15 0:46 ` [igt-dev] [PATCH i-g-t 21/31] lib/perf: Update MTL GT2 metrics for OAM Umesh Nerlige Ramappa
2023-03-13 16:09 ` Kamil Konieczny
2023-02-15 0:46 ` [igt-dev] [PATCH i-g-t 22/31] lib/perf: Update MTL GT3 " Umesh Nerlige Ramappa
2023-03-13 16:15 ` Kamil Konieczny
2023-03-16 18:38 ` Umesh Nerlige Ramappa
2023-02-15 0:46 ` [igt-dev] [PATCH i-g-t 23/31] i915/perf: Add support for engine specific metrics Umesh Nerlige Ramappa
2023-02-15 0:46 ` [igt-dev] [PATCH i-g-t 24/31] i915/perf: Run non-zero-reason on media engines as well Umesh Nerlige Ramappa
2023-03-15 16:50 ` Kamil Konieczny
2023-02-15 0:46 ` [igt-dev] [PATCH i-g-t 25/31] i915/perf: Make sanity check failures descriptive Umesh Nerlige Ramappa
2023-03-15 16:47 ` Kamil Konieczny
2023-02-15 0:46 ` [igt-dev] [PATCH i-g-t 26/31] lib/perf: Enable multi-tile support for perf library Umesh Nerlige Ramappa
2023-02-15 0:46 ` [igt-dev] [PATCH i-g-t 27/31] lib/perf: Update MTL OA timestamp and EU thread config Umesh Nerlige Ramappa
2023-02-15 0:46 ` [igt-dev] [PATCH i-g-t 28/31] lib/perf: Add support for MPEC format Umesh Nerlige Ramappa
2023-02-15 0:46 ` [igt-dev] [PATCH i-g-t 29/31] lib/perf: Adjust the GPU timestamp for new OA formats Umesh Nerlige Ramappa
2023-02-15 0:46 ` [igt-dev] [PATCH i-g-t 30/31] tools/perf: Choose the right card Umesh Nerlige Ramappa
2023-02-16 19:39 ` Kamil Konieczny
2023-02-16 21:27 ` Umesh Nerlige Ramappa
2023-03-03 1:17 ` Umesh Nerlige Ramappa
2023-02-15 0:46 ` [igt-dev] [PATCH i-g-t 31/31] lib/perf: Apply shift to raw timestamp as well Umesh Nerlige Ramappa
2023-02-15 1:26 ` [igt-dev] ✓ Fi.CI.BAT: success for Enable OAM support in IGT and GPUvis (rev2) Patchwork
2023-02-15 14:12 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230307133223.edu4bprpas3ta7lr@kamilkon-desk1 \
--to=kamil.konieczny@linux.intel.com \
--cc=igt-dev@lists.freedesktop.org \
--cc=lionel.g.landwerlin@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox