Message ID | 20250103024616.3359159-1-guoren@kernel.org (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | iommu/riscv: Fixup compile warning | expand |
Hi Guo, On 03/01/2025 03:46, guoren@kernel.org wrote: > From: Guo Ren <guoren@linux.alibaba.com> > > When __BITS_PER_LONG == 32, size_t is defined as unsigned int rather RISCV_IOMMU depends on 64BIT so how do you get __BITS_PER_LONG == 32? Thanks, Alex > than unsigned long. Therefore, we should use size_t to avoid > type-checking errors. > > Fixes: 488ffbf18171 ("iommu/riscv: Paging domain support") > Signed-off-by: Guo Ren <guoren@linux.alibaba.com> > Signed-off-by: Guo Ren <guoren@kernel.org> > Cc: Tomasz Jeznach <tjeznach@rivosinc.com> > --- > drivers/iommu/riscv/iommu.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/iommu/riscv/iommu.c b/drivers/iommu/riscv/iommu.c > index 8a05def774bd..38d381164385 100644 > --- a/drivers/iommu/riscv/iommu.c > +++ b/drivers/iommu/riscv/iommu.c > @@ -1270,7 +1270,7 @@ static phys_addr_t riscv_iommu_iova_to_phys(struct iommu_domain *iommu_domain, > dma_addr_t iova) > { > struct riscv_iommu_domain *domain = iommu_domain_to_riscv(iommu_domain); > - unsigned long pte_size; > + size_t pte_size; > unsigned long *ptr; > > ptr = riscv_iommu_pte_fetch(domain, iova, &pte_size);
Hi Alex, On 2025-01-06 4:31 AM, Alexandre Ghiti wrote: > On 03/01/2025 03:46, guoren@kernel.org wrote: >> From: Guo Ren <guoren@linux.alibaba.com> >> >> When __BITS_PER_LONG == 32, size_t is defined as unsigned int rather > > > RISCV_IOMMU depends on 64BIT so how do you get __BITS_PER_LONG == 32? I am guessing this is from some downstream effort to compile a 64-bit kernel with an ILP32 ABI. However unsupported that may be, size_t is the nominal type used in both riscv_iommu_pte_fetch() and above in iommu_iotlb_gather_add_page(), so the change does make sense. Regards, Samuel >> than unsigned long. Therefore, we should use size_t to avoid >> type-checking errors. >> >> Fixes: 488ffbf18171 ("iommu/riscv: Paging domain support") >> Signed-off-by: Guo Ren <guoren@linux.alibaba.com> >> Signed-off-by: Guo Ren <guoren@kernel.org> >> Cc: Tomasz Jeznach <tjeznach@rivosinc.com> >> --- >> drivers/iommu/riscv/iommu.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/drivers/iommu/riscv/iommu.c b/drivers/iommu/riscv/iommu.c >> index 8a05def774bd..38d381164385 100644 >> --- a/drivers/iommu/riscv/iommu.c >> +++ b/drivers/iommu/riscv/iommu.c >> @@ -1270,7 +1270,7 @@ static phys_addr_t riscv_iommu_iova_to_phys(struct >> iommu_domain *iommu_domain, >> dma_addr_t iova) >> { >> struct riscv_iommu_domain *domain = iommu_domain_to_riscv(iommu_domain); >> - unsigned long pte_size; >> + size_t pte_size; >> unsigned long *ptr; >> ptr = riscv_iommu_pte_fetch(domain, iova, &pte_size);
Hi Samuel & Alexandre, On Tue, Jan 7, 2025 at 1:47 AM Samuel Holland <samuel.holland@sifive.com> wrote: > > Hi Alex, > > On 2025-01-06 4:31 AM, Alexandre Ghiti wrote: > > On 03/01/2025 03:46, guoren@kernel.org wrote: > >> From: Guo Ren <guoren@linux.alibaba.com> > >> > >> When __BITS_PER_LONG == 32, size_t is defined as unsigned int rather > > > > > > RISCV_IOMMU depends on 64BIT so how do you get __BITS_PER_LONG == 32? > > I am guessing this is from some downstream effort to compile a 64-bit kernel > with an ILP32 ABI. However unsupported that may be, size_t is the nominal type > used in both riscv_iommu_pte_fetch() and above in iommu_iotlb_gather_add_page(), > so the change does make sense. Yes, I'm working on ILP32 ABI on CONFIG_64BIT=y. So, I got the warning when __BITS_PER_LONG == 32. In riscv_iommu_unmap_pages(), we've written "size_t pte_size;." So, we should do that in "riscv_iommu_iova_to_phys()". > > Regards, > Samuel > > >> than unsigned long. Therefore, we should use size_t to avoid > >> type-checking errors. > >> > >> Fixes: 488ffbf18171 ("iommu/riscv: Paging domain support") > >> Signed-off-by: Guo Ren <guoren@linux.alibaba.com> > >> Signed-off-by: Guo Ren <guoren@kernel.org> > >> Cc: Tomasz Jeznach <tjeznach@rivosinc.com> > >> --- > >> drivers/iommu/riscv/iommu.c | 2 +- > >> 1 file changed, 1 insertion(+), 1 deletion(-) > >> > >> diff --git a/drivers/iommu/riscv/iommu.c b/drivers/iommu/riscv/iommu.c > >> index 8a05def774bd..38d381164385 100644 > >> --- a/drivers/iommu/riscv/iommu.c > >> +++ b/drivers/iommu/riscv/iommu.c > >> @@ -1270,7 +1270,7 @@ static phys_addr_t riscv_iommu_iova_to_phys(struct > >> iommu_domain *iommu_domain, > >> dma_addr_t iova) > >> { > >> struct riscv_iommu_domain *domain = iommu_domain_to_riscv(iommu_domain); > >> - unsigned long pte_size; > >> + size_t pte_size; > >> unsigned long *ptr; > >> ptr = riscv_iommu_pte_fetch(domain, iova, &pte_size); >
diff --git a/drivers/iommu/riscv/iommu.c b/drivers/iommu/riscv/iommu.c index 8a05def774bd..38d381164385 100644 --- a/drivers/iommu/riscv/iommu.c +++ b/drivers/iommu/riscv/iommu.c @@ -1270,7 +1270,7 @@ static phys_addr_t riscv_iommu_iova_to_phys(struct iommu_domain *iommu_domain, dma_addr_t iova) { struct riscv_iommu_domain *domain = iommu_domain_to_riscv(iommu_domain); - unsigned long pte_size; + size_t pte_size; unsigned long *ptr; ptr = riscv_iommu_pte_fetch(domain, iova, &pte_size);