linux/arch/powerpc/mm
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
..
40x_mmu.c [POWERPC] Remove and replace uses of PPC_MEMSTART with memstart_addr 2008-04-17 07:46:12 +10:00
44x_mmu.c [POWERPC] Introduce lowmem_end_addr to distinguish from total_lowmem 2008-04-17 07:46:13 +10:00
fault.c [POWERPC] Make setjmp/longjmp code usable outside of xmon 2008-01-25 22:52:50 +11:00
fsl_booke_mmu.c [POWERPC] 85xx: Add support for relocatable kernel (and booting at non-zero) 2008-04-24 20:58:01 +10:00
hash_low_32.S [POWERPC] Clean up access to thread_info in assembly 2008-04-24 20:58:02 +10:00
hash_low_64.S [POWERPC] Provide a way to protect 4k subpages when using 64k pages 2008-01-24 10:06:01 +11:00
hash_native_64.c [POWERPC] Use 1TB segments 2007-10-12 14:05:17 +10:00
hash_utils_64.c [POWERPC] vmemmap fixes to use smaller pages 2008-05-15 20:49:25 +10:00
hugetlbpage.c [POWERPC] Add hugepagesz boot-time parameter 2008-01-17 14:57:36 +11:00
init_32.c [POWERPC] Port fixmap from x86 and use for kmap_atomic 2008-04-24 20:58:02 +10:00
init_64.c [POWERPC] vmemmap fixes to use smaller pages 2008-05-15 20:49:25 +10:00
Makefile [LIB]: Make PowerPC LMB code generic so sparc64 can use it too. 2008-02-13 16:56:49 -08:00
mem.c [POWERPC] Provide walk_memory_resource() for powerpc 2008-04-29 15:57:53 +10:00
mmap.c Detach sched.h from mm.h 2007-05-21 09:18:19 -07:00
mmu_context_32.c [POWERPC] Remove the dregs of APUS support from arch/powerpc 2007-06-14 22:30:15 +10:00
mmu_context_64.c [POWERPC] Tidy up CONFIG_PPC_MM_SLICES code 2007-08-17 11:01:59 +10:00
mmu_decl.h [POWERPC] Rename __initial_memory_limit to __initial_memory_limit_addr 2008-04-17 07:46:13 +10:00
numa.c [POWERPC] Add include of linux/of.h to numa.c 2008-04-24 20:57:32 +10:00
pgtable_32.c [POWERPC] Port fixmap from x86 and use for kmap_atomic 2008-04-24 20:58:02 +10:00
pgtable_64.c [POWERPC] Use 1TB segments 2007-10-12 14:05:17 +10:00
ppc_mmu_32.c [POWERPC] Rename __initial_memory_limit to __initial_memory_limit_addr 2008-04-17 07:46:13 +10:00
slb_low.S [POWERPC] vmemmap fixes to use smaller pages 2008-05-15 20:49:25 +10:00
slb.c [POWERPC] vmemmap fixes to use smaller pages 2008-05-15 20:49:25 +10:00
slice.c spin_lock_unlocked cleanups 2007-10-17 08:43:01 -07:00
stab.c [LIB]: Make PowerPC LMB code generic so sparc64 can use it too. 2008-02-13 16:56:49 -08:00
subpage-prot.c [POWERPC] Provide a way to protect 4k subpages when using 64k pages 2008-01-24 10:06:01 +11:00
tlb_32.c powerpc: tlb_32.c build fix 2007-07-21 17:49:16 -07:00
tlb_64.c [POWERPC] Fix CONFIG_SMP=n build error on ppc64 2007-11-13 16:22:44 +11:00