aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2016-12-03 15:31:26 -0500
committerDave Airlie <airlied@redhat.com>2016-12-03 15:31:26 -0500
commitab7cd8d83e5dba13027de66f1b008b08b30b71a4 (patch)
treefa42ffdf943b6585dc06bb30367afb71319e2058
parent83fb8b055544a25ceeac34a666a2149331ea94bf (diff)
parente411072d5740a49cdc9d0713798c30440757e451 (diff)
Merge tag 'drm-intel-fixes-2016-12-01' of git://anongit.freedesktop.org/git/drm-intel into drm-fixes
2 intel fixes. * tag 'drm-intel-fixes-2016-12-01' of git://anongit.freedesktop.org/git/drm-intel: drm/i915: drop the struct_mutex when wedged or trying to reset drm/i915: Don't touch NULL sg on i915_gem_object_get_pages_gtt() error
-rw-r--r--drivers/gpu/drm/i915/i915_gem.c5
-rw-r--r--drivers/gpu/drm/i915/intel_display.c3
2 files changed, 5 insertions, 3 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 91ab7e9d6d2e..00eb4814b913 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -2268,7 +2268,7 @@ i915_gem_object_get_pages_gtt(struct drm_i915_gem_object *obj)
2268 page = shmem_read_mapping_page(mapping, i); 2268 page = shmem_read_mapping_page(mapping, i);
2269 if (IS_ERR(page)) { 2269 if (IS_ERR(page)) {
2270 ret = PTR_ERR(page); 2270 ret = PTR_ERR(page);
2271 goto err_pages; 2271 goto err_sg;
2272 } 2272 }
2273 } 2273 }
2274#ifdef CONFIG_SWIOTLB 2274#ifdef CONFIG_SWIOTLB
@@ -2311,8 +2311,9 @@ i915_gem_object_get_pages_gtt(struct drm_i915_gem_object *obj)
2311 2311
2312 return 0; 2312 return 0;
2313 2313
2314err_pages: 2314err_sg:
2315 sg_mark_end(sg); 2315 sg_mark_end(sg);
2316err_pages:
2316 for_each_sgt_page(page, sgt_iter, st) 2317 for_each_sgt_page(page, sgt_iter, st)
2317 put_page(page); 2318 put_page(page);
2318 sg_free_table(st); 2319 sg_free_table(st);
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 81c11499bcf0..3cb70d73239b 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -12260,7 +12260,7 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc,
12260 intel_crtc->reset_count = i915_reset_count(&dev_priv->gpu_error); 12260 intel_crtc->reset_count = i915_reset_count(&dev_priv->gpu_error);
12261 if (i915_reset_in_progress_or_wedged(&dev_priv->gpu_error)) { 12261 if (i915_reset_in_progress_or_wedged(&dev_priv->gpu_error)) {
12262 ret = -EIO; 12262 ret = -EIO;
12263 goto cleanup; 12263 goto unlock;
12264 } 12264 }
12265 12265
12266 atomic_inc(&intel_crtc->unpin_work_count); 12266 atomic_inc(&intel_crtc->unpin_work_count);
@@ -12352,6 +12352,7 @@ cleanup_unpin:
12352 intel_unpin_fb_obj(fb, crtc->primary->state->rotation); 12352 intel_unpin_fb_obj(fb, crtc->primary->state->rotation);
12353cleanup_pending: 12353cleanup_pending:
12354 atomic_dec(&intel_crtc->unpin_work_count); 12354 atomic_dec(&intel_crtc->unpin_work_count);
12355unlock:
12355 mutex_unlock(&dev->struct_mutex); 12356 mutex_unlock(&dev->struct_mutex);
12356cleanup: 12357cleanup:
12357 crtc->primary->fb = old_fb; 12358 crtc->primary->fb = old_fb;