From: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
To: igt-dev@lists.freedesktop.org
Cc: Lionel G Landwerlin <lionel.g.landwerlin@linux.intel.com>
Subject: [igt-dev] [PATCH i-g-t 11/31] i915/perf: Move OA format array from stack to heap
Date: Tue, 14 Feb 2023 16:46:28 -0800 [thread overview]
Message-ID: <20230215004648.2100655-12-umesh.nerlige.ramappa@intel.com> (raw)
In-Reply-To: <20230215004648.2100655-1-umesh.nerlige.ramappa@intel.com>
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);
+ 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);
}
}
__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-02-15 0:46 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 ` Umesh Nerlige Ramappa [this message]
2023-03-07 13:32 ` [igt-dev] [PATCH i-g-t 11/31] i915/perf: Move OA format array from stack to heap Kamil Konieczny
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=20230215004648.2100655-12-umesh.nerlige.ramappa@intel.com \
--to=umesh.nerlige.ramappa@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