2024-02-09 11:51:18

by Marek Szyprowski

[permalink] [raw]
Subject: Re: [PATCH v4 05/10] iommu/exynos: use page allocation function provided by iommu-pages.h

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 <[email protected]>
> Acked-by: David Rientjes <[email protected]>
> Tested-by: Bagas Sanjaya <[email protected]>
Acked-by: Marek Szyprowski <[email protected]>
> ---
> 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
--
Marek Szyprowski, PhD
Samsung R&D Institute Poland