Commit a50a3f4b authored by Thomas Gleixner's avatar Thomas Gleixner Committed by Ingo Molnar

sched/rt, Kconfig: Introduce CONFIG_PREEMPT_RT

Add a new entry to the preemption menu which enables the real-time support
for the kernel. The choice is only enabled when an architecture supports
it.

It selects PREEMPT as the RT features depend on it. To achieve that the
existing PREEMPT choice is renamed to PREEMPT_LL which select PREEMPT as
well.

No functional change.
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
Acked-by: default avatarPaul E. McKenney <paulmck@linux.ibm.com>
Acked-by: default avatarSteven Rostedt (VMware) <rostedt@goodmis.org>
Acked-by: default avatarClark Williams <williams@redhat.com>
Acked-by: default avatarDaniel Bristot de Oliveira <bristot@redhat.com>
Acked-by: default avatarFrederic Weisbecker <frederic@kernel.org>
Acked-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
Acked-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
Acked-by: default avatarDaniel Wagner <wagi@monom.org>
Acked-by: default avatarLuis Claudio R. Goncalves <lgoncalv@redhat.com>
Acked-by: default avatarJulia Cartwright <julia@ni.com>
Acked-by: default avatarTom Zanussi <tom.zanussi@linux.intel.com>
Acked-by: default avatarGratian Crisan <gratian.crisan@ni.com>
Acked-by: default avatarSebastian Siewior <bigeasy@linutronix.de>
Cc: Andrew Morton <akpm@linuxfoundation.org>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Lukas Bulwahn <lukas.bulwahn@gmail.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Tejun Heo <tj@kernel.org>
Link: http://lkml.kernel.org/r/alpine.DEB.2.21.1907172200190.1778@nanos.tec.linutronix.deSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
parent e3d85487
...@@ -801,6 +801,9 @@ config ARCH_NO_COHERENT_DMA_MMAP ...@@ -801,6 +801,9 @@ config ARCH_NO_COHERENT_DMA_MMAP
config ARCH_NO_PREEMPT config ARCH_NO_PREEMPT
bool bool
config ARCH_SUPPORTS_RT
bool
config CPU_NO_EFFICIENT_FFS config CPU_NO_EFFICIENT_FFS
def_bool n def_bool n
......
...@@ -35,10 +35,10 @@ config PREEMPT_VOLUNTARY ...@@ -35,10 +35,10 @@ config PREEMPT_VOLUNTARY
Select this if you are building a kernel for a desktop system. Select this if you are building a kernel for a desktop system.
config PREEMPT config PREEMPT_LL
bool "Preemptible Kernel (Low-Latency Desktop)" bool "Preemptible Kernel (Low-Latency Desktop)"
depends on !ARCH_NO_PREEMPT depends on !ARCH_NO_PREEMPT
select PREEMPT_COUNT select PREEMPT
select UNINLINE_SPIN_UNLOCK if !ARCH_INLINE_SPIN_UNLOCK select UNINLINE_SPIN_UNLOCK if !ARCH_INLINE_SPIN_UNLOCK
help help
This option reduces the latency of the kernel by making This option reduces the latency of the kernel by making
...@@ -55,7 +55,28 @@ config PREEMPT ...@@ -55,7 +55,28 @@ config PREEMPT
embedded system with latency requirements in the milliseconds embedded system with latency requirements in the milliseconds
range. 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 endchoice
config PREEMPT_COUNT config PREEMPT_COUNT
bool bool
config PREEMPT
bool
select PREEMPT_COUNT
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment