Igt-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: "Dixit, Ashutosh" <ashutosh.dixit@intel.com>
To: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
Cc: igt-dev@lists.freedesktop.org,
	Lionel G Landwerlin <lionel.g.landwerlin@linux.intel.com>
Subject: Re: [igt-dev] [PATCH i-g-t 08/31] i915/perf: Treat ticks as 64 bit
Date: Mon, 06 Mar 2023 15:13:00 -0800	[thread overview]
Message-ID: <87o7p5mq2r.wl-ashutosh.dixit@intel.com> (raw)
In-Reply-To: <20230215004648.2100655-9-umesh.nerlige.ramappa@intel.com>

On Tue, 14 Feb 2023 16:46:25 -0800, Umesh Nerlige Ramappa wrote:
>

Hi Umesh,

> To support 64 bit OA report headers, treat all ticks as 64 bits.
>
> Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
> ---
>  tests/i915/perf.c | 79 ++++++++++++++++++++++++++++++++---------------
>  1 file changed, 54 insertions(+), 25 deletions(-)
>
> diff --git a/tests/i915/perf.c b/tests/i915/perf.c
> index bd3cdb6a..4c7b4e49 100644
> --- a/tests/i915/perf.c
> +++ b/tests/i915/perf.c
> @@ -125,6 +125,7 @@ struct oa_format {
>	int c_off;
>	int n_c;
>	int oa_type;
> +	bool report_hdr_64bit;
>  };
>
>  static struct oa_format hsw_oa_formats[I915_OA_FORMAT_MAX] = {
> @@ -244,7 +245,7 @@ static bool *undefined_a_counters;
>  static uint64_t oa_exp_1_millisec;
>
>  static igt_render_copyfunc_t render_copy = NULL;
> -static uint32_t (*read_report_ticks)(const uint32_t *report,
> +static uint64_t (*read_report_ticks)(const uint32_t *report,
>				     enum drm_i915_oa_format format);
>  static void (*sanity_check_reports)(const uint32_t *oa_report0,
>				    const uint32_t *oa_report1,
> @@ -438,7 +439,7 @@ sysfs_read(enum i915_attr_id id)
>   * C2 corresponds to a clock counter for the Haswell render basic metric set
>   * but it's not included in all of the formats.
>   */
> -static uint32_t
> +static uint64_t
>  hsw_read_report_ticks(const uint32_t *report, enum drm_i915_oa_format format)
>  {
>	uint32_t *c = (uint32_t *)(((uint8_t *)report) + get_oa_format(format).c_off);
> @@ -448,10 +449,41 @@ hsw_read_report_ticks(const uint32_t *report, enum drm_i915_oa_format format)
>	return c[2];
>  }
>
> -static uint32_t
> +static uint64_t
>  gen8_read_report_ticks(const uint32_t *report, enum drm_i915_oa_format format)
>  {
> -	return report[3];
> +
> +	struct oa_format fmt = get_oa_format(format);
> +
> +	return fmt.report_hdr_64bit ? *(uint64_t *)&report[6] : report[3];
> +}
> +
> +/*
> + * t0 is a value sampled before t1. width is number of bits used to represent
> + * t0/t1. Normally t1 is greater than t0. In cases where t1 < t0 use this
> + * helper. Since the size of t1/t0 is already 64 bits, no special handling is
> + * needed for width = 64.
> + */
> +static uint64_t
> +elapsed_delta(uint64_t t1, uint64_t t0, uint32_t width)
> +{
> +	uint32_t max_bits = sizeof(t1) * 8;
> +
> +	igt_assert(width <= max_bits);
> +
> +	if (t1 < t0 && width != max_bits)
> +		return ((1ULL << width) - t0) + t1;
> +
> +	return t1 - t0;

OK, this looks fine due to 2's complement arithmentic.

> +}
> +
> +static uint64_t
> +oa_tick_delta(const uint32_t *report1,
> +	      const uint32_t *report0,
> +	      enum drm_i915_oa_format format)
> +{
> +	return elapsed_delta(read_report_ticks(report1, format),
> +			     read_report_ticks(report0, format), 32);

Why are ticks always considered 32 bits? For 64 bit report headers aren't
ticks 64 bits?

Also, sorry my ignorance, what is the difference between timestamps and
ticks (both are present in the report headers)?

Thanks.
--
Ashutosh

  reply	other threads:[~2023-03-06 23:13 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 [this message]
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
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=87o7p5mq2r.wl-ashutosh.dixit@intel.com \
    --to=ashutosh.dixit@intel.com \
    --cc=igt-dev@lists.freedesktop.org \
    --cc=lionel.g.landwerlin@linux.intel.com \
    --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