linux/arch/mips
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
..
alchemy MIPS: Alchemy: Merge PB1100/1500 support into DB1000 code. 2012-10-11 11:11:20 +02:00
ar7 arch: Use eth_random_addr 2012-07-16 22:39:25 -07:00
ath79 MIPS: ath79: Fix CPU/DDR frequency calculation for SRIF PLLs 2012-10-01 11:37:15 +02:00
bcm47xx MIPS: BCM47xx: Fix BCMA_DRIVER_PCI_HOSTMODE config dependencies 2012-07-19 11:23:43 +02:00
bcm63xx Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2012-10-09 16:08:04 +09:00
boot MIPS: Alchemy: Single kernel for DB1200/1300/1550 2012-10-11 11:11:20 +02:00
cavium-octeon Device tree changes for v3.8 2012-12-11 11:30:41 -08:00
cobalt MIPS: Mark cascade and low level interrupts IRQF_NO_THREAD 2011-09-21 17:52:15 +02:00
configs MIPS: Alchemy: Merge PB1100/1500 support into DB1000 code. 2012-10-11 11:11:20 +02:00
dec MIPS: DEC: use IS_ENABLED() 2012-07-23 13:55:54 +01:00
emma Disintegrate asm/system.h for MIPS 2012-03-28 18:30:02 +01:00
fw mips, arc: fix build failure 2012-11-16 14:33:04 -08:00
include mm: support more pagesizes for MAP_HUGETLB/SHM_HUGETLB 2012-12-11 17:22:25 -08:00
jazz Merge branch 'next/generic' into mips-for-linux-next 2012-01-11 15:41:47 +01:00
jz4740 MIPS: JZ4740: Forward declare struct uart_port in header. 2012-10-17 17:00:50 +02:00
kernel MIPS: Fix endless loop when processing signals for kernel tasks 2012-12-05 19:59:00 +01:00
lantiq kbuild: centralize .dts->.dtb rule 2012-11-30 10:52:19 -06:00
lasat Disintegrate asm/system.h for MIPS 2012-03-28 18:30:02 +01:00
lib MIPS: Fix crash that occurs when function tracing is enabled 2012-11-23 18:44:38 +01:00
loongson MIPS: Loongson 2: Sort out clock managment. 2012-08-01 18:10:06 +02:00
loongson1 MIPS: Loongson 1: more clk support and add select HAVE_CLK 2012-08-01 17:59:23 +02:00
math-emu Disintegrate asm/system.h for MIPS 2012-03-28 18:30:02 +01:00
mm MIPS: Avoid mcheck by flushing page range in huge_ptep_set_access_flags() 2012-12-04 16:57:54 +01:00
mti-malta MIPS: Malta: Fix interupt number of CBUS UART. 2012-11-13 14:50:15 +01:00
mti-sead3 MIPS: Add core files for MIPS SEAD-3 development platform. 2012-09-13 15:43:46 -05:00
netlogic kbuild: centralize .dts->.dtb rule 2012-11-30 10:52:19 -06:00
oprofile Merge branches 'next/generic', 'next/alchemy', 'next/bcm63xx', 'next/cavium', 'next/jz4740', 'next/lantiq', 'next/loongson1b' and 'next/netlogic' into mips-for-linux-next 2012-07-25 16:37:46 +02:00
pci MIPS: Malta: Fix section mismatch. 2012-10-11 11:14:12 +02:00
pmc-sierra PCI changes for the 3.6 merge window: 2012-07-24 16:17:07 -07:00
pnx833x MIPS: PNX833x: use IS_ENABLED() macro 2012-07-23 13:55:53 +01:00
pnx8550 MIPS: irq: Remove IRQF_DISABLED 2011-12-07 22:03:45 +00:00
power MIPS: Hibernation: Fixes for PAGE_SIZE >= 64kb 2011-05-10 18:15:26 +01:00
powertv Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2012-07-24 10:01:50 -07:00
rb532 - More robust parsing especially of xattr data in JFFS2 2012-06-01 16:55:42 -07:00
sgi-ip22 Disintegrate asm/system.h for MIPS 2012-03-28 18:30:02 +01:00
sgi-ip27 mips: zero out pg_data_t when it's allocated 2012-07-31 18:42:49 -07:00
sgi-ip32 Disintegrate asm/system.h for MIPS 2012-03-28 18:30:02 +01:00
sibyte documentation: remove references to cpu_*_map. 2012-03-29 15:38:31 +10:30
sni MIPS: SNI: Switch RM400 serial to SCCNXP driver 2012-10-11 11:14:13 +02:00
txx9 MIPS: txx9: Fix redefinition of clk_* by adding select HAVE_CLK 2012-08-01 17:59:15 +02:00
vr41xx Disintegrate asm/system.h for MIPS 2012-03-28 18:30:02 +01:00
wrppmc
Kbuild
Kbuild.platforms Merge branch 'ralf-3.7' of git://git.linux-mips.org/pub/scm/sjhill/linux-sjhill into mips-for-linux-next 2012-09-28 16:29:55 +02:00
Kconfig Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2012-10-14 14:39:05 -07:00
Kconfig.debug Fix typo in various Kconfig file 2012-04-16 14:40:08 +02:00
Makefile kbuild: Fix gcc -x syntax 2012-10-03 09:03:24 +02:00