Jiri Slaby ef7db2
From: Matt Roper <matthew.d.roper@intel.com>
Jiri Slaby ef7db2
Date: Wed, 1 Feb 2023 14:28:28 -0800
Jiri Slaby ef7db2
Subject: [PATCH] drm/i915/pvc: Annotate two more workaround/tuning registers
Jiri Slaby ef7db2
 as MCR
Jiri Slaby ef7db2
References: bsc#1012628
Jiri Slaby ef7db2
Patch-mainline: 6.2.3
Jiri Slaby ef7db2
Git-commit: effc0905d741b4138806747407baf8de98390c72
Jiri Slaby ef7db2
Jiri Slaby ef7db2
[ Upstream commit effc0905d741b4138806747407baf8de98390c72 ]
Jiri Slaby ef7db2
Jiri Slaby ef7db2
XEHPC_LNCFMISCCFGREG0 and XEHPC_L3SCRUB are both in MCR register ranges
Jiri Slaby ef7db2
on PVC (with HALFBSLICE and L3BANK replication respectively), so they
Jiri Slaby ef7db2
should be explicitly declared as MCR registers and use MCR-aware
Jiri Slaby ef7db2
workaround handlers.
Jiri Slaby ef7db2
Jiri Slaby ef7db2
The workarounds/tuning settings should still be applied properly on PVC
Jiri Slaby ef7db2
even without the MCR annotation, but readback verification on
Jiri Slaby ef7db2
CONFIG_DRM_I915_DEBUG_GEM builds could potentitally give false positive
Jiri Slaby ef7db2
"workaround lost on load" warnings on parts fused such that a unicast
Jiri Slaby ef7db2
read targets a terminated register instance.
Jiri Slaby ef7db2
Jiri Slaby ef7db2
Fixes: a9e69428b1b4 ("drm/i915: Define MCR registers explicitly")
Jiri Slaby ef7db2
Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
Jiri Slaby ef7db2
Reviewed-by: Gustavo Sousa <gustavo.sousa@intel.com>
Jiri Slaby ef7db2
Link: https://patchwork.freedesktop.org/patch/msgid/20230201222831.608281-1-matthew.d.roper@intel.com
Jiri Slaby ef7db2
(cherry picked from commit 4039e44237e8ebb06f0e4af549fbedf7c41df9db)
Jiri Slaby ef7db2
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Jiri Slaby ef7db2
Signed-off-by: Sasha Levin <sashal@kernel.org>
Jiri Slaby ef7db2
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Jiri Slaby ef7db2
---
Jiri Slaby ef7db2
 drivers/gpu/drm/i915/gt/intel_gt_regs.h     |  4 ++--
Jiri Slaby ef7db2
 drivers/gpu/drm/i915/gt/intel_workarounds.c | 14 ++++++++++----
Jiri Slaby ef7db2
 2 files changed, 12 insertions(+), 6 deletions(-)
Jiri Slaby ef7db2
Jiri Slaby ef7db2
diff --git a/drivers/gpu/drm/i915/gt/intel_gt_regs.h b/drivers/gpu/drm/i915/gt/intel_gt_regs.h
Jiri Slaby ef7db2
index 838f7316..0d47c930 100644
Jiri Slaby ef7db2
--- a/drivers/gpu/drm/i915/gt/intel_gt_regs.h
Jiri Slaby ef7db2
+++ b/drivers/gpu/drm/i915/gt/intel_gt_regs.h
Jiri Slaby ef7db2
@@ -969,7 +969,7 @@
Jiri Slaby ef7db2
 #define   GEN7_WA_FOR_GEN7_L3_CONTROL		0x3C47FF8C
Jiri Slaby ef7db2
 #define   GEN7_L3AGDIS				(1 << 19)
Jiri Slaby ef7db2
 
Jiri Slaby ef7db2
-#define XEHPC_LNCFMISCCFGREG0			_MMIO(0xb01c)
Jiri Slaby ef7db2
+#define XEHPC_LNCFMISCCFGREG0			MCR_REG(0xb01c)
Jiri Slaby ef7db2
 #define   XEHPC_HOSTCACHEEN			REG_BIT(1)
Jiri Slaby ef7db2
 #define   XEHPC_OVRLSCCC			REG_BIT(0)
Jiri Slaby ef7db2
 
Jiri Slaby ef7db2
@@ -1032,7 +1032,7 @@
Jiri Slaby ef7db2
 #define XEHP_L3SCQREG7				MCR_REG(0xb188)
Jiri Slaby ef7db2
 #define   BLEND_FILL_CACHING_OPT_DIS		REG_BIT(3)
