@@ -813,6 +813,8 @@ static int do_switch_rcs(struct intel_engine_cs *ring,
* die because future work may end up depending on valid address
* space. This means we must enforce that a page table load
* occur when this occurs. */
+ } else if (IS_GEN8(ring->dev) && USES_FULL_PPGTT(ring->dev)) {
+ hw_flags |= MI_FORCE_RESTORE;
} else if (test_and_clear_bit(ring->id, &to->vm->pd_reload_mask))
hw_flags |= MI_FORCE_RESTORE;
@@ -645,7 +645,7 @@ static int init_render_ring(struct intel_engine_cs *ring)
_MASKED_BIT_ENABLE(GFX_TLB_INVALIDATE_EXPLICIT));
/* WaBCSVCSTlbInvalidationMode:ivb,vlv,hsw */
- if (IS_GEN7(dev))
+ if (IS_GEN7(dev) || IS_GEN8(dev))
I915_WRITE(GFX_MODE_GEN7,
_MASKED_BIT_ENABLE(GFX_TLB_INVALIDATE_EXPLICIT) |
_MASKED_BIT_ENABLE(GFX_REPLAY_MODE));