Message ID | 20240207174102.1486130-6-pasha.tatashin@soleen.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | IOMMU memory observability | expand |
On 07.02.2024 18:40, Pasha Tatashin wrote: > Convert iommu/exynos-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> Acked-by: Marek Szyprowski <m.szyprowski@samsung.com> > --- > drivers/iommu/exynos-iommu.c | 14 ++++++++------ > 1 file changed, 8 insertions(+), 6 deletions(-) > > diff --git a/drivers/iommu/exynos-iommu.c b/drivers/iommu/exynos-iommu.c > index 2c6e9094f1e9..3eab0ae65a4f 100644 > --- a/drivers/iommu/exynos-iommu.c > +++ b/drivers/iommu/exynos-iommu.c > @@ -22,6 +22,8 @@ > #include <linux/pm_runtime.h> > #include <linux/slab.h> > > +#include "iommu-pages.h" > + > typedef u32 sysmmu_iova_t; > typedef u32 sysmmu_pte_t; > static struct iommu_domain exynos_identity_domain; > @@ -900,11 +902,11 @@ static struct iommu_domain *exynos_iommu_domain_alloc_paging(struct device *dev) > if (!domain) > return NULL; > > - domain->pgtable = (sysmmu_pte_t *)__get_free_pages(GFP_KERNEL, 2); > + domain->pgtable = iommu_alloc_pages(GFP_KERNEL, 2); > if (!domain->pgtable) > goto err_pgtable; > > - domain->lv2entcnt = (short *)__get_free_pages(GFP_KERNEL | __GFP_ZERO, 1); > + domain->lv2entcnt = iommu_alloc_pages(GFP_KERNEL, 1); > if (!domain->lv2entcnt) > goto err_counter; > > @@ -930,9 +932,9 @@ static struct iommu_domain *exynos_iommu_domain_alloc_paging(struct device *dev) > return &domain->domain; > > err_lv2ent: > - free_pages((unsigned long)domain->lv2entcnt, 1); > + iommu_free_pages(domain->lv2entcnt, 1); > err_counter: > - free_pages((unsigned long)domain->pgtable, 2); > + iommu_free_pages(domain->pgtable, 2); > err_pgtable: > kfree(domain); > return NULL; > @@ -973,8 +975,8 @@ static void exynos_iommu_domain_free(struct iommu_domain *iommu_domain) > phys_to_virt(base)); > } > > - free_pages((unsigned long)domain->pgtable, 2); > - free_pages((unsigned long)domain->lv2entcnt, 1); > + iommu_free_pages(domain->pgtable, 2); > + iommu_free_pages(domain->lv2entcnt, 1); > kfree(domain); > } > Best regards
On Fri, Feb 9, 2024 at 6:26 AM Marek Szyprowski <m.szyprowski@samsung.com> wrote: > > On 07.02.2024 18:40, Pasha Tatashin wrote: > > Convert iommu/exynos-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> > Acked-by: Marek Szyprowski <m.szyprowski@samsung.com> Thank you, Pasha
diff --git a/drivers/iommu/exynos-iommu.c b/drivers/iommu/exynos-iommu.c index 2c6e9094f1e9..3eab0ae65a4f 100644 --- a/drivers/iommu/exynos-iommu.c +++ b/drivers/iommu/exynos-iommu.c @@ -22,6 +22,8 @@ #include <linux/pm_runtime.h> #include <linux/slab.h> +#include "iommu-pages.h" + typedef u32 sysmmu_iova_t; typedef u32 sysmmu_pte_t; static struct iommu_domain exynos_identity_domain; @@ -900,11 +902,11 @@ static struct iommu_domain *exynos_iommu_domain_alloc_paging(struct device *dev) if (!domain) return NULL; - domain->pgtable = (sysmmu_pte_t *)__get_free_pages(GFP_KERNEL, 2); + domain->pgtable = iommu_alloc_pages(GFP_KERNEL, 2); if (!domain->pgtable) goto err_pgtable; - domain->lv2entcnt = (short *)__get_free_pages(GFP_KERNEL | __GFP_ZERO, 1); + domain->lv2entcnt = iommu_alloc_pages(GFP_KERNEL, 1); if (!domain->lv2entcnt) goto err_counter; @@ -930,9 +932,9 @@ static struct iommu_domain *exynos_iommu_domain_alloc_paging(struct device *dev) return &domain->domain; err_lv2ent: - free_pages((unsigned long)domain->lv2entcnt, 1); + iommu_free_pages(domain->lv2entcnt, 1); err_counter: - free_pages((unsigned long)domain->pgtable, 2); + iommu_free_pages(domain->pgtable, 2); err_pgtable: kfree(domain); return NULL; @@ -973,8 +975,8 @@ static void exynos_iommu_domain_free(struct iommu_domain *iommu_domain) phys_to_virt(base)); } - free_pages((unsigned long)domain->pgtable, 2); - free_pages((unsigned long)domain->lv2entcnt, 1); + iommu_free_pages(domain->pgtable, 2); + iommu_free_pages(domain->lv2entcnt, 1); kfree(domain); }