iommu: rk-iovmm: replace sg_dma_len(sg) with (sg)->length
authorJianqun xu <jay.xu@rock-chips.com>
Wed, 2 Dec 2015 09:09:21 +0000 (17:09 +0800)
committerGerrit Code Review <gerrit@rock-chips.com>
Wed, 2 Dec 2015 10:18:08 +0000 (18:18 +0800)
If with CONFIG_NEED_SG_DMA_LENGTH,
sg_dma_len(sg) is defined as:
    ((sg)->dma_length)
else,
    ((sg)->length)

But ion_alloc calls sg_set_page to set "sg->length = len",
that is the issue.

Change-Id: Id9b4b0c727ff685b06aaa7572da7e7e054dce9a2
Signed-off-by: Jianqun xu <jay.xu@rock-chips.com>
drivers/iommu/rk-iovmm.c

index e071e8653dcb6406a7b7d35884a0196cabbe729f..9aebb5bbabfd4afa2ed91c4d65a60627e4d8bbd1 100644 (file)
@@ -72,8 +72,8 @@ dma_addr_t rockchip_iovmm_map(struct device *dev,
        int order;
        int ret;
 
-       for (; sg_dma_len(sg) < offset; sg = sg_next(sg))
-               offset -= sg_dma_len(sg);
+       for (; sg->length < offset; sg = sg_next(sg))
+               offset -= sg->length;
 
        start_off = offset_in_page(sg_phys(sg) + offset);
        size = PAGE_ALIGN(size + start_off);
@@ -98,15 +98,16 @@ dma_addr_t rockchip_iovmm_map(struct device *dev,
        addr = start;
        do {
                phys_addr_t phys;
+               struct scatterlist *sg_tmp;
                size_t len;
 
                phys = sg_phys(sg);
-               len = sg_dma_len(sg);
+               len = sg->length;
 
                /* if back to back sg entries are contiguous consolidate them */
-               while (sg_next(sg) && sg_phys(sg) +
-                      sg_dma_len(sg) == sg_phys(sg_next(sg))) {
-                       len += sg_dma_len(sg_next(sg));
+               sg_tmp = sg_next(sg);
+               while (sg_next(sg) && sg_phys(sg) + sg->length == sg_phys(sg_next(sg))) {
+                       len += sg_tmp->length;
                        sg = sg_next(sg);
                }