diff options
Diffstat (limited to 'drivers/gpu/drm/i915/intel_ringbuffer.c')
| -rw-r--r-- | drivers/gpu/drm/i915/intel_ringbuffer.c | 13 | 
1 files changed, 8 insertions, 5 deletions
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c index 700f94c371b3..33faad3197fe 100644 --- a/drivers/gpu/drm/i915/intel_ringbuffer.c +++ b/drivers/gpu/drm/i915/intel_ringbuffer.c @@ -524,8 +524,6 @@ static int init_ring_common(struct intel_engine_cs *engine)  		goto out;  	} -	intel_engine_init_hangcheck(engine); -  	if (INTEL_GEN(dev_priv) > 2)  		I915_WRITE_MODE(engine, _MASKED_BIT_DISABLE(STOP_RING)); @@ -1089,6 +1087,7 @@ void intel_ring_unpin(struct intel_ring *ring)  static struct i915_vma *  intel_ring_create_vma(struct drm_i915_private *dev_priv, int size)  { +	struct i915_address_space *vm = &dev_priv->ggtt.vm;  	struct drm_i915_gem_object *obj;  	struct i915_vma *vma; @@ -1098,10 +1097,14 @@ intel_ring_create_vma(struct drm_i915_private *dev_priv, int size)  	if (IS_ERR(obj))  		return ERR_CAST(obj); -	/* mark ring buffers as read-only from GPU side by default */ -	obj->gt_ro = 1; +	/* +	 * Mark ring buffers as read-only from GPU side (so no stray overwrites) +	 * if supported by the platform's GGTT. +	 */ +	if (vm->has_read_only) +		i915_gem_object_set_readonly(obj); -	vma = i915_vma_instance(obj, &dev_priv->ggtt.vm, NULL); +	vma = i915_vma_instance(obj, vm, NULL);  	if (IS_ERR(vma))  		goto err;  | 

