Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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 <pasha.tatashin@soleen.com>
Acked-by: David Rientjes <rientjes@google.com>
Tested-by: Bagas Sanjaya <bagasdotme@gmail.com>
Link: https://lore.kernel.org/r/20240413002522.1101315-8-pasha.tatashin@soleen.com
Signed-off-by: Joerg Roedel <jroedel@suse.de>

authored by

Pasha Tatashin and committed by
Joerg Roedel
5404ccaa fe046f1b

+8 -6
+8 -6
drivers/iommu/rockchip-iommu.c
··· 26 26 #include <linux/slab.h> 27 27 #include <linux/spinlock.h> 28 28 29 + #include "iommu-pages.h" 30 + 29 31 /** MMU register offsets */ 30 32 #define RK_MMU_DTE_ADDR 0x00 /* Directory table address */ 31 33 #define RK_MMU_STATUS 0x04 ··· 729 727 if (rk_dte_is_pt_valid(dte)) 730 728 goto done; 731 729 732 - page_table = (u32 *)get_zeroed_page(GFP_ATOMIC | rk_ops->gfp_flags); 730 + page_table = iommu_alloc_page(GFP_ATOMIC | rk_ops->gfp_flags); 733 731 if (!page_table) 734 732 return ERR_PTR(-ENOMEM); 735 733 736 734 pt_dma = dma_map_single(dma_dev, page_table, SPAGE_SIZE, DMA_TO_DEVICE); 737 735 if (dma_mapping_error(dma_dev, pt_dma)) { 738 736 dev_err(dma_dev, "DMA mapping error while allocating page table\n"); 739 - free_page((unsigned long)page_table); 737 + iommu_free_page(page_table); 740 738 return ERR_PTR(-ENOMEM); 741 739 } 742 740 ··· 1063 1061 * Each level1 (dt) and level2 (pt) table has 1024 4-byte entries. 1064 1062 * Allocate one 4 KiB page for each table. 1065 1063 */ 1066 - rk_domain->dt = (u32 *)get_zeroed_page(GFP_KERNEL | rk_ops->gfp_flags); 1064 + rk_domain->dt = iommu_alloc_page(GFP_KERNEL | rk_ops->gfp_flags); 1067 1065 if (!rk_domain->dt) 1068 1066 goto err_free_domain; 1069 1067 ··· 1085 1083 return &rk_domain->domain; 1086 1084 1087 1085 err_free_dt: 1088 - free_page((unsigned long)rk_domain->dt); 1086 + iommu_free_page(rk_domain->dt); 1089 1087 err_free_domain: 1090 1088 kfree(rk_domain); 1091 1089 ··· 1106 1104 u32 *page_table = phys_to_virt(pt_phys); 1107 1105 dma_unmap_single(dma_dev, pt_phys, 1108 1106 SPAGE_SIZE, DMA_TO_DEVICE); 1109 - free_page((unsigned long)page_table); 1107 + iommu_free_page(page_table); 1110 1108 } 1111 1109 } 1112 1110 1113 1111 dma_unmap_single(dma_dev, rk_domain->dt_dma, 1114 1112 SPAGE_SIZE, DMA_TO_DEVICE); 1115 - free_page((unsigned long)rk_domain->dt); 1113 + iommu_free_page(rk_domain->dt); 1116 1114 1117 1115 kfree(rk_domain); 1118 1116 }