diff options
| -rw-r--r-- | drivers/gpu/drm/i915/i915_gem_execbuffer.c | 20 | 
1 files changed, 10 insertions, 10 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c index 5af631e788c..ff2819ea081 100644 --- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c +++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c @@ -291,6 +291,16 @@ i915_gem_execbuffer_relocate_entry(struct drm_i915_gem_object *obj,  	target_i915_obj = to_intel_bo(target_obj);  	target_offset = target_i915_obj->gtt_offset; +	/* Sandybridge PPGTT errata: We need a global gtt mapping for MI and +	 * pipe_control writes because the gpu doesn't properly redirect them +	 * through the ppgtt for non_secure batchbuffers. */ +	if (unlikely(IS_GEN6(dev) && +	    reloc->write_domain == I915_GEM_DOMAIN_INSTRUCTION && +	    !target_i915_obj->has_global_gtt_mapping)) { +		i915_gem_gtt_bind_object(target_i915_obj, +					 target_i915_obj->cache_level); +	} +  	/* The target buffer should have appeared before us in the  	 * exec_object list, so it should have a GTT space bound by now.  	 */ @@ -399,16 +409,6 @@ i915_gem_execbuffer_relocate_entry(struct drm_i915_gem_object *obj,  		io_mapping_unmap_atomic(reloc_page);  	} -	/* Sandybridge PPGTT errata: We need a global gtt mapping for MI and -	 * pipe_control writes because the gpu doesn't properly redirect them -	 * through the ppgtt for non_secure batchbuffers. */ -	if (unlikely(IS_GEN6(dev) && -	    reloc->write_domain == I915_GEM_DOMAIN_INSTRUCTION && -	    !target_i915_obj->has_global_gtt_mapping)) { -		i915_gem_gtt_bind_object(target_i915_obj, -					 target_i915_obj->cache_level); -	} -  	/* and update the user's relocation entry */  	reloc->presumed_offset = target_offset;  |