Index: sys/amd64/include/vmparam.h =================================================================== --- sys/amd64/include/vmparam.h +++ sys/amd64/include/vmparam.h @@ -253,4 +253,9 @@ */ #define VM_BATCHQUEUE_SIZE 31 +/* + * The pmap can create non-transparent large page mappings. + */ +#define PMAP_HAS_LARGEPAGES 1 + #endif /* _MACHINE_VMPARAM_H_ */ Index: sys/arm/include/vmparam.h =================================================================== --- sys/arm/include/vmparam.h +++ sys/arm/include/vmparam.h @@ -193,4 +193,9 @@ #define DEVMAP_MAX_VADDR ARM_VECTORS_HIGH +/* + * No non-transparent large page support in the pmap. + */ +#define PMAP_HAS_LARGEPAGES 0 + #endif /* _MACHINE_VMPARAM_H_ */ Index: sys/arm64/include/vmparam.h =================================================================== --- sys/arm64/include/vmparam.h +++ sys/arm64/include/vmparam.h @@ -243,4 +243,9 @@ #define DEVMAP_MAX_VADDR VM_MAX_KERNEL_ADDRESS +/* + * The pmap can create non-transparent large page mappings. + */ +#define PMAP_HAS_LARGEPAGES 1 + #endif /* !_MACHINE_VMPARAM_H_ */ Index: sys/i386/include/vmparam.h =================================================================== --- sys/i386/include/vmparam.h +++ sys/i386/include/vmparam.h @@ -240,4 +240,9 @@ #define PHYS_TO_DMAP(x) ({ panic("No direct map exists"); 0; }) #define DMAP_TO_PHYS(x) ({ panic("No direct map exists"); 0; }) +/* + * No non-transparent large page support in the pmap. + */ +#define PMAP_HAS_LARGEPAGES 0 + #endif /* _MACHINE_VMPARAM_H_ */ Index: sys/kern/uipc_shm.c =================================================================== --- sys/kern/uipc_shm.c +++ sys/kern/uipc_shm.c @@ -1067,7 +1067,7 @@ return (EINVAL); largepage = (shmflags & SHM_LARGEPAGE) != 0; -#if !defined(__amd64__) +#if PMAP_HAS_LARGEPAGES == 0 if (largepage) return (ENOTTY); #endif Index: sys/mips/include/vmparam.h =================================================================== --- sys/mips/include/vmparam.h +++ sys/mips/include/vmparam.h @@ -197,4 +197,9 @@ #define PHYS_TO_DMAP(x) MIPS_PHYS_TO_DIRECT(x) #define DMAP_TO_PHYS(x) MIPS_DIRECT_TO_PHYS(x) +/* + * No non-transparent large page support in the pmap. + */ +#define PMAP_HAS_LARGEPAGES 0 + #endif /* !_MACHINE_VMPARAM_H_ */ Index: sys/powerpc/include/vmparam.h =================================================================== --- sys/powerpc/include/vmparam.h +++ sys/powerpc/include/vmparam.h @@ -315,4 +315,9 @@ KASSERT(hw_direct_map, ("Direct map not provided by PMAP")); \ (x) &~ DMAP_BASE_ADDRESS; }) +/* + * No non-transparent large page support in the pmap. + */ +#define PMAP_HAS_LARGEPAGES 0 + #endif /* _MACHINE_VMPARAM_H_ */ Index: sys/riscv/include/vmparam.h =================================================================== --- sys/riscv/include/vmparam.h +++ sys/riscv/include/vmparam.h @@ -236,4 +236,9 @@ #define DEVMAP_MAX_VADDR VM_MAX_KERNEL_ADDRESS +/* + * No non-transparent large page support in the pmap. + */ +#define PMAP_HAS_LARGEPAGES 0 + #endif /* !_MACHINE_VMPARAM_H_ */