All of lore.kernel.org
 help / color / mirror / Atom feed
From: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
To: Riana Tauro <riana.tauro@intel.com>
Cc: <intel-xe@lists.freedesktop.org>, <anshuman.gupta@intel.com>,
	<lucas.demarchi@intel.com>, <vinay.belgaumkar@intel.com>,
	<soham.purkait@intel.com>,
	John Harrison <John.C.Harrison@intel.com>,
	"Michal Wajdeczko" <michal.wajdeczko@intel.com>
Subject: Re: [PATCH v6 3/8] drm/xe/guc: Expose engine activity only for supported GuC version
Date: Thu, 13 Feb 2025 10:08:12 -0800	[thread overview]
Message-ID: <Z641DK2lgevwBWX2@orsosgc001> (raw)
In-Reply-To: <20250211100952.322303-4-riana.tauro@intel.com>

On Tue, Feb 11, 2025 at 03:39:45PM +0530, Riana Tauro wrote:
>Engine activity is supported only on GuC submission version >= 1.14.1
>Allow enabling/reading engine activity only on supported
>GuC versions. Warn once if not supported.
>
>v2: use guc interface version (John)
>v3: use debug log (Umesh)
>v4: use variable for supported and use gt logs
>    use a friendlier log message (Michal)
>v5: fix kernel-doc
>    do not continue in init if not supported (Michal)
>
>Cc: John Harrison <John.C.Harrison@Intel.com>
>Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
>Signed-off-by: Riana Tauro <riana.tauro@intel.com>

LGTM, 

Reviewed-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>

