From: Rodrigo Vivi <rodrigo.vivi@intel.com>
To: Ashutosh Dixit <ashutosh.dixit@intel.com>
Cc: intel-xe@lists.freedesktop.org
Subject: Re: [Intel-xe] [PATCH 16/21] drm/xe/oa: Make xe_oa_timestamp_frequency per gt
Date: Thu, 21 Sep 2023 16:45:54 -0400 [thread overview]
Message-ID: <ZQyrgm74zjHjdr3x@intel.com> (raw)
In-Reply-To: <20230919161049.2307855-17-ashutosh.dixit@intel.com>
On Tue, Sep 19, 2023 at 09:10:44AM -0700, Ashutosh Dixit wrote:
> Clock freq's can be different for different gt's.
>
> Suggested-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
> Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
> ---
> drivers/gpu/drm/xe/xe_oa.c | 44 +++++++++++++++++------------------
> drivers/gpu/drm/xe/xe_oa.h | 2 +-
> drivers/gpu/drm/xe/xe_query.c | 2 +-
> 3 files changed, 24 insertions(+), 24 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_oa.c b/drivers/gpu/drm/xe/xe_oa.c
> index d49debe732bbd..8648652e05aa5 100644
> --- a/drivers/gpu/drm/xe/xe_oa.c
> +++ b/drivers/gpu/drm/xe/xe_oa.c
> @@ -1496,7 +1496,7 @@ xe_oa_stream_open_ioctl_locked(struct xe_oa *oa,
> * platforms OA unit ignores the CTC_SHIFT and the 2 timestamps differ. In such
> * cases, return the adjusted CS timestamp frequency to the user.
> */
> -u32 xe_oa_timestamp_frequency(struct xe_device *xe)
> +u32 xe_oa_timestamp_frequency(struct xe_gt *gt)
> {
> u32 reg, shift;
>
> @@ -1505,26 +1505,26 @@ u32 xe_oa_timestamp_frequency(struct xe_device *xe)
> * Wa_14015568240:pvc
> * Wa_14015846243:mtl
> */
> - switch (xe->info.platform) {
> + switch (gt->tile->xe->info.platform) {
> case XE_DG2:
> case XE_PVC:
> case XE_METEORLAKE:
> - xe_device_mem_access_get(xe);
> - reg = xe_mmio_read32(xe_root_mmio_gt(xe), RPM_CONFIG0);
> - xe_device_mem_access_put(xe);
> + xe_device_mem_access_get(gt->tile->xe);
> + reg = xe_mmio_read32(gt, RPM_CONFIG0);
> + xe_device_mem_access_put(gt->tile->xe);
>
> shift = REG_FIELD_GET(RPM_CONFIG0_CTC_SHIFT_PARAMETER_MASK, reg);
> - return xe_root_mmio_gt(xe)->info.clock_freq << (3 - shift);
> + return gt->info.clock_freq << (3 - shift);
>
> default:
> - return xe_root_mmio_gt(xe)->info.clock_freq;
> + return gt->info.clock_freq;
> }
> }
>
> -static u64 oa_exponent_to_ns(struct xe_oa *oa, int exponent)
> +static u64 oa_exponent_to_ns(struct xe_gt *gt, int exponent)
> {
> u64 nom = (2ULL << exponent) * NSEC_PER_SEC;
> - u32 den = xe_oa_timestamp_frequency(oa->xe);
> + u32 den = xe_oa_timestamp_frequency(gt);
>
> return div_u64(nom + den - 1, den);
> }
> @@ -1591,7 +1591,6 @@ static int xe_oa_read_properties_unlocked(struct xe_oa *oa, u64 __user *uprops,
> instance = 0;
>
> for (i = 0; i < n_props; i++) {
> - u64 oa_period, oa_freq_hz;
> u64 id, value;
>
> ret = get_user(id, uprop);
> @@ -1631,18 +1630,6 @@ static int xe_oa_read_properties_unlocked(struct xe_oa *oa, u64 __user *uprops,
> OA_EXPONENT_MAX);
> return -EINVAL;
> }
> -
> - BUILD_BUG_ON(sizeof(oa_period) != 8);
> - oa_period = oa_exponent_to_ns(oa, value);
> -
> - oa_freq_hz = div64_u64(NSEC_PER_SEC, oa_period);
> - if (oa_freq_hz > xe_oa_max_sample_rate && !perfmon_capable()) {
> - drm_dbg(&oa->xe->drm,
> - "OA exponent would exceed the max sampling frequency (sysctl dev.xe.oa_max_sample_rate) %uHz without CAP_PERFMON or CAP_SYS_ADMIN privileges\n",
> - xe_oa_max_sample_rate);
> - return -EACCES;
> - }
> -
> props->oa_periodic = true;
> props->oa_period_exponent = value;
> break;
> @@ -1701,6 +1688,19 @@ static int xe_oa_read_properties_unlocked(struct xe_oa *oa, u64 __user *uprops,
> return -EINVAL;
> }
>
> + if (props->oa_periodic) {
> + u64 oa_period, oa_freq_hz;
> +
> + oa_period = oa_exponent_to_ns(props->hwe->gt, props->oa_period_exponent);
> + oa_freq_hz = div64_u64(NSEC_PER_SEC, oa_period);
> + if (oa_freq_hz > xe_oa_max_sample_rate && !perfmon_capable()) {
> + drm_dbg(&oa->xe->drm,
> + "OA exponent would exceed the max sampling frequency (sysctl dev.xe.oa_max_sample_rate) %uHz without CAP_PERFMON or CAP_SYS_ADMIN privileges\n",
> + xe_oa_max_sample_rate);
> + return -EACCES;
> + }
> + }
> +
> return 0;
> }
>
> diff --git a/drivers/gpu/drm/xe/xe_oa.h b/drivers/gpu/drm/xe/xe_oa.h
> index 1f3d05067f19d..cc6f64bc24ddf 100644
> --- a/drivers/gpu/drm/xe/xe_oa.h
> +++ b/drivers/gpu/drm/xe/xe_oa.h
> @@ -22,7 +22,7 @@ int xe_oa_add_config_ioctl(struct drm_device *dev, void *data,
> struct drm_file *file);
> int xe_oa_remove_config_ioctl(struct drm_device *dev, void *data,
> struct drm_file *file);
> -u32 xe_oa_timestamp_frequency(struct xe_device *xe);
> +u32 xe_oa_timestamp_frequency(struct xe_gt *gt);
> u16 xe_oa_unit_id(struct xe_hw_engine *hwe);
>
> #endif
> diff --git a/drivers/gpu/drm/xe/xe_query.c b/drivers/gpu/drm/xe/xe_query.c
> index 4a3a9c11e8cc4..ad280bac9eed4 100644
> --- a/drivers/gpu/drm/xe/xe_query.c
> +++ b/drivers/gpu/drm/xe/xe_query.c
> @@ -244,7 +244,7 @@ static int query_gts(struct xe_device *xe, struct drm_xe_device_query *query)
> gts->gts[id].type = XE_QUERY_GT_TYPE_MAIN;
> gts->gts[id].instance = id;
> gts->gts[id].clock_freq = gt->info.clock_freq;
first look it here ^
> - gts->gts[id].oa_timestamp_freq = xe_oa_timestamp_frequency(xe);
> + gts->gts[id].oa_timestamp_freq = xe_oa_timestamp_frequency(gt);
Then please notice that we are trying to kill the duplications on the uapi [1]
and now notice that this series is adding yet another duplication:
+u32 xe_oa_timestamp_frequency(struct xe_gt *gt)
+ return gt->info.clock_freq;
(copied from above)
[1] - https://lore.kernel.org/all/20230920192940.135004-20-rodrigo.vivi@intel.com/
> if (!IS_DGFX(xe))
> gts->gts[id].native_mem_regions = 0x1;
> else
> --
> 2.41.0
>
next prev parent reply other threads:[~2023-09-21 20:46 UTC|newest]
Thread overview: 88+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-19 16:10 [Intel-xe] [PATCH 00/21] Add OA functionality to Xe Ashutosh Dixit
2023-09-19 16:10 ` [Intel-xe] [PATCH 01/21] drm/xe/uapi: Introduce OA (observability architecture) uapi Ashutosh Dixit
2023-10-04 0:26 ` Umesh Nerlige Ramappa
2023-10-04 0:36 ` Dixit, Ashutosh
2023-11-04 1:23 ` Dixit, Ashutosh
2023-09-19 16:10 ` [Intel-xe] [PATCH 02/21] drm/xe/oa: Add OA types Ashutosh Dixit
2023-10-13 17:05 ` Umesh Nerlige Ramappa
2023-09-19 16:10 ` [Intel-xe] [PATCH 03/21] drm/xe/oa: Add registers and GPU commands used by OA Ashutosh Dixit
2023-10-13 17:06 ` Umesh Nerlige Ramappa
2023-11-17 22:52 ` Dixit, Ashutosh
2023-09-19 16:10 ` [Intel-xe] [PATCH 04/21] drm/xe/oa: Module init/exit and probe/remove Ashutosh Dixit
2023-10-13 17:50 ` Umesh Nerlige Ramappa
2023-10-20 7:08 ` [Intel-xe] [04/21] " Lionel Landwerlin
2023-10-27 20:28 ` Dixit, Ashutosh
2023-09-19 16:10 ` [Intel-xe] [PATCH 05/21] drm/xe/oa: Add/remove config ioctl's Ashutosh Dixit
2023-10-13 17:59 ` Umesh Nerlige Ramappa
2023-09-19 16:10 ` [Intel-xe] [PATCH 06/21] drm/xe/oa: Start implementing OA stream open ioctl Ashutosh Dixit
2023-10-13 18:09 ` Umesh Nerlige Ramappa
2023-09-19 16:10 ` [Intel-xe] [PATCH 07/21] drm/xe/oa: OA stream initialization Ashutosh Dixit
2023-10-04 15:22 ` Dixit, Ashutosh
2023-09-19 16:10 ` [Intel-xe] [PATCH 08/21] drm/xe/oa: Expose OA stream fd Ashutosh Dixit
2023-10-13 18:17 ` Umesh Nerlige Ramappa
2023-09-19 16:10 ` [Intel-xe] [PATCH 09/21] drm/xe/oa: Read file_operation Ashutosh Dixit
2023-10-14 0:56 ` Umesh Nerlige Ramappa
2023-09-19 16:10 ` [Intel-xe] [PATCH 10/21] drm/xe/oa: Implement queries Ashutosh Dixit
2023-10-14 0:58 ` Umesh Nerlige Ramappa
2023-09-19 16:10 ` [Intel-xe] [PATCH 11/21] drm/xe/oa: Override GuC RC with OA on PVC Ashutosh Dixit
2023-10-16 17:43 ` Umesh Nerlige Ramappa
2023-09-19 16:10 ` [Intel-xe] [PATCH 12/21] drm/xe/uapi: "Perf" layer to support multiple perf counter stream types Ashutosh Dixit
2023-10-04 2:13 ` Umesh Nerlige Ramappa
2023-10-05 4:33 ` Dixit, Ashutosh
2023-09-19 16:10 ` [Intel-xe] [PATCH 13/21] drm/xe/uapi: Multiplex PERF ops through a single PERF ioctl Ashutosh Dixit
2023-10-04 2:23 ` Umesh Nerlige Ramappa
2023-10-05 5:27 ` Dixit, Ashutosh
2023-10-05 15:22 ` Dixit, Ashutosh
2023-10-05 18:27 ` Umesh Nerlige Ramappa
2023-10-05 23:18 ` Dixit, Ashutosh
2023-09-19 16:10 ` [Intel-xe] [PATCH 14/21] drm/xe/uapi: Simplify OA configs in uapi Ashutosh Dixit
2023-10-04 2:26 ` Umesh Nerlige Ramappa
2023-10-04 15:44 ` Dixit, Ashutosh
2023-10-04 16:13 ` Rodrigo Vivi
2023-09-19 16:10 ` [Intel-xe] [PATCH 15/21] drm/xe/uapi: Remove OA format names from OA uapi Ashutosh Dixit
2023-10-04 2:33 ` Umesh Nerlige Ramappa
2023-10-05 6:13 ` Dixit, Ashutosh
2023-09-19 16:10 ` [Intel-xe] [PATCH 16/21] drm/xe/oa: Make xe_oa_timestamp_frequency per gt Ashutosh Dixit
2023-09-21 20:45 ` Rodrigo Vivi [this message]
2023-09-21 21:58 ` Dixit, Ashutosh
2023-09-22 19:10 ` Rodrigo Vivi
2023-09-19 16:10 ` [Intel-xe] [PATCH 17/21] drm/xe/oa: Remove filtering reports on context id Ashutosh Dixit
2023-10-14 1:01 ` Umesh Nerlige Ramappa
2023-10-20 7:30 ` [Intel-xe] [17/21] " Lionel Landwerlin
2023-10-20 17:00 ` Umesh Nerlige Ramappa
2023-09-19 16:10 ` [Intel-xe] [PATCH 18/21] drm/xe/uapi: More OA uapi fixes/additions Ashutosh Dixit
2023-10-04 0:23 ` Dixit, Ashutosh
2023-10-05 22:33 ` Dixit, Ashutosh
2023-10-12 3:14 ` Umesh Nerlige Ramappa
2023-10-20 7:28 ` [Intel-xe] [18/21] " Lionel Landwerlin
2023-10-27 20:28 ` Dixit, Ashutosh
2023-10-30 10:06 ` Lionel Landwerlin
2023-10-31 2:08 ` Dixit, Ashutosh
2023-09-19 16:10 ` [Intel-xe] [PATCH 19/21] drm/xe/uapi: Drop OA_IOCTL_VERSION Ashutosh Dixit
2023-09-19 17:02 ` Dixit, Ashutosh
2023-10-04 2:37 ` Umesh Nerlige Ramappa
2023-10-05 3:28 ` Dixit, Ashutosh
2023-10-05 19:35 ` Umesh Nerlige Ramappa
2023-10-20 7:36 ` [Intel-xe] [19/21] " Lionel Landwerlin
2023-10-23 23:02 ` Umesh Nerlige Ramappa
2023-10-24 4:08 ` Dixit, Ashutosh
2023-10-24 15:54 ` Dixit, Ashutosh
2023-09-19 16:10 ` [Intel-xe] [PATCH 20/21] drm/xe/uapi: Use OA unit id to identify OA unit Ashutosh Dixit
2023-10-04 22:37 ` Umesh Nerlige Ramappa
2023-10-05 3:04 ` Dixit, Ashutosh
2023-10-05 3:09 ` Dixit, Ashutosh
2023-09-19 16:10 ` [Intel-xe] [PATCH 21/21] drm/xe/uapi: Convert OA property key/value pairs to a struct Ashutosh Dixit
2023-09-21 23:53 ` Dixit, Ashutosh
2023-10-05 5:37 ` Dixit, Ashutosh
2023-10-05 19:26 ` Umesh Nerlige Ramappa
2023-09-19 16:19 ` [Intel-xe] ✓ CI.Patch_applied: success for Add OA functionality to Xe (rev6) Patchwork
2023-09-19 16:19 ` [Intel-xe] ✗ CI.checkpatch: warning " Patchwork
2023-09-19 16:21 ` [Intel-xe] ✓ CI.KUnit: success " Patchwork
2023-09-19 16:28 ` [Intel-xe] ✓ CI.Build: " Patchwork
2023-09-19 16:28 ` [Intel-xe] ✗ CI.Hooks: failure " Patchwork
2023-09-19 16:29 ` [Intel-xe] ✓ CI.checksparse: success " Patchwork
2023-09-19 17:04 ` [Intel-xe] ✗ CI.BAT: failure " Patchwork
2023-10-14 1:05 ` [Intel-xe] [PATCH 00/21] Add OA functionality to Xe Umesh Nerlige Ramappa
2023-10-20 7:44 ` Lionel Landwerlin
2023-10-20 7:52 ` Lionel Landwerlin
2023-10-31 6:51 ` Dixit, Ashutosh
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=ZQyrgm74zjHjdr3x@intel.com \
--to=rodrigo.vivi@intel.com \
--cc=ashutosh.dixit@intel.com \
--cc=intel-xe@lists.freedesktop.org \
/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.