linux/arch/alpha/include/asm
Andi Kleen 42d7395feb mm: support more pagesizes for MAP_HUGETLB/SHM_HUGETLB
There was some desire in large applications using MAP_HUGETLB or
SHM_HUGETLB to use 1GB huge pages on some mappings, and stay with 2MB on
others.  This is useful together with NUMA policy: use 2MB interleaving
on some mappings, but 1GB on local mappings.

This patch extends the IPC/SHM syscall interfaces slightly to allow
specifying the page size.

It borrows some upper bits in the existing flag arguments and allows
encoding the log of the desired page size in addition to the *_HUGETLB
flag.  When 0 is specified the default size is used, this makes the
change fully compatible.

Extending the internal hugetlb code to handle this is straight forward.
Instead of a single mount it just keeps an array of them and selects the
right mount based on the specified page size.  When no page size is
specified it uses the mount of the default page size.

The change is not visible in /proc/mounts because internal mounts don't
appear there.  It also has very little overhead: the additional mounts
just consume a super block, but not more memory when not used.

I also exported the new flags to the user headers (they were previously
under __KERNEL__).  Right now only symbols for x86 and some other
architecture for 1GB and 2MB are defined.  The interface should already
work for all other architectures though.  Only architectures that define
multiple hugetlb sizes actually need it (that is currently x86, tile,
powerpc).  However tile and powerpc have user configurable hugetlb
sizes, so it's not easy to add defines.  A program on those
architectures would need to query sysfs and use the appropiate log2.

