aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/i915/i915_drv.c10
-rw-r--r--drivers/gpu/drm/i915/i915_gem.c5
2 files changed, 11 insertions, 4 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index 0692622ee2b3..b293ef0bae71 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -68,9 +68,11 @@ static int i915_suspend(struct drm_device *dev, pm_message_t state)
68 i915_save_state(dev); 68 i915_save_state(dev);
69 69
70 /* If KMS is active, we do the leavevt stuff here */ 70 /* If KMS is active, we do the leavevt stuff here */
71 if (drm_core_check_feature(dev, DRIVER_MODESET) && i915_gem_idle(dev)) { 71 if (drm_core_check_feature(dev, DRIVER_MODESET)) {
72 dev_err(&dev->pdev->dev, "GEM idle failed, aborting suspend\n"); 72 if (i915_gem_idle(dev))
73 return -EBUSY; 73 dev_err(&dev->pdev->dev,
74 "GEM idle failed, resume may fail\n");
75 drm_irq_uninstall(dev);
74 } 76 }
75 77
76 intel_opregion_free(dev); 78 intel_opregion_free(dev);
@@ -108,6 +110,8 @@ static int i915_resume(struct drm_device *dev)
108 if (ret != 0) 110 if (ret != 0)
109 ret = -1; 111 ret = -1;
110 mutex_unlock(&dev->struct_mutex); 112 mutex_unlock(&dev->struct_mutex);
113
114 drm_irq_install(dev);
111 } 115 }
112 116
113 return ret; 117 return ret;
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 25b337438ca7..e9882d0c2473 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -211,7 +211,7 @@ fast_user_write(struct io_mapping *mapping,
211 211
212 vaddr_atomic = io_mapping_map_atomic_wc(mapping, page_base); 212 vaddr_atomic = io_mapping_map_atomic_wc(mapping, page_base);
213 unwritten = __copy_from_user_inatomic_nocache(vaddr_atomic + page_offset, 213 unwritten = __copy_from_user_inatomic_nocache(vaddr_atomic + page_offset,
214 user_data, length); 214 user_data, length, length);
215 io_mapping_unmap_atomic(vaddr_atomic); 215 io_mapping_unmap_atomic(vaddr_atomic);
216 if (unwritten) 216 if (unwritten)
217 return -EFAULT; 217 return -EFAULT;
@@ -1051,6 +1051,9 @@ i915_gem_retire_requests(struct drm_device *dev)
1051 drm_i915_private_t *dev_priv = dev->dev_private; 1051 drm_i915_private_t *dev_priv = dev->dev_private;
1052 uint32_t seqno; 1052 uint32_t seqno;
1053 1053
1054 if (!dev_priv->hw_status_page)
1055 return;
1056
1054 seqno = i915_get_gem_seqno(dev); 1057 seqno = i915_get_gem_seqno(dev);
1055 1058
1056 while (!list_empty(&dev_priv->mm.request_list)) { 1059 while (!list_empty(&dev_priv->mm.request_list)) {