wa_write_or(wal,
                            GEN8_L3SQCREG4,
                            GEN8_LQSC_FLUSH_COHERENT_LINES);
+
+               /* Disable atomics in L3 to prevent unrecoverable hangs */
+               wa_write_clr_set(wal, GEN9_SCRATCH_LNCF1,
+                                GEN9_LNCF_NONIA_COHERENT_ATOMICS_ENABLE, 0);
+               wa_write_clr_set(wal, GEN8_L3SQCREG4,
+                                GEN8_LQSQ_NONIA_COHERENT_ATOMICS_ENABLE, 0);
+               wa_write_clr_set(wal, GEN9_SCRATCH1,
+                                EVICTION_PERF_FIX_ENABLE, 0);
        }
 
        if (IS_HASWELL(i915)) {
 
 #define  GEN11_LQSC_CLEAN_EVICT_DISABLE                (1 << 6)
 #define  GEN8_LQSC_RO_PERF_DIS                 (1 << 27)
 #define  GEN8_LQSC_FLUSH_COHERENT_LINES                (1 << 21)
+#define  GEN8_LQSQ_NONIA_COHERENT_ATOMICS_ENABLE REG_BIT(22)
 
 /* GEN8 chicken */
 #define HDC_CHICKEN0                           _MMIO(0x7300)
 #define __GEN11_VCS2_MOCS0     0x10000
 #define GEN11_MFX2_MOCS(i)     _MMIO(__GEN11_VCS2_MOCS0 + (i) * 4)
 
+#define GEN9_SCRATCH_LNCF1             _MMIO(0xb008)
+#define   GEN9_LNCF_NONIA_COHERENT_ATOMICS_ENABLE REG_BIT(0)
+
+#define GEN9_SCRATCH1                  _MMIO(0xb11c)
+#define   EVICTION_PERF_FIX_ENABLE     REG_BIT(8)
+
 #define GEN10_SCRATCH_LNCF2            _MMIO(0xb0a0)
 #define   PMFLUSHDONE_LNICRSDROP       (1 << 20)
 #define   PMFLUSH_GAPL3UNBLOCK         (1 << 21)