[akpm@linux-foundation.org: cleanups]
[rientjes@google.com: fix build]
[akpm@linux-foundation.org: checkpatch fixes]
Signed-off-by: Andi Kleen <ak@linux.intel.com>
Cc: Michael Kerrisk <mtk.manpages@gmail.com>
Acked-by: Rik van Riel <riel@redhat.com>
Acked-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: Hillf Danton <dhillf@gmail.com>
Signed-off-by: David Rientjes <rientjes@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-12-11 17:22:25 -08:00
..
a.out-core.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
a.out.h alpha: introduce field 'taso' into struct linux_binprm 2008-10-16 11:21:38 -07:00
agp_backend.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
agp.h agp: kill phys_to_gart() and gart_to_phys() 2009-08-03 09:05:00 +01:00
asm-offsets.h kbuild: move asm-offsets.h to include/generated 2009-12-12 13:08:14 +01:00
atomic.h Redefine ATOMIC_INIT and ATOMIC64_INIT to drop the casts 2012-08-19 08:41:19 -07:00
auxvec.h Disintegrate asm/system.h for Alpha 2012-03-28 18:11:12 +01:00
barrier.h alpha: futex implementation 2009-05-02 15:36:10 -07:00
bitops.h asm-generic: add another generic ext2 atomic bitops 2011-07-26 16:49:46 -07:00
bitsperlong.h asm-generic: introduce asm/bitsperlong.h 2009-06-11 21:02:14 +02:00
bug.h alpha: Convert BUG() to use unreachable() 2009-12-18 01:14:52 -05:00
bugs.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
byteorder.h byteorder: make swab.h include asm/swab.h like a regular header 2009-01-14 19:56:50 -08:00
cache.h alpha: remove homegrown L1_CACHE_ALIGN macro 2010-08-31 22:45:31 -04:00
cacheflush.h mm: Fix out-of-date comments which refers non-existent functions 2011-02-17 16:54:39 +01:00
checksum.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
cmpxchg.h alpha: fix build failures from system.h dismemberment 2012-04-13 13:15:16 -04:00
compiler.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
console.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
core_apecs.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
core_cia.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
core_irongate.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
core_lca.h Disintegrate asm/system.h for Alpha 2012-03-28 18:11:12 +01:00
core_marvel.h alpha: fix compile errors in dma-mapping-common.h 2010-03-18 22:35:28 -04:00
core_mcpcia.h Disintegrate asm/system.h for Alpha 2012-03-28 18:11:12 +01:00
core_polaris.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
core_t2.h Disintegrate asm/system.h for Alpha 2012-03-28 18:11:12 +01:00
core_titan.h alpha: fix compile errors in dma-mapping-common.h 2010-03-18 22:35:28 -04:00
core_tsunami.h alpha: fix compile errors in dma-mapping-common.h 2010-03-18 22:35:28 -04:00
core_wildfire.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
cputime.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
current.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
delay.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
device.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
div64.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
dma-mapping.h Alpha: adapt for dma_map_ops changes 2012-03-28 16:36:36 +02:00
dma.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
elf.h Disintegrate asm/system.h for Alpha 2012-03-28 18:11:12 +01:00
emergency-restart.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
err_common.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
err_ev6.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
err_ev7.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
errno.h mm: make __get_user_pages return -EHWPOISON for HWPOISON page optionally 2011-03-17 13:08:27 -03:00
fb.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
fcntl.h locks: move F_INPROGRESS from fl_type to fl_flags field 2011-08-19 13:25:34 -04:00
floppy.h treewide: fix potentially dangerous trailing ';' in #defined values/expressions 2011-07-21 14:10:00 +02:00
fpu.h alpha: fix fpu.h usage in userspace 2012-08-19 08:41:19 -07:00
ftrace.h tracing: make CALLER_ADDRx overwriteable 2009-03-02 16:49:37 -05:00
futex.h alpha: fix 32/64-bit bug in futex support 2012-03-05 15:49:43 -08:00
gct.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
gentrap.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
gpio.h gpiolib/arches: Centralise bolierplate asm/gpio.h 2012-05-11 18:00:14 -06:00
hardirq.h alpha: convert to asm-generic/hardirq.h 2009-09-22 07:17:43 -07:00
hw_irq.h alpha: add performance monitor interrupt counter 2010-08-09 20:45:03 -07:00
hwrpb.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
io_trivial.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
io.h alpha: add io{read,write}{16,32}be functions 2012-05-24 14:27:59 -04:00
ioctl.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
ioctls.h tty: add TIOCVHANGUP to allow clean tty shutdown of all ttys 2011-02-17 14:16:30 -08:00
ipcbuf.h consolidate a bunch of ipcbuf.h instances 2012-01-03 22:55:18 -05:00
irq_regs.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
irq.h alpha: kill off alpha_do_IRQ 2011-01-17 05:42:13 +01:00
irqflags.h Disintegrate asm/system.h for Alpha 2012-03-28 18:11:12 +01:00
jensen.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
Kbuild Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/signal 2012-10-10 12:02:25 +09:00
kdebug.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
kmap_types.h kmap_types: make most arches use generic header file 2009-06-16 19:47:51 -07:00
kvm_para.h kvmclock: Add functions to check if the host has stopped the vm 2012-04-08 12:48:59 +03:00
linkage.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
local.h atomic: use <linux/atomic.h> 2011-07-26 16:49:47 -07:00
local64.h arch: Implement local64_t 2010-06-09 11:12:36 +02:00
machvec.h constify struct pci_dev * in obvious cases 2012-03-20 00:20:37 +01:00
mc146818rtc.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
mce.h Disintegrate asm/system.h for Alpha 2012-03-28 18:11:12 +01:00
mman.h mm: support more pagesizes for MAP_HUGETLB/SHM_HUGETLB 2012-12-11 17:22:25 -08:00
mmu_context.h Disintegrate asm/system.h for Alpha 2012-03-28 18:11:12 +01:00
mmu.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
mmzone.h Fix node_start/end_pfn() definition for mm/page_cgroup.c 2011-06-27 14:13:09 -07:00
module.h Make most arch asm/module.h files use asm-generic/module.h 2012-09-28 14:31:03 +09:30
msgbuf.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
mutex.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
page.h asm-generic: rename page.h and uaccess.h 2009-06-11 21:02:17 +02:00
pal.h Disintegrate asm/system.h for Alpha 2012-03-28 18:11:12 +01:00
param.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
parport.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
pci.h PCI: collapse pcibios_resource_to_bus 2012-02-23 20:19:04 -07:00
percpu.h alpha: fix percpu build breakage 2009-06-30 18:55:59 -07:00
perf_event.h perf, arch: Cleanup perf-pmu init vs lockup-detector 2010-11-26 15:14:56 +01:00
pgalloc.h alpha: make pte_alloc_one_kernel() inline 2009-01-15 16:39:40 -08:00
pgtable.h Disintegrate asm/system.h for Alpha 2012-03-28 18:11:12 +01:00
poll.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
posix_types.h bury __kernel_nlink_t, make internal nlink_t consistent 2012-05-30 21:04:50 -04:00
processor.h alpha: switch to generic kernel_thread() 2012-09-30 22:53:18 -04:00
ptrace.h alpha: take a bunch of syscalls into osf_sys.c 2012-08-19 08:41:19 -07:00
reg.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
regdef.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
resource.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
rtc.h alpha: properly define get/set_rtc_time on Marvel/SMP 2012-05-02 15:54:05 -04:00
rwsem.h rwsem: Move duplicate function prototypes to linux/rwsem.h 2011-01-27 12:30:39 +01:00
scatterlist.h remove needless ISA_DMA_THRESHOLD 2010-08-07 18:15:50 +02:00
sections.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
segment.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
sembuf.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
serial.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
setup.h Disintegrate asm/system.h for Alpha 2012-03-28 18:11:12 +01:00
sfp-machine.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
shmbuf.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
shmparam.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
sigcontext.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
siginfo.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
signal.h asm-generic: rename termios.h, signal.h and mman.h 2009-06-11 21:01:52 +02:00
smp.h Remove unused PROC_CHANGE_PENALTY constant 2011-05-25 08:39:43 -07:00
socket.h alpha: Don't export SOCK_NONBLOCK to user space. 2012-08-19 08:41:18 -07:00
sockios.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
special_insns.h Disintegrate asm/system.h for Alpha 2012-03-28 18:11:12 +01:00
spinlock_types.h locking: Convert raw_rwlock to arch_rwlock 2009-12-14 23:55:32 +01:00
spinlock.h Disintegrate asm/system.h for Alpha 2012-03-28 18:11:12 +01:00
stat.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
statfs.h headers_check fix: alpha, statfs.h 2009-02-01 11:01:22 +05:30
string.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
swab.h headers_check fix: alpha, swab.h 2009-02-01 11:01:22 +05:30
switch_to.h Disintegrate asm/system.h for Alpha 2012-03-28 18:11:12 +01:00
sysinfo.h alpha: implement setsysinfo(SSI_LMF) as a no-op 2012-05-24 14:27:55 -04:00
termbits.h tty: Add EXTPROC support for LINEMODE 2010-08-10 13:47:39 -07:00
termios.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
thread_info.h alpha: separate thread-synchronous flags 2012-10-24 05:16:45 +03:00
timex.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
tlb.h mm: Pass virtual address to [__]p{te,ud,md}_free_tlb() 2009-07-27 12:10:38 -07:00
tlbflush.h alpha: switch to dynamic percpu allocator 2009-06-24 15:13:52 +09:00
topology.h alpha: cpumask_of_node() should handle -1 as a node 2010-01-14 13:21:35 -05:00
types.h consolidate umode_t declarations 2012-01-03 22:55:17 -05:00
uaccess.h alpha: Use new generic strncpy_from_user() and strnlen_user() 2012-08-19 08:41:18 -07:00
ucontext.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
unaligned.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
unistd.h alpha: switch to saner kernel_execve() semantics 2012-10-12 13:35:23 -04:00
user.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
vga.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00
word-at-a-time.h alpha: Use new generic strncpy_from_user() and strnlen_user() 2012-08-19 08:41:18 -07:00
wrperfmon.h alpha: add wrperfmon.h header file to aid use of wrperfmon PALcall 2010-08-09 20:45:04 -07:00
xchg.h alpha: fix build failures from system.h dismemberment 2012-04-13 13:15:16 -04:00
xor.h alpha: move include/asm-alpha to arch/alpha/include/asm 2008-08-15 09:19:40 -07:00