mirror of
https://github.com/torvalds/linux.git
synced 2024-11-14 08:02:07 +00:00
drm/i915/gt: Disable HW load balancing for CCS
The hardware should not dynamically balance the load between CCS engines. Wa_14019159160 recommends disabling it across all platforms. Fixes:d2eae8e98d
("drm/i915/dg2: Drop force_probe requirement") Signed-off-by: Andi Shyti <andi.shyti@linux.intel.com> Cc: Chris Wilson <chris.p.wilson@linux.intel.com> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> Cc: Matt Roper <matthew.d.roper@intel.com> Cc: <stable@vger.kernel.org> # v6.2+ Reviewed-by: Matt Roper <matthew.d.roper@intel.com> Acked-by: Michal Mrozek <michal.mrozek@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20240328073409.674098-2-andi.shyti@linux.intel.com (cherry picked from commitf5d2904cf8
) Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
This commit is contained in:
parent
94bf3e60e1
commit
bc9a1ec012
@ -1477,6 +1477,7 @@
|
||||
#define ECOBITS_PPGTT_CACHE4B (0 << 8)
|
||||
|
||||
#define GEN12_RCU_MODE _MMIO(0x14800)
|
||||
#define XEHP_RCU_MODE_FIXED_SLICE_CCS_MODE REG_BIT(1)
|
||||
#define GEN12_RCU_MODE_CCS_ENABLE REG_BIT(0)
|
||||
|
||||
#define CHV_FUSE_GT _MMIO(VLV_GUNIT_BASE + 0x2168)
|
||||
|
@ -51,7 +51,8 @@
|
||||
* registers belonging to BCS, VCS or VECS should be implemented in
|
||||
* xcs_engine_wa_init(). Workarounds for registers not belonging to a specific
|
||||
* engine's MMIO range but that are part of of the common RCS/CCS reset domain
|
||||
* should be implemented in general_render_compute_wa_init().
|
||||
* should be implemented in general_render_compute_wa_init(). The settings
|
||||
* about the CCS load balancing should be added in ccs_engine_wa_mode().
|
||||
*
|
||||
* - GT workarounds: the list of these WAs is applied whenever these registers
|
||||
* revert to their default values: on GPU reset, suspend/resume [1]_, etc.
|
||||
@ -2854,6 +2855,22 @@ 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;
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
/*
|
||||
* The workarounds in this function apply to shared registers in
|
||||
* the general render reset domain that aren't tied to a
|
||||
@ -3004,8 +3021,10 @@ 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);
|
||||
|
Loading…
Reference in New Issue
Block a user