Thanks,
Umesh
>---
> drivers/gpu/drm/xe/xe_guc_engine_activity.c   | 49 ++++++++++++++++++-
> drivers/gpu/drm/xe/xe_guc_engine_activity.h   |  1 +
> .../gpu/drm/xe/xe_guc_engine_activity_types.h |  3 ++
> 3 files changed, 51 insertions(+), 2 deletions(-)
>
>diff --git a/drivers/gpu/drm/xe/xe_guc_engine_activity.c b/drivers/gpu/drm/xe/xe_guc_engine_activity.c
>index a424527eddb6..ed4080b7493a 100644
>--- a/drivers/gpu/drm/xe/xe_guc_engine_activity.c
>+++ b/drivers/gpu/drm/xe/xe_guc_engine_activity.c
>@@ -95,6 +95,27 @@ static void free_engine_activity_buffers(struct engine_activity_buffer *buffer)
> 	xe_bo_unpin_map_no_vm(buffer->activity_bo);
> }
>
>+static bool is_engine_activity_supported(struct xe_guc *guc)
>+{
>+	struct xe_uc_fw_version *version = &guc->fw.versions.found[XE_UC_FW_VER_COMPATIBILITY];
>+	struct xe_gt *gt = guc_to_gt(guc);
>+
>+	if (IS_SRIOV_VF(gt_to_xe(gt))) {
>+		xe_gt_info(gt, "engine activity stats not supported on VFs\n");
>+		return false;
>+	}
>+
>+	/* engine activity stats is supported from GuC interface version (1.14.1) */
>+	if (GUC_SUBMIT_VER(guc) < MAKE_GUC_VER(1, 14, 1)) {
>+		xe_gt_info(gt,
>+			   "engine activity stats unsupported in GuC interface v%u.%u.%u, need v%u.%u.%u or higher\n",
>+			   version->major, version->minor, version->patch, 1, 14, 1);
>+		return false;
>+	}
>+
>+	return true;
>+}
>+
> static struct engine_activity *hw_engine_to_engine_activity(struct xe_hw_engine *hwe)
> {
> 	struct xe_guc *guc = &hwe->gt->uc.guc;
>@@ -251,6 +272,9 @@ static u32 gpm_timestamp_shift(struct xe_gt *gt)
>  */
> u64 xe_guc_engine_activity_active_ticks(struct xe_guc *guc, struct xe_hw_engine *hwe)
> {
>+	if (!xe_guc_engine_activity_supported(guc))
>+		return 0;
>+
> 	return get_engine_active_ticks(guc, hwe);
> }
>
>@@ -263,9 +287,27 @@ u64 xe_guc_engine_activity_active_ticks(struct xe_guc *guc, struct xe_hw_engine
>  */
> u64 xe_guc_engine_activity_total_ticks(struct xe_guc *guc, struct xe_hw_engine *hwe)
> {
>+	if (!xe_guc_engine_activity_supported(guc))
>+		return 0;
>+
> 	return get_engine_total_ticks(guc, hwe);
> }
>
>+/**
>+ * xe_guc_engine_activity_supported - Check support for engine activity stats
>+ * @guc: The GuC object
>+ *
>+ * Engine activity stats is supported from GuC interface version (1.14.1)
>+ *
>+ * Return: true if engine activity stats supported, false otherwise
>+ */
>+bool xe_guc_engine_activity_supported(struct xe_guc *guc)
>+{
>+	struct xe_guc_engine_activity *engine_activity = &guc->engine_activity;
>+
>+	return engine_activity->supported;
>+}
>+
> /**
>  * xe_guc_engine_activity_enable_stats - Enable engine activity stats
>  * @guc: The GuC object
>@@ -276,6 +318,9 @@ void xe_guc_engine_activity_enable_stats(struct xe_guc *guc)
> {
> 	int ret;
>
>+	if (!xe_guc_engine_activity_supported(guc))
>+		return;
>+
> 	ret = enable_engine_activity_stats(guc);
> 	if (ret)
> 		xe_gt_err(guc_to_gt(guc), "failed to enable activity stats%d\n", ret);
>@@ -301,10 +346,10 @@ int xe_guc_engine_activity_init(struct xe_guc *guc)
> {
> 	struct xe_guc_engine_activity *engine_activity = &guc->engine_activity;
> 	struct xe_gt *gt = guc_to_gt(guc);
>-	struct xe_device *xe = gt_to_xe(gt);
> 	int ret;
>
>-	if (IS_SRIOV_VF(xe))
>+	engine_activity->supported = is_engine_activity_supported(guc);
>+	if (!engine_activity->supported)
> 		return 0;
>
> 	ret = allocate_engine_activity_group(guc);
>diff --git a/drivers/gpu/drm/xe/xe_guc_engine_activity.h b/drivers/gpu/drm/xe/xe_guc_engine_activity.h
>index e92d2456698d..a042d4cb404c 100644
>--- a/drivers/gpu/drm/xe/xe_guc_engine_activity.h
>+++ b/drivers/gpu/drm/xe/xe_guc_engine_activity.h
>@@ -12,6 +12,7 @@ struct xe_hw_engine;
> struct xe_guc;
>
> int xe_guc_engine_activity_init(struct xe_guc *guc);
>+bool xe_guc_engine_activity_supported(struct xe_guc *guc);
> void xe_guc_engine_activity_enable_stats(struct xe_guc *guc);
> u64 xe_guc_engine_activity_active_ticks(struct xe_guc *guc, struct xe_hw_engine *hwe);
> u64 xe_guc_engine_activity_total_ticks(struct xe_guc *guc, struct xe_hw_engine *hwe);
>diff --git a/drivers/gpu/drm/xe/xe_guc_engine_activity_types.h b/drivers/gpu/drm/xe/xe_guc_engine_activity_types.h
>index a2ab327d3eec..5cdd034b6b70 100644
>--- a/drivers/gpu/drm/xe/xe_guc_engine_activity_types.h
>+++ b/drivers/gpu/drm/xe/xe_guc_engine_activity_types.h
>@@ -79,6 +79,9 @@ struct xe_guc_engine_activity {
> 	/** @num_activity_group: number of activity groups */
> 	u32 num_activity_group;
>
>+	/** @supported: indicates support for engine activity stats */
>+	bool supported;
>+
> 	/** @eag: holds the device level engine activity data */
> 	struct engine_activity_group *eag;
>
>-- 
>2.47.1
>

  reply	other threads:[~2025-02-13 18:08 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-02-11 10:09 [PATCH v6 0/8] PMU support for engine activity Riana Tauro
2025-02-11 10:09 ` [PATCH v6 1/8] drm/xe: Add engine activity support Riana Tauro
2025-02-11 10:09 ` [PATCH v6 2/8] drm/xe/trace: Add trace for engine activity Riana Tauro
2025-02-11 10:09 ` [PATCH v6 3/8] drm/xe/guc: Expose engine activity only for supported GuC version Riana Tauro
2025-02-13 18:08   ` Umesh Nerlige Ramappa [this message]
2025-02-11 10:09 ` [PATCH v6 4/8] drm/xe/xe_pmu: Add PMU support for engine activity Riana Tauro
2025-02-11 10:09 ` [PATCH v6 5/8] drm/xe/xe_pmu: Acquire forcewake on event init for engine events Riana Tauro
2025-02-12 23:49   ` Umesh Nerlige Ramappa
2025-02-11 10:09 ` [PATCH v6 6/8] drm/xe: Add support for per-function engine activity Riana Tauro
2025-02-11 10:09 ` [PATCH v6 7/8] drm/xe/xe_pmu: Add PMU support for per-function engine activity stats Riana Tauro
2025-02-11 10:09 ` [PATCH v6 8/8] drm/xe/pf: Enable " Riana Tauro
2025-02-11 10:48 ` ✓ CI.Patch_applied: success for PMU support for engine activity (rev2) Patchwork
2025-02-11 10:49 ` ✗ CI.checkpatch: warning " Patchwork
2025-02-11 10:50 ` ✓ CI.KUnit: success " Patchwork
2025-02-11 11:19 ` ✓ CI.Build: " Patchwork
2025-02-11 11:21 ` ✗ CI.Hooks: failure " Patchwork
2025-02-11 11:22 ` ✗ CI.checksparse: warning " Patchwork
2025-02-11 11:42 ` ✓ Xe.CI.BAT: success " Patchwork
2025-02-11 19:01 ` ✗ Xe.CI.Full: 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=Z641DK2lgevwBWX2@orsosgc001 \
    --to=umesh.nerlige.ramappa@intel.com \
    --cc=John.C.Harrison@intel.com \
    --cc=anshuman.gupta@intel.com \
    --cc=intel-xe@lists.freedesktop.org \
    --cc=lucas.demarchi@intel.com \
    --cc=michal.wajdeczko@intel.com \
    --cc=riana.tauro@intel.com \
    --cc=soham.purkait@intel.com \
    --cc=vinay.belgaumkar@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.