arch/xtensa/Kconfig v2.6.32-rc5


Menu: General setup

EXPERIMENTAL

Prompt for development and/or incomplete code/drivers

Some of the various things that Linux supports (such as network
drivers, file systems, network protocols, etc.) can be in a state
of development where the functionality, stability, or the level of
testing is not yet high enough for general use. This is usually
known as the "alpha-test" phase among developers. If a feature is
currently in alpha-test, then the developers usually discourage
uninformed widespread use of this feature by the general public to
avoid "Why doesn't this work?" type mail messages. However, active
testing and use of these systems is welcomed. Just be aware that it
may not meet the normal level of reliability or it may fail to work
in some special cases. Detailed bug reports from people familiar
with the kernel internals are usually welcomed by the developers
(before submitting bug reports, please read the documents
<file:README>, <file:MAINTAINERS>, <file:REPORTING-BUGS>,
<file:Documentation/BUG-HUNTING>, and
<file:Documentation/oops-tracing.txt> in the kernel source).

This option will also make obsoleted drivers available. These are
drivers that have been replaced by something else, and/or are
scheduled to be removed in a future kernel release.

Unless you intend to help test and develop a feature or driver that
falls into this category, or you have a situation that requires
using these features, you should probably say N here, which will
cause the configurator to present you with fewer choices. If
you say Y here, you will be offered the choice of using features or
drivers that are currently considered to be in the alpha-test phase.

INIT_ENV_ARG_LIMIT

Maximum of each of the number of arguments and environment
variables passed to init from the kernel command line.


LOCALVERSION

Local version - append to kernel release

Append an extra string to the end of your kernel version.
This will show up when you type uname, for example.
The string you set here will be appended after the contents of
any files with a filename matching localversion* in your
object and source tree, in that order.  Your total string can
be a maximum of 64 characters.

LOCALVERSION_AUTO

Automatically append version information to the version string

This will try to automatically determine if the current tree is a
release tree by looking for git tags that belong to the current
top of tree revision.

A string of the format -gxxxxxxxx will be added to the localversion
if a git-based tree is found.  The string generated by this will be
appended after any matching localversion* files, and after the value
set in CONFIG_LOCALVERSION.

(The actual string used here is the first eight characters produced
by running the command:

$ git rev-parse --verify HEAD

which is done within the script "scripts/setlocalversion".)

HAVE_KERNEL_LZMA

Kernel compression mode

The linux kernel is a kind of self-extracting executable.
Several compression algorithms are available, which differ
in efficiency, compression and decompression speed.
Compression speed is only relevant when building a kernel.
Decompression speed is relevant at each boot.

If you have any problems with bzip2 or lzma compressed
kernels, mail me (Alain Knaff) <alain@knaff.lu>. (An older
version of this functionality (bzip2 only), for 2.4, was
supplied by Christian Ludwig)

High compression options are mostly useful for users, who
are low on disk space (embedded systems), but for whom ram
size matters less.

If in doubt, select 'gzip'

KERNEL_GZIP

Gzip

The old and tried gzip compression. Its compression ratio is
the poorest among the 3 choices; however its speed (both
compression and decompression) is the fastest.

KERNEL_BZIP2

Bzip2

Its compression ratio and speed is intermediate.
Decompression speed is slowest among the three.  The kernel
size is about 10% smaller with bzip2, in comparison to gzip.
Bzip2 uses a large amount of memory. For modern kernels you
will need at least 8MB RAM or more for booting.

KERNEL_LZMA

LZMA

The most recent compression algorithm.
Its ratio is best, decompression speed is between the other
two. Compression is slowest.  The kernel size is about 33%
smaller with LZMA in comparison to gzip.

SWAP

Support for paging of anonymous memory (swap)

This option allows you to choose whether you want to have support
for so called swap devices or swap files in your kernel that are
used to provide more virtual memory than the actual RAM present
in your computer.  If unsure say Y.

SYSVIPC

System V IPC

