diff options
author | Bob Picco <bob.picco@hp.com> | 2005-09-03 18:54:28 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@evo.osdl.org> | 2005-09-05 03:05:38 -0400 |
commit | 3e347261a80b57df792ab9464b5f0ed59add53a8 (patch) | |
tree | 047b35e0f9ec82b3beeff882a9af6292a500097c /mm/Kconfig | |
parent | 802f192e4a600f7ef84ca25c8b818c8830acef5a (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/Kconfig | 19 |
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 | # | ||
103 | config 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 | # |
98 | config ARCH_SPARSEMEM_EXTREME | 111 | config SPARSEMEM_EXTREME |
99 | def_bool n | 112 | def_bool y |
100 | depends on SPARSEMEM && 64BIT | 113 | depends on SPARSEMEM && !SPARSEMEM_STATIC |