On 9/27/23 07:01, Joey Gouly wrote: > -#ifdef CONFIG_ARCH_HAS_PKEYS > +#if defined(CONFIG_ARCH_HAS_PKEYS) && !defined(CONFIG_ARM64) > # define VM_PKEY_SHIFT VM_HIGH_ARCH_BIT_0 > # define VM_PKEY_BIT0 VM_HIGH_ARCH_0 /* A protection key is a 4-bit value */ > # define VM_PKEY_BIT1 VM_HIGH_ARCH_1 /* on x86 and 5-bit value on ppc64 */ > @@ -341,6 +341,15 @@ extern unsigned int kobjsize(const void *objp); > #endif > #endif /* CONFIG_ARCH_HAS_PKEYS */ > > +#if defined(CONFIG_ARM64) > +# define VM_PKEY_SHIFT VM_HIGH_ARCH_BIT_2 > +# define VM_PKEY_BIT0 VM_HIGH_ARCH_2 /* A protection key is a 3-bit value on arm64 */ > +# define VM_PKEY_BIT1 VM_HIGH_ARCH_3 > +# define VM_PKEY_BIT2 VM_HIGH_ARCH_4 > +# define VM_PKEY_BIT3 0 > +# define VM_PKEY_BIT4 0 > +#endif This might be a bit cleaner to just defer out to a per-arch header. It made sense for ppc and x86 to share their copy in here, but now that a third one is around we should probably move this to actual arch/ code.