[PATCH] arm64: kernel: Replace manual computation with macro

Catalin Marinas catalin.marinas at arm.com
Thu May 23 09:59:44 PDT 2024


On Thu, May 23, 2024 at 02:02:37PM +0100, Dave P Martin wrote:
> On Fri, May 17, 2024 at 04:31:12PM +0100, Catalin Marinas wrote:
> > On Fri, May 17, 2024 at 06:54:21PM +0530, Dev Jain wrote:
> > > diff --git a/arch/arm64/kernel/pi/map_range.c b/arch/arm64/kernel/pi/map_range.c
> > > index 5410b2cac590..4b145be7f846 100644
> > > --- a/arch/arm64/kernel/pi/map_range.c
> > > +++ b/arch/arm64/kernel/pi/map_range.c
> > > @@ -31,14 +31,14 @@ void __init map_range(u64 *pte, u64 start, u64 end, u64 pa, pgprot_t prot,
> > >  {
> > >  	u64 cmask = (level == 3) ? CONT_PTE_SIZE - 1 : U64_MAX;
> > >  	u64 protval = pgprot_val(prot) & ~PTE_TYPE_MASK;
> > > -	int lshift = (3 - level) * (PAGE_SHIFT - 3);
> > > -	u64 lmask = (PAGE_SIZE << lshift) - 1;
> > > +	int lshift = ARM64_HW_PGTABLE_LEVEL_SHIFT(level);
> > > +	u64 lmask = ((u64)1 << lshift) - 1;
> > 
> > Nitpick: you can use 1UL instead of (u64)1.
> 
> Or, rather than reinventing this again, how about:
> 
> #include <linux/bits.h>
> 
> 	u64 lmask = GENMASK_ULL(lshift - 1, 0);

Even better. Thanks Dave.

-- 
Catalin



More information about the linux-arm-kernel mailing list