projects
/
cascardo
/
linux.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge tag 'v3.9-rc5' into drm-intel-next-queued
[cascardo/linux.git]
/
drivers
/
gpu
/
drm
/
i915
/
i915_gem_dmabuf.c
diff --git
a/drivers/gpu/drm/i915/i915_gem_dmabuf.c
b/drivers/gpu/drm/i915/i915_gem_dmabuf.c
index
6a5af68
..
c6dfc14
100644
(file)
--- a/
drivers/gpu/drm/i915/i915_gem_dmabuf.c
+++ b/
drivers/gpu/drm/i915/i915_gem_dmabuf.c
@@
-62,7
+62,7
@@
static struct sg_table *i915_gem_map_dma_buf(struct dma_buf_attachment *attachme
src = obj->pages->sgl;
dst = st->sgl;
for (i = 0; i < obj->pages->nents; i++) {
src = obj->pages->sgl;
dst = st->sgl;
for (i = 0; i < obj->pages->nents; i++) {
- sg_set_page(dst, sg_page(src),
PAGE_SIZE
, 0);
+ sg_set_page(dst, sg_page(src),
src->length
, 0);
dst = sg_next(dst);
src = sg_next(src);
}
dst = sg_next(dst);
src = sg_next(src);
}
@@
-105,7
+105,7
@@
static void *i915_gem_dmabuf_vmap(struct dma_buf *dma_buf)
{
struct drm_i915_gem_object *obj = dma_buf->priv;
struct drm_device *dev = obj->base.dev;
{
struct drm_i915_gem_object *obj = dma_buf->priv;
struct drm_device *dev = obj->base.dev;
- struct s
catterlist *sg
;
+ struct s
g_page_iter sg_iter
;
struct page **pages;
int ret, i;
struct page **pages;
int ret, i;
@@
-124,14
+124,15
@@
static void *i915_gem_dmabuf_vmap(struct dma_buf *dma_buf)
ret = -ENOMEM;
ret = -ENOMEM;
- pages = drm_malloc_ab(obj->
pages->nents, sizeof(struct page *
));
+ pages = drm_malloc_ab(obj->
base.size >> PAGE_SHIFT, sizeof(*pages
));
if (pages == NULL)
goto error;
if (pages == NULL)
goto error;
- for_each_sg(obj->pages->sgl, sg, obj->pages->nents, i)
- pages[i] = sg_page(sg);
+ i = 0;
+ for_each_sg_page(obj->pages->sgl, &sg_iter, obj->pages->nents, 0);
+ pages[i++] = sg_page_iter_page(&sg_iter);
- obj->dma_buf_vmapping = vmap(pages,
obj->pages->nents
, 0, PAGE_KERNEL);
+ obj->dma_buf_vmapping = vmap(pages,
i
, 0, PAGE_KERNEL);
drm_free_large(pages);
if (!obj->dma_buf_vmapping)
drm_free_large(pages);
if (!obj->dma_buf_vmapping)