diff options
-rw-r--r-- | drivers/gpu/drm/i915/i915_gem_context.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem_context.c b/drivers/gpu/drm/i915/i915_gem_context.c index 1b8b7e4692e5..682c607b3215 100644 --- a/drivers/gpu/drm/i915/i915_gem_context.c +++ b/drivers/gpu/drm/i915/i915_gem_context.c @@ -675,6 +675,14 @@ static int do_switch(struct intel_engine_cs *ring, if (!to->is_initialized || i915_gem_context_is_default(to)) hw_flags |= MI_RESTORE_INHIBIT; + /* When SW intends to use semaphore signaling between Command streamers, + * it must avoid lite restores in HW by programming "Force Restore" bit + * to ‘1’ in context descriptor during context submission + */ + if (IS_GEN8(ring->dev) && to->is_initialized && + !i915_gem_context_is_default(to)) + hw_flags |= MI_FORCE_RESTORE; + ret = mi_set_context(ring, to, hw_flags); if (ret) goto unpin_out; |