]> nv-tegra.nvidia Code Review - linux-2.6.git/blobdiff - init/Kconfig
audit: only allow tasks to set their loginuid if it is -1
[linux-2.6.git] / init / Kconfig
index 59f62548c2aaa3052a117734be11aac8548ed8db..5ad8b775f2ac26f79497773d107d8faae123d24b 100644 (file)
@@ -19,7 +19,13 @@ config DEFCONFIG_LIST
 config CONSTRUCTORS
        bool
        depends on !UML
-       default y
+
+config HAVE_IRQ_WORK
+       bool
+
+config IRQ_WORK
+       bool
+       depends on HAVE_IRQ_WORK
 
 menu "General setup"
 
@@ -62,11 +68,6 @@ config BROKEN_ON_SMP
        depends on BROKEN || !SMP
        default y
 
-config LOCK_KERNEL
-       bool
-       depends on SMP || PREEMPT
-       default y
-
 config INIT_ENV_ARG_LIMIT
        int
        default 32 if !UML
@@ -123,13 +124,16 @@ config HAVE_KERNEL_BZIP2
 config HAVE_KERNEL_LZMA
        bool
 
+config HAVE_KERNEL_XZ
+       bool
+
 config HAVE_KERNEL_LZO
        bool
 
 choice
        prompt "Kernel compression mode"
        default KERNEL_GZIP
-       depends on HAVE_KERNEL_GZIP || HAVE_KERNEL_BZIP2 || HAVE_KERNEL_LZMA || HAVE_KERNEL_LZO
+       depends on HAVE_KERNEL_GZIP || HAVE_KERNEL_BZIP2 || HAVE_KERNEL_LZMA || HAVE_KERNEL_XZ || HAVE_KERNEL_LZO
        help
          The linux kernel is a kind of self-extracting executable.
          Several compression algorithms are available, which differ
@@ -174,16 +178,40 @@ config KERNEL_LZMA
          two. Compression is slowest.  The kernel size is about 33%
          smaller with LZMA in comparison to gzip.
 
+config KERNEL_XZ
+       bool "XZ"
+       depends on HAVE_KERNEL_XZ
+       help
+         XZ uses the LZMA2 algorithm and instruction set specific
+         BCJ filters which can improve compression ratio of executable
+         code. The size of the kernel is about 30% smaller with XZ in
+         comparison to gzip. On architectures for which there is a BCJ
+         filter (i386, x86_64, ARM, IA-64, PowerPC, and SPARC), XZ
+         will create a few percent smaller kernel than plain LZMA.
+
+         The speed is about the same as with LZMA: The decompression
+         speed of XZ is better than that of bzip2 but worse than gzip
+         and LZO. Compression is slow.
+
 config KERNEL_LZO
        bool "LZO"
        depends on HAVE_KERNEL_LZO
        help
          Its compression ratio is the poorest among the 4. The kernel
-         size is about about 10% bigger than gzip; however its speed
+         size is about 10% bigger than gzip; however its speed
          (both compression and decompression) is the fastest.
 
 endchoice
 
+config DEFAULT_HOSTNAME
+       string "Default hostname"
+       default "(none)"
+       help
+         This option determines the default system hostname before userspace
+         calls sethostname(2). The kernel traditionally uses "(none)" here,
+         but you may wish to use a different default here to make a minimal
+         system more usable with less configuration.
+
 config SWAP
        bool "Support for paging of anonymous memory (swap)"
        depends on MMU && BLOCK
@@ -262,6 +290,18 @@ config BSD_PROCESS_ACCT_V3
          for processing it. A preliminary version of these tools is available
          at <http://www.gnu.org/software/acct/>.
 
