powerpc/hugetlb: Add ABI defines for supported HugeTLB page sizes
authorAnshuman Khandual <khandual@linux.vnet.ibm.com>
Fri, 7 Apr 2017 03:55:39 +0000 (09:25 +0530)
committerMichael Ellerman <mpe@ellerman.id.au>
Mon, 10 Apr 2017 21:46:06 +0000 (07:46 +1000)
Add user space exported API definitions for 512KB, 1MB, 2MB, 8MB, 16MB,
1GB, 16GB non default huge page sizes to be used with mmap() system
call.

Signed-off-by: Anshuman Khandual <khandual@linux.vnet.ibm.com>
[mpe: Reword the comment to emphasise that these are only needed to use
 the non-default huge page size, and updated the change log.]
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/include/uapi/asm/mman.h

index 03c06ba7464f4fc47d7f5b6f0fb0057fa69d8f1c..ab45cc2f31018a66aebec62c93f27e6274467f70 100644 (file)
 #define MAP_STACK      0x20000         /* give out an address that is best suited for process/thread stacks */
 #define MAP_HUGETLB    0x40000         /* create a huge page mapping */
 
+/*
+ * When MAP_HUGETLB is set, bits [26:31] of the flags argument to mmap(2),
+ * encode the log2 of the huge page size. A value of zero indicates that the
+ * default huge page size should be used. To use a non-default huge page size,
+ * one of these defines can be used, or the size can be encoded by hand. Note
+ * that on most systems only a subset, or possibly none, of these sizes will be
+ * available.
+ */
+#define MAP_HUGE_512KB (19 << MAP_HUGE_SHIFT)  /* 512KB HugeTLB Page */
+#define MAP_HUGE_1MB   (20 << MAP_HUGE_SHIFT)  /* 1MB   HugeTLB Page */
+#define MAP_HUGE_2MB   (21 << MAP_HUGE_SHIFT)  /* 2MB   HugeTLB Page */
+#define MAP_HUGE_8MB   (23 << MAP_HUGE_SHIFT)  /* 8MB   HugeTLB Page */
+#define MAP_HUGE_16MB  (24 << MAP_HUGE_SHIFT)  /* 16MB  HugeTLB Page */
+#define MAP_HUGE_1GB   (30 << MAP_HUGE_SHIFT)  /* 1GB   HugeTLB Page */
+#define MAP_HUGE_16GB  (34 << MAP_HUGE_SHIFT)  /* 16GB  HugeTLB Page */
+
 #endif /* _UAPI_ASM_POWERPC_MMAN_H */