diff options
author | Dave Airlie <airlied@redhat.com> | 2016-12-03 15:31:26 -0500 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2016-12-03 15:31:26 -0500 |
commit | ab7cd8d83e5dba13027de66f1b008b08b30b71a4 (patch) | |
tree | fa42ffdf943b6585dc06bb30367afb71319e2058 | |
parent | 83fb8b055544a25ceeac34a666a2149331ea94bf (diff) | |
parent | e411072d5740a49cdc9d0713798c30440757e451 (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.c | 5 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_display.c | 3 |
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 | ||
2314 | err_pages: | 2314 | err_sg: |
2315 | sg_mark_end(sg); | 2315 | sg_mark_end(sg); |
2316 | err_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); |
12353 | cleanup_pending: | 12353 | cleanup_pending: |
12354 | atomic_dec(&intel_crtc->unpin_work_count); | 12354 | atomic_dec(&intel_crtc->unpin_work_count); |
12355 | unlock: | ||
12355 | mutex_unlock(&dev->struct_mutex); | 12356 | mutex_unlock(&dev->struct_mutex); |
12356 | cleanup: | 12357 | cleanup: |
12357 | crtc->primary->fb = old_fb; | 12358 | crtc->primary->fb = old_fb; |