[PATCH] mm/ioremap: Pass pgprot_t to ioremap_prot() instead of unsigned long
Catalin Marinas
catalin.marinas at arm.com
Wed Feb 19 22:52:01 AEDT 2025
On Tue, Feb 18, 2025 at 03:49:54PM +0530, Anshuman Khandual wrote:
> From: Ryan Roberts <ryan.roberts at arm.com>
>
> ioremap_prot() currently accepts pgprot_val parameter as an unsigned long,
> thus implicitly assuming that pgprot_val and pgprot_t could never be bigger
> than unsigned long. But this assumption soon will not be true on arm64 when
> using D128 pgtables. In 128 bit page table configuration, unsigned long is
> 64 bit, but pgprot_t is 128 bit.
>
> Passing platform abstracted pgprot_t argument is better as compared to size
> based data types. Let's change the parameter to directly pass pgprot_t like
> another similar helper generic_ioremap_prot().
>
> Without this change in place, D128 configuration does not work on arm64 as
> the top 64 bits gets silently stripped when passing the protection value to
> this function.
>
> Cc: Andrew Morton <akpm at linux-foundation.org>
> Cc: linux-arm-kernel at lists.infradead.org
> Cc: linux-snps-arc at lists.infradead.org
> Cc: linux-riscv at lists.infradead.org
> Cc: linuxppc-dev at lists.ozlabs.org
> Cc: linux-parisc at vger.kernel.org
> Cc: linux-csky at vger.kernel.org
> Cc: linux-mips at vger.kernel.org
> Cc: linux-s390 at vger.kernel.org
> Cc: linux-arch at vger.kernel.org
> Cc: loongarch at lists.linux.dev
> Cc: linux-sh at vger.kernel.org
> Cc: linux-mm at kvack.org
> Cc: linux-kernel at vger.kernel.org
> Signed-off-by: Ryan Roberts <ryan.roberts at arm.com>
> Co-developed-by: Anshuman Khandual <anshuman.khandual at arm.com>
> Signed-off-by: Anshuman Khandual <anshuman.khandual at arm.com>
For arm64:
Acked-by: Catalin Marinas <catalin.marinas at arm.com>
More information about the Linuxppc-dev
mailing list