drm: handle compact dma scatter lists in drm_clflush_sg()
authorImre Deak <imre.deak@intel.com>
Mon, 18 Feb 2013 17:28:01 +0000 (19:28 +0200)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Tue, 19 Mar 2013 08:50:22 +0000 (09:50 +0100)
So far the assumption was that each scatter list entry contains a single
page. This might not hold in the future, when we'll introduce compact
scatter lists, so prepare for this here.

Reference: http://www.spinics.net/lists/dri-devel/msg33917.html
Signed-off-by: Imre Deak <imre.deak@intel.com>
Acked-by: Dave Airlie <airlied@gmail.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/drm_cache.c

index a575cb2..bc8edbe 100644 (file)
@@ -105,12 +105,11 @@ drm_clflush_sg(struct sg_table *st)
 {
 #if defined(CONFIG_X86)
        if (cpu_has_clflush) {
-               struct scatterlist *sg;
-               int i;
+               struct sg_page_iter sg_iter;
 
                mb();
-               for_each_sg(st->sgl, sg, st->nents, i)
-                       drm_clflush_page(sg_page(sg));
+               for_each_sg_page(st->sgl, &sg_iter, st->nents, 0)
+                       drm_clflush_page(sg_iter.page);
                mb();
 
                return;