dri-devel.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
From: Matt Roper <matthew.d.roper@intel.com>
To: intel-gfx@lists.freedesktop.org
Cc: Aravind Iddamsetty <aravind.iddamsetty@intel.com>,
	dri-devel@lists.freedesktop.org
Subject: [PATCH v3 11/14] drm/i915/mtl: Add gsi_offset when emitting aux table invalidation
Date: Tue,  6 Sep 2022 16:49:31 -0700	[thread overview]
Message-ID: <20220906234934.3655440-12-matthew.d.roper@intel.com> (raw)
In-Reply-To: <20220906234934.3655440-1-matthew.d.roper@intel.com>

The aux table invalidation registers are a bit unique --- they're
engine-centric registers that reside in the GSI register space rather
than within the engines' regular MMIO ranges.  That means that when
issuing invalidation on engines in the standalone media GT, the GSI
offset must be added to the regular MMIO offset for the invalidation
registers.

Cc: Aravind Iddamsetty <aravind.iddamsetty@intel.com>
Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
---
 drivers/gpu/drm/i915/gt/gen8_engine_cs.c | 15 ++++++++++-----
 drivers/gpu/drm/i915/gt/gen8_engine_cs.h |  3 ++-
 drivers/gpu/drm/i915/gt/intel_lrc.c      |  9 ++++++---
 3 files changed, 18 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/gen8_engine_cs.c b/drivers/gpu/drm/i915/gt/gen8_engine_cs.c
index 98645797962f..e49fa6fa6aee 100644
--- a/drivers/gpu/drm/i915/gt/gen8_engine_cs.c
+++ b/drivers/gpu/drm/i915/gt/gen8_engine_cs.c
@@ -165,10 +165,12 @@ static u32 preparser_disable(bool state)
 	return MI_ARB_CHECK | 1 << 8 | state;
 }
 
