From: "Dixit, Ashutosh" <ashutosh.dixit@intel.com>
To: Sai Teja Pottumuttu <sai.teja.pottumuttu@intel.com>
Cc: <igt-dev@lists.freedesktop.org>
Subject: Re: [PATCH i-g-t v3 3/3] tests/intel/xe_oa: Remove hardcoded time heuristics
Date: Mon, 13 Jan 2025 11:37:36 -0800 [thread overview]
Message-ID: <85wmeyec8v.wl-ashutosh.dixit@intel.com> (raw)
In-Reply-To: <20250113061949.753864-4-sai.teja.pottumuttu@intel.com>
On Sun, 12 Jan 2025 22:19:49 -0800, Sai Teja Pottumuttu wrote:
>
> Some tests in xe_oa tests have hardcoded timing heuristics. Refactor it to
> make it more robust and reliable. The patch extends the wait time logically
> but usually it would take a single iteration for the required reports to be
> available so wait time doesn't change much.
>
> v2:
> - Extend commit message [Lucas]
> - Make wait function more generic [Lucas]
>
> v3:
> - Change wait function name [Ashutosh]
> - Address nits [Ashutosh]
Reviewed-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
> Signed-off-by: Sai Teja Pottumuttu <sai.teja.pottumuttu@intel.com>
> ---
> tests/intel/xe_oa.c | 27 ++++++++++++++++++++++-----
> 1 file changed, 22 insertions(+), 5 deletions(-)
>
> diff --git a/tests/intel/xe_oa.c b/tests/intel/xe_oa.c
> index cd081ecff..df7fa3229 100644
> --- a/tests/intel/xe_oa.c
> +++ b/tests/intel/xe_oa.c
> @@ -4367,6 +4367,26 @@ static void map_oa_buffer_forked_access(const struct drm_xe_engine_class_instanc
> munmap(vaddr, size);
> }
>
> +static void mmap_wait_for_periodic_reports(void *oa_vaddr, uint32_t n,
> + const struct drm_xe_engine_class_instance *hwe)
> +{
> + uint32_t period_us = oa_exponent_to_ns(oa_exp_1_millisec) / 1000;
> + struct intel_xe_perf_metric_set *test_set = metric_set(hwe);
> + uint64_t fmt = test_set->perf_oa_format;
> + uint32_t num_periodic_reports = 0;
> + uint32_t *reports;
> +
> + while (num_periodic_reports < n) {
> + usleep(4 * n * period_us);
> + num_periodic_reports = 0;
> + for (reports = (uint32_t *)oa_vaddr;
> + reports[0] && oa_timestamp(reports, fmt) && oa_report_is_periodic(reports);
> + reports += get_oa_format(fmt).size) {
> + num_periodic_reports++;
> + }
> + }
> +}
> +
> static void check_reports(void *oa_vaddr, uint32_t oa_size,
> const struct drm_xe_engine_class_instance *hwe)
> {
> @@ -4396,12 +4416,10 @@ static void check_reports_from_mapped_buffer(const struct drm_xe_engine_class_in
> {
> void *vaddr;
> uint32_t size;
> - uint32_t period_us = oa_exponent_to_ns(oa_exp_1_millisec) / 1000;
>
> vaddr = map_oa_buffer(&size);
>
> - /* wait for approx 100 reports */
> - usleep(100 * period_us);
> + mmap_wait_for_periodic_reports(vaddr, 10, hwe);
> check_reports(vaddr, size, hwe);
>
> munmap(vaddr, size);
> @@ -4426,12 +4444,11 @@ static void closed_fd_and_unmapped_access(const struct drm_xe_engine_class_insta
> };
> void *vaddr;
> uint32_t size;
> - uint32_t period_us = oa_exponent_to_ns(oa_exp_1_millisec) / 1000;
>
> stream_fd = __perf_open(drm_fd, ¶m, false);
> vaddr = map_oa_buffer(&size);
>
> - usleep(100 * period_us);
> + mmap_wait_for_periodic_reports(vaddr, 10, hwe);
> check_reports(vaddr, size, hwe);
>
> munmap(vaddr, size);
> --
> 2.34.1
>
next prev parent reply other threads:[~2025-01-13 19:37 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-01-13 6:19 [PATCH i-g-t v3 0/3] Miscellaneous OA Refactors Sai Teja Pottumuttu
2025-01-13 6:19 ` [PATCH i-g-t v3 1/3] tests/intel/xe_oa: Remove unused function arguments Sai Teja Pottumuttu
2025-01-13 6:19 ` [PATCH i-g-t v3 2/3] tests/intel/xe_oa: Reduce the number of mmap reports checked Sai Teja Pottumuttu
2025-01-13 19:22 ` Dixit, Ashutosh
2025-01-13 6:19 ` [PATCH i-g-t v3 3/3] tests/intel/xe_oa: Remove hardcoded time heuristics Sai Teja Pottumuttu
2025-01-13 19:37 ` Dixit, Ashutosh [this message]
2025-01-13 21:17 ` ✓ i915.CI.BAT: success for Miscellaneous OA Refactors (rev3) Patchwork
2025-01-13 21:18 ` ✓ Xe.CI.BAT: " Patchwork
2025-01-15 7:13 ` ✗ i915.CI.Full: failure " Patchwork
2025-01-17 8:00 ` ✗ Xe.CI.Full: " 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=85wmeyec8v.wl-ashutosh.dixit@intel.com \
--to=ashutosh.dixit@intel.com \
--cc=igt-dev@lists.freedesktop.org \
--cc=sai.teja.pottumuttu@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.