From: Andi Shyti <andi.shyti@linux.intel.com>
To: intel-gfx <intel-gfx@lists.freedesktop.org>,
dri-devel <dri-devel@lists.freedesktop.org>
Cc: Arshad Mehmood <arshad.mehmood@intel.com>,
Chris Wilson <chris.p.wilson@linux.intel.com>,
Lucas De Marchi <lucas.demarchi@intel.com>,
Andi Shyti <andi.shyti@linux.intel.com>,
Andi Shyti <andi.shyti@kernel.org>
Subject: [PATCH v2 2/6] drm/i915/gt: Move CCS workaround to the correct section
Date: Thu, 27 Mar 2025 00:40:01 +0100 [thread overview]
Message-ID: <20250326234005.1574688-3-andi.shyti@linux.intel.com> (raw)
In-Reply-To: <20250326234005.1574688-1-andi.shyti@linux.intel.com>
The CCS engine workaround was previously added in a section
shared by both RCS and CCS engines.
Move it to the proper CCS-specific section so that it's applied
only once, avoiding unintended duplication caused by the first
CCS/RCS detection check.
To do this, the ccs_mode() function had to be moved earlier in
the file to avoid the need for a forward declaration.
Suggested-by: Arshad Mehmood <arshad.mehmood@intel.com>
Signed-off-by: Andi Shyti <andi.shyti@linux.intel.com>
---
drivers/gpu/drm/i915/gt/intel_workarounds.c | 58 +++++++++++----------
1 file changed, 30 insertions(+), 28 deletions(-)
diff --git a/drivers/gpu/drm/i915/gt/intel_workarounds.c b/drivers/gpu/drm/i915/gt/intel_workarounds.c
index 116683ebe074..bedd88a15959 100644
--- a/drivers/gpu/drm/i915/gt/intel_workarounds.c
+++ b/drivers/gpu/drm/i915/gt/intel_workarounds.c
@@ -2699,10 +2699,38 @@ xcs_engine_wa_init(struct intel_engine_cs *engine, struct i915_wa_list *wal)
XEHP_BLITTER_ROUND_ROBIN_MODE);
}
+static void ccs_engine_wa_mode(struct intel_engine_cs *engine, struct i915_wa_list *wal)
+{
+ struct intel_gt *gt = engine->gt;
+ u32 mode;
+
+ /*
+ * This workaround should be applied only once across all
+ * CCS engines. Apply it to the first CCS encountered.
+ */
+ if (!FIRST_CCS(engine))
+ return;
+
+ /*
+ * Wa_14019159160: This workaround, along with others, leads to
+ * significant challenges in utilizing load balancing among the
+ * CCS slices. Consequently, an architectural decision has been
+ * made to completely disable automatic CCS load balancing.
+ */
+ wa_masked_en(wal, GEN12_RCU_MODE, XEHP_RCU_MODE_FIXED_SLICE_CCS_MODE);
+
+ /*
+ * After having disabled automatic load balancing we need to
+ * assign all slices to a single CCS. We will call it CCS mode 1
+ */
+ mode = intel_gt_apply_ccs_mode(gt);
+ wa_masked_en(wal, XEHP_CCS_MODE, mode);
+}
+
static void
ccs_engine_wa_init(struct intel_engine_cs *engine, struct i915_wa_list *wal)
{
- /* boilerplate for any CCS engine workaround */
+ ccs_engine_wa_mode(engine, wal);
}
/*
@@ -2739,30 +2767,6 @@ add_render_compute_tuning_settings(struct intel_gt *gt,
wa_write_clr(wal, GEN8_GARBCNTL, GEN12_BUS_HASH_CTL_BIT_EXC);
}
-static void ccs_engine_wa_mode(struct intel_engine_cs *engine, struct i915_wa_list *wal)
-{
- struct intel_gt *gt = engine->gt;
- u32 mode;
-
- if (!IS_DG2(gt->i915))
- return;
-
- /*
- * Wa_14019159160: This workaround, along with others, leads to
- * significant challenges in utilizing load balancing among the
- * CCS slices. Consequently, an architectural decision has been
- * made to completely disable automatic CCS load balancing.
- */
- wa_masked_en(wal, GEN12_RCU_MODE, XEHP_RCU_MODE_FIXED_SLICE_CCS_MODE);
-
- /*
- * After having disabled automatic load balancing we need to
- * assign all slices to a single CCS. We will call it CCS mode 1
- */
- mode = intel_gt_apply_ccs_mode(gt);
- wa_masked_en(wal, XEHP_CCS_MODE, mode);
-}
-
/*
* The workarounds in this function apply to shared registers in
* the general render reset domain that aren't tied to a
@@ -2895,10 +2899,8 @@ engine_init_workarounds(struct intel_engine_cs *engine, struct i915_wa_list *wal
* to a single RCS/CCS engine's workaround list since
* they're reset as part of the general render domain reset.
*/
- if (engine->flags & I915_ENGINE_FIRST_RENDER_COMPUTE) {
+ if (engine->flags & I915_ENGINE_FIRST_RENDER_COMPUTE)
general_render_compute_wa_init(engine, wal);
- ccs_engine_wa_mode(engine, wal);
- }
if (engine->class == COMPUTE_CLASS)
ccs_engine_wa_init(engine, wal);
--
2.47.2
next prev parent reply other threads:[~2025-03-26 23:40 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-26 23:39 [PATCH v2 0/6] Remove I915_ENGINE_FIRST_RENDER_COMPUTE Andi Shyti
2025-03-26 23:40 ` [PATCH v2 1/6] drm/i915: Add the FIRST_CCS() helper Andi Shyti
2025-03-27 10:42 ` Jani Nikula
2025-03-27 11:05 ` Andi Shyti
2025-03-26 23:40 ` Andi Shyti [this message]
2025-04-23 14:06 ` [PATCH v2 2/6] drm/i915/gt: Move CCS workaround to the correct section Lucas De Marchi
2025-03-26 23:40 ` [PATCH v2 3/6] drm/i915/gt: Remove FIRST_RENDER_COMPUTE in workaround Andi Shyti
2025-03-26 23:40 ` [PATCH v2 4/6] drm/i915/gt: Check for the first CCS instead of FIRST_RENDER_COMPUTE Andi Shyti
2025-03-26 23:40 ` [PATCH v2 5/6] drm/i915/gt/uc: Use FIRST_CCS() helper for one-time CCS operations Andi Shyti
2025-03-26 23:40 ` [PATCH v2 6/6] drm/i915/gt: Remove unused I915_ENGINE_FIRST_RENDER_COMPUTE flag Andi Shyti
2025-04-23 13:57 ` Lucas De Marchi
2025-03-27 0:13 ` ✗ Fi.CI.CHECKPATCH: warning for Remove I915_ENGINE_FIRST_RENDER_COMPUTE Patchwork
2025-03-27 0:14 ` ✗ Fi.CI.SPARSE: " Patchwork
2025-03-27 3:13 ` ✓ i915.CI.BAT: success " Patchwork
2025-03-27 4:52 ` ✗ i915.CI.Full: failure " Patchwork
2025-04-23 13:54 ` [PATCH v2 0/6] " Lucas De Marchi
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=20250326234005.1574688-3-andi.shyti@linux.intel.com \
--to=andi.shyti@linux.intel.com \
--cc=andi.shyti@kernel.org \
--cc=arshad.mehmood@intel.com \
--cc=chris.p.wilson@linux.intel.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=intel-gfx@lists.freedesktop.org \
--cc=lucas.demarchi@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.