Browse Source
Update it to 4.20-rc1 Signed-off-by: Zhang Yi <yi.z.zhang@linux.intel.com> Message-Id: <f9346f1816b940a4231524a84d57a2cac8466ccc.1549555521.git.yi.z.zhang@linux.intel.com> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>pull/80/head
committed by
Eduardo Habkost
10 changed files with 359 additions and 0 deletions
@ -0,0 +1,4 @@ |
|||
#include <asm-generic/mman.h> |
|||
|
|||
#define arch_mmap_check(addr, len, flags) \ |
|||
(((flags) & MAP_FIXED && (addr) < FIRST_USER_ADDRESS) ? -EINVAL : 0) |
|||
@ -0,0 +1 @@ |
|||
#include <asm-generic/mman.h> |
|||
@ -0,0 +1,36 @@ |
|||
#ifndef _ASM_GENERIC_HUGETLB_ENCODE_H_ |
|||
#define _ASM_GENERIC_HUGETLB_ENCODE_H_ |
|||
|
|||
/*
|
|||
* 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 MAP_HUGE_SHIFT HUGETLB_FLAG_ENCODE_SHIFT |
|||
*/ |
|||
|
|||
#define HUGETLB_FLAG_ENCODE_SHIFT 26 |
|||
#define HUGETLB_FLAG_ENCODE_MASK 0x3f |
|||
|
|||
#define HUGETLB_FLAG_ENCODE_64KB (16 << HUGETLB_FLAG_ENCODE_SHIFT) |
|||
#define HUGETLB_FLAG_ENCODE_512KB (19 << HUGETLB_FLAG_ENCODE_SHIFT) |
|||
#define HUGETLB_FLAG_ENCODE_1MB (20 << HUGETLB_FLAG_ENCODE_SHIFT) |
|||
#define HUGETLB_FLAG_ENCODE_2MB (21 << HUGETLB_FLAG_ENCODE_SHIFT) |
|||
#define HUGETLB_FLAG_ENCODE_8MB (23 << HUGETLB_FLAG_ENCODE_SHIFT) |
|||
#define HUGETLB_FLAG_ENCODE_16MB (24 << HUGETLB_FLAG_ENCODE_SHIFT) |
|||
#define HUGETLB_FLAG_ENCODE_32MB (25 << HUGETLB_FLAG_ENCODE_SHIFT) |
|||
#define HUGETLB_FLAG_ENCODE_256MB (28 << HUGETLB_FLAG_ENCODE_SHIFT) |
|||
#define HUGETLB_FLAG_ENCODE_512MB (29 << HUGETLB_FLAG_ENCODE_SHIFT) |
|||
#define HUGETLB_FLAG_ENCODE_1GB (30 << HUGETLB_FLAG_ENCODE_SHIFT) |
|||
#define HUGETLB_FLAG_ENCODE_2GB (31 << HUGETLB_FLAG_ENCODE_SHIFT) |
|||
#define HUGETLB_FLAG_ENCODE_16GB (34 << HUGETLB_FLAG_ENCODE_SHIFT) |
|||
|
|||
#endif /* _ASM_GENERIC_HUGETLB_ENCODE_H_ */ |
|||
@ -0,0 +1,77 @@ |
|||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ |
|||
#ifndef __ASM_GENERIC_MMAN_COMMON_H |
|||
#define __ASM_GENERIC_MMAN_COMMON_H |
|||
|
|||
/*
|
|||
Author: Michael S. Tsirkin <mst@mellanox.co.il>, Mellanox Technologies Ltd. |
|||
Based on: asm-xxx/mman.h |
|||
*/ |
|||
|
|||
#define PROT_READ 0x1 /* page can be read */ |
|||
#define PROT_WRITE 0x2 /* page can be written */ |
|||
#define PROT_EXEC 0x4 /* page can be executed */ |
|||
#define PROT_SEM 0x8 /* page may be used for atomic ops */ |
|||
#define PROT_NONE 0x0 /* page can not be accessed */ |
|||
#define PROT_GROWSDOWN 0x01000000 /* mprotect flag: extend change to start of growsdown vma */ |
|||
#define PROT_GROWSUP 0x02000000 /* mprotect flag: extend change to end of growsup vma */ |
|||
|
|||
#define MAP_SHARED 0x01 /* Share changes */ |
|||
#define MAP_PRIVATE 0x02 /* Changes are private */ |
|||
#define MAP_SHARED_VALIDATE 0x03 /* share + validate extension flags */ |
|||
#define MAP_TYPE 0x0f /* Mask for type of mapping */ |
|||
#define MAP_FIXED 0x10 /* Interpret addr exactly */ |
|||
#define MAP_ANONYMOUS 0x20 /* don't use a file */ |
|||
#ifdef CONFIG_MMAP_ALLOW_UNINITIALIZED |
|||
# define MAP_UNINITIALIZED 0x4000000 /* For anonymous mmap, memory could be uninitialized */ |
|||
#else |
|||
# define MAP_UNINITIALIZED 0x0 /* Don't support this flag */ |
|||
#endif |
|||
|
|||
/* 0x0100 - 0x80000 flags are defined in asm-generic/mman.h */ |
|||
#define MAP_FIXED_NOREPLACE 0x100000 /* MAP_FIXED which doesn't unmap underlying mapping */ |
|||
|
|||
/*
|
|||
* Flags for mlock |
|||
*/ |
|||
#define MLOCK_ONFAULT 0x01 /* Lock pages in range after they are faulted in, do not prefault */ |
|||
|
|||
#define MS_ASYNC 1 /* sync memory asynchronously */ |
|||
#define MS_INVALIDATE 2 /* invalidate the caches */ |
|||
#define MS_SYNC 4 /* synchronous memory sync */ |
|||
|
|||
#define MADV_NORMAL 0 /* no further special treatment */ |
|||
#define MADV_RANDOM 1 /* expect random page references */ |
|||
#define MADV_SEQUENTIAL 2 /* expect sequential page references */ |
|||
#define MADV_WILLNEED 3 /* will need these pages */ |
|||
#define MADV_DONTNEED 4 /* don't need these pages */ |
|||
|
|||
/* common parameters: try to keep these consistent across architectures */ |
|||
#define MADV_FREE 8 /* free pages only if memory pressure */ |
|||
#define MADV_REMOVE 9 /* remove these pages & resources */ |
|||
#define MADV_DONTFORK 10 /* don't inherit across fork */ |
|||
#define MADV_DOFORK 11 /* do inherit across fork */ |
|||
#define MADV_HWPOISON 100 /* poison a page for testing */ |
|||
#define MADV_SOFT_OFFLINE 101 /* soft offline page for testing */ |
|||
|
|||
#define MADV_MERGEABLE 12 /* KSM may merge identical pages */ |
|||
#define MADV_UNMERGEABLE 13 /* KSM may not merge identical pages */ |
|||
|
|||
#define MADV_HUGEPAGE 14 /* Worth backing with hugepages */ |
|||
#define MADV_NOHUGEPAGE 15 /* Not worth backing with hugepages */ |
|||
|
|||
#define MADV_DONTDUMP 16 /* Explicity exclude from the core dump, |
|||
overrides the coredump filter bits */ |
|||
#define MADV_DODUMP 17 /* Clear the MADV_DONTDUMP flag */ |
|||
|
|||
#define MADV_WIPEONFORK 18 /* Zero memory on fork, child only */ |
|||
#define MADV_KEEPONFORK 19 /* Undo MADV_WIPEONFORK */ |
|||
|
|||
/* compatibility flags */ |
|||
#define MAP_FILE 0 |
|||
|
|||
#define PKEY_DISABLE_ACCESS 0x1 |
|||
#define PKEY_DISABLE_WRITE 0x2 |
|||
#define PKEY_ACCESS_MASK (PKEY_DISABLE_ACCESS |\ |
|||
PKEY_DISABLE_WRITE) |
|||
|
|||
#endif /* __ASM_GENERIC_MMAN_COMMON_H */ |
|||
@ -0,0 +1,24 @@ |
|||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ |
|||
#ifndef __ASM_GENERIC_MMAN_H |
|||
#define __ASM_GENERIC_MMAN_H |
|||
|
|||
#include <asm-generic/mman-common.h> |
|||
|
|||
#define MAP_GROWSDOWN 0x0100 /* stack-like segment */ |
|||
#define MAP_DENYWRITE 0x0800 /* ETXTBSY */ |
|||
#define MAP_EXECUTABLE 0x1000 /* mark it as an executable */ |
|||
#define MAP_LOCKED 0x2000 /* pages are locked */ |
|||
#define MAP_NORESERVE 0x4000 /* don't check for reservations */ |
|||
#define MAP_POPULATE 0x8000 /* populate (prefault) pagetables */ |
|||
#define MAP_NONBLOCK 0x10000 /* do not block on IO */ |
|||
#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 */ |
|||
#define MAP_SYNC 0x80000 /* perform synchronous page faults for the mapping */ |
|||
|
|||
/* Bits [26:31] are reserved, see mman-common.h for MAP_HUGETLB usage */ |
|||
|
|||
#define MCL_CURRENT 1 /* lock all current mappings */ |
|||
#define MCL_FUTURE 2 /* lock all future mappings */ |
|||
#define MCL_ONFAULT 4 /* lock all pages that are faulted in */ |
|||
|
|||
#endif /* __ASM_GENERIC_MMAN_H */ |
|||
@ -0,0 +1,108 @@ |
|||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ |
|||
/*
|
|||
* This file is subject to the terms and conditions of the GNU General Public |
|||
* License. See the file "COPYING" in the main directory of this archive |
|||
* for more details. |
|||
* |
|||
* Copyright (C) 1995, 1999, 2002 by Ralf Baechle |
|||
*/ |
|||
#ifndef _ASM_MMAN_H |
|||
#define _ASM_MMAN_H |
|||
|
|||
/*
|
|||
* Protections are chosen from these bits, OR'd together. The |
|||
* implementation does not necessarily support PROT_EXEC or PROT_WRITE |
|||
* without PROT_READ. The only guarantees are that no writing will be |
|||
* allowed without PROT_WRITE and no access will be allowed for PROT_NONE. |
|||
*/ |
|||
#define PROT_NONE 0x00 /* page can not be accessed */ |
|||
#define PROT_READ 0x01 /* page can be read */ |
|||
#define PROT_WRITE 0x02 /* page can be written */ |
|||
#define PROT_EXEC 0x04 /* page can be executed */ |
|||
/* 0x08 reserved for PROT_EXEC_NOFLUSH */ |
|||
#define PROT_SEM 0x10 /* page may be used for atomic ops */ |
|||
#define PROT_GROWSDOWN 0x01000000 /* mprotect flag: extend change to start of growsdown vma */ |
|||
#define PROT_GROWSUP 0x02000000 /* mprotect flag: extend change to end of growsup vma */ |
|||
|
|||
/*
|
|||
* Flags for mmap |
|||
*/ |
|||
#define MAP_SHARED 0x001 /* Share changes */ |
|||
#define MAP_PRIVATE 0x002 /* Changes are private */ |
|||
#define MAP_SHARED_VALIDATE 0x003 /* share + validate extension flags */ |
|||
#define MAP_TYPE 0x00f /* Mask for type of mapping */ |
|||
#define MAP_FIXED 0x010 /* Interpret addr exactly */ |
|||
|
|||
/* not used by linux, but here to make sure we don't clash with ABI defines */ |
|||
#define MAP_RENAME 0x020 /* Assign page to file */ |
|||
#define MAP_AUTOGROW 0x040 /* File may grow by writing */ |
|||
#define MAP_LOCAL 0x080 /* Copy on fork/sproc */ |
|||
#define MAP_AUTORSRV 0x100 /* Logical swap reserved on demand */ |
|||
|
|||
/* These are linux-specific */ |
|||
#define MAP_NORESERVE 0x0400 /* don't check for reservations */ |
|||
#define MAP_ANONYMOUS 0x0800 /* don't use a file */ |
|||
#define MAP_GROWSDOWN 0x1000 /* stack-like segment */ |
|||
#define MAP_DENYWRITE 0x2000 /* ETXTBSY */ |
|||
#define MAP_EXECUTABLE 0x4000 /* mark it as an executable */ |
|||
#define MAP_LOCKED 0x8000 /* pages are locked */ |
|||
#define MAP_POPULATE 0x10000 /* populate (prefault) pagetables */ |
|||
#define MAP_NONBLOCK 0x20000 /* do not block on IO */ |
|||
#define MAP_STACK 0x40000 /* give out an address that is best suited for process/thread stacks */ |
|||
#define MAP_HUGETLB 0x80000 /* create a huge page mapping */ |
|||
#define MAP_FIXED_NOREPLACE 0x100000 /* MAP_FIXED which doesn't unmap underlying mapping */ |
|||
|
|||
/*
|
|||
* Flags for msync |
|||
*/ |
|||
#define MS_ASYNC 0x0001 /* sync memory asynchronously */ |
|||
#define MS_INVALIDATE 0x0002 /* invalidate mappings & caches */ |
|||
#define MS_SYNC 0x0004 /* synchronous memory sync */ |
|||
|
|||
/*
|
|||
* Flags for mlockall |
|||
*/ |
|||
#define MCL_CURRENT 1 /* lock all current mappings */ |
|||
#define MCL_FUTURE 2 /* lock all future mappings */ |
|||
#define MCL_ONFAULT 4 /* lock all pages that are faulted in */ |
|||
|
|||
/*
|
|||
* Flags for mlock |
|||
*/ |
|||
#define MLOCK_ONFAULT 0x01 /* Lock pages in range after they are faulted in, do not prefault */ |
|||
|
|||
#define MADV_NORMAL 0 /* no further special treatment */ |
|||
#define MADV_RANDOM 1 /* expect random page references */ |
|||
#define MADV_SEQUENTIAL 2 /* expect sequential page references */ |
|||
#define MADV_WILLNEED 3 /* will need these pages */ |
|||
#define MADV_DONTNEED 4 /* don't need these pages */ |
|||
|
|||
/* common parameters: try to keep these consistent across architectures */ |
|||
#define MADV_FREE 8 /* free pages only if memory pressure */ |
|||
#define MADV_REMOVE 9 /* remove these pages & resources */ |
|||
#define MADV_DONTFORK 10 /* don't inherit across fork */ |
|||
#define MADV_DOFORK 11 /* do inherit across fork */ |
|||
|
|||
#define MADV_MERGEABLE 12 /* KSM may merge identical pages */ |
|||
#define MADV_UNMERGEABLE 13 /* KSM may not merge identical pages */ |
|||
#define MADV_HWPOISON 100 /* poison a page for testing */ |
|||
|
|||
#define MADV_HUGEPAGE 14 /* Worth backing with hugepages */ |
|||
#define MADV_NOHUGEPAGE 15 /* Not worth backing with hugepages */ |
|||
|
|||
#define MADV_DONTDUMP 16 /* Explicity exclude from the core dump, |
|||
overrides the coredump filter bits */ |
|||
#define MADV_DODUMP 17 /* Clear the MADV_NODUMP flag */ |
|||
|
|||
#define MADV_WIPEONFORK 18 /* Zero memory on fork, child only */ |
|||
#define MADV_KEEPONFORK 19 /* Undo MADV_WIPEONFORK */ |
|||
|
|||
/* compatibility flags */ |
|||
#define MAP_FILE 0 |
|||
|
|||
#define PKEY_DISABLE_ACCESS 0x1 |
|||
#define PKEY_DISABLE_WRITE 0x2 |
|||
#define PKEY_ACCESS_MASK (PKEY_DISABLE_ACCESS |\ |
|||
PKEY_DISABLE_WRITE) |
|||
|
|||
#endif /* _ASM_MMAN_H */ |
|||
@ -0,0 +1,39 @@ |
|||
/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */ |
|||
/*
|
|||
* This program is free software; you can redistribute it and/or |
|||
* modify it under the terms of the GNU General Public License |
|||
* as published by the Free Software Foundation; either version |
|||
* 2 of the License, or (at your option) any later version. |
|||
*/ |
|||
#ifndef _ASM_POWERPC_MMAN_H |
|||
#define _ASM_POWERPC_MMAN_H |
|||
|
|||
#include <asm-generic/mman-common.h> |
|||
|
|||
|
|||
#define PROT_SAO 0x10 /* Strong Access Ordering */ |
|||
|
|||
#define MAP_RENAME MAP_ANONYMOUS /* In SunOS terminology */ |
|||
#define MAP_NORESERVE 0x40 /* don't reserve swap pages */ |
|||
#define MAP_LOCKED 0x80 |
|||
|
|||
#define MAP_GROWSDOWN 0x0100 /* stack-like segment */ |
|||
#define MAP_DENYWRITE 0x0800 /* ETXTBSY */ |
|||
#define MAP_EXECUTABLE 0x1000 /* mark it as an executable */ |
|||
|
|||
#define MCL_CURRENT 0x2000 /* lock all currently mapped pages */ |
|||
#define MCL_FUTURE 0x4000 /* lock all additions to address space */ |
|||
#define MCL_ONFAULT 0x8000 /* lock all pages that are faulted in */ |
|||
|
|||
#define MAP_POPULATE 0x8000 /* populate (prefault) pagetables */ |
|||
#define MAP_NONBLOCK 0x10000 /* do not block on IO */ |
|||
#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 */ |
|||
|
|||
/* Override any generic PKEY permission defines */ |
|||
#define PKEY_DISABLE_EXECUTE 0x4 |
|||
#undef PKEY_ACCESS_MASK |
|||
#define PKEY_ACCESS_MASK (PKEY_DISABLE_ACCESS |\ |
|||
PKEY_DISABLE_WRITE |\ |
|||
PKEY_DISABLE_EXECUTE) |
|||
#endif /* _ASM_POWERPC_MMAN_H */ |
|||
@ -0,0 +1 @@ |
|||
#include <asm-generic/mman.h> |
|||
@ -0,0 +1,31 @@ |
|||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ |
|||
#ifndef _ASM_X86_MMAN_H |
|||
#define _ASM_X86_MMAN_H |
|||
|
|||
#define MAP_32BIT 0x40 /* only give out 32bit addresses */ |
|||
|
|||
#ifdef CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS |
|||
/*
|
|||
* Take the 4 protection key bits out of the vma->vm_flags |
|||
* value and turn them in to the bits that we can put in |
|||
* to a pte. |
|||
* |
|||
* Only override these if Protection Keys are available |
|||
* (which is only on 64-bit). |
|||
*/ |
|||
#define arch_vm_get_page_prot(vm_flags) __pgprot( \ |
|||
((vm_flags) & VM_PKEY_BIT0 ? _PAGE_PKEY_BIT0 : 0) | \ |
|||
((vm_flags) & VM_PKEY_BIT1 ? _PAGE_PKEY_BIT1 : 0) | \ |
|||
((vm_flags) & VM_PKEY_BIT2 ? _PAGE_PKEY_BIT2 : 0) | \ |
|||
((vm_flags) & VM_PKEY_BIT3 ? _PAGE_PKEY_BIT3 : 0)) |
|||
|
|||
#define arch_calc_vm_prot_bits(prot, key) ( \ |
|||
((key) & 0x1 ? VM_PKEY_BIT0 : 0) | \ |
|||
((key) & 0x2 ? VM_PKEY_BIT1 : 0) | \ |
|||
((key) & 0x4 ? VM_PKEY_BIT2 : 0) | \ |
|||
((key) & 0x8 ? VM_PKEY_BIT3 : 0)) |
|||
#endif |
|||
|
|||
#include <asm-generic/mman.h> |
|||
|
|||
#endif /* _ASM_X86_MMAN_H */ |
|||
@ -0,0 +1,38 @@ |
|||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ |
|||
#ifndef _LINUX_MMAN_H |
|||
#define _LINUX_MMAN_H |
|||
|
|||
#include <asm/mman.h> |
|||
#include <asm-generic/hugetlb_encode.h> |
|||
|
|||
#define MREMAP_MAYMOVE 1 |
|||
#define MREMAP_FIXED 2 |
|||
|
|||
#define OVERCOMMIT_GUESS 0 |
|||
#define OVERCOMMIT_ALWAYS 1 |
|||
#define OVERCOMMIT_NEVER 2 |
|||
|
|||
/*
|
|||
* Huge page size encoding when MAP_HUGETLB is specified, and a huge page |
|||
* size other than the default is desired. See hugetlb_encode.h. |
|||
* All known huge page size encodings are provided here. It is the |
|||
* responsibility of the application to know which sizes are supported on |
|||
* the running system. See mmap(2) man page for details. |
|||
*/ |
|||
#define MAP_HUGE_SHIFT HUGETLB_FLAG_ENCODE_SHIFT |
|||
#define MAP_HUGE_MASK HUGETLB_FLAG_ENCODE_MASK |
|||
|
|||
#define MAP_HUGE_64KB HUGETLB_FLAG_ENCODE_64KB |
|||
#define MAP_HUGE_512KB HUGETLB_FLAG_ENCODE_512KB |
|||
#define MAP_HUGE_1MB HUGETLB_FLAG_ENCODE_1MB |
|||
#define MAP_HUGE_2MB HUGETLB_FLAG_ENCODE_2MB |
|||
#define MAP_HUGE_8MB HUGETLB_FLAG_ENCODE_8MB |
|||
#define MAP_HUGE_16MB HUGETLB_FLAG_ENCODE_16MB |
|||
#define MAP_HUGE_32MB HUGETLB_FLAG_ENCODE_32MB |
|||
#define MAP_HUGE_256MB HUGETLB_FLAG_ENCODE_256MB |
|||
#define MAP_HUGE_512MB HUGETLB_FLAG_ENCODE_512MB |
|||
#define MAP_HUGE_1GB HUGETLB_FLAG_ENCODE_1GB |
|||
#define MAP_HUGE_2GB HUGETLB_FLAG_ENCODE_2GB |
|||
#define MAP_HUGE_16GB HUGETLB_FLAG_ENCODE_16GB |
|||
|
|||
#endif /* _LINUX_MMAN_H */ |
|||
Loading…
Reference in new issue