Skip to content

Commit 97ea6be

Browse files
committed
drm/i915/skl: Fix spurious gpu hang with gt3/gt4 revs
Experiments with heaven 4.0 benchmark and skylake gt3e (rev 0xa) suggest that WaForceContextSaveRestoreNonCoherent is needed for all revs. Extending this to all revs cures a gpu hang with rev 0xa when running heaven4.0 gpu benchmark. We have been here before, with problems enabling gt4e and extending up to revision F0 instead of false claims of bspec of E0 only. See commit <e238659ddd88> ("drm/i915/skl: Default to noncoherent access up to F0"). In retrospect we should have covered this with this big blanket back then already, as E0 vs F0 discrepancy was suspicious enough. Previously the WaForceEnableNonCoherent has been tied to context non-coherence, atleast in relevant hsds. So keep this tie and extended this alongside. Cc: Abdiel Janulgue <[email protected]> Cc: Ben Widawsky <[email protected]> Cc: Timo Aaltonen <[email protected]> Cc: [email protected] Reported-by: Mike Lothian <[email protected]> References: https://bugs.freedesktop.org/show_bug.cgi?id=93491 Signed-off-by: Mika Kuoppala <[email protected]> Reviewed-by: Ben Widawsky <[email protected]> Tested-by: Timo Aaltonen <[email protected]> Link: http://patchwork.freedesktop.org/patch/msgid/[email protected]
1 parent 185c66e commit 97ea6be

File tree

1 file changed

+3
-2
lines changed

1 file changed

+3
-2
lines changed

drivers/gpu/drm/i915/intel_ringbuffer.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -980,7 +980,7 @@ static int gen9_init_workarounds(struct intel_engine_cs *engine)
980980

981981
/* WaForceContextSaveRestoreNonCoherent:skl,bxt */
982982
tmp = HDC_FORCE_CONTEXT_SAVE_RESTORE_NON_COHERENT;
983-
if (IS_SKL_REVID(dev, SKL_REVID_F0, SKL_REVID_F0) ||
983+
if (IS_SKL_REVID(dev, SKL_REVID_F0, REVID_FOREVER) ||
984984
IS_BXT_REVID(dev, BXT_REVID_B0, REVID_FOREVER))
985985
tmp |= HDC_FORCE_CSR_NON_COHERENT_OVR_DISABLE;
986986
WA_SET_BIT_MASKED(HDC_CHICKEN0, tmp);
@@ -1097,7 +1097,8 @@ static int skl_init_workarounds(struct intel_engine_cs *engine)
10971097
WA_SET_BIT_MASKED(HIZ_CHICKEN,
10981098
BDW_HIZ_POWER_COMPILER_CLOCK_GATING_DISABLE);
10991099

1100-
if (IS_SKL_REVID(dev, 0, SKL_REVID_F0)) {
1100+
/* This is tied to WaForceContextSaveRestoreNonCoherent */
1101+
if (IS_SKL_REVID(dev, 0, REVID_FOREVER)) {
11011102
/*
11021103
*Use Force Non-Coherent whenever executing a 3D context. This
11031104
* is a workaround for a possible hang in the unlikely event

0 commit comments

Comments
 (0)