Skip to content

Commit 5404cca

Browse files
soleenjoergroedel
authored andcommitted
iommu/rockchip: use page allocation function provided by iommu-pages.h
Convert iommu/rockchip-iommu.c to use the new page allocation functions provided in iommu-pages.h. Signed-off-by: Pasha Tatashin <[email protected]> Acked-by: David Rientjes <[email protected]> Tested-by: Bagas Sanjaya <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Joerg Roedel <[email protected]>
1 parent fe046f1 commit 5404cca

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

drivers/iommu/rockchip-iommu.c

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626
#include <linux/slab.h>
2727
#include <linux/spinlock.h>
2828

29+
#include "iommu-pages.h"
30+
2931
/** MMU register offsets */
3032
#define RK_MMU_DTE_ADDR 0x00 /* Directory table address */
3133
#define RK_MMU_STATUS 0x04
@@ -727,14 +729,14 @@ static u32 *rk_dte_get_page_table(struct rk_iommu_domain *rk_domain,
727729
if (rk_dte_is_pt_valid(dte))
728730
goto done;
729731

730-
page_table = (u32 *)get_zeroed_page(GFP_ATOMIC | rk_ops->gfp_flags);
732+
page_table = iommu_alloc_page(GFP_ATOMIC | rk_ops->gfp_flags);
731733
if (!page_table)
732734
return ERR_PTR(-ENOMEM);
733735

734736
pt_dma = dma_map_single(dma_dev, page_table, SPAGE_SIZE, DMA_TO_DEVICE);
735737
if (dma_mapping_error(dma_dev, pt_dma)) {
736738
dev_err(dma_dev, "DMA mapping error while allocating page table\n");
737-
free_page((unsigned long)page_table);
739+
iommu_free_page(page_table);
738740
return ERR_PTR(-ENOMEM);
739741
}
740742

@@ -1061,7 +1063,7 @@ static struct iommu_domain *rk_iommu_domain_alloc_paging(struct device *dev)
10611063
* Each level1 (dt) and level2 (pt) table has 1024 4-byte entries.
10621064
* Allocate one 4 KiB page for each table.
10631065
*/
1064-
rk_domain->dt = (u32 *)get_zeroed_page(GFP_KERNEL | rk_ops->gfp_flags);
1066+
rk_domain->dt = iommu_alloc_page(GFP_KERNEL | rk_ops->gfp_flags);
10651067
if (!rk_domain->dt)
10661068
goto err_free_domain;
10671069

@@ -1083,7 +1085,7 @@ static struct iommu_domain *rk_iommu_domain_alloc_paging(struct device *dev)
10831085
return &rk_domain->domain;
10841086

10851087
err_free_dt:
1086-
free_page((unsigned long)rk_domain->dt);
1088+
iommu_free_page(rk_domain->dt);
10871089
err_free_domain:
10881090
kfree(rk_domain);
10891091

@@ -1104,13 +1106,13 @@ static void rk_iommu_domain_free(struct iommu_domain *domain)
11041106
u32 *page_table = phys_to_virt(pt_phys);
11051107
dma_unmap_single(dma_dev, pt_phys,
11061108
SPAGE_SIZE, DMA_TO_DEVICE);
1107-
free_page((unsigned long)page_table);
1109+
iommu_free_page(page_table);
11081110
}
11091111
}
11101112

11111113
dma_unmap_single(dma_dev, rk_domain->dt_dma,
11121114
SPAGE_SIZE, DMA_TO_DEVICE);
1113-
free_page((unsigned long)rk_domain->dt);
1115+
iommu_free_page(rk_domain->dt);
11141116

11151117
kfree(rk_domain);
11161118
}

0 commit comments

Comments
 (0)