diff options
author | Matthew Auld <matthew.auld@intel.com> | 2017-10-06 23:18:18 +0100 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2017-10-07 10:11:48 +0100 |
commit | a5c08166265adc172a4cbde8ed26a1a96ce77fb7 (patch) | |
tree | 5288c4f04d0200042f8e630b9f7a7b7a65d7a294 /drivers/gpu/drm/i915/i915_gem_userptr.c | |
parent | b91b09eea7a15ab417aa9ed6502b3be12f5283f8 (diff) | |
download | linux-a5c08166265adc172a4cbde8ed26a1a96ce77fb7.tar.bz2 |
drm/i915: introduce page_size members
In preparation for supporting huge gtt pages for the ppgtt, we introduce
page size members for gem objects. We fill in the page sizes by
scanning the sg table.
v2: pass the sg_mask to set_pages
v3: calculate the sg_mask inline with populating the sg_table where
possible, and pass to set_pages along with the pages.
v4: bunch of improvements from Joonas
v5: fix num_pages blunder
introduce i915_sg_page_sizes helper
v6: prefer GEM_BUG_ON(sizes == 0)
Signed-off-by: Matthew Auld <matthew.auld@intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Daniel Vetter <daniel@ffwll.ch>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Link: https://patchwork.freedesktop.org/patch/msgid/20171006145041.21673-7-matthew.auld@intel.com
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Link: https://patchwork.freedesktop.org/patch/msgid/20171006221833.32439-6-chris@chris-wilson.co.uk
Diffstat (limited to 'drivers/gpu/drm/i915/i915_gem_userptr.c')
-rw-r--r-- | drivers/gpu/drm/i915/i915_gem_userptr.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem_userptr.c b/drivers/gpu/drm/i915/i915_gem_userptr.c index 70ad7489827d..41e16e19c3f3 100644 --- a/drivers/gpu/drm/i915/i915_gem_userptr.c +++ b/drivers/gpu/drm/i915/i915_gem_userptr.c @@ -405,6 +405,7 @@ __i915_gem_userptr_alloc_pages(struct drm_i915_gem_object *obj, { unsigned int max_segment = i915_sg_segment_size(); struct sg_table *st; + unsigned int sg_mask; int ret; st = kmalloc(sizeof(*st), GFP_KERNEL); @@ -434,7 +435,9 @@ alloc_table: return ERR_PTR(ret); } - __i915_gem_object_set_pages(obj, st); + sg_mask = i915_sg_page_sizes(st->sgl); + + __i915_gem_object_set_pages(obj, st, sg_mask); return st; } |