|
51 | 51 | * registers belonging to BCS, VCS or VECS should be implemented in
|
52 | 52 | * xcs_engine_wa_init(). Workarounds for registers not belonging to a specific
|
53 | 53 | * engine's MMIO range but that are part of of the common RCS/CCS reset domain
|
54 |
| - * should be implemented in general_render_compute_wa_init(). |
| 54 | + * should be implemented in general_render_compute_wa_init(). The settings |
| 55 | + * about the CCS load balancing should be added in ccs_engine_wa_mode(). |
55 | 56 | *
|
56 | 57 | * - GT workarounds: the list of these WAs is applied whenever these registers
|
57 | 58 | * revert to their default values: on GPU reset, suspend/resume [1]_, etc.
|
@@ -2853,6 +2854,22 @@ add_render_compute_tuning_settings(struct intel_gt *gt,
|
2853 | 2854 | wa_write_clr(wal, GEN8_GARBCNTL, GEN12_BUS_HASH_CTL_BIT_EXC);
|
2854 | 2855 | }
|
2855 | 2856 |
|
| 2857 | +static void ccs_engine_wa_mode(struct intel_engine_cs *engine, struct i915_wa_list *wal) |
| 2858 | +{ |
| 2859 | + struct intel_gt *gt = engine->gt; |
| 2860 | + |
| 2861 | + if (!IS_DG2(gt->i915)) |
| 2862 | + return; |
| 2863 | + |
| 2864 | + /* |
| 2865 | + * Wa_14019159160: This workaround, along with others, leads to |
| 2866 | + * significant challenges in utilizing load balancing among the |
| 2867 | + * CCS slices. Consequently, an architectural decision has been |
| 2868 | + * made to completely disable automatic CCS load balancing. |
| 2869 | + */ |
| 2870 | + wa_masked_en(wal, GEN12_RCU_MODE, XEHP_RCU_MODE_FIXED_SLICE_CCS_MODE); |
| 2871 | +} |
| 2872 | + |
2856 | 2873 | /*
|
2857 | 2874 | * The workarounds in this function apply to shared registers in
|
2858 | 2875 | * the general render reset domain that aren't tied to a
|
@@ -3003,8 +3020,10 @@ engine_init_workarounds(struct intel_engine_cs *engine, struct i915_wa_list *wal
|
3003 | 3020 | * to a single RCS/CCS engine's workaround list since
|
3004 | 3021 | * they're reset as part of the general render domain reset.
|
3005 | 3022 | */
|
3006 |
| - if (engine->flags & I915_ENGINE_FIRST_RENDER_COMPUTE) |
| 3023 | + if (engine->flags & I915_ENGINE_FIRST_RENDER_COMPUTE) { |
3007 | 3024 | general_render_compute_wa_init(engine, wal);
|
| 3025 | + ccs_engine_wa_mode(engine, wal); |
| 3026 | + } |
3008 | 3027 |
|
3009 | 3028 | if (engine->class == COMPUTE_CLASS)
|
3010 | 3029 | ccs_engine_wa_init(engine, wal);
|
|
0 commit comments