Jiri Slaby ef7db2
 
Jiri Slaby ef7db2
-#define XEHPC_L3SCRUB				_MMIO(0xb18c)
Jiri Slaby ef7db2
+#define XEHPC_L3SCRUB				MCR_REG(0xb18c)
Jiri Slaby ef7db2
 #define   SCRUB_CL_DWNGRADE_SHARED		REG_BIT(12)
Jiri Slaby ef7db2
 #define   SCRUB_RATE_PER_BANK_MASK		REG_GENMASK(2, 0)
Jiri Slaby ef7db2
 #define   SCRUB_RATE_4B_PER_CLK			REG_FIELD_PREP(SCRUB_RATE_PER_BANK_MASK, 0x6)
Jiri Slaby ef7db2
diff --git a/drivers/gpu/drm/i915/gt/intel_workarounds.c b/drivers/gpu/drm/i915/gt/intel_workarounds.c
Jiri Slaby ef7db2
index c2d9d07a..80b0e9a5 100644
Jiri Slaby ef7db2
--- a/drivers/gpu/drm/i915/gt/intel_workarounds.c
Jiri Slaby ef7db2
+++ b/drivers/gpu/drm/i915/gt/intel_workarounds.c
Jiri Slaby ef7db2
@@ -224,6 +224,12 @@ wa_write(struct i915_wa_list *wal, i915_reg_t reg, u32 set)
Jiri Slaby ef7db2
 	wa_write_clr_set(wal, reg, ~0, set);
Jiri Slaby ef7db2
 }
Jiri Slaby ef7db2
 
Jiri Slaby ef7db2
+static void
Jiri Slaby ef7db2
+wa_mcr_write(struct i915_wa_list *wal, i915_mcr_reg_t reg, u32 set)
Jiri Slaby ef7db2
+{
Jiri Slaby ef7db2
+	wa_mcr_write_clr_set(wal, reg, ~0, set);
Jiri Slaby ef7db2
+}
Jiri Slaby ef7db2
+
Jiri Slaby ef7db2
 static void
Jiri Slaby ef7db2
 wa_write_or(struct i915_wa_list *wal, i915_reg_t reg, u32 set)
Jiri Slaby ef7db2
 {
Jiri Slaby ef7db2
@@ -2971,9 +2977,9 @@ add_render_compute_tuning_settings(struct drm_i915_private *i915,
Jiri Slaby ef7db2
 				   struct i915_wa_list *wal)
Jiri Slaby ef7db2
 {
Jiri Slaby ef7db2
 	if (IS_PONTEVECCHIO(i915)) {
Jiri Slaby ef7db2
-		wa_write(wal, XEHPC_L3SCRUB,
Jiri Slaby ef7db2
-			 SCRUB_CL_DWNGRADE_SHARED | SCRUB_RATE_4B_PER_CLK);
Jiri Slaby ef7db2
-		wa_masked_en(wal, XEHPC_LNCFMISCCFGREG0, XEHPC_HOSTCACHEEN);
Jiri Slaby ef7db2
+		wa_mcr_write(wal, XEHPC_L3SCRUB,
Jiri Slaby ef7db2
+			     SCRUB_CL_DWNGRADE_SHARED | SCRUB_RATE_4B_PER_CLK);
Jiri Slaby ef7db2
+		wa_mcr_masked_en(wal, XEHPC_LNCFMISCCFGREG0, XEHPC_HOSTCACHEEN);
Jiri Slaby ef7db2
 	}
Jiri Slaby ef7db2
 
Jiri Slaby ef7db2
 	if (IS_DG2(i915)) {
Jiri Slaby ef7db2
@@ -3038,7 +3044,7 @@ general_render_compute_wa_init(struct intel_engine_cs *engine, struct i915_wa_li
Jiri Slaby ef7db2
 
Jiri Slaby ef7db2
 	if (IS_PONTEVECCHIO(i915)) {
Jiri Slaby ef7db2
 		/* Wa_16016694945 */
Jiri Slaby ef7db2
-		wa_masked_en(wal, XEHPC_LNCFMISCCFGREG0, XEHPC_OVRLSCCC);
Jiri Slaby ef7db2
+		wa_mcr_masked_en(wal, XEHPC_LNCFMISCCFGREG0, XEHPC_OVRLSCCC);
Jiri Slaby ef7db2
 	}
Jiri Slaby ef7db2
 
Jiri Slaby ef7db2
 	if (IS_XEHPSDV(i915)) {
Jiri Slaby ef7db2
-- 
Jiri Slaby ef7db2
2.35.3
Jiri Slaby ef7db2