[Intel-gfx] [PATCH 1/2] drm/i915/gt: Add dedicated function for non-ctx register tuning settings
Lucas De Marchi
lucas.demarchi at intel.com
Mon Aug 15 22:13:55 UTC 2022
On Fri, Aug 12, 2022 at 01:22:39PM -0700, Matt Roper wrote:
>The bspec performance tuning section gives recommended settings that the
>driver should program for various MMIO registers. Although these
>settings aren't "workarounds" we use the workaround infrastructure to do
>this programming to make sure it is handled at the appropriate places
>and doesn't conflict with any real workarounds.
>
>Since more of these are starting to show up on recent platforms, it's a
>good time to create a dedicated function to hold them so that there's
>less ambiguity about how/where to implement new ones.
>
>Cc: Lucas De Marchi <lucas.demarchi at intel.com>
>Signed-off-by: Matt Roper <matthew.d.roper at intel.com>
Reviewed-by: Lucas De Marchi <lucas.demarchi at intel.com>
Lucas De Marchi
>---
> drivers/gpu/drm/i915/gt/intel_workarounds.c | 42 ++++++++++++++-------
> 1 file changed, 28 insertions(+), 14 deletions(-)
>
>diff --git a/drivers/gpu/drm/i915/gt/intel_workarounds.c b/drivers/gpu/drm/i915/gt/intel_workarounds.c
>index 59cf28baa472..a68d279b01f0 100644
>--- a/drivers/gpu/drm/i915/gt/intel_workarounds.c
>+++ b/drivers/gpu/drm/i915/gt/intel_workarounds.c
>@@ -2102,13 +2102,6 @@ rcs_engine_wa_init(struct intel_engine_cs *engine, struct i915_wa_list *wal)
> /* Wa_1509235366:dg2 */
> wa_write_or(wal, GEN12_GAMCNTRL_CTRL, INVALIDATION_BROADCAST_MODE_DIS |
> GLOBAL_INVALIDATION_MODE);
>-
>- /*
>- * The following are not actually "workarounds" but rather
>- * recommended tuning settings documented in the bspec's
>- * performance guide section.
>- */
>- wa_write_or(wal, XEHP_L3SCQREG7, BLEND_FILL_CACHING_OPT_DIS);
> }
>
> if (IS_DG2_GRAPHICS_STEP(i915, G11, STEP_A0, STEP_B0)) {
>@@ -2676,6 +2669,32 @@ ccs_engine_wa_init(struct intel_engine_cs *engine, struct i915_wa_list *wal)
> }
> }
>
>+/*
>+ * The bspec performance guide has recommended MMIO tuning settings. These
>+ * aren't truly "workarounds" but we want to program them with the same
>+ * workaround infrastructure to ensure that they're automatically added to
>+ * the GuC save/restore lists, re-applied at the right times, and checked for
>+ * any conflicting programming requested by real workarounds.
>+ *
>+ * Programming settings should be added here only if their registers are not
>+ * part of an engine's register state context. If a register is part of a
>+ * context, then any tuning settings should be programmed in an appropriate
>+ * function invoked by __intel_engine_init_ctx_wa().
>+ */
>+static void
>+add_render_compute_tuning_settings(struct drm_i915_private *i915,
>+ struct i915_wa_list *wal)
>+{
>+ if (IS_PONTEVECCHIO(i915)) {
>+ wa_write(wal, XEHPC_L3SCRUB,
>+ SCRUB_CL_DWNGRADE_SHARED | SCRUB_RATE_4B_PER_CLK);
>+ }
>+
>+ if (IS_DG2(i915)) {
>+ wa_write_or(wal, XEHP_L3SCQREG7, BLEND_FILL_CACHING_OPT_DIS);
>+ }
>+}
>+
> /*
> * The workarounds in this function apply to shared registers in
> * the general render reset domain that aren't tied to a
>@@ -2690,14 +2709,9 @@ general_render_compute_wa_init(struct intel_engine_cs *engine, struct i915_wa_li
> {
> struct drm_i915_private *i915 = engine->i915;
>
>- if (IS_PONTEVECCHIO(i915)) {
>- /*
>- * The following is not actually a "workaround" but rather
>- * a recommended tuning setting documented in the bspec's
>- * performance guide section.
>- */
>- wa_write(wal, XEHPC_L3SCRUB, SCRUB_CL_DWNGRADE_SHARED | SCRUB_RATE_4B_PER_CLK);
>+ add_render_compute_tuning_settings(i915, wal);
>
>+ if (IS_PONTEVECCHIO(i915)) {
> /* Wa_16016694945 */
> wa_masked_en(wal, XEHPC_LNCFMISCCFGREG0, XEHPC_OVRLSCCC);
> }
>--
>2.37.1
>
More information about the Intel-gfx
mailing list