arch/xtensa/Kconfig v2.6.32-rc8

FLATMEM_MANUAL

Flat Memory

This option allows you to change some of the ways that
Linux manages its memory internally.  Most users will
only have one option here: FLATMEM.  This is normal
and a correct option.

Some users of more advanced features like NUMA and
memory hotplug may have different options here.
DISCONTIGMEM is an more mature, better tested system,
but is incompatible with memory hotplug and may suffer
decreased performance over SPARSEMEM.  If unsure between
"Sparse Memory" and "Discontiguous Memory", choose
"Discontiguous Memory".

If unsure, choose this option (Flat Memory) over any other.

DISCONTIGMEM_MANUAL

Discontiguous Memory

This option provides enhanced support for discontiguous
memory systems, over FLATMEM.  These systems have holes
in their physical address spaces, and this option provides
more efficient handling of these holes.  However, the vast
majority of hardware has quite flat address spaces, and
can have degraded performance from the extra overhead that
this option imposes.

Many NUMA configurations will have this as the only option.

If unsure, choose "Flat Memory" over this option.

SPARSEMEM_MANUAL

Sparse Memory

This will be the only option for some systems, including
memory hotplug systems.  This is normal.

For many other systems, this will be an alternative to
"Discontiguous Memory".  This option provides some potential
performance benefits, along with decreased code complexity,
but it is newer, and more experimental.

If unsure, choose "Discontiguous Memory" or "Flat Memory"
over this option.

SPARSEMEM_VMEMMAP

Sparse Memory virtual memmap

SPARSEMEM_VMEMMAP uses a virtually mapped memmap to optimise
pfn_to_page and page_to_pfn operations.  This is the most
efficient option when sufficient kernel resources are available.

MIGRATION

Page migration

Allows the migration of the physical location of pages of processes
while the virtual addresses are not changed. This is useful for
example on NUMA systems to put pages nearer to the processors accessing
the page.

KSM

Enable KSM for page merging

Enable Kernel Samepage Merging: KSM periodically scans those areas
of an application's address space that an app has advised may be
mergeable.  When it finds pages of identical content, it replaces
the many instances by a single resident page with that content, so
saving memory until one or another app needs to modify the content.
Recommended for use with KVM, or with other duplicative applications.
See Documentation/vm/ksm.txt for more information: KSM is inactive
until a program has madvised that an area is MADV_MERGEABLE, and
root has set /sys/kernel/mm/ksm/run to 1 (if CONFIG_SYSFS is set).

DEFAULT_MMAP_MIN_ADDR

Low address space to protect from user allocation

This is the portion of low virtual memory which should be protected
from userspace allocation.  Keeping a user from writing to low pages
can help reduce the impact of kernel NULL pointer bugs.

For most ia64, ppc64 and x86 users with lots of address space
a value of 65536 is reasonable and should cause no problems.
On arm and other archs it should not be higher than 32768.
Programs which use vm86 functionality or have some need to map
this low address space will need CAP_SYS_RAWIO or disable this
protection by setting the value to 0.

This value can be changed after boot using the
/proc/sys/vm/mmap_min_addr tunable.

MEMORY_FAILURE

Enable recovery from hardware memory errors

Enables code to recover from some memory failures on systems
with MCA recovery. This allows a system to continue running
even when some of its memory has uncorrected errors. This requires
special hardware support and typically ECC memory.

NOMMU_INITIAL_TRIM_EXCESS

Turn on mmap() excess space trimming before booting

The NOMMU mmap() frequently needs to allocate large contiguous chunks
of memory on which to store mappings, but it can only ask the system
allocator for chunks in 2^N*PAGE_SIZE amounts - which is frequently
more than it requires.  To deal with this, mmap() is able to trim off
the excess and return it to the allocator.

If trimming is enabled, the excess is trimmed off and returned to the
system allocator, which can cause extra fragmentation, particularly
if there are a lot of transient processes.

If trimming is disabled, the excess is kept, but not used, which for
long-term mappings means that the space is wasted.

Trimming can be dynamically controlled through a sysctl option
(/proc/sys/vm/nr_trim_pages) which specifies the minimum number of
excess pages there must be before trimming should occur, or zero if
no trimming is to occur.

This option specifies the initial value of this option.  The default
of 1 says that all excess pages should be trimmed.

See Documentation/nommu-mmap.txt for more information.