projects
/
linux-2.6-microblaze.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
bf75d59
)
drm/i915: Unwind vma->pages allocation upon failure
author
Chris Wilson
<chris@chris-wilson.co.uk>
Mon, 27 Feb 2017 12:26:53 +0000
(12:26 +0000)
committer
Chris Wilson
<chris@chris-wilson.co.uk>
Mon, 27 Feb 2017 13:09:19 +0000
(13:09 +0000)
If we fail to allocate the ppgtt range after allocating the pages for
the vma, we should unwind the local allocation before reporting back the
failure.
Fixes:
ff685975d97f
("drm/i915: Move allocate_va_range to GTT")
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Matthew Auld <matthew.auld@intel.com>
Reviewed-by: Matthew Auld <matthew.auld@intel.com>
Link:
http://patchwork.freedesktop.org/patch/msgid/20170227122654.27651-2-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/i915_gem_gtt.c
patch
|
blob
|
history
diff --git
a/drivers/gpu/drm/i915/i915_gem_gtt.c
b/drivers/gpu/drm/i915/i915_gem_gtt.c
index
c3a121a
..
875a48b
100644
(file)
--- a/
drivers/gpu/drm/i915/i915_gem_gtt.c
+++ b/
drivers/gpu/drm/i915/i915_gem_gtt.c
@@
-2312,7
+2312,7
@@
static int aliasing_gtt_bind_vma(struct i915_vma *vma,
vma->node.start,
vma->node.size);
if (ret)
-
return ret
;
+
goto err_pages
;
}
appgtt->base.insert_entries(&appgtt->base,
@@
-2329,6
+2329,17
@@
static int aliasing_gtt_bind_vma(struct i915_vma *vma,
}
return 0;
+
+err_pages:
+ if (!(vma->flags & (I915_VMA_GLOBAL_BIND | I915_VMA_LOCAL_BIND))) {
+ if (vma->pages != vma->obj->mm.pages) {
+ GEM_BUG_ON(!vma->pages);
+ sg_free_table(vma->pages);
+ kfree(vma->pages);
+ }
+ vma->pages = NULL;
+ }
+ return ret;
}
static void aliasing_gtt_unbind_vma(struct i915_vma *vma)