lib/scatterlist: Add support in dynamic allocation of SG table from pages
[linux-2.6-microblaze.git] / drivers / gpu / drm / i915 / gem / i915_gem_userptr.c
index 12b3007..f2eaed6 100644 (file)
@@ -403,6 +403,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_page_sizes;
+       struct scatterlist *sg;
        int ret;
 
        st = kmalloc(sizeof(*st), GFP_KERNEL);
@@ -410,13 +411,12 @@ __i915_gem_userptr_alloc_pages(struct drm_i915_gem_object *obj,
                return ERR_PTR(-ENOMEM);
 
 alloc_table:
-       ret = __sg_alloc_table_from_pages(st, pvec, num_pages,
-                                         0, num_pages << PAGE_SHIFT,
-                                         max_segment,
-                                         GFP_KERNEL);
-       if (ret) {
+       sg = __sg_alloc_table_from_pages(st, pvec, num_pages, 0,
+                                        num_pages << PAGE_SHIFT, max_segment,
+                                        NULL, 0, GFP_KERNEL);
+       if (IS_ERR(sg)) {
                kfree(st);
-               return ERR_PTR(ret);
+               return ERR_CAST(sg);
        }
 
        ret = i915_gem_gtt_prepare_pages(obj, st);