Commit 7a0499a4 authored by Matthew Auld's avatar Matthew Auld Committed by Chris Wilson

drm/i915: move vma sanity checking into i915_vma_bind

If we move the sanity checking from gen8_alloc_va_range_3lvl and
gen6_alloc_va_range into i915_vma_bind, we will increase our coverage to
now both callbacks. We also convert each WARN_ON over to a GEM_WARN_ON.

Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Suggested-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: default avatarMatthew Auld <matthew.auld@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20161213203222.32564-2-matthew.auld@intel.comReviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
parent 17cfde60
...@@ -1303,15 +1303,6 @@ static int gen8_alloc_va_range_3lvl(struct i915_address_space *vm, ...@@ -1303,15 +1303,6 @@ static int gen8_alloc_va_range_3lvl(struct i915_address_space *vm,
uint32_t pdpes = I915_PDPES_PER_PDP(dev_priv); uint32_t pdpes = I915_PDPES_PER_PDP(dev_priv);
int ret; int ret;
/* Wrap is never okay since we can only represent 48b, and we don't
* actually use the other side of the canonical address space.
*/
if (WARN_ON(start + length < start))
return -ENODEV;
if (WARN_ON(start + length > vm->total))
return -ENODEV;
ret = alloc_gen8_temp_bitmaps(&new_page_dirs, &new_page_tables, pdpes); ret = alloc_gen8_temp_bitmaps(&new_page_dirs, &new_page_tables, pdpes);
if (ret) if (ret)
return ret; return ret;
...@@ -1929,9 +1920,6 @@ static int gen6_alloc_va_range(struct i915_address_space *vm, ...@@ -1929,9 +1920,6 @@ static int gen6_alloc_va_range(struct i915_address_space *vm,
uint32_t pde; uint32_t pde;
int ret; int ret;
if (WARN_ON(start_in + length_in > ppgtt->base.total))
return -ENODEV;
start = start_save = start_in; start = start_save = start_in;
length = length_save = length_in; length = length_save = length_in;
......
...@@ -176,6 +176,12 @@ int i915_vma_bind(struct i915_vma *vma, enum i915_cache_level cache_level, ...@@ -176,6 +176,12 @@ int i915_vma_bind(struct i915_vma *vma, enum i915_cache_level cache_level,
if (bind_flags == 0) if (bind_flags == 0)
return 0; return 0;
if (GEM_WARN_ON(vma->node.start + vma->node.size < vma->node.start))
return -ENODEV;
if (GEM_WARN_ON(vma->node.start + vma->node.size > vma->vm->total))
return -ENODEV;
if (vma_flags == 0 && vma->vm->allocate_va_range) { if (vma_flags == 0 && vma->vm->allocate_va_range) {
trace_i915_va_alloc(vma); trace_i915_va_alloc(vma);
ret = vma->vm->allocate_va_range(vma->vm, ret = vma->vm->allocate_va_range(vma->vm,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment