diff options
Diffstat (limited to 'drivers/gpu/drm/i915/i915_gem.c')
| -rw-r--r-- | drivers/gpu/drm/i915/i915_gem.c | 11 | 
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index 5c4657a54f9..274d25de521 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c @@ -2365,6 +2365,10 @@ int i915_gpu_idle(struct drm_device *dev)  	/* Flush everything onto the inactive list. */  	for_each_ring(ring, dev_priv, i) { +		ret = i915_switch_context(ring, NULL, DEFAULT_CONTEXT_ID); +		if (ret) +			return ret; +  		ret = i915_ring_idle(ring);  		if (ret)  			return ret; @@ -2372,10 +2376,6 @@ int i915_gpu_idle(struct drm_device *dev)  		/* Is the device fubar? */  		if (WARN_ON(!list_empty(&ring->gpu_write_list)))  			return -EBUSY; - -		ret = i915_switch_context(ring, NULL, DEFAULT_CONTEXT_ID); -		if (ret) -			return ret;  	}  	return 0; @@ -3242,7 +3242,8 @@ i915_gem_object_pin(struct drm_i915_gem_object *obj,  {  	int ret; -	BUG_ON(obj->pin_count == DRM_I915_GEM_OBJECT_MAX_PIN_COUNT); +	if (WARN_ON(obj->pin_count == DRM_I915_GEM_OBJECT_MAX_PIN_COUNT)) +		return -EBUSY;  	if (obj->gtt_space != NULL) {  		if ((alignment && obj->gtt_offset & (alignment - 1)) ||  |