linux/arch
Benjamin Herrenschmidt cec08e7a94 [POWERPC] vmemmap fixes to use smaller pages
This changes vmemmap to use a different region (region 0xf) of the
address space, and to configure the page size of that region
dynamically at boot.

The problem with the current approach of always using 16M pages is that
it's not well suited to machines that have small amounts of memory such
as small partitions on pseries, or PS3's.

In fact, on the PS3, failure to allocate the 16M page backing vmmemmap
tends to prevent hotplugging the HV's "additional" memory, thus limiting
the available memory even more, from my experience down to something
like 80M total, which makes it really not very useable.

The logic used by my match to choose the vmemmap page size is:

 - If 16M pages are available and there's 1G or more RAM at boot,
   use that size.
 - Else if 64K pages are available, use that
 - Else use 4K pages

I've tested on a POWER6 (16M pages) and on an iSeries POWER3 (4K pages)
and it seems to work fine.

Note that I intend to change the way we organize the kernel regions &
SLBs so the actual region will change from 0xf back to something else at
one point, as I simplify the SLB miss handler, but that will be for a
later patch.

Signed-off-by: Paul Mackerras <paulus@samba.org>
2008-05-15 20:49:25 +10:00
..
alpha [PATCH] make osf_select() use core_sys_select() 2008-05-01 13:07:28 -04:00
arm Merge branch 'for-rmk' of git://git.kernel.org/pub/scm/linux/kernel/git/nico/orion into fixes 2008-05-09 23:24:09 +01:00
avr32 unified (weak) sys_pipe implementation 2008-05-03 13:50:33 -07:00
blackfin [Blackfin] arch: protect linux/usb/musb.h include until the driver gets mainlined 2008-05-10 00:08:12 +08:00
cris cris: kill sys_pipe implementation 2008-05-09 08:03:03 -07:00
frv unified (weak) sys_pipe implementation 2008-05-03 13:50:33 -07:00
h8300 unified (weak) sys_pipe implementation 2008-05-03 13:50:33 -07:00
ia64 Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6 2008-05-02 08:17:58 -07:00
m32r m32r: use generic sys_pipe 2008-05-09 08:04:56 -07:00
m68k m68k: remove old mac_esp cruft 2008-05-05 12:38:50 -07:00
m68knommu unified (weak) sys_pipe implementation 2008-05-03 13:50:33 -07:00
mips [MIPS] Pb1000: bury the remnants of the PCI code 2008-05-12 16:46:56 +01:00
mn10300 BKL: revert back to the old spinlock implementation 2008-05-10 20:58:02 -07:00
parisc unified (weak) sys_pipe implementation 2008-05-03 13:50:33 -07:00
powerpc [POWERPC] vmemmap fixes to use smaller pages 2008-05-15 20:49:25 +10:00
ppc [POWERPC] ppc: More compile fixes 2008-05-12 22:57:51 +10:00
s390 [S390] guest page hinting light 2008-05-07 09:23:02 +02:00
sh SH: catch negative denormal_subf1() retval in denormal_add() 2008-05-09 20:05:10 +09:00
sparc sparc32: fix rtrap.S typo 2008-05-11 18:05:20 -07:00
sparc64 sparc64: Work around memory probing bug in openfirmware. 2008-05-11 21:04:48 -07:00
um uml: fix inconsistence due to tty_operation change 2008-05-08 10:46:55 -07:00
v850 unified (weak) sys_pipe implementation 2008-05-03 13:50:33 -07:00
x86 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86 2008-05-10 21:10:48 -07:00
xtensa xtensa: use kbuild.h macros instead of defining them in asm-offsets.c 2008-04-29 08:06:29 -07:00
.gitignore arch: Ignore arch/i386 and arch/x86_64 2008-01-19 21:29:39 -08:00
Kconfig dma: add dma_*map*_attrs() interfaces 2008-04-29 08:06:11 -07:00