-u32 *gen12_emit_aux_table_inv(u32 *cs, const i915_reg_t inv_reg)
+u32 *gen12_emit_aux_table_inv(struct intel_gt *gt, u32 *cs, const i915_reg_t inv_reg)
 {
+	u32 gsi_offset = gt->uncore->gsi_offset;
+
 	*cs++ = MI_LOAD_REGISTER_IMM(1) | MI_LRI_MMIO_REMAP_EN;
-	*cs++ = i915_mmio_reg_offset(inv_reg);
+	*cs++ = i915_mmio_reg_offset(inv_reg) + gsi_offset;
 	*cs++ = AUX_INV;
 	*cs++ = MI_NOOP;
 
@@ -254,7 +256,8 @@ int gen12_emit_flush_rcs(struct i915_request *rq, u32 mode)
 
 		if (!HAS_FLAT_CCS(rq->engine->i915)) {
 			/* hsdes: 1809175790 */
-			cs = gen12_emit_aux_table_inv(cs, GEN12_GFX_CCS_AUX_NV);
+			cs = gen12_emit_aux_table_inv(rq->engine->gt,
+						      cs, GEN12_GFX_CCS_AUX_NV);
 		}
 
 		*cs++ = preparser_disable(false);
@@ -313,9 +316,11 @@ int gen12_emit_flush_xcs(struct i915_request *rq, u32 mode)
 
 	if (aux_inv) { /* hsdes: 1809175790 */
 		if (rq->engine->class == VIDEO_DECODE_CLASS)
-			cs = gen12_emit_aux_table_inv(cs, GEN12_VD0_AUX_NV);
+			cs = gen12_emit_aux_table_inv(rq->engine->gt,
+						      cs, GEN12_VD0_AUX_NV);
 		else
-			cs = gen12_emit_aux_table_inv(cs, GEN12_VE0_AUX_NV);
+			cs = gen12_emit_aux_table_inv(rq->engine->gt,
+						      cs, GEN12_VE0_AUX_NV);
 	}
 
 	if (mode & EMIT_INVALIDATE)
diff --git a/drivers/gpu/drm/i915/gt/gen8_engine_cs.h b/drivers/gpu/drm/i915/gt/gen8_engine_cs.h
index 32e3d2b831bb..e4d24c811dd6 100644
--- a/drivers/gpu/drm/i915/gt/gen8_engine_cs.h
+++ b/drivers/gpu/drm/i915/gt/gen8_engine_cs.h
@@ -13,6 +13,7 @@
 #include "intel_gt_regs.h"
 #include "intel_gpu_commands.h"
 
+struct intel_gt;
 struct i915_request;
 
 int gen8_emit_flush_rcs(struct i915_request *rq, u32 mode);
@@ -45,7 +46,7 @@ u32 *gen8_emit_fini_breadcrumb_rcs(struct i915_request *rq, u32 *cs);
 u32 *gen11_emit_fini_breadcrumb_rcs(struct i915_request *rq, u32 *cs);
 u32 *gen12_emit_fini_breadcrumb_rcs(struct i915_request *rq, u32 *cs);
 
-u32 *gen12_emit_aux_table_inv(u32 *cs, const i915_reg_t inv_reg);
+u32 *gen12_emit_aux_table_inv(struct intel_gt *gt, u32 *cs, const i915_reg_t inv_reg);
 
 static inline u32 *
 __gen8_emit_pipe_control(u32 *batch, u32 flags0, u32 flags1, u32 offset)
diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c b/drivers/gpu/drm/i915/gt/intel_lrc.c
index 070cec4ff8a4..08214683e130 100644
--- a/drivers/gpu/drm/i915/gt/intel_lrc.c
+++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
@@ -1278,7 +1278,8 @@ gen12_emit_indirect_ctx_rcs(const struct intel_context *ce, u32 *cs)
 
 	/* hsdes: 1809175790 */
 	if (!HAS_FLAT_CCS(ce->engine->i915))
-		cs = gen12_emit_aux_table_inv(cs, GEN12_GFX_CCS_AUX_NV);
+		cs = gen12_emit_aux_table_inv(ce->engine->gt,
+					      cs, GEN12_GFX_CCS_AUX_NV);
 
 	/* Wa_16014892111 */
 	if (IS_DG2(ce->engine->i915))
@@ -1304,9 +1305,11 @@ gen12_emit_indirect_ctx_xcs(const struct intel_context *ce, u32 *cs)
 	/* hsdes: 1809175790 */
 	if (!HAS_FLAT_CCS(ce->engine->i915)) {
 		if (ce->engine->class == VIDEO_DECODE_CLASS)
-			cs = gen12_emit_aux_table_inv(cs, GEN12_VD0_AUX_NV);
+			cs = gen12_emit_aux_table_inv(ce->engine->gt,
+						      cs, GEN12_VD0_AUX_NV);
 		else if (ce->engine->class == VIDEO_ENHANCEMENT_CLASS)
-			cs = gen12_emit_aux_table_inv(cs, GEN12_VE0_AUX_NV);
+			cs = gen12_emit_aux_table_inv(ce->engine->gt,
+						      cs, GEN12_VE0_AUX_NV);
 	}
 
 	return cs;
-- 
2.37.2


  parent reply	other threads:[~2022-09-06 23:51 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-06 23:49 [PATCH v3 00/14] i915: Add "standalone media" support for MTL Matt Roper
2022-09-06 23:49 ` [PATCH v3 01/14] drm/i915: Move locking and unclaimed check into mmio_debug_{suspend, resume} Matt Roper
2022-09-06 23:49 ` [PATCH v3 02/14] drm/i915: Only hook up uncore->debug for primary uncore Matt Roper
2022-09-06 23:49 ` [PATCH v3 03/14] drm/i915: Use managed allocations for extra uncore objects Matt Roper
2022-09-06 23:49 ` [PATCH v3 04/14] drm/i915: Drop intel_gt_tile_cleanup() Matt Roper
2022-09-07  0:07   ` Lucas De Marchi
2022-09-07 11:18   ` kernel test robot
2022-09-06 23:49 ` [PATCH v3 05/14] drm/i915: Prepare more multi-GT initialization Matt Roper
2022-09-08 16:19   ` Iddamsetty, Aravind
2022-09-06 23:49 ` [PATCH v3 06/14] drm/i915: Rename and expose common GT early init routine Matt Roper
2022-09-06 23:49 ` [PATCH v3 07/14] drm/i915: Use a DRM-managed action to release the PCI bridge device Matt Roper
2022-09-09 20:57   ` Sripada, Radhakrishna
2022-09-06 23:49 ` [PATCH v3 08/14] drm/i915: Initialize MMIO access for each GT Matt Roper
2022-09-08 20:52   ` Ceraolo Spurio, Daniele
2022-09-06 23:49 ` [PATCH v3 09/14] drm/i915: Handle each GT on init/release and suspend/resume Matt Roper
2022-09-08 20:55   ` Ceraolo Spurio, Daniele
2022-09-06 23:49 ` [PATCH v3 10/14] drm/i915/uncore: Add GSI offset to uncore Matt Roper
2022-09-08 21:16   ` Ceraolo Spurio, Daniele
2022-09-08 22:29     ` Matt Roper
2022-09-08 22:45   ` [PATCH v3.1 " Matt Roper
2022-09-08 22:53     ` Ceraolo Spurio, Daniele
2022-09-06 23:49 ` Matt Roper [this message]
2022-09-07 16:16   ` [PATCH v3 11/14] drm/i915/mtl: Add gsi_offset when emitting aux table invalidation Iddamsetty, Aravind
2022-09-06 23:49 ` [PATCH v3 12/14] drm/i915/xelpmp: Expose media as another GT Matt Roper
2022-09-08 16:22   ` Iddamsetty, Aravind
2022-09-06 23:49 ` [PATCH v3 13/14] drm/i915/mtl: Use primary GT's irq lock for media GT Matt Roper
2022-09-08 21:20   ` Ceraolo Spurio, Daniele
2022-09-06 23:49 ` [PATCH v3 14/14] drm/i915/mtl: Hook up interrupts for standalone media Matt Roper

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=20220906234934.3655440-12-matthew.d.roper@intel.com \
    --to=matthew.d.roper@intel.com \
    --cc=aravind.iddamsetty@intel.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=intel-gfx@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;
as well as URLs for NNTP newsgroup(s).