1 |
62 |
marcus.erl |
config SELECT_MEMORY_MODEL
|
2 |
|
|
def_bool y
|
3 |
|
|
depends on EXPERIMENTAL || ARCH_SELECT_MEMORY_MODEL
|
4 |
|
|
|
5 |
|
|
choice
|
6 |
|
|
prompt "Memory model"
|
7 |
|
|
depends on SELECT_MEMORY_MODEL
|
8 |
|
|
default DISCONTIGMEM_MANUAL if ARCH_DISCONTIGMEM_DEFAULT
|
9 |
|
|
default SPARSEMEM_MANUAL if ARCH_SPARSEMEM_DEFAULT
|
10 |
|
|
default FLATMEM_MANUAL
|
11 |
|
|
|
12 |
|
|
config FLATMEM_MANUAL
|
13 |
|
|
bool "Flat Memory"
|
14 |
|
|
depends on !(ARCH_DISCONTIGMEM_ENABLE || ARCH_SPARSEMEM_ENABLE) || ARCH_FLATMEM_ENABLE
|
15 |
|
|
help
|
16 |
|
|
This option allows you to change some of the ways that
|
17 |
|
|
Linux manages its memory internally. Most users will
|
18 |
|
|
only have one option here: FLATMEM. This is normal
|
19 |
|
|
and a correct option.
|
20 |
|
|
|
21 |
|
|
Some users of more advanced features like NUMA and
|
22 |
|
|
memory hotplug may have different options here.
|
23 |
|
|
DISCONTIGMEM is an more mature, better tested system,
|
24 |
|
|
but is incompatible with memory hotplug and may suffer
|
25 |
|
|
decreased performance over SPARSEMEM. If unsure between
|
26 |
|
|
"Sparse Memory" and "Discontiguous Memory", choose
|
27 |
|
|
"Discontiguous Memory".
|
28 |
|
|
|
29 |
|
|
If unsure, choose this option (Flat Memory) over any other.
|
30 |
|
|
|
31 |
|
|
config DISCONTIGMEM_MANUAL
|
32 |
|
|
bool "Discontiguous Memory"
|
33 |
|
|
depends on ARCH_DISCONTIGMEM_ENABLE
|
34 |
|
|
help
|
35 |
|
|
This option provides enhanced support for discontiguous
|
36 |
|
|
memory systems, over FLATMEM. These systems have holes
|
37 |
|
|
in their physical address spaces, and this option provides
|
38 |
|
|
more efficient handling of these holes. However, the vast
|
39 |
|
|
majority of hardware has quite flat address spaces, and
|
40 |
|
|
can have degraded performance from the extra overhead that
|
41 |
|
|
this option imposes.
|
42 |
|
|
|
43 |
|
|
Many NUMA configurations will have this as the only option.
|
44 |
|
|
|
45 |
|
|
If unsure, choose "Flat Memory" over this option.
|
46 |
|
|
|
47 |
|
|
config SPARSEMEM_MANUAL
|
48 |
|
|
bool "Sparse Memory"
|
49 |
|
|
depends on ARCH_SPARSEMEM_ENABLE
|
50 |
|
|
help
|
51 |
|
|
This will be the only option for some systems, including
|
52 |
|
|
memory hotplug systems. This is normal.
|
53 |
|
|
|
54 |
|
|
For many other systems, this will be an alternative to
|
55 |
|
|
"Discontiguous Memory". This option provides some potential
|
56 |
|
|
performance benefits, along with decreased code complexity,
|
57 |
|
|
but it is newer, and more experimental.
|
58 |
|
|
|
59 |
|
|
If unsure, choose "Discontiguous Memory" or "Flat Memory"
|
60 |
|
|
over this option.
|
61 |
|
|
|
62 |
|
|
endchoice
|
63 |
|
|
|
64 |
|
|
config DISCONTIGMEM
|
65 |
|
|
def_bool y
|
66 |
|
|
depends on (!SELECT_MEMORY_MODEL && ARCH_DISCONTIGMEM_ENABLE) || DISCONTIGMEM_MANUAL
|
67 |
|
|
|
68 |
|
|
config SPARSEMEM
|
69 |
|
|
def_bool y
|
70 |
|
|
depends on SPARSEMEM_MANUAL
|
71 |
|
|
|
72 |
|
|
config FLATMEM
|
73 |
|
|
def_bool y
|
74 |
|
|
depends on (!DISCONTIGMEM && !SPARSEMEM) || FLATMEM_MANUAL
|
75 |
|
|
|
76 |
|
|
config FLAT_NODE_MEM_MAP
|
77 |
|
|
def_bool y
|
78 |
|
|
depends on !SPARSEMEM
|
79 |
|
|
|
80 |
|
|
#
|
81 |
|
|
# Both the NUMA code and DISCONTIGMEM use arrays of pg_data_t's
|
82 |
|
|
# to represent different areas of memory. This variable allows
|
83 |
|
|
# those dependencies to exist individually.
|
84 |
|
|
#
|
85 |
|
|
config NEED_MULTIPLE_NODES
|
86 |
|
|
def_bool y
|
87 |
|
|
depends on DISCONTIGMEM || NUMA
|
88 |
|
|
|
89 |
|
|
config HAVE_MEMORY_PRESENT
|
90 |
|
|
def_bool y
|
91 |
|
|
depends on ARCH_HAVE_MEMORY_PRESENT || SPARSEMEM
|
92 |
|
|
|
93 |
|
|
#
|
94 |
|
|
# SPARSEMEM_EXTREME (which is the default) does some bootmem
|
95 |
|
|
# allocations when memory_present() is called. If this cannot
|
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 |
|
|
#
|
107 |
|
|
# Architecture platforms which require a two level mem_section in SPARSEMEM
|
108 |
|
|
# must select this option. This is usually for architecture platforms with
|
109 |
|
|
# an extremely sparse physical address space.
|
110 |
|
|
#
|
111 |
|
|
config SPARSEMEM_EXTREME
|
112 |
|
|
def_bool y
|
113 |
|
|
depends on SPARSEMEM && !SPARSEMEM_STATIC
|
114 |
|
|
|
115 |
|
|
config SPARSEMEM_VMEMMAP_ENABLE
|
116 |
|
|
def_bool n
|
117 |
|
|
|
118 |
|
|
config SPARSEMEM_VMEMMAP
|
119 |
|
|
bool "Sparse Memory virtual memmap"
|
120 |
|
|
depends on SPARSEMEM && SPARSEMEM_VMEMMAP_ENABLE
|
121 |
|
|
default y
|
122 |
|
|
help
|
123 |
|
|
SPARSEMEM_VMEMMAP uses a virtually mapped memmap to optimise
|
124 |
|
|
pfn_to_page and page_to_pfn operations. This is the most
|
125 |
|
|
efficient option when sufficient kernel resources are available.
|
126 |
|
|
|
127 |
|
|
# eventually, we can have this option just 'select SPARSEMEM'
|
128 |
|
|
config MEMORY_HOTPLUG
|
129 |
|
|
bool "Allow for memory hot-add"
|
130 |
|
|
depends on SPARSEMEM || X86_64_ACPI_NUMA
|
131 |
|
|
depends on HOTPLUG && !HIBERNATION && ARCH_ENABLE_MEMORY_HOTPLUG
|
132 |
|
|
depends on (IA64 || X86 || PPC64 || SUPERH)
|
133 |
|
|
|
134 |
|
|
comment "Memory hotplug is currently incompatible with Software Suspend"
|
135 |
|
|
depends on SPARSEMEM && HOTPLUG && HIBERNATION
|
136 |
|
|
|
137 |
|
|
config MEMORY_HOTPLUG_SPARSE
|
138 |
|
|
def_bool y
|
139 |
|
|
depends on SPARSEMEM && MEMORY_HOTPLUG
|
140 |
|
|
|
141 |
|
|
config MEMORY_HOTREMOVE
|
142 |
|
|
bool "Allow for memory hot remove"
|
143 |
|
|
depends on MEMORY_HOTPLUG && ARCH_ENABLE_MEMORY_HOTREMOVE
|
144 |
|
|
depends on MIGRATION
|
145 |
|
|
|
146 |
|
|
# Heavily threaded applications may benefit from splitting the mm-wide
|
147 |
|
|
# page_table_lock, so that faults on different parts of the user address
|
148 |
|
|
# space can be handled with less contention: split it at this NR_CPUS.
|
149 |
|
|
# Default to 4 for wider testing, though 8 might be more appropriate.
|
150 |
|
|
# ARM's adjust_pte (unused if VIPT) depends on mm-wide page_table_lock.
|
151 |
|
|
# PA-RISC 7xxx's spinlock_t would enlarge struct page from 32 to 44 bytes.
|
152 |
|
|
#
|
153 |
|
|
config SPLIT_PTLOCK_CPUS
|
154 |
|
|
int
|
155 |
|
|
default "4096" if ARM && !CPU_CACHE_VIPT
|
156 |
|
|
default "4096" if PARISC && !PA20
|
157 |
|
|
default "4"
|
158 |
|
|
|
159 |
|
|
#
|
160 |
|
|
# support for page migration
|
161 |
|
|
#
|
162 |
|
|
config MIGRATION
|
163 |
|
|
bool "Page migration"
|
164 |
|
|
def_bool y
|
165 |
|
|
depends on NUMA
|
166 |
|
|
help
|
167 |
|
|
Allows the migration of the physical location of pages of processes
|
168 |
|
|
while the virtual addresses are not changed. This is useful for
|
169 |
|
|
example on NUMA systems to put pages nearer to the processors accessing
|
170 |
|
|
the page.
|
171 |
|
|
|
172 |
|
|
config RESOURCES_64BIT
|
173 |
|
|
bool "64 bit Memory and IO resources (EXPERIMENTAL)" if (!64BIT && EXPERIMENTAL)
|
174 |
|
|
default 64BIT
|
175 |
|
|
help
|
176 |
|
|
This option allows memory and IO resources to be 64 bit.
|
177 |
|
|
|
178 |
|
|
config ZONE_DMA_FLAG
|
179 |
|
|
int
|
180 |
|
|
default "0" if !ZONE_DMA
|
181 |
|
|
default "1"
|
182 |
|
|
|
183 |
|
|
config BOUNCE
|
184 |
|
|
def_bool y
|
185 |
|
|
depends on BLOCK && MMU && (ZONE_DMA || HIGHMEM)
|
186 |
|
|
|
187 |
|
|
config NR_QUICK
|
188 |
|
|
int
|
189 |
|
|
depends on QUICKLIST
|
190 |
|
|
default "2" if (SUPERH && !SUPERH64)
|
191 |
|
|
default "1"
|
192 |
|
|
|
193 |
|
|
config VIRT_TO_BUS
|
194 |
|
|
def_bool y
|
195 |
|
|
depends on !ARCH_NO_VIRT_TO_BUS
|