@@ -19,12 +19,6 @@ static void etnaviv_context_unmap(struct etnaviv_iommu_context *context,
1919 size_t unmapped_page , unmapped = 0 ;
2020 size_t pgsize = SZ_4K ;
2121
22- if (!IS_ALIGNED (iova | size , pgsize )) {
23- pr_err ("unaligned: iova 0x%lx size 0x%zx min_pagesz 0x%zx\n" ,
24- iova , size , pgsize );
25- return ;
26- }
27-
2822 while (unmapped < size ) {
2923 unmapped_page = context -> global -> ops -> unmap (context , iova ,
3024 pgsize );
@@ -45,12 +39,6 @@ static int etnaviv_context_map(struct etnaviv_iommu_context *context,
4539 size_t orig_size = size ;
4640 int ret = 0 ;
4741
48- if (!IS_ALIGNED (iova | paddr | size , pgsize )) {
49- pr_err ("unaligned: iova 0x%lx pa %pa size 0x%zx min_pagesz 0x%zx\n" ,
50- iova , & paddr , size , pgsize );
51- return - EINVAL ;
52- }
53-
5442 while (size ) {
5543 ret = context -> global -> ops -> map (context , iova , paddr , pgsize ,
5644 prot );
@@ -82,11 +70,19 @@ static int etnaviv_iommu_map(struct etnaviv_iommu_context *context,
8270 return - EINVAL ;
8371
8472 for_each_sgtable_dma_sg (sgt , sg , i ) {
85- phys_addr_t pa = sg_dma_address (sg ) - sg -> offset ;
86- unsigned int da_len = sg_dma_len (sg ) + sg -> offset ;
73+ phys_addr_t pa = sg_dma_address (sg );
74+ unsigned int da_len = sg_dma_len (sg );
8775 unsigned int bytes = min_t (unsigned int , da_len , va_len );
8876
89- VERB ("map[%d]: %08x %pap(%x)" , i , iova , & pa , bytes );
77+ VERB ("map[%d]: %08x %pap(%x)" , i , da , & pa , bytes );
78+
79+ if (!IS_ALIGNED (iova | pa | bytes , SZ_4K )) {
80+ dev_err (context -> global -> dev ,
81+ "unaligned: iova 0x%x pa %pa size 0x%x\n" ,
82+ iova , & pa , bytes );
83+ ret = - EINVAL ;
84+ goto fail ;
85+ }
9086
9187 ret = etnaviv_context_map (context , da , pa , bytes , prot );
9288 if (ret )
0 commit comments