Inter Process Communication is a suite of library functions and
system calls which let processes (running programs) synchronize and
exchange information. It is generally considered to be a good thing,
and some programs won't run unless you say Y here. In particular, if
you want to run the DOS emulator dosemu under Linux (read the
DOSEMU-HOWTO, available from <http://www.tldp.org/docs.html#howto>),
you'll need to say Y here.

You can find documentation about IPC with "info ipc" and also in
section 6.4 of the Linux Programmer's Guide, available from
<http://www.tldp.org/guides.html>.

POSIX_MQUEUE

POSIX Message Queues

POSIX variant of message queues is a part of IPC. In POSIX message
queues every message has a priority which decides about succession
of receiving it by a process. If you want to compile and run
programs written e.g. for Solaris with use of its POSIX message
queues (functions mq_*) say Y here.

POSIX message queues are visible as a filesystem called 'mqueue'
and can be mounted somewhere if you want to do filesystem
operations on message queues.

If unsure, say Y.

BSD_PROCESS_ACCT

BSD Process Accounting

If you say Y here, a user level program will be able to instruct the
kernel (via a special system call) to write process accounting
information to a file: whenever a process exits, information about
that process will be appended to the file by the kernel.  The
information includes things such as creation time, owning user,
command name, memory usage, controlling terminal etc. (the complete
list is in the struct acct in <file:include/linux/acct.h>).  It is
up to the user level program to do useful things with this
information.  This is generally a good idea, so say Y.

BSD_PROCESS_ACCT_V3

BSD Process Accounting version 3 file format

If you say Y here, the process accounting information is written
in a new file format that also logs the process IDs of each
process and it's parent. Note that this file format is incompatible
with previous v0/v1/v2 file formats, so you will need updated tools
for processing it. A preliminary version of these tools is available
at <http://www.gnu.org/software/acct/>.

TASKSTATS

Export task/process statistics through netlink (EXPERIMENTAL)

Export selected statistics for tasks/processes through the
generic netlink interface. Unlike BSD process accounting, the
statistics are available during the lifetime of tasks/processes as
responses to commands. Like BSD accounting, they are sent to user
space on task exit.

Say N if unsure.

TASK_DELAY_ACCT

Enable per-task delay accounting (EXPERIMENTAL)

Collect information on time spent by a task waiting for system
resources like cpu, synchronous block I/O completion and swapping
in pages. Such statistics can help in setting a task's priorities
relative to other tasks for cpu, io, rss limits etc.

Say N if unsure.

TASK_XACCT

Enable extended accounting over taskstats (EXPERIMENTAL)

Collect extended task accounting data and send the data
to userland for processing over the taskstats interface.

Say N if unsure.

TASK_IO_ACCOUNTING

Enable per-task storage I/O accounting (EXPERIMENTAL)

Collect information on the number of bytes of storage I/O which this
task has caused.

Say N if unsure.

AUDIT

Auditing support

Enable auditing infrastructure that can be used with another
kernel subsystem, such as SELinux (which requires this for
logging of avc messages output).  Does not do system-call
auditing without CONFIG_AUDITSYSCALL.

AUDITSYSCALL

Enable system-call auditing support

Enable low-overhead system-call auditing infrastructure that
can be used independently or with another kernel subsystem,
such as SELinux.  To use audit's filesystem watch feature, please
ensure that INOTIFY is configured.


Menu: RCU Subsystem

TREE_RCU

Tree-based hierarchical RCU

This option selects the RCU implementation that is
designed for very large SMP system with hundreds or
thousands of CPUs.  It also scales down nicely to
smaller systems.

TREE_PREEMPT_RCU

Preemptable tree-based hierarchical RCU

This option selects the RCU implementation that is
designed for very large SMP systems with hundreds or
thousands of CPUs, but for which real-time response
is also required.  It also scales down nicely to
smaller systems.

RCU_TRACE

Enable tracing for RCU

This option provides tracing in RCU which presents stats
in debugfs for debugging RCU implementation.

Say Y here if you want to enable RCU tracing
Say N if you are unsure.

RCU_FANOUT

Tree-based hierarchical RCU fanout value

This option controls the fanout of hierarchical implementations
of RCU, allowing RCU to work efficiently on machines with
large numbers of CPUs.  This value must be at least the cube
root of NR_CPUS, which allows NR_CPUS up to 32,768 for 32-bit
systems and up to 262,144 for 64-bit systems.

Select a specific number if testing RCU itself.
Take the default if unsure.

RCU_FANOUT_EXACT

Disable tree-based hierarchical RCU auto-balancing

This option forces use of the exact RCU_FANOUT value specified,
regardless of imbalances in the hierarchy.  This is useful for
testing RCU itself, and might one day be useful on systems with
strong NUMA behavior.

Without RCU_FANOUT_EXACT, the code will balance the hierarchy.

Say N if unsure.

TREE_RCU_TRACE

This option provides tracing for the TREE_RCU and
TREE_PREEMPT_RCU implementations, permitting Makefile to
trivially select kernel/rcutree_trace.c.


IKCONFIG

Kernel .config support

This option enables the complete Linux kernel ".config" file
contents to be saved in the kernel. It provides documentation
of which kernel options are used in a running kernel or in an
on-disk kernel.  This information can be extracted from the kernel
image file with the script scripts/extract-ikconfig and used as
input to rebuild the current kernel or to build another kernel.
It can also be extracted from a running kernel by reading
/proc/config.gz if enabled (below).

IKCONFIG_PROC

Enable access to .config through /proc/config.gz

This option enables access to the kernel configuration file
through /proc/config.gz.

LOG_BUF_SHIFT

Kernel log buffer size (16 => 64KB, 17 => 128KB)

Select kernel log buffer size as a power of 2.
Examples:
17 => 128 KB
16 => 64 KB
15 => 32 KB
14 => 16 KB
13 =>  8 KB
12 =>  4 KB

GROUP_SCHED

Group CPU scheduler

This feature lets CPU scheduler recognize task groups and control CPU
bandwidth allocation to such task groups.
In order to create a group from arbitrary set of processes, use
CONFIG_CGROUPS. (See Control Group support.)

RT_GROUP_SCHED

Group scheduling for SCHED_RR/FIFO

This feature lets you explicitly allocate real CPU bandwidth
to users or control groups (depending on the "Basis for grouping tasks"
setting below. If enabled, it will also make it impossible to
schedule realtime tasks for non-root users until you allocate
realtime bandwidth for them.
See Documentation/scheduler/sched-rt-group.txt for more information.

USER_SCHED

user id

This option will choose userid as the basis for grouping
tasks, thus providing equal CPU bandwidth to each user.

CGROUP_SCHED

Control groups

This option allows you to create arbitrary task groups
using the "cgroup" pseudo filesystem and control
the cpu bandwidth allocated to each such task group.
Refer to Documentation/cgroups/cgroups.txt for more
information on "cgroup" pseudo filesystem.

CGROUPS

Control Group support

This option adds support for grouping sets of processes together, for
use with process control subsystems such as Cpusets, CFS, memory
controls or device isolation.
See
- Documentation/scheduler/sched-design-CFS.txt  (CFS)
- Documentation/cgroups/ (features for grouping, isolation
and resource control)

Say N if unsure.

CGROUP_DEBUG

Example debug cgroup subsystem

This option enables a simple cgroup subsystem that
exports useful debugging information about the cgroups
framework.

Say N if unsure.

CGROUP_NS

Namespace cgroup subsystem

Provides a simple namespace cgroup subsystem to
provide hierarchical naming of sets of namespaces,
for instance virtual servers and checkpoint/restart
jobs.

CGROUP_FREEZER

Freezer cgroup subsystem

Provides a way to freeze and unfreeze all tasks in a
cgroup.

CGROUP_DEVICE

Device controller for cgroups

Provides a cgroup implementing whitelists for devices which
a process in the cgroup can mknod or open.

CPUSETS

Cpuset support

This option will let you create and manage CPUSETs which
allow dynamically partitioning a system into sets of CPUs and
Memory Nodes and assigning tasks to run only within those sets.
This is primarily useful on large SMP or NUMA systems.

Say N if unsure.

CGROUP_CPUACCT

Simple CPU accounting cgroup subsystem

Provides a simple Resource Controller for monitoring the
total CPU consumed by the tasks in a cgroup.

RESOURCE_COUNTERS

Resource counters

This option enables controller independent resource accounting
infrastructure that works with cgroups.
depends on CGROUPS

CGROUP_MEM_RES_CTLR

Memory Resource Controller for Control Groups

Provides a memory resource controller that manages both anonymous
memory and page cache. (See Documentation/cgroups/memory.txt)

Note that setting this option increases fixed memory overhead
associated with each page of memory in the system. By this,
20(40)bytes/PAGE_SIZE on 32(64)bit system will be occupied by memory
usage tracking struct at boot. Total amount of this is printed out
at boot.

Only enable when you're ok with these trade offs and really
sure you need the memory resource controller. Even when you enable
this, you can set "cgroup_disable=memory" at your boot option to
disable memory resource controller and you can avoid overheads.
(and lose benefits of memory resource controller)

This config option also selects MM_OWNER config option, which
could in turn add some fork/exit overhead.

CGROUP_MEM_RES_CTLR_SWAP

Memory Resource Controller Swap Extension(EXPERIMENTAL)

Add swap management feature to memory resource controller. When you
enable this, you can limit mem+swap usage per cgroup. In other words,
when you disable this, memory resource controller has no cares to
usage of swap...a process can exhaust all of the swap. This extension
is useful when you want to avoid exhaustion swap but this itself
adds more overheads and consumes memory for remembering information.
Especially if you use 32bit system or small memory system, please
be careful about enabling this. When memory resource controller
is disabled by boot option, this will be automatically disabled and
there will be no overhead from this. Even when you set this config=y,
if boot option "noswapaccount" is set, swap will not be accounted.
Now, memory usage of swap_cgroup is 2 bytes per entry. If swap page
size is 4096bytes, 512k per 1Gbytes of swap.

SYSFS_DEPRECATED_V2

remove sysfs features which may confuse old userspace tools

This option switches the layout of sysfs to the deprecated
version. Do not use it on recent distributions.

The current sysfs layout features a unified device tree at
/sys/devices/, which is able to express a hierarchy between
class devices. If the deprecated option is set to Y, the
unified device tree is split into a bus device tree at
/sys/devices/ and several individual class device trees at
/sys/class/. The class and bus devices will be connected by
"<subsystem>:<name>" and the "device" links. The "block"
class devices, will not show up in /sys/class/block/. Some
subsystems will suppress the creation of some devices which
depend on the unified device tree.

This option is not a pure compatibility option that can
be safely enabled on newer distributions. It will change the
layout of sysfs to the non-extensible deprecated version,
and disable some features, which can not be exported without
confusing older userspace tools. Since 2007/2008 all major
distributions do not enable this option, and ship no tools which
depend on the deprecated layout or this option.

If you are using a new kernel on an older distribution, or use
older userspace tools, you might need to say Y here. Do not say Y,
if the original kernel, that came with your distribution, has
this option set to N.

RELAY

Kernel->user space relay support (formerly relayfs)

This option enables support for relay interface support in
certain file systems (such as debugfs).
It is designed to provide an efficient mechanism for tools and
facilities to relay large amounts of data from kernel space to
user space.

If unsure, say N.

NAMESPACES

Namespaces support

Provides the way to make tasks work with different objects using
the same id. For example same IPC id may refer to different objects
or same user id or pid may refer to different tasks when used in
different namespaces.

UTS_NS

UTS namespace

In this namespace tasks see different info provided with the
uname() system call

IPC_NS

IPC namespace

In this namespace tasks work with IPC ids which correspond to
different IPC objects in different namespaces.

USER_NS

User namespace (EXPERIMENTAL)

This allows containers, i.e. vservers, to use user namespaces
to provide different user info for different servers.
If unsure, say N.

PID_NS

PID Namespaces (EXPERIMENTAL)

Support process id namespaces.  This allows having multiple
processes with the same pid as long as they are in different
pid namespaces.  This is a building block of containers.

Unless you want to work with an experimental feature
say N here.

NET_NS

Network namespace

Allow user space to create what appear to be multiple instances
of the network stack.

BLK_DEV_INITRD

Initial RAM filesystem and RAM disk (initramfs/initrd) support

The initial RAM filesystem is a ramfs which is loaded by the
boot loader (loadlin or lilo) and that is mounted as root
before the normal boot procedure. It is typically used to
load modules needed to mount the "real" root file system,
etc. See <file:Documentation/initrd.txt> for details.

If RAM disk support (BLK_DEV_RAM) is also included, this
also enables initial RAM disk (initrd) support and adds
15 Kbytes (more on some other architectures) to the kernel size.

If unsure say Y.

/home/landley/www/kdocs/menuconfig/usr-Kconfig.html

CC_OPTIMIZE_FOR_SIZE

Optimize for size

Enabling this option will pass "-Os" instead of "-O2" to gcc
resulting in a smaller kernel.

If unsure, say Y.

EMBEDDED

Configure standard kernel features (for small systems)

This option allows certain base kernel options and settings
to be disabled or tweaked. This is for specialized
environments which can tolerate a "non-standard" kernel.
Only use this if you really know what you are doing.

UID16

Enable 16-bit UID system calls

This enables the legacy 16-bit UID syscall wrappers.

SYSCTL_SYSCALL

Sysctl syscall support

sys_sysctl uses binary paths that have been found challenging
to properly maintain and use.  The interface in /proc/sys
using paths with ascii names is now the primary path to this
information.

Almost nothing using the binary sysctl interface so if you are
trying to save some space it is probably safe to disable this,
making your kernel marginally smaller.

If unsure say Y here.

KALLSYMS

Load all symbols for debugging/ksymoops

Say Y here to let the kernel print out symbolic crash information and
symbolic stack backtraces. This increases the size of the kernel
somewhat, as all symbols have to be loaded into the kernel image.

KALLSYMS_ALL

Include all symbols in kallsyms

Normally kallsyms only contains the symbols of functions, for nicer
OOPS messages.  Some debuggers can use kallsyms for other
symbols too: say Y here to include all symbols, if you need them
and you don't care about adding 300k to the size of your kernel.

Say N.

KALLSYMS_EXTRA_PASS

Do an extra kallsyms pass

If kallsyms is not working correctly, the build will fail with
inconsistent kallsyms data.  If that occurs, log a bug report and
turn on KALLSYMS_EXTRA_PASS which should result in a stable build.
Always say N here unless you find a bug in kallsyms, which must be
reported.  KALLSYMS_EXTRA_PASS is only a temporary workaround while
you wait for kallsyms to be fixed.


HOTPLUG

Support for hot-pluggable devices

This option is provided for the case where no hotplug or uevent
capabilities is wanted by the kernel.  You should only consider
disabling this option for embedded systems that do not use modules, a
dynamic /dev tree, or dynamic device discovery.  Just say Y.

PRINTK

Enable support for printk

This option enables normal printk support. Removing it
eliminates most of the message strings from the kernel image
and makes the kernel more or less silent. As this makes it
very difficult to diagnose system problems, saying N here is
strongly discouraged.

BUG

BUG() support

Disabling this option eliminates support for BUG and WARN, reducing
the size of your kernel image and potentially quietly ignoring
numerous fatal conditions. You should only consider disabling this
option for embedded systems with no facilities for reporting errors.
Just say Y.

ELF_CORE

Enable ELF core dumps

Enable support for generating core dumps. Disabling saves about 4k.

PCSPKR_PLATFORM

Enable PC-Speaker support

This option allows to disable the internal PC-Speaker
support, saving some memory.

BASE_FULL

Enable full-sized data structures for core

Disabling this option reduces the size of miscellaneous core
kernel data structures. This saves memory on small machines,
but may reduce performance.

FUTEX

Enable futex support

Disabling this option will cause the kernel to be built without
support for "fast userspace mutexes".  The resulting kernel may not
run glibc-based applications correctly.

EPOLL

Enable eventpoll support

Disabling this option will cause the kernel to be built without
support for epoll family of system calls.

SIGNALFD

Enable signalfd() system call

Enable the signalfd() system call that allows to receive signals
on a file descriptor.

If unsure, say Y.

TIMERFD

Enable timerfd() system call

Enable the timerfd() system call that allows to receive timer
events on a file descriptor.

If unsure, say Y.

EVENTFD

Enable eventfd() system call

Enable the eventfd() system call that allows to receive both
kernel notification (ie. KAIO) or userspace notifications.

If unsure, say Y.

SHMEM

Use full shmem filesystem

The shmem is an internal filesystem used to manage shared memory.
It is backed by swap and manages resource limits. It is also exported
to userspace as tmpfs if TMPFS is enabled. Disabling this
option replaces shmem and tmpfs with the much simpler ramfs code,
which may be appropriate on small systems without swap.

AIO

Enable AIO support

This option enables POSIX asynchronous I/O which may by used
by some high performance threaded applications. Disabling
this option saves about 7k.

HAVE_PERF_EVENTS

See tools/perf/design.txt for details.

PERF_USE_VMALLOC

See tools/perf/design.txt for details


Menu: Kernel Performance Events And Counters

PERF_EVENTS

Kernel performance events and counters

Enable kernel support for various performance events provided
by software and hardware.

Software events are supported either build-in or via the
use of generic tracepoints.

Most modern CPUs support performance events via performance
counter registers. These registers count the number of certain
types of hw events: such as instructions executed, cachemisses
suffered, or branches mis-predicted - without slowing down the
kernel or applications. These registers can also trigger interrupts
when a threshold number of events have passed - and can thus be
used to profile the code that runs on that CPU.

The Linux Performance Event subsystem provides an abstraction of
these software and hardware cevent apabilities, available via a
system call and used by the "perf" utility in tools/perf/. It
provides per task and per CPU counters, and it provides event
capabilities on top of those.

Say Y if unsure.

EVENT_PROFILE

Tracepoint profiling sources

Allow the use of tracepoints as software performance events.

When this is enabled, you can create perf events based on
tracepoints using PERF_TYPE_TRACEPOINT and the tracepoint ID
found in debugfs://tracing/events/*/*/id. (The -e/--events
option to the perf tool can parse and interpret symbolic
tracepoints, in the subsystem:tracepoint_name format.)

PERF_COUNTERS

Kernel performance counters (old config option)

This config has been obsoleted by the PERF_EVENTS
config option - please see that one for details.

It has no effect on the kernel whether you enable
it or not, it is a compatibility placeholder.

Say N if unsure.

DEBUG_PERF_USE_VMALLOC

Debug: use vmalloc to back perf mmap() buffers

Use vmalloc memory to back perf mmap() buffers.

Mostly useful for debugging the vmalloc code on platforms
that don't require it.

Say N if unsure.


VM_EVENT_COUNTERS

Enable VM event counters for /proc/vmstat

VM event counters are needed for event counts to be shown.
This option allows the disabling of the VM event counters
on EMBEDDED systems.  /proc/vmstat will only show page counts
if VM event counters are disabled.

PCI_QUIRKS

Enable PCI quirk workarounds

This enables workarounds for various PCI chipset
bugs/quirks. Disable this only if your target machine is
unaffected by PCI quirks.

SLUB_DEBUG

Enable SLUB debugging support

SLUB has extensive debug support features. Disabling these can
result in significant savings in code size. This also disables
SLUB sysfs support. /sys/slab will not exist and there will be
no support for cache validation etc.

COMPAT_BRK

Disable heap randomization

Randomizing heap placement makes heap exploits harder, but it
also breaks ancient binaries (including anything libc5 based).
This option changes the bootup default to heap randomization
disabled, and can be overridden at runtime by setting
/proc/sys/kernel/randomize_va_space to 2.

On non-ancient distros (post-2000 ones) N is usually a safe choice.

COMPAT_BRK

Choose SLAB allocator

This option allows to select a slab allocator.

SLAB

SLAB

The regular slab allocator that is established and known to work
well in all environments. It organizes cache hot objects in
per cpu and per node queues.

SLUB

SLUB (Unqueued Allocator)

SLUB is a slab allocator that minimizes cache line usage
instead of managing queues of cached objects (SLAB approach).
Per cpu caching is realized using slabs of objects instead
of queues of objects. SLUB can use memory efficiently
and has enhanced diagnostics. SLUB is the default choice for
a slab allocator.

SLOB

SLOB (Simple Allocator)

SLOB replaces the stock allocator with a drastically simpler
allocator. SLOB is generally more space efficient but
does not perform as well on large systems.

PROFILING

Profiling support (EXPERIMENTAL)

Say Y here to enable the extended profiling support mechanisms used
by profilers such as OProfile.

/home/landley/www/kdocs/menuconfig/arch-Kconfig.html

SLOW_WORK

The slow work thread pool provides a number of dynamically allocated
threads that can be used by the kernel to perform operations that
take a relatively long time.

An example of this would be CacheFiles doing a path lookup followed
by a series of mkdirs and a create call, all of which have to touch
disk.

See Documentation/slow-work.txt.


MODULES

Enable loadable module support

Kernel modules are small pieces of compiled code which can
be inserted in the running kernel, rather than being
permanently built into the kernel.  You use the "modprobe"
tool to add (and sometimes remove) them.  If you say Y here,
many parts of the kernel can be built as modules (by
answering M instead of Y where indicated): this is most
useful for infrequently used options which are not required
for booting.  For more information, see the man pages for
modprobe, lsmod, modinfo, insmod and rmmod.

If you say Y here, you will need to run "make
modules_install" to put the modules under /lib/modules/
where modprobe can find them (you may need to be root to do
this).

If unsure, say Y.

MODULE_FORCE_LOAD

Forced module loading

Allow loading of modules without version information (ie. modprobe
--force).  Forced module loading sets the 'F' (forced) taint flag and
is usually a really bad idea.

MODULE_UNLOAD

Module unloading

Without this option you will not be able to unload any
modules (note that some modules may not be unloadable
anyway), which makes your kernel smaller, faster
and simpler.  If unsure, say Y.

MODULE_FORCE_UNLOAD

Forced module unloading

This option allows you to force a module to unload, even if the
kernel believes it is unsafe: the kernel will remove the module
without waiting for anyone to stop using it (using the -f option to
rmmod).  This is mainly for kernel developers and desperate users.
If unsure, say N.

MODVERSIONS

Module versioning support

Usually, you have to use modules compiled with your kernel.
Saying Y here makes it sometimes possible to use modules
compiled for different kernels, by adding enough information
to the modules to (hopefully) spot any changes which would
make them incompatible with the kernel you are running.  If
unsure, say N.

MODULE_SRCVERSION_ALL

Source checksum for all modules

Modules which contain a MODULE_VERSION get an extra "srcversion"
field inserted into their modinfo section, which contains a
sum of the source files which made it.  This helps maintainers
see exactly which source was used to build a module (since
others sometimes change the module source without updating
the version).  With this option, such a "srcversion" field
will be created for all modules.  If unsure, say N.

INIT_ALL_POSSIBLE

Back when each arch used to define their own cpu_online_map and
cpu_possible_map, some of them chose to initialize cpu_possible_map
with all 1s, and others with all 0s.  When they were centralised,
it was better to provide this option than to break all the archs
and have several arch maintainers pursuing me down dark alleys.

STOP_MACHINE

Need stop_machine() primitive.

/home/landley/www/kdocs/menuconfig/block-Kconfig.html