aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/i915_gem.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/i915/i915_gem.c')
-rw-r--r--drivers/gpu/drm/i915/i915_gem.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index cc2ca5561feb..14afc23a0e24 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -1623,6 +1623,8 @@ i915_gem_object_bind_to_gtt(struct drm_gem_object *obj, unsigned alignment)
1623 struct drm_mm_node *free_space; 1623 struct drm_mm_node *free_space;
1624 int page_count, ret; 1624 int page_count, ret;
1625 1625
1626 if (dev_priv->mm.suspended)
1627 return -EBUSY;
1626 if (alignment == 0) 1628 if (alignment == 0)
1627 alignment = PAGE_SIZE; 1629 alignment = PAGE_SIZE;
1628 if (alignment & (PAGE_SIZE - 1)) { 1630 if (alignment & (PAGE_SIZE - 1)) {
@@ -2641,7 +2643,7 @@ i915_gem_object_pin(struct drm_gem_object *obj, uint32_t alignment)
2641 if (obj_priv->gtt_space == NULL) { 2643 if (obj_priv->gtt_space == NULL) {
2642 ret = i915_gem_object_bind_to_gtt(obj, alignment); 2644 ret = i915_gem_object_bind_to_gtt(obj, alignment);
2643 if (ret != 0) { 2645 if (ret != 0) {
2644 if (ret != -ERESTARTSYS) 2646 if (ret != -EBUSY && ret != -ERESTARTSYS)
2645 DRM_ERROR("Failure to bind: %d", ret); 2647 DRM_ERROR("Failure to bind: %d", ret);
2646 return ret; 2648 return ret;
2647 } 2649 }
@@ -3219,20 +3221,21 @@ i915_gem_entervt_ioctl(struct drm_device *dev, void *data,
3219 dev_priv->mm.wedged = 0; 3221 dev_priv->mm.wedged = 0;
3220 } 3222 }
3221 3223
3222 ret = i915_gem_init_ringbuffer(dev);
3223 if (ret != 0)
3224 return ret;
3225
3226 dev_priv->mm.gtt_mapping = io_mapping_create_wc(dev->agp->base, 3224 dev_priv->mm.gtt_mapping = io_mapping_create_wc(dev->agp->base,
3227 dev->agp->agp_info.aper_size 3225 dev->agp->agp_info.aper_size
3228 * 1024 * 1024); 3226 * 1024 * 1024);
3229 3227
3230 mutex_lock(&dev->struct_mutex); 3228 mutex_lock(&dev->struct_mutex);
3229 dev_priv->mm.suspended = 0;
3230
3231 ret = i915_gem_init_ringbuffer(dev);
3232 if (ret != 0)
3233 return ret;
3234
3231 BUG_ON(!list_empty(&dev_priv->mm.active_list)); 3235 BUG_ON(!list_empty(&dev_priv->mm.active_list));
3232 BUG_ON(!list_empty(&dev_priv->mm.flushing_list)); 3236 BUG_ON(!list_empty(&dev_priv->mm.flushing_list));
3233 BUG_ON(!list_empty(&dev_priv->mm.inactive_list)); 3237 BUG_ON(!list_empty(&dev_priv->mm.inactive_list));
3234 BUG_ON(!list_empty(&dev_priv->mm.request_list)); 3238 BUG_ON(!list_empty(&dev_priv->mm.request_list));
3235 dev_priv->mm.suspended = 0;
3236 mutex_unlock(&dev->struct_mutex); 3239 mutex_unlock(&dev->struct_mutex);
3237 3240
3238 drm_irq_install(dev); 3241 drm_irq_install(dev);