sched/rt, Kconfig: Introduce CONFIG_PREEMPT_RT
[sfrench/cifs-2.6.git] / kernel / Kconfig.preempt
index dc0b682ec2d943db62fea50780adda71cf35f24b..fc020c09b7e8f46f8995c9868e932d6052d353fc 100644 (file)
@@ -35,10 +35,10 @@ config PREEMPT_VOLUNTARY
 
          Select this if you are building a kernel for a desktop system.
 
-config PREEMPT
+config PREEMPT_LL
        bool "Preemptible Kernel (Low-Latency Desktop)"
        depends on !ARCH_NO_PREEMPT
-       select PREEMPT_COUNT
+       select PREEMPT
        select UNINLINE_SPIN_UNLOCK if !ARCH_INLINE_SPIN_UNLOCK
        help
          This option reduces the latency of the kernel by making
@@ -55,7 +55,28 @@ config PREEMPT
          embedded system with latency requirements in the milliseconds
          range.
 
+config PREEMPT_RT
+       bool "Fully Preemptible Kernel (Real-Time)"
+       depends on EXPERT && ARCH_SUPPORTS_RT
+       select PREEMPT
+       help
+         This option turns the kernel into a real-time kernel by replacing
+         various locking primitives (spinlocks, rwlocks, etc.) with
+         preemptible priority-inheritance aware variants, enforcing
+         interrupt threading and introducing mechanisms to break up long
+         non-preemptible sections. This makes the kernel, except for very
+         low level and critical code pathes (entry code, scheduler, low
+         level interrupt handling) fully preemptible and brings most
+         execution contexts under scheduler control.
+
+         Select this if you are building a kernel for systems which
+         require real-time guarantees.
+
 endchoice
 
 config PREEMPT_COUNT
        bool
+
+config PREEMPT
+       bool
+       select PREEMPT_COUNT