mm: hugetlb: define system call hugetlb size encodings in single file
authorMike Kravetz <>
Wed, 6 Sep 2017 23:23:25 +0000 (16:23 -0700)
committerLinus Torvalds <>
Thu, 7 Sep 2017 00:27:28 +0000 (17:27 -0700)
Patch series "Consolidate system call hugetlb page size encodings".

These patches are the result of discussions in  The following changes are made in the
patch set:

1) Put all the log2 encoded huge page size definitions in a common
   header file.  The idea is have a set of definitions that can be use as
   the basis for system call specific definitions such as MAP_HUGE_* and

2) Remove MAP_HUGE_* definitions in arch specific files.  All these
   definitions are the same.  Consolidate all definitions in the primary
   user header file (uapi/linux/mman.h).

3) Remove SHM_HUGE_* definitions intended for user space from kernel
   header file, and add to user (uapi/linux/shm.h) header file.  Add
   definitions for all known huge page size encodings as in mmap.

This patch (of 3):

If hugetlb pages are requested in mmap or shmget system calls, a huge
page size other than default can be requested.  This is accomplished by
encoding the log2 of the huge page size in the upper bits of the flag
argument.  asm-generic and arch specific headers all define the same
values for these encodings.

Put common definitions in a single header file.  The primary uapi header
files for mmap and shm will use these definitions as a basis for
definitions specific to those system calls.

Signed-off-by: Mike Kravetz <>
Acked-by: Michal Hocko <>
Cc: Matthew Wilcox <>
Cc: Andi Kleen <>
Cc: Michael Kerrisk <>
Cc: Davidlohr Bueso <>
Cc: Anshuman Khandual <>
Cc: Aneesh Kumar K.V <>
Cc: Andrea Arcangeli <>
Cc: Arnd Bergmann <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
include/uapi/asm-generic/hugetlb_encode.h [new file with mode: 0644]

diff --git a/include/uapi/asm-generic/hugetlb_encode.h b/include/uapi/asm-generic/hugetlb_encode.h
new file mode 100644 (file)
index 0000000..e4732d3
--- /dev/null
@@ -0,0 +1,34 @@
+ * Several system calls take a flag to request "hugetlb" huge pages.
+ * Without further specification, these system calls will use the
+ * system's default huge page size.  If a system supports multiple
+ * huge page sizes, the desired huge page size can be specified in
+ * bits [26:31] of the flag arguments.  The value in these 6 bits
+ * will encode the log2 of the huge page size.
+ *
+ * The following definitions are associated with this huge page size
+ * encoding in flag arguments.  System call specific header files
+ * that use this encoding should include this file.  They can then
+ * provide definitions based on these with their own specific prefix.
+ * for example:
+ */
+#define HUGETLB_FLAG_ENCODE_MASK       0x3f