Skip to content

Commit d0ed510

Browse files
committed
drm/i915: Add Wa_1604278689:icl,ehl
The bspec description for this workaround tells us to program 0xFFFF_FFFF into both FBC_RT_BASE_ADDR_REGISTER_* registers, but we've previously found that this leads to failures in CI. Our suspicion is that the failures are caused by this valid turning on the "address valid bit" even though we're intentionally supplying an invalid address. Experimentation has shown that setting all bits _except_ for the RT_VALID bit seems to avoid these failures. v2: - Mask off the RT_VALID bit. Experimentation with CI trybot indicates that this is necessary to avoid reset failures on BCS. v3: - Program RT_BASE before RT_BASE_UPPER so that the valid bit is turned off by the first write. (Chris) Bspec: 11388 Bspec: 33451 Signed-off-by: Matt Roper <[email protected]> Cc: Chris Wilson <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected] Reviewed-by: José Roberto de Souza <[email protected]>
1 parent aa64f8e commit d0ed510

File tree

2 files changed

+7
-0
lines changed

2 files changed

+7
-0
lines changed

drivers/gpu/drm/i915/gt/intel_workarounds.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -575,6 +575,12 @@ static void icl_ctx_workarounds_init(struct intel_engine_cs *engine,
575575
/* allow headerless messages for preemptible GPGPU context */
576576
WA_SET_BIT_MASKED(GEN10_SAMPLER_MODE,
577577
GEN11_SAMPLER_ENABLE_HEADLESS_MSG);
578+
579+
/* Wa_1604278689:icl,ehl */
580+
wa_write(wal, IVB_FBC_RT_BASE, 0xFFFFFFFF & ~ILK_FBC_RT_VALID);
581+
wa_write_masked_or(wal, IVB_FBC_RT_BASE_UPPER,
582+
0, /* write-only register; skip validation */
583+
0xFFFFFFFF);
578584
}
579585

580586
static void tgl_ctx_workarounds_init(struct intel_engine_cs *engine,

drivers/gpu/drm/i915/i915_reg.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3285,6 +3285,7 @@ static inline bool i915_mmio_reg_valid(i915_reg_t reg)
32853285

32863286
/* Framebuffer compression for Ivybridge */
32873287
#define IVB_FBC_RT_BASE _MMIO(0x7020)
3288+
#define IVB_FBC_RT_BASE_UPPER _MMIO(0x7024)
32883289

32893290
#define IPS_CTL _MMIO(0x43408)
32903291
#define IPS_ENABLE (1 << 31)

0 commit comments

Comments
 (0)