aboutsummaryrefslogtreecommitdiffstats
path: root/mm/Kconfig
diff options
context:
space:
mode:
authorBob Picco <bob.picco@hp.com>2005-09-03 18:54:28 -0400
committerLinus Torvalds <torvalds@evo.osdl.org>2005-09-05 03:05:38 -0400
commit3e347261a80b57df792ab9464b5f0ed59add53a8 (patch)
tree047b35e0f9ec82b3beeff882a9af6292a500097c /mm/Kconfig
parent802f192e4a600f7ef84ca25c8b818c8830acef5a (diff)
[PATCH] sparsemem extreme implementation
With cleanups from Dave Hansen <haveblue@us.ibm.com> SPARSEMEM_EXTREME makes mem_section a one dimensional array of pointers to mem_sections. This two level layout scheme is able to achieve smaller memory requirements for SPARSEMEM with the tradeoff of an additional shift and load when fetching the memory section. The current SPARSEMEM implementation is a one dimensional array of mem_sections which is the default SPARSEMEM configuration. The patch attempts isolates the implementation details of the physical layout of the sparsemem section array. SPARSEMEM_EXTREME requires bootmem to be functioning at the time of memory_present() calls. This is not always feasible, so architectures which do not need it may allocate everything statically by using SPARSEMEM_STATIC. Signed-off-by: Andy Whitcroft <apw@shadowen.org> Signed-off-by: Bob Picco <bob.picco@hp.com> Signed-off-by: Dave Hansen <haveblue@us.ibm.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'mm/Kconfig')
-rw-r--r--mm/Kconfig19
1 files changed, 16 insertions, 3 deletions
diff --git a/mm/Kconfig b/mm/Kconfig
index fc644c5c065d..4e9937ac3529 100644
--- a/mm/Kconfig
+++ b/mm/Kconfig
@@ -91,10 +91,23 @@ config HAVE_MEMORY_PRESENT
91 depends on ARCH_HAVE_MEMORY_PRESENT || SPARSEMEM 91 depends on ARCH_HAVE_MEMORY_PRESENT || SPARSEMEM
92 92
93# 93#
94# SPARSEMEM_EXTREME (which is the default) does some bootmem
95# allocations when memory_present() is called. If this can not
96# be done on your architecture, select this option. However,
97# statically allocating the mem_section[] array can potentially
98# consume vast quantities of .bss, so be careful.
99#
100# This option will also potentially produce smaller runtime code
101# with gcc 3.4 and later.
102#
103config SPARSEMEM_STATIC
104 def_bool n
105
106#
94# Architectecture platforms which require a two level mem_section in SPARSEMEM 107# Architectecture platforms which require a two level mem_section in SPARSEMEM
95# must select this option. This is usually for architecture platforms with 108# must select this option. This is usually for architecture platforms with
96# an extremely sparse physical address space. 109# an extremely sparse physical address space.
97# 110#
98config ARCH_SPARSEMEM_EXTREME 111config SPARSEMEM_EXTREME
99 def_bool n 112 def_bool y
100 depends on SPARSEMEM && 64BIT 113 depends on SPARSEMEM && !SPARSEMEM_STATIC