Intel-XE Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Michal Wajdeczko <michal.wajdeczko@intel.com>
To: intel-xe@lists.freedesktop.org
Subject: [PATCH 3/6] drm/xe/vf: Obtain value of GMDID register from GuC
Date: Thu, 23 May 2024 21:22:37 +0200	[thread overview]
Message-ID: <20240523192240.844-4-michal.wajdeczko@intel.com> (raw)
In-Reply-To: <20240523192240.844-1-michal.wajdeczko@intel.com>

VFs don't have access to the GMDID register and must obtain it
value using GuC VF ABI KLV query. Add function for doing that.

Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
---
 drivers/gpu/drm/xe/xe_gt_sriov_vf.c | 29 +++++++++++++++++++++++++++++
 drivers/gpu/drm/xe/xe_gt_sriov_vf.h |  1 +
 2 files changed, 30 insertions(+)

diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_vf.c b/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
index 237486a80fb5..5b8771f831f7 100644
--- a/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
+++ b/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
@@ -284,6 +284,35 @@ static int guc_action_query_single_klv64(struct xe_guc *guc, u32 key, u64 *value
 	return 0;
 }
 
+/**
+ * xe_gt_sriov_vf_gmdid - Query GMDID over MMIO.
+ * @gt: the &xe_gt
+ *
+ * This function is for VF use only.
+ *
+ * Return: value of GMDID KLV on success or 0 on failure.
+ */
+u32 xe_gt_sriov_vf_gmdid(struct xe_gt *gt)
+{
+	const char *type = xe_gt_is_media_type(gt) ? "media" : "graphics";
+	struct xe_guc *guc = &gt->uc.guc;
+	u32 value;
+	int err;
+
+	xe_gt_assert(gt, IS_SRIOV_VF(gt_to_xe(gt)));
+	xe_gt_assert(gt, gt->sriov.vf.guc_version.major > 1 || gt->sriov.vf.guc_version.minor >= 2);
+
+	err = guc_action_query_single_klv32(guc, GUC_KLV_GLOBAL_CFG_GMD_ID_KEY, &value);
+	if (unlikely(err)) {
+		xe_gt_sriov_err(gt, "Failed to obtain %s GMDID (%pe)\n",
+				type, ERR_PTR(err));
+		return 0;
+	}
+
+	xe_gt_sriov_dbg(gt, "%s GMDID = %#x\n", type, value);
+	return value;
+}
+
 static int vf_get_ggtt_info(struct xe_gt *gt)
 {
 	struct xe_gt_sriov_vf_selfconfig *config = &gt->sriov.vf.self_config;
diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_vf.h b/drivers/gpu/drm/xe/xe_gt_sriov_vf.h
index be69c1025320..0391ed72a570 100644
--- a/drivers/gpu/drm/xe/xe_gt_sriov_vf.h
+++ b/drivers/gpu/drm/xe/xe_gt_sriov_vf.h
@@ -17,6 +17,7 @@ int xe_gt_sriov_vf_query_config(struct xe_gt *gt);
 int xe_gt_sriov_vf_connect(struct xe_gt *gt);
 int xe_gt_sriov_vf_query_runtime(struct xe_gt *gt);
 
+u32 xe_gt_sriov_vf_gmdid(struct xe_gt *gt);
 u16 xe_gt_sriov_vf_guc_ids(struct xe_gt *gt);
 u32 xe_gt_sriov_vf_read32(struct xe_gt *gt, struct xe_reg reg);
 
-- 
2.43.0


  parent reply	other threads:[~2024-05-23 19:23 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-05-23 19:22 [PATCH 0/6] VF: Use the runtime registers Michal Wajdeczko
2024-05-23 19:22 ` [PATCH 1/6] drm/xe/vf: Use register values obtained from the PF Michal Wajdeczko
2024-05-23 21:28   ` Matt Roper
2024-05-23 19:22 ` [PATCH 2/6] drm/xe/guc: Add GLOBAL_CFG_GMD_ID KLV definition Michal Wajdeczko
2024-05-23 20:50   ` Matt Roper
2024-05-23 19:22 ` Michal Wajdeczko [this message]
2024-05-23 20:52   ` [PATCH 3/6] drm/xe/vf: Obtain value of GMDID register from GuC Matt Roper
2024-05-23 19:22 ` [PATCH 4/6] drm/xe/vf: Provide early access to GMDID register Michal Wajdeczko
2024-05-23 21:08   ` Matt Roper
2024-05-23 21:17     ` Matt Roper
2024-05-23 21:43       ` Michal Wajdeczko
2024-05-23 22:30   ` [PATCH v2 " Michal Wajdeczko
2024-05-23 19:22 ` [PATCH 5/6] drm/xe/vf: Cache value of the " Michal Wajdeczko
2024-05-23 21:20   ` Matt Roper
2024-05-23 19:22 ` [PATCH 6/6] drm/xe/vf: Treat GMDID as another runtime register Michal Wajdeczko
2024-05-23 21:21   ` Matt Roper
2024-05-23 19:29 ` ✓ CI.Patch_applied: success for VF: Use the runtime registers Patchwork
2024-05-23 19:29 ` ✓ CI.checkpatch: " Patchwork
2024-05-23 19:30 ` ✓ CI.KUnit: " Patchwork
2024-05-23 19:41 ` ✓ CI.Build: " Patchwork
2024-05-23 19:44 ` ✓ CI.Hooks: " Patchwork
2024-05-23 19:45 ` ✓ CI.checksparse: " Patchwork
2024-05-23 23:05 ` ✓ CI.Patch_applied: success for VF: Use the runtime registers (rev2) Patchwork
2024-05-23 23:06 ` ✓ CI.checkpatch: " Patchwork
2024-05-23 23:07 ` ✓ CI.KUnit: " Patchwork
2024-05-23 23:18 ` ✓ CI.Build: " Patchwork
2024-05-23 23:19 ` ✗ CI.FULL: failure for VF: Use the runtime registers Patchwork
2024-05-23 23:21 ` ✓ CI.Hooks: success for VF: Use the runtime registers (rev2) Patchwork
2024-05-23 23:22 ` ✓ CI.checksparse: " Patchwork
2024-05-23 23:49 ` ✓ CI.BAT: " Patchwork
2024-05-24  2:10 ` ✗ CI.FULL: failure " Patchwork
2024-05-24  7:50   ` Michal Wajdeczko

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=20240523192240.844-4-michal.wajdeczko@intel.com \
    --to=michal.wajdeczko@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox