@@ -2509,30 +2509,6 @@ static size_t iommu_pgsize(struct iommu_domain *domain, unsigned long iova,
2509
2509
return pgsize ;
2510
2510
}
2511
2511
2512
- static int __iommu_map_pages (struct iommu_domain * domain , unsigned long iova ,
2513
- phys_addr_t paddr , size_t size , int prot ,
2514
- gfp_t gfp , size_t * mapped )
2515
- {
2516
- const struct iommu_domain_ops * ops = domain -> ops ;
2517
- size_t pgsize , count ;
2518
- int ret ;
2519
-
2520
- pgsize = iommu_pgsize (domain , iova , paddr , size , & count );
2521
-
2522
- pr_debug ("mapping: iova 0x%lx pa %pa pgsize 0x%zx count %zu\n" ,
2523
- iova , & paddr , pgsize , count );
2524
-
2525
- if (ops -> map_pages ) {
2526
- ret = ops -> map_pages (domain , iova , paddr , pgsize , count , prot ,
2527
- gfp , mapped );
2528
- } else {
2529
- ret = ops -> map (domain , iova , paddr , pgsize , prot , gfp );
2530
- * mapped = ret ? 0 : pgsize ;
2531
- }
2532
-
2533
- return ret ;
2534
- }
2535
-
2536
2512
static int __iommu_map (struct iommu_domain * domain , unsigned long iova ,
2537
2513
phys_addr_t paddr , size_t size , int prot , gfp_t gfp )
2538
2514
{
@@ -2543,8 +2519,7 @@ static int __iommu_map(struct iommu_domain *domain, unsigned long iova,
2543
2519
phys_addr_t orig_paddr = paddr ;
2544
2520
int ret = 0 ;
2545
2521
2546
- if (unlikely (!(ops -> map || ops -> map_pages ) ||
2547
- domain -> pgsize_bitmap == 0UL ))
2522
+ if (unlikely (!ops -> map_pages || domain -> pgsize_bitmap == 0UL ))
2548
2523
return - ENODEV ;
2549
2524
2550
2525
if (unlikely (!(domain -> type & __IOMMU_DOMAIN_PAGING )))
@@ -2567,10 +2542,14 @@ static int __iommu_map(struct iommu_domain *domain, unsigned long iova,
2567
2542
pr_debug ("map: iova 0x%lx pa %pa size 0x%zx\n" , iova , & paddr , size );
2568
2543
2569
2544
while (size ) {
2570
- size_t mapped = 0 ;
2545
+ size_t pgsize , count , mapped = 0 ;
2546
+
2547
+ pgsize = iommu_pgsize (domain , iova , paddr , size , & count );
2571
2548
2572
- ret = __iommu_map_pages (domain , iova , paddr , size , prot , gfp ,
2573
- & mapped );
2549
+ pr_debug ("mapping: iova 0x%lx pa %pa pgsize 0x%zx count %zu\n" ,
2550
+ iova , & paddr , pgsize , count );
2551
+ ret = ops -> map_pages (domain , iova , paddr , pgsize , count , prot ,
2552
+ gfp , & mapped );
2574
2553
/*
2575
2554
* Some pages may have been mapped, even if an error occurred,
2576
2555
* so we should account for those so they can be unmapped.
@@ -2614,19 +2593,6 @@ int iommu_map(struct iommu_domain *domain, unsigned long iova,
2614
2593
}
2615
2594
EXPORT_SYMBOL_GPL (iommu_map );
2616
2595
2617
- static size_t __iommu_unmap_pages (struct iommu_domain * domain ,
2618
- unsigned long iova , size_t size ,
2619
- struct iommu_iotlb_gather * iotlb_gather )
2620
- {
2621
- const struct iommu_domain_ops * ops = domain -> ops ;
2622
- size_t pgsize , count ;
2623
-
2624
- pgsize = iommu_pgsize (domain , iova , iova , size , & count );
2625
- return ops -> unmap_pages ?
2626
- ops -> unmap_pages (domain , iova , pgsize , count , iotlb_gather ) :
2627
- ops -> unmap (domain , iova , pgsize , iotlb_gather );
2628
- }
2629
-
2630
2596
static size_t __iommu_unmap (struct iommu_domain * domain ,
2631
2597
unsigned long iova , size_t size ,
2632
2598
struct iommu_iotlb_gather * iotlb_gather )
@@ -2636,8 +2602,7 @@ static size_t __iommu_unmap(struct iommu_domain *domain,
2636
2602
unsigned long orig_iova = iova ;
2637
2603
unsigned int min_pagesz ;
2638
2604
2639
- if (unlikely (!(ops -> unmap || ops -> unmap_pages ) ||
2640
- domain -> pgsize_bitmap == 0UL ))
2605
+ if (unlikely (!ops -> unmap_pages || domain -> pgsize_bitmap == 0UL ))
2641
2606
return 0 ;
2642
2607
2643
2608
if (unlikely (!(domain -> type & __IOMMU_DOMAIN_PAGING )))
@@ -2664,9 +2629,10 @@ static size_t __iommu_unmap(struct iommu_domain *domain,
2664
2629
* or we hit an area that isn't mapped.
2665
2630
*/
2666
2631
while (unmapped < size ) {
2667
- unmapped_page = __iommu_unmap_pages (domain , iova ,
2668
- size - unmapped ,
2669
- iotlb_gather );
2632
+ size_t pgsize , count ;
2633
+
2634
+ pgsize = iommu_pgsize (domain , iova , iova , size - unmapped , & count );
2635
+ unmapped_page = ops -> unmap_pages (domain , iova , pgsize , count , iotlb_gather );
2670
2636
if (!unmapped_page )
2671
2637
break ;
2672
2638
0 commit comments