+config FHANDLE
+       bool "open by fhandle syscalls"
+       select EXPORTFS
+       help
+         If you say Y here, a user level program will be able to map
+         file names to handle and then later use the handle for
+         different file system operations. This is useful in implementing
+         userspace file servers, which now track files using handles instead
+         of names. The handle would remain the same even if file names
+         get renamed. Enables open_by_handle_at(2) and name_to_handle_at(2)
+         syscalls.
+
 config TASKSTATS
        bool "Export task/process statistics through netlink (EXPERIMENTAL)"
        depends on NET
@@ -307,7 +347,6 @@ config TASK_IO_ACCOUNTING
 config AUDIT
        bool "Auditing support"
        depends on NET
-       select FSNOTIFY
        help
          Enable auditing infrastructure that can be used with another
          kernel subsystem, such as SELinux (which requires this for
@@ -323,11 +362,32 @@ config AUDITSYSCALL
          can be used independently or with another kernel subsystem,
          such as SELinux.
 
+config AUDIT_WATCH
+       def_bool y
+       depends on AUDITSYSCALL
+       select FSNOTIFY
+
 config AUDIT_TREE
        def_bool y
        depends on AUDITSYSCALL
        select FSNOTIFY
 
+config AUDIT_LOGINUID_IMMUTABLE
+       bool "Make audit loginuid immutable"
+       depends on AUDIT
+       help
+         The config option toggles if a task setting it's loginuid requires
+         CAP_SYS_AUDITCONTROL or if that task should require no special permissions
+         but should instead only allow setting its loginuid if it was never
+         previously set.  On systems which use systemd or a similar central
+         process to restart login services this should be set to true.  On older
+         systems in which an admin would typically have to directly stop and
+         start processes this should be set to false.  Setting this to true allows
+         one to drop potentially dangerous capabilites from the login tasks,
+         but may not be backwards compatible with older init systems.
+
+source "kernel/irq/Kconfig"
+
 menu "RCU Subsystem"
 
 choice
@@ -336,6 +396,7 @@ choice
 
 config TREE_RCU
        bool "Tree-based hierarchical RCU"
+       depends on !PREEMPT && SMP
        help
          This option selects the RCU implementation that is
          designed for very large SMP system with hundreds or
@@ -343,8 +404,8 @@ config TREE_RCU
          smaller systems.
 
 config TREE_PREEMPT_RCU
-       bool "Preemptable tree-based hierarchical RCU"
-       depends on PREEMPT
+       bool "Preemptible tree-based hierarchical RCU"
+       depends on PREEMPT && SMP
        help
          This option selects the RCU implementation that is
          designed for very large SMP systems with hundreds or
@@ -354,18 +415,31 @@ config TREE_PREEMPT_RCU
 
 config TINY_RCU
        bool "UP-only small-memory-footprint RCU"
-       depends on !SMP
+       depends on !PREEMPT && !SMP
        help
          This option selects the RCU implementation that is
          designed for UP systems from which real-time response
          is not required.  This option greatly reduces the
          memory footprint of RCU.
 
+config TINY_PREEMPT_RCU
+       bool "Preemptible UP-only small-memory-footprint RCU"
+       depends on PREEMPT && !SMP
+       help
+         This option selects the RCU implementation that is designed
+         for real-time UP systems.  This option greatly reduces the
+         memory footprint of RCU.
+
 endchoice
 
+config PREEMPT_RCU
+       def_bool ( TREE_PREEMPT_RCU || TINY_PREEMPT_RCU )
+       help
+         This option enables preemptible-RCU code that is common between
+         the TREE_PREEMPT_RCU and TINY_PREEMPT_RCU implementations.
+
 config RCU_TRACE
        bool "Enable tracing for RCU"
-       depends on TREE_RCU || TREE_PREEMPT_RCU
        help
          This option provides tracing in RCU which presents stats
          in debugfs for debugging RCU implementation.
@@ -383,9 +457,12 @@ config RCU_FANOUT
        help
          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.
+         large numbers of CPUs.  This value must be at least the fourth
+         root of NR_CPUS, which allows NR_CPUS to be insanely large.
+         The default value of RCU_FANOUT should be used for production
+         systems, but if you are stress-testing the RCU implementation
+         itself, small RCU_FANOUT values allow you to test large-system
+         code paths on small(er) systems.
 
          Select a specific number if testing RCU itself.
          Take the default if unsure.
@@ -406,14 +483,14 @@ config RCU_FANOUT_EXACT
 
 config RCU_FAST_NO_HZ
        bool "Accelerate last non-dyntick-idle CPU's grace periods"
-       depends on TREE_RCU && NO_HZ && SMP
+       depends on NO_HZ && SMP
        default n
        help
          This option causes RCU to attempt to accelerate grace periods
-         in order to allow the final CPU to enter dynticks-idle state
-         more quickly.  On the other hand, this option increases the
-         overhead of the dynticks-idle checking, particularly on systems
-         with large numbers of CPUs.
+         in order to allow CPUs to enter dynticks-idle state more
+         quickly.  On the other hand, this option increases the overhead
+         of the dynticks-idle checking, particularly on systems with
+         large numbers of CPUs.
 
          Say Y if energy efficiency is critically important, particularly
                if you have relatively few CPUs.
@@ -428,6 +505,45 @@ config TREE_RCU_TRACE
          TREE_PREEMPT_RCU implementations, permitting Makefile to
          trivially select kernel/rcutree_trace.c.
 
+config RCU_BOOST
+       bool "Enable RCU priority boosting"
+       depends on RT_MUTEXES && PREEMPT_RCU
+       default n
+       help
+         This option boosts the priority of preempted RCU readers that
+         block the current preemptible RCU grace period for too long.
+         This option also prevents heavy loads from blocking RCU
+         callback invocation for all flavors of RCU.
+
+         Say Y here if you are working with real-time apps or heavy loads
+         Say N here if you are unsure.
+
+config RCU_BOOST_PRIO
+       int "Real-time priority to boost RCU readers to"
+       range 1 99
+       depends on RCU_BOOST
+       default 1
+       help
+         This option specifies the real-time priority to which preempted
+         RCU readers are to be boosted.  If you are working with CPU-bound
+         real-time applications, you should specify a priority higher then
+         the highest-priority CPU-bound application.
+
+         Specify the real-time priority, or take the default if unsure.
+
+config RCU_BOOST_DELAY
+       int "Milliseconds to delay boosting after RCU grace-period start"
+       range 0 3000
+       depends on RCU_BOOST
+       default 500
+       help
+         This option specifies the time to wait after the beginning of
+         a given grace period before priority-boosting preempted RCU
+         readers blocking that grace period.  Note that any RCU reader
+         blocking an expedited RCU grace period is boosted immediately.
+
+         Accept the default if unsure.
+
 endmenu # "RCU Subsystem"
 
 config IKCONFIG
@@ -487,7 +603,6 @@ if CGROUPS
 
 config CGROUP_DEBUG
        bool "Example debug cgroup subsystem"
-       depends on CGROUPS
        default n
        help
          This option enables a simple cgroup subsystem that
@@ -496,32 +611,20 @@ config CGROUP_DEBUG
 
          Say N if unsure.
 
-config CGROUP_NS
-       bool "Namespace cgroup subsystem"
-       depends on CGROUPS
-       help
-         Provides a simple namespace cgroup subsystem to
-         provide hierarchical naming of sets of namespaces,
-         for instance virtual servers and checkpoint/restart
-         jobs.
-
 config CGROUP_FREEZER
        bool "Freezer cgroup subsystem"
-       depends on CGROUPS
        help
          Provides a way to freeze and unfreeze all tasks in a
          cgroup.
 
 config CGROUP_DEVICE
        bool "Device controller for cgroups"
-       depends on CGROUPS && EXPERIMENTAL
        help
          Provides a cgroup implementing whitelists for devices which
          a process in the cgroup can mknod or open.
 
 config CPUSETS
        bool "Cpuset support"
-       depends on CGROUPS
        help
          This option will let you create and manage CPUSETs which
          allow dynamically partitioning a system into sets of CPUs and
@@ -537,7 +640,6 @@ config PROC_PID_CPUSET
 
 config CGROUP_CPUACCT
        bool "Simple CPU accounting cgroup subsystem"
-       depends on CGROUPS
        help
          Provides a simple Resource Controller for monitoring the
          total CPU consumed by the tasks in a cgroup.
@@ -547,11 +649,10 @@ config RESOURCE_COUNTERS
        help
          This option enables controller independent resource accounting
          infrastructure that works with cgroups.
-       depends on CGROUPS
 
 config CGROUP_MEM_RES_CTLR
        bool "Memory Resource Controller for Control Groups"
-       depends on CGROUPS && RESOURCE_COUNTERS
+       depends on RESOURCE_COUNTERS
        select MM_OWNER
        help
          Provides a memory resource controller that manages both anonymous
@@ -573,8 +674,8 @@ config CGROUP_MEM_RES_CTLR
          could in turn add some fork/exit overhead.
 
 config CGROUP_MEM_RES_CTLR_SWAP
-       bool "Memory Resource Controller Swap Extension(EXPERIMENTAL)"
-       depends on CGROUP_MEM_RES_CTLR && SWAP && EXPERIMENTAL
+       bool "Memory Resource Controller Swap Extension"
+       depends on CGROUP_MEM_RES_CTLR && SWAP
        help
          Add swap management feature to memory resource controller. When you
          enable this, you can limit mem+swap usage per cgroup. In other words,
@@ -586,13 +687,47 @@ config CGROUP_MEM_RES_CTLR_SWAP
          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.
+         if boot option "swapaccount=0" 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.
+config CGROUP_MEM_RES_CTLR_SWAP_ENABLED
+       bool "Memory Resource Controller Swap Extension enabled by default"
+       depends on CGROUP_MEM_RES_CTLR_SWAP
+       default y
+       help
+         Memory Resource Controller Swap Extension comes with its price in
+         a bigger memory consumption. General purpose distribution kernels
+         which want to enable the feature but keep it disabled by default
+         and let the user enable it by swapaccount boot command line
+         parameter should have this option unselected.
+         For those who want to have the feature enabled by default should
+         select this option (if, for some reason, they need to disable it
+         then swapaccount=0 does the trick).
+config CGROUP_MEM_RES_CTLR_KMEM
+       bool "Memory Resource Controller Kernel Memory accounting (EXPERIMENTAL)"
+       depends on CGROUP_MEM_RES_CTLR && EXPERIMENTAL
+       default n
+       help
+         The Kernel Memory extension for Memory Resource Controller can limit
+         the amount of memory used by kernel objects in the system. Those are
+         fundamentally different from the entities handled by the standard
+         Memory Controller, which are page-based, and can be swapped. Users of
+         the kmem extension can use it to guarantee that no group of processes
+         will ever exhaust kernel resources alone.
+
+config CGROUP_PERF
+       bool "Enable perf_event per-cpu per-container group (cgroup) monitoring"
+       depends on PERF_EVENTS && CGROUPS
+       help
+         This option extends the per-cpu mode to restrict monitoring to
+         threads which belong to the cgroup specified and run on the
+         designated cpu.
+
+         Say N if unsure.
 
 menuconfig CGROUP_SCHED
        bool "Group CPU scheduler"
-       depends on EXPERIMENTAL && CGROUPS
+       depends on EXPERIMENTAL
        default n
        help
          This feature lets CPU scheduler recognize task groups and control CPU
@@ -605,6 +740,18 @@ config FAIR_GROUP_SCHED
        depends on CGROUP_SCHED
        default CGROUP_SCHED
 
+config CFS_BANDWIDTH
+       bool "CPU bandwidth provisioning for FAIR_GROUP_SCHED"
+       depends on EXPERIMENTAL
+       depends on FAIR_GROUP_SCHED
+       default n
+       help
+         This option allows users to define CPU bandwidth rates (limits) for
+         tasks running within the fair group scheduler.  Groups with no limit
+         set are considered to be unconstrained and will run with no
+         restriction.
+         See tip/Documentation/scheduler/sched-bwc.txt for more information.
+
 config RT_GROUP_SCHED
        bool "Group scheduling for SCHED_RR/FIFO"
        depends on EXPERIMENTAL
@@ -621,7 +768,7 @@ endif #CGROUP_SCHED
 
 config BLK_CGROUP
        tristate "Block IO controller"
-       depends on CGROUPS && BLOCK
+       depends on BLOCK
        default n
        ---help---
        Generic block IO controller cgroup interface. This is the common
@@ -630,11 +777,14 @@ config BLK_CGROUP
 
        Currently, CFQ IO scheduler uses it to recognize task groups and
        control disk bandwidth allocation (proportional time slice allocation)
-       to such task groups.
+       to such task groups. It is also used by bio throttling logic in
+       block layer to implement upper limit in IO rates on a device.
 
        This option only enables generic Block IO controller infrastructure.
-       One needs to also enable actual IO controlling logic in CFQ for it
-       to take effect. (CONFIG_CFQ_GROUP_IOSCHED=y).
+       One needs to also enable actual IO controlling logic/policy. For
+       enabling proportional weight division of disk bandwidth in CFQ, set
+       CONFIG_CFQ_GROUP_IOSCHED=y; for enabling throttling policy, set
+       CONFIG_BLK_DEV_THROTTLING=y.
 
        See Documentation/cgroups/blkio-controller.txt for more information.
 
@@ -648,107 +798,124 @@ config DEBUG_BLK_CGROUP
 
 endif # CGROUPS
 
-config MM_OWNER
-       bool
-
-config SYSFS_DEPRECATED
-       bool
-
-config SYSFS_DEPRECATED_V2
-       bool "enable deprecated sysfs features to support old userspace tools"
-       depends on SYSFS
-       default n
-       select SYSFS_DEPRECATED
-       help
-         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.
-
-config RELAY
-       bool "Kernel->user space relay support (formerly relayfs)"
-       help
-         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.
-
-config NAMESPACES
-       bool "Namespaces support" if EMBEDDED
-       default !EMBEDDED
+menuconfig NAMESPACES
+       bool "Namespaces support" if EXPERT
+       default !EXPERT
        help
          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.
 
+if NAMESPACES
+
 config UTS_NS
        bool "UTS namespace"
-       depends on NAMESPACES
+       default y
        help
          In this namespace tasks see different info provided with the
          uname() system call
 
 config IPC_NS
        bool "IPC namespace"
-       depends on NAMESPACES && (SYSVIPC || POSIX_MQUEUE)
+       depends on (SYSVIPC || POSIX_MQUEUE)
+       default y
        help
          In this namespace tasks work with IPC ids which correspond to
          different IPC objects in different namespaces.
 
 config USER_NS
        bool "User namespace (EXPERIMENTAL)"
-       depends on NAMESPACES && EXPERIMENTAL
+       depends on EXPERIMENTAL
+       default y
        help
          This allows containers, i.e. vservers, to use user namespaces
          to provide different user info for different servers.
          If unsure, say N.
 
 config PID_NS
-       bool "PID Namespaces (EXPERIMENTAL)"
-       default n
-       depends on NAMESPACES && EXPERIMENTAL
+       bool "PID Namespaces"
+       default y
        help
          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.
-
 config NET_NS
        bool "Network namespace"
-       default n
-       depends on NAMESPACES && EXPERIMENTAL && NET
+       depends on NET
+       default y
        help
          Allow user space to create what appear to be multiple instances
          of the network stack.
 
+endif # NAMESPACES
+
+config SCHED_AUTOGROUP
+       bool "Automatic process group scheduling"
+       select EVENTFD
+       select CGROUPS
+       select CGROUP_SCHED
+       select FAIR_GROUP_SCHED
+       help
+         This option optimizes the scheduler for common desktop workloads by
+         automatically creating and populating task groups.  This separation
+         of workloads isolates aggressive CPU burners (like build jobs) from
+         desktop applications.  Task group autogeneration is currently based
+         upon task session.
+
+config MM_OWNER
+       bool
+
+config SYSFS_DEPRECATED
+       bool "Enable deprecated sysfs features to support old userspace tools"
+       depends on SYSFS
+       default n
+       help
+         This option adds code that switches the layout of the "block" class
+         devices, to not show up in /sys/class/block/, but only in
+         /sys/block/.
+
+         This switch is only active when the sysfs.deprecated=1 boot option is
+         passed or the SYSFS_DEPRECATED_V2 option is set.
+
+         This option allows new kernels to run on old distributions and tools,
+         which might get confused by /sys/class/block/. Since 2007/2008 all
+         major distributions and tools handle this just fine.
+
+         Recent distributions and userspace tools after 2009/2010 depend on
+         the existence of /sys/class/block/, and will not work with this
+         option enabled.
+
+         Only if you are using a new kernel on an old distribution, you might
+         need to say Y here.
+
+config SYSFS_DEPRECATED_V2
+       bool "Enable deprecated sysfs features by default"
+       default n
+       depends on SYSFS
+       depends on SYSFS_DEPRECATED
+       help
+         Enable deprecated sysfs by default.
+
+         See the CONFIG_SYSFS_DEPRECATED option for more details about this
+         option.
+
+         Only if you are using a new kernel on an old distribution, you might
+         need to say Y here. Even then, odds are you would not need it
+         enabled, you can always pass the boot option if absolutely necessary.
+
+config RELAY
+       bool "Kernel->user space relay support (formerly relayfs)"
+       help
+         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.
+
 config BLK_DEV_INITRD
        bool "Initial RAM filesystem and RAM disk (initramfs/initrd) support"
        depends on BROKEN || !FRV
@@ -773,7 +940,6 @@ endif
 
 config CC_OPTIMIZE_FOR_SIZE
        bool "Optimize for size"
-       default y
        help
          Enabling this option will pass "-Os" instead of "-O2" to gcc
          resulting in a smaller kernel.
@@ -786,8 +952,10 @@ config SYSCTL
 config ANON_INODES
        bool
 
-menuconfig EMBEDDED
-       bool "Configure standard kernel features (for small systems)"
+menuconfig EXPERT
+       bool "Configure standard kernel features (expert users)"
+       # Unhide debug options, to make the on-by-default options visible
+       select DEBUG_KERNEL
        help
          This option allows certain base kernel options and settings
           to be disabled or tweaked. This is for specialized
@@ -795,16 +963,16 @@ menuconfig EMBEDDED
           Only use this if you really know what you are doing.
 
 config UID16
-       bool "Enable 16-bit UID system calls" if EMBEDDED
+       bool "Enable 16-bit UID system calls" if EXPERT
        depends on ARM || BLACKFIN || CRIS || FRV || H8300 || X86_32 || M68K || (S390 && !64BIT) || SUPERH || SPARC32 || (SPARC64 && COMPAT) || UML || (X86_64 && IA32_EMULATION)
        default y
        help
          This enables the legacy 16-bit UID syscall wrappers.
 
 config SYSCTL_SYSCALL
-       bool "Sysctl syscall support" if EMBEDDED
+       bool "Sysctl syscall support" if EXPERT
        depends on PROC_SYSCTL
-       default y
+       default n
        select SYSCTL
        ---help---
          sys_sysctl uses binary paths that have been found challenging
@@ -816,10 +984,10 @@ config SYSCTL_SYSCALL
          trying to save some space it is probably safe to disable this,
          making your kernel marginally smaller.
 
-         If unsure say Y here.
+         If unsure say N here.
 
 config KALLSYMS
-        bool "Load all symbols for debugging/ksymoops" if EMBEDDED
+        bool "Load all symbols for debugging/ksymoops" if EXPERT
         default y
         help
           Say Y here to let the kernel print out symbolic crash information and
@@ -830,27 +998,21 @@ config KALLSYMS_ALL
        bool "Include all symbols in kallsyms"
        depends on DEBUG_KERNEL && KALLSYMS
        help
-          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.
+          Normally kallsyms only contains the symbols of functions for nicer
+          OOPS messages and backtraces (i.e., symbols from the text and inittext
+          sections). This is sufficient for most cases. And only in very rare
+          cases (e.g., when a debugger is used) all symbols are required (e.g.,
+          names of variables from the data sections, etc).
 
-          Say N.
-
-config KALLSYMS_EXTRA_PASS
-       bool "Do an extra kallsyms pass"
-       depends on KALLSYMS
-       help
-          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.
+          This option makes sure that all symbols are loaded into the kernel
+          image (i.e., symbols from all sections) in cost of increased kernel
+          size (depending on the kernel configuration, it may be 300KiB or
+          something like this).
 
+          Say N unless you really need all symbols.
 
 config HOTPLUG
-       bool "Support for hot-pluggable devices" if EMBEDDED
+       bool "Support for hot-pluggable devices" if EXPERT
        default y
        help
          This option is provided for the case where no hotplug or uevent
@@ -860,7 +1022,7 @@ config HOTPLUG
 
 config PRINTK
        default y
-       bool "Enable support for printk" if EMBEDDED
+       bool "Enable support for printk" if EXPERT
        help
          This option enables normal printk support. Removing it
          eliminates most of the message strings from the kernel image
@@ -869,7 +1031,7 @@ config PRINTK
          strongly discouraged.
 
 config BUG
-       bool "BUG() support" if EMBEDDED
+       bool "BUG() support" if EXPERT
        default y
        help
           Disabling this option eliminates support for BUG and WARN, reducing
@@ -880,28 +1042,33 @@ config BUG
 
 config ELF_CORE
        default y
-       bool "Enable ELF core dumps" if EMBEDDED
+       bool "Enable ELF core dumps" if EXPERT
        help
          Enable support for generating core dumps. Disabling saves about 4k.
 
+
 config PCSPKR_PLATFORM
-       bool "Enable PC-Speaker support" if EMBEDDED
-       depends on ALPHA || X86 || MIPS || PPC_PREP || PPC_CHRP || PPC_PSERIES
+       bool "Enable PC-Speaker support" if EXPERT
+       depends on HAVE_PCSPKR_PLATFORM
+       select I8253_LOCK
        default y
        help
           This option allows to disable the internal PC-Speaker
           support, saving some memory.
 
+config HAVE_PCSPKR_PLATFORM
+       bool
+
 config BASE_FULL
        default y
-       bool "Enable full-sized data structures for core" if EMBEDDED
+       bool "Enable full-sized data structures for core" if EXPERT
        help
          Disabling this option reduces the size of miscellaneous core
          kernel data structures. This saves memory on small machines,
          but may reduce performance.
 
 config FUTEX
-       bool "Enable futex support" if EMBEDDED
+       bool "Enable futex support" if EXPERT
        default y
        select RT_MUTEXES
        help
@@ -910,7 +1077,7 @@ config FUTEX
          run glibc-based applications correctly.
 
 config EPOLL
-       bool "Enable eventpoll support" if EMBEDDED
+       bool "Enable eventpoll support" if EXPERT
        default y
        select ANON_INODES
        help
@@ -918,7 +1085,7 @@ config EPOLL
          support for epoll family of system calls.
 
 config SIGNALFD
-       bool "Enable signalfd() system call" if EMBEDDED
+       bool "Enable signalfd() system call" if EXPERT
        select ANON_INODES
        default y
        help
@@ -928,7 +1095,7 @@ config SIGNALFD
          If unsure, say Y.
 
 config TIMERFD
-       bool "Enable timerfd() system call" if EMBEDDED
+       bool "Enable timerfd() system call" if EXPERT
        select ANON_INODES
        default y
        help
@@ -938,7 +1105,7 @@ config TIMERFD
          If unsure, say Y.
 
 config EVENTFD
-       bool "Enable eventfd() system call" if EMBEDDED
+       bool "Enable eventfd() system call" if EXPERT
        select ANON_INODES
        default y
        help
@@ -948,7 +1115,7 @@ config EVENTFD
          If unsure, say Y.
 
 config SHMEM
-       bool "Use full shmem filesystem" if EMBEDDED
+       bool "Use full shmem filesystem" if EXPERT
        default y
        depends on MMU
        help
@@ -959,13 +1126,21 @@ config SHMEM
          which may be appropriate on small systems without swap.
 
 config AIO
-       bool "Enable AIO support" if EMBEDDED
+       bool "Enable AIO support" if EXPERT
        default y
        help
          This option enables POSIX asynchronous I/O which may by used
           by some high performance threaded applications. Disabling
           this option saves about 7k.
 
+config EMBEDDED
+       bool "Embedded system"
+       select EXPERT
+       help
+         This option should be enabled if compiling the kernel for
+         an embedded system so certain expert options are available
+         for configuration.
+
 config HAVE_PERF_EVENTS
        bool
        help
@@ -983,6 +1158,7 @@ config PERF_EVENTS
        default y if (PROFILING || PERF_COUNTERS)
        depends on HAVE_PERF_EVENTS
        select ANON_INODES
+       select IRQ_WORK
        help
          Enable kernel support for various performance events provided
          by software and hardware.
@@ -1035,16 +1211,16 @@ endmenu
 
 config VM_EVENT_COUNTERS
        default y
-       bool "Enable VM event counters for /proc/vmstat" if EMBEDDED
+       bool "Enable VM event counters for /proc/vmstat" if EXPERT
        help
          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
+         on EXPERT systems.  /proc/vmstat will only show page counts
          if VM event counters are disabled.
 
 config PCI_QUIRKS
        default y
-       bool "Enable PCI quirk workarounds" if EMBEDDED
+       bool "Enable PCI quirk workarounds" if EXPERT
        depends on PCI
        help
          This enables workarounds for various PCI chipset
@@ -1053,7 +1229,7 @@ config PCI_QUIRKS
 
 config SLUB_DEBUG
        default y
-       bool "Enable SLUB debugging support" if EMBEDDED
+       bool "Enable SLUB debugging support" if EXPERT
        depends on SLUB && SYSFS
        help
          SLUB has extensive debug support features. Disabling these can
@@ -1097,7 +1273,7 @@ config SLUB
           a slab allocator.
 
 config SLOB
-       depends on EMBEDDED
+       depends on EXPERT
        bool "SLOB (Simple Allocator)"
        help
           SLOB replaces the stock allocator with a drastically simpler
@@ -1108,7 +1284,7 @@ endchoice
 
 config MMAP_ALLOW_UNINITIALIZED
        bool "Allow mmapped anonymous memory to be uninitialized"
-       depends on EMBEDDED && !MMU
+       depends on EXPERT && !MMU
        default n
        help
          Normally, and according to the Linux spec, anonymous memory obtained
@@ -1143,30 +1319,6 @@ config TRACEPOINTS
 
 source "arch/Kconfig"
 
-config SLOW_WORK
-       default n
-       bool
-       help
-         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.
-
-config SLOW_WORK_DEBUG
-       bool "Slow work debugging through debugfs"
-       default n
-       depends on SLOW_WORK && DEBUG_FS
-       help
-         Display the contents of the slow work run queue through debugfs,
-         including items currently executing.
-
-         See Documentation/slow-work.txt.
-
 endmenu                # General setup
 
 config HAVE_GENERIC_DMA_COHERENT