Igt-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
To: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>,
	<igt-dev@lists.freedesktop.org>
Subject: Re: [igt-dev] [PATCH i-g-t 15/23] i915/perf: Fix CS timestamp vs OA timstamp mismatch
Date: Tue, 6 Sep 2022 16:36:45 +0300	[thread overview]
Message-ID: <d302121e-4c23-92ab-e6ed-baf17fa02eb0@intel.com> (raw)
In-Reply-To: <20220823183036.5270-16-umesh.nerlige.ramappa@intel.com>

On 23/08/2022 21:30, Umesh Nerlige Ramappa wrote:
> CS timestamp can have an additional configuration that shifts the
> timestamp value by a specified number of bits. On DG2, this additional
> configuration is ignored by OA, so OA timestamps are missing the shift.
>
> Add newly defined interface to get the exact OA timestamp frequency so
> that the deltas can be accurately calculated.
>
> Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
> ---
>   include/drm-uapi/i915_drm.h |  6 ++++++
>   lib/i915/perf.c             |  6 +++++-
>   tests/i915/perf.c           | 37 +++++++++++++++++++++++++++++++++++--
>   3 files changed, 46 insertions(+), 3 deletions(-)
>
> diff --git a/include/drm-uapi/i915_drm.h b/include/drm-uapi/i915_drm.h
> index c7587a0f..11c40811 100644
> --- a/include/drm-uapi/i915_drm.h
> +++ b/include/drm-uapi/i915_drm.h
> @@ -749,6 +749,12 @@ typedef struct drm_i915_irq_wait {
>   /* Query if the kernel supports the I915_USERPTR_PROBE flag. */
>   #define I915_PARAM_HAS_USERPTR_PROBE 56
>   
> +/*
> + * Frequency of the timestamps in OA reports. This used to be the same as the CS
> + * timestamp frequency, but differs on some platforms.
> + */
> +#define I915_PARAM_OA_TIMESTAMP_FREQUENCY 57
> +
>   /* Must be kept compact -- no holes and well documented */
>   
>   typedef struct drm_i915_getparam {
> diff --git a/lib/i915/perf.c b/lib/i915/perf.c
> index 3f131aaa..2f24cbd8 100644
> --- a/lib/i915/perf.c
> +++ b/lib/i915/perf.c
> @@ -464,7 +464,11 @@ intel_perf_for_fd(int drm_fd)
>   	close(sysfs_dir_fd);
>   
>   	if (getparam(drm_fd, I915_PARAM_CHIPSET_ID, &device_id) ||
> -	    getparam(drm_fd, I915_PARAM_REVISION, &device_revision) ||
> +	    getparam(drm_fd, I915_PARAM_REVISION, &device_revision))
> +		return NULL;
> +
> +	/* if OA_TIMESTAMP_FREQUENCY is not supported, fall back to CS_TIMESTAMP_FREQUENCY */
> +	if (getparam(drm_fd, I915_PARAM_OA_TIMESTAMP_FREQUENCY, &timestamp_frequency) &&
>   	    getparam(drm_fd, I915_PARAM_CS_TIMESTAMP_FREQUENCY, &timestamp_frequency))
>   		return NULL;
>   
> diff --git a/tests/i915/perf.c b/tests/i915/perf.c
> index 3caf7cac..3eb31f3b 100644
> --- a/tests/i915/perf.c
> +++ b/tests/i915/perf.c
> @@ -453,6 +453,29 @@ gen8_read_report_reason(const uint32_t *report)
>   		return "unknown";
>   }
>   
> +static uint32_t
> +cs_timestamp_frequency(int fd)
> +{
> +	struct drm_i915_getparam gp = {};
> +	static uint32_t value = 0;
> +
> +	if (value)
> +		return value;
> +
> +	gp.param = I915_PARAM_CS_TIMESTAMP_FREQUENCY;
> +	gp.value = (int *)(&value);
> +
> +	igt_assert_eq(igt_ioctl(fd, DRM_IOCTL_I915_GETPARAM, &gp), 0);
> +
> +	return value;
> +}
> +
> +static uint64_t
> +cs_timebase_scale(uint32_t u32_delta)
> +{
> +	return ((uint64_t)u32_delta * NSEC_PER_SEC) / cs_timestamp_frequency(drm_fd);
> +}
> +
>   static uint64_t
>   timebase_scale(uint32_t u32_delta)
>   {
> @@ -543,6 +566,15 @@ oa_report_get_ctx_id(uint32_t *report)
>   	return report[2];
>   }
>   
> +static int
> +oar_unit_default_format(void)
> +{
> +	if (IS_DG2(devid))
> +		return I915_OAR_FORMAT_A32u40_A4u32_B8_C8;
> +
> +	return test_set->perf_oa_format;
> +}
> +
>   /*
>    * Temporary wrapper to distinguish mappings on !llc platforms,
>    * where it seems cache over GEM_MMAP_OFFSET is not flushed before execution.
> @@ -3959,6 +3991,7 @@ again:
>   
>   static void gen12_single_ctx_helper(void)
>   {
> +	uint64_t fmt = oar_unit_default_format();
>   	uint64_t properties[] = {
>   		/* Have a random value here for the context id, but initialize
>   		 * it once you figure out the context ID for the work to be
> @@ -3974,7 +4007,7 @@ static void gen12_single_ctx_helper(void)
>   		 * values.
>   		 */
>   		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_FORMAT, fmt,
>   	};
>   	struct drm_i915_perf_open_param param = {
>   		.flags = I915_PERF_FLAG_FD_CLOEXEC,
> @@ -4202,7 +4235,7 @@ static void gen12_single_ctx_helper(void)
>   	/* Sanity check that we can pass the delta to timebase_scale */
>   	igt_assert(delta_ts64 < UINT32_MAX);
>   	delta_oa32_ns = timebase_scale(delta_oa32);
> -	delta_ts64_ns = timebase_scale(delta_ts64);
> +	delta_ts64_ns = cs_timebase_scale(delta_ts64);
>   
>   	igt_debug("oa32 delta = %u, = %uns\n",
>   			delta_oa32, (unsigned)delta_oa32_ns);


  reply	other threads:[~2022-09-06 13:36 UTC|newest]

Thread overview: 66+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-23 18:30 [igt-dev] [PATCH i-g-t 00/23] Add DG2 OA test Umesh Nerlige Ramappa
2022-08-23 18:30 ` [igt-dev] [PATCH i-g-t 01/23] i915/perf: Check regularly if we are done reading reports Umesh Nerlige Ramappa
2022-09-06 12:49   ` Lionel Landwerlin
2022-08-23 18:30 ` [igt-dev] [PATCH i-g-t 02/23] i915/perf: Fix OA short_reads test Umesh Nerlige Ramappa
2022-09-06 12:50   ` Lionel Landwerlin
2022-08-23 18:30 ` [igt-dev] [PATCH i-g-t 03/23] i915/perf: Check return value from getparam Umesh Nerlige Ramappa
2022-09-06 12:52   ` Lionel Landwerlin
2022-08-23 18:30 ` [igt-dev] [PATCH i-g-t 04/23] i915/perf: Limit sseu-config tests for gen11 Umesh Nerlige Ramappa
2022-09-06 12:53   ` Lionel Landwerlin
2022-08-23 18:30 ` [igt-dev] [PATCH i-g-t 05/23] i915/perf: Bump timestamp tolerance for DG1 Umesh Nerlige Ramappa
2022-09-06 13:06   ` Lionel Landwerlin
2022-09-06 19:30     ` Umesh Nerlige Ramappa
2022-08-23 18:30 ` [igt-dev] [PATCH i-g-t 06/23] i915/perf: Account for OA sampling interval in polling test Umesh Nerlige Ramappa
2022-08-23 18:30 ` [igt-dev] [PATCH i-g-t 07/23] i915/perf: Add support for 64-bit counters Umesh Nerlige Ramappa
2022-09-06 13:05   ` Lionel Landwerlin
2022-09-06 19:37     ` Umesh Nerlige Ramappa
2022-09-06 20:02       ` Lionel Landwerlin
2022-09-06 20:58         ` Umesh Nerlige Ramappa
2022-08-23 18:30 ` [igt-dev] [PATCH i-g-t 08/23] i915/perf: Define OA report types Umesh Nerlige Ramappa
2022-09-06 13:08   ` Lionel Landwerlin
2022-09-06 19:28     ` Umesh Nerlige Ramappa
2022-08-23 18:30 ` [igt-dev] [PATCH i-g-t 09/23] i915/perf: Use ARRAY_SIZE consistently for num_properties Umesh Nerlige Ramappa
2022-09-06 13:10   ` Lionel Landwerlin
2022-08-23 18:30 ` [igt-dev] [PATCH i-g-t 10/23] i915/perf: Use gt in perf tests and lib Umesh Nerlige Ramappa
2022-09-06 13:13   ` Lionel Landwerlin
2022-08-23 18:30 ` [igt-dev] [PATCH i-g-t 11/23] i915/perf: Explicitly state rendercopy needs for a test Umesh Nerlige Ramappa
2022-09-06 13:26   ` Lionel Landwerlin
2022-08-23 18:30 ` [igt-dev] [PATCH i-g-t 12/23] i915/perf: Skip tests that use rendercopy Umesh Nerlige Ramappa
2022-09-06 13:28   ` Lionel Landwerlin
2022-08-23 18:30 ` [igt-dev] [PATCH i-g-t 13/23] i915/perf: Add OA formats for DG2 Umesh Nerlige Ramappa
2022-09-06 13:30   ` Lionel Landwerlin
2022-08-23 18:30 ` [igt-dev] [PATCH i-g-t 14/23] i915/perf: Add a test for non-power-of-2 oa reports Umesh Nerlige Ramappa
2022-09-06 14:08   ` Lionel Landwerlin
2022-09-20 19:28     ` Umesh Nerlige Ramappa
2022-08-23 18:30 ` [igt-dev] [PATCH i-g-t 15/23] i915/perf: Fix CS timestamp vs OA timstamp mismatch Umesh Nerlige Ramappa
2022-09-06 13:36   ` Lionel Landwerlin [this message]
2022-08-23 18:30 ` [igt-dev] [PATCH i-g-t 16/23] i915/perf: Treat ticks as 64 bit Umesh Nerlige Ramappa
2022-09-06 14:08   ` Lionel Landwerlin
2022-09-06 18:56     ` Umesh Nerlige Ramappa
2022-09-06 19:06       ` Lionel Landwerlin
2022-08-23 18:30 ` [igt-dev] [PATCH i-g-t 17/23] i915/perf: Treat timestamp as 64 bit value Umesh Nerlige Ramappa
2022-09-06 14:16   ` Lionel Landwerlin
2022-08-23 18:30 ` [igt-dev] [PATCH i-g-t 18/23] i915/perf: Fix DG2 A0 report header Umesh Nerlige Ramappa
2022-09-06 14:17   ` Lionel Landwerlin
2022-09-06 18:37     ` Umesh Nerlige Ramappa
2022-09-06 18:54       ` Lionel Landwerlin
2022-08-23 18:30 ` [igt-dev] [PATCH i-g-t 19/23] i915/perf: Wait longer for rc6 residency in DG2 Umesh Nerlige Ramappa
2022-09-06 14:18   ` Lionel Landwerlin
2022-08-23 18:30 ` [igt-dev] [PATCH i-g-t 20/23] lib/i915/perf: implement report accumulation for new format Umesh Nerlige Ramappa
2022-09-06 14:21   ` Lionel Landwerlin
2022-09-20 20:02   ` Umesh Nerlige Ramappa
2022-08-23 18:30 ` [igt-dev] [PATCH i-g-t 21/23] lib/i915/perf: fixup conversion script for XEHPSDV Umesh Nerlige Ramappa
2022-09-20 20:03   ` Umesh Nerlige Ramappa
2022-08-23 18:30 ` [igt-dev] [PATCH i-g-t 22/23] lib/i915/perf: make warning message more helpful Umesh Nerlige Ramappa
2022-09-20 20:04   ` Umesh Nerlige Ramappa
2022-08-23 18:30 ` [igt-dev] [PATCH i-g-t 23/23] lib/i915/perf: Add DG2 metrics Umesh Nerlige Ramappa
2022-09-20 23:11   ` Umesh Nerlige Ramappa
2022-08-23 20:30 ` [igt-dev] [PATCH i-g-t 18/23] i915/perf: Fix DG2 A0 report header Umesh Nerlige Ramappa
2022-09-06 14:23   ` Lionel Landwerlin
2022-09-06 18:33     ` Umesh Nerlige Ramappa
2022-08-23 21:00 ` [igt-dev] ✗ Fi.CI.BUILD: failure for Add DG2 OA test Patchwork
2022-08-24  9:33 ` [igt-dev] ✗ Fi.CI.BUILD: failure for Add DG2 OA test (rev2) Patchwork
2022-08-24  9:58   ` Petri Latvala
2022-08-24 13:08 ` [igt-dev] ✓ Fi.CI.BAT: success for Add DG2 OA test (rev3) Patchwork
2022-08-25 20:33 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
  -- strict thread matches above, loose matches on Subject: below --
2022-08-22 23:56 [igt-dev] [PATCH i-g-t 00/23] Add DG2 OA test Umesh Nerlige Ramappa
2022-08-22 23:56 ` [igt-dev] [PATCH i-g-t 15/23] i915/perf: Fix CS timestamp vs OA timstamp mismatch Umesh Nerlige Ramappa

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=d302121e-4c23-92ab-e6ed-baf17fa02eb0@intel.com \
    --to=lionel.g.landwerlin@intel.com \
    --cc=igt-dev@lists.freedesktop.org \
    --cc=umesh.nerlige.ramappa@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