All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Dixit, Ashutosh" <ashutosh.dixit@intel.com>
To: intel-xe@lists.freedesktop.org
Cc: francois.dugast@intel.com,
	Lucas De Marchi <lucas.demarchi@intel.com>,
	Rodrigo Vivi <rodrigo.vivi@intel.com>
Subject: Re: [PATCH] drm/xe/pmu/uapi: Remove PMU group busyness events from uapi
Date: Fri, 08 Dec 2023 17:33:19 -0800	[thread overview]
Message-ID: <87o7f0i2hs.wl-ashutosh.dixit@intel.com> (raw)
In-Reply-To: <20231209000233.2577418-1-ashutosh.dixit@intel.com>

On Fri, 08 Dec 2023 16:02:33 -0800, Ashutosh Dixit wrote:
>
> PMU group busyness uapi is likely to change in the future. Till the uapi is
> decided remove the uapi from xe_drm.h. To not break the build retain the
> events internally in xe_pmu.c for now.

This gets the job done of getting the PMU stuff out of the uapi, but not
sure if moving the defines in xe_pmu.c is ugly? The other easy option is to
just delete everything (maybe drop all PMU patches in a rebase). Later add
it back when some valid PMU stuff is added again.

Deleting the uapi but retaining the PMU infrastructure is a chore. I'd say
do something like this patch, or delete everything and start over.

>
> Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
> ---
>  drivers/gpu/drm/xe/xe_pmu.c | 39 +++++++++++++++++++++++++++++++++++++
>  include/uapi/drm/xe_drm.h   | 39 -------------------------------------
>  2 files changed, 39 insertions(+), 39 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_pmu.c b/drivers/gpu/drm/xe/xe_pmu.c
> index 9d0b7887cfc45..d6fa7cdca9ede 100644
> --- a/drivers/gpu/drm/xe/xe_pmu.c
> +++ b/drivers/gpu/drm/xe/xe_pmu.c
> @@ -12,6 +12,45 @@
>  #include "xe_gt_clock.h"
>  #include "xe_mmio.h"
>
> +/**
> + * DOC: XE PMU event config IDs
> + *
> + * Check 'man perf_event_open' to use the ID's DRM_XE_PMU_XXXX listed in xe_drm.h
> + * in 'struct perf_event_attr' as part of perf_event_open syscall to read a
> + * particular event.
> + *
> + * For example to open the DRMXE_PMU_RENDER_GROUP_BUSY(0):
> + *
> + * .. code-block:: C
> + *
> + *	struct perf_event_attr attr;
> + *	long long count;
> + *	int cpu = 0;
> + *	int fd;
> + *
> + *	memset(&attr, 0, sizeof(struct perf_event_attr));
> + *	attr.type = type; // eg: /sys/bus/event_source/devices/xe_0000_56_00.0/type
> + *	attr.read_format = PERF_FORMAT_TOTAL_TIME_ENABLED;
> + *	attr.use_clockid = 1;
> + *	attr.clockid = CLOCK_MONOTONIC;
> + *	attr.config = DRM_XE_PMU_RENDER_GROUP_BUSY(0);
> + *
> + *	fd = syscall(__NR_perf_event_open, &attr, -1, cpu, -1, 0);
> + */
> +
> +/*
> + * Top bits of every counter are GT id.
> + */
> +#define __DRM_XE_PMU_GT_SHIFT (56)
> +
> +#define ___DRM_XE_PMU_OTHER(gt, x) \
> +	(((__u64)(x)) | ((__u64)(gt) << __DRM_XE_PMU_GT_SHIFT))
> +
> +#define DRM_XE_PMU_RENDER_GROUP_BUSY(gt)	___DRM_XE_PMU_OTHER(gt, 0)
> +#define DRM_XE_PMU_COPY_GROUP_BUSY(gt)		___DRM_XE_PMU_OTHER(gt, 1)
> +#define DRM_XE_PMU_MEDIA_GROUP_BUSY(gt)		___DRM_XE_PMU_OTHER(gt, 2)
> +#define DRM_XE_PMU_ANY_ENGINE_GROUP_BUSY(gt)	___DRM_XE_PMU_OTHER(gt, 3)
> +
>  static cpumask_t xe_pmu_cpumask;
>  static unsigned int xe_pmu_target_cpu = -1;
>
> diff --git a/include/uapi/drm/xe_drm.h b/include/uapi/drm/xe_drm.h
> index 0895e4d2a9815..64498c762d8b9 100644
> --- a/include/uapi/drm/xe_drm.h
> +++ b/include/uapi/drm/xe_drm.h
> @@ -1081,45 +1081,6 @@ struct drm_xe_wait_user_fence {
>	__u64 reserved[2];
>  };
>
> -/**
> - * DOC: XE PMU event config IDs
> - *
> - * Check 'man perf_event_open' to use the ID's DRM_XE_PMU_XXXX listed in xe_drm.h
> - * in 'struct perf_event_attr' as part of perf_event_open syscall to read a
> - * particular event.
> - *
> - * For example to open the DRMXE_PMU_RENDER_GROUP_BUSY(0):
> - *
> - * .. code-block:: C
> - *
> - *	struct perf_event_attr attr;
> - *	long long count;
> - *	int cpu = 0;
> - *	int fd;
> - *
> - *	memset(&attr, 0, sizeof(struct perf_event_attr));
> - *	attr.type = type; // eg: /sys/bus/event_source/devices/xe_0000_56_00.0/type
> - *	attr.read_format = PERF_FORMAT_TOTAL_TIME_ENABLED;
> - *	attr.use_clockid = 1;
> - *	attr.clockid = CLOCK_MONOTONIC;
> - *	attr.config = DRM_XE_PMU_RENDER_GROUP_BUSY(0);
> - *
> - *	fd = syscall(__NR_perf_event_open, &attr, -1, cpu, -1, 0);
> - */
> -
> -/*
> - * Top bits of every counter are GT id.
> - */
> -#define __DRM_XE_PMU_GT_SHIFT (56)
> -
> -#define ___DRM_XE_PMU_OTHER(gt, x) \
> -	(((__u64)(x)) | ((__u64)(gt) << __DRM_XE_PMU_GT_SHIFT))
> -
> -#define DRM_XE_PMU_RENDER_GROUP_BUSY(gt)	___DRM_XE_PMU_OTHER(gt, 0)
> -#define DRM_XE_PMU_COPY_GROUP_BUSY(gt)		___DRM_XE_PMU_OTHER(gt, 1)
> -#define DRM_XE_PMU_MEDIA_GROUP_BUSY(gt)		___DRM_XE_PMU_OTHER(gt, 2)
> -#define DRM_XE_PMU_ANY_ENGINE_GROUP_BUSY(gt)	___DRM_XE_PMU_OTHER(gt, 3)
> -
>  #if defined(__cplusplus)
>  }
>  #endif
> --
> 2.41.0
>

  parent reply	other threads:[~2023-12-09  1:49 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-12-09  0:02 [PATCH] drm/xe/pmu/uapi: Remove PMU group busyness events from uapi Ashutosh Dixit
2023-12-09  1:20 ` ✓ CI.Patch_applied: success for drm/xe/pmu/uapi: Remove PMU group busyness events from uapi (rev2) Patchwork
2023-12-09  1:20 ` ✓ CI.checkpatch: " Patchwork
2023-12-09  1:22 ` ✓ CI.KUnit: " Patchwork
2023-12-09  1:29 ` ✓ CI.Build: " Patchwork
2023-12-09  1:29 ` ✓ CI.Hooks: " Patchwork
2023-12-09  1:31 ` ✓ CI.checksparse: " Patchwork
2023-12-09  1:33 ` Dixit, Ashutosh [this message]
2023-12-09 22:58   ` [PATCH] drm/xe/pmu/uapi: Remove PMU group busyness events from uapi Dixit, Ashutosh
2023-12-09  2:09 ` ✗ CI.BAT: failure for drm/xe/pmu/uapi: Remove PMU group busyness events from uapi (rev2) Patchwork
  -- strict thread matches above, loose matches on Subject: below --
2023-12-09  0:01 [PATCH] drm/xe/pmu/uapi: Remove PMU group busyness events from uapi Ashutosh Dixit

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=87o7f0i2hs.wl-ashutosh.dixit@intel.com \
    --to=ashutosh.dixit@intel.com \
    --cc=francois.dugast@intel.com \
    --cc=intel-xe@lists.freedesktop.org \
    --cc=lucas.demarchi@intel.com \
    --cc=rodrigo.vivi@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.