[tip:sched/urgent] sched/rt, Kconfig: Introduce CONFIG_PREEMPT_RT

2019-07-18 Thread tip-bot for Thomas Gleixner
Commit-ID:  a50a3f4b6a313dc76912bd4ad3b8b4f4b479c801
Gitweb: https://git.kernel.org/tip/a50a3f4b6a313dc76912bd4ad3b8b4f4b479c801
Author: Thomas Gleixner 
AuthorDate: Wed, 17 Jul 2019 22:01:49 +0200
Committer:  Ingo Molnar 
CommitDate: Thu, 18 Jul 2019 23:10:57 +0200

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: Thomas Gleixner 
Acked-by: Paul E. McKenney 
Acked-by: Steven Rostedt (VMware) 
Acked-by: Clark Williams 
Acked-by: Daniel Bristot de Oliveira 
Acked-by: Frederic Weisbecker 
Acked-by: Peter Zijlstra (Intel) 
Acked-by: Marc Zyngier 
Acked-by: Daniel Wagner 
Acked-by: Luis Claudio R. Goncalves 
Acked-by: Julia Cartwright 
Acked-by: Tom Zanussi 
Acked-by: Gratian Crisan 
Acked-by: Sebastian Siewior 
Cc: Andrew Morton 
Cc: Christoph Hellwig 
Cc: Greg Kroah-Hartman 
Cc: Linus Torvalds 
Cc: Lukas Bulwahn 
Cc: Mike Galbraith 
Cc: Tejun Heo 
Link: 
http://lkml.kernel.org/r/alpine.deb.2.21.1907172200190.1...@nanos.tec.linutronix.de
Signed-off-by: Ingo Molnar 
---
 arch/Kconfig   |  3 +++
 kernel/Kconfig.preempt | 25 +++--
 2 files changed, 26 insertions(+), 2 deletions(-)

diff --git a/arch/Kconfig b/arch/Kconfig
index c47b328eada0..ada51f36bd5d 100644
--- a/arch/Kconfig
+++ b/arch/Kconfig
@@ -801,6 +801,9 @@ config ARCH_NO_COHERENT_DMA_MMAP
 config ARCH_NO_PREEMPT
bool
 
+config ARCH_SUPPORTS_RT
+   bool
+
 config CPU_NO_EFFICIENT_FFS
def_bool n
 
diff --git a/kernel/Kconfig.preempt b/kernel/Kconfig.preempt
index dc0b682ec2d9..fc020c09b7e8 100644
--- a/kernel/Kconfig.preempt
+++ b/kernel/Kconfig.preempt
@@ -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


[tip:sched/urgent] sched/rt, Kconfig: Introduce CONFIG_PREEMPT_RT

2019-07-18 Thread tip-bot for Thomas Gleixner
Commit-ID:  a003296b7a97dedccb0c35c4c1e44e088050b8c4
Gitweb: https://git.kernel.org/tip/a003296b7a97dedccb0c35c4c1e44e088050b8c4
Author: Thomas Gleixner 
AuthorDate: Wed, 17 Jul 2019 22:01:49 +0200
Committer:  Ingo Molnar 
CommitDate: Thu, 18 Jul 2019 19:47:11 +0200

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: Thomas Gleixner 
Acked-by: Paul E. McKenney 
Acked-by: Steven Rostedt (VMware) 
Acked-by: Clark Williams 
Acked-by: Daniel Bristot de Oliveira 
Acked-by: Frederic Weisbecker 
Acked-by: Peter Zijlstra (Intel) 
Acked-by: Marc Zyngier 
Acked-by: Daniel Wagner 
Acked-by: Luis Claudio R. Goncalves 
Acked-by: Julia Cartwright 
Cc: Andrew Morton 
Cc: Christoph Hellwig 
Cc: Clark Williams 
Cc: Gratian Crisan 
Cc: Greg Kroah-Hartman 
Cc: Linus Torvalds 
Cc: Lukas Bulwahn 
Cc: Mike Galbraith 
Cc: Paul McKenney 
Cc: Peter Zijlstra 
Cc: Sebastian Siewior 
Cc: Tejun Heo 
Cc: Tom Zanussi 
Link: 
http://lkml.kernel.org/r/alpine.deb.2.21.1907172200190.1...@nanos.tec.linutronix.de
Signed-off-by: Ingo Molnar 
---
 arch/Kconfig   |  3 +++
 kernel/Kconfig.preempt | 25 +++--
 2 files changed, 26 insertions(+), 2 deletions(-)

diff --git a/arch/Kconfig b/arch/Kconfig
index c47b328eada0..ada51f36bd5d 100644
--- a/arch/Kconfig
+++ b/arch/Kconfig
@@ -801,6 +801,9 @@ config ARCH_NO_COHERENT_DMA_MMAP
 config ARCH_NO_PREEMPT
bool
 
+config ARCH_SUPPORTS_RT
+   bool
+
 config CPU_NO_EFFICIENT_FFS
def_bool n
 
diff --git a/kernel/Kconfig.preempt b/kernel/Kconfig.preempt
index dc0b682ec2d9..fc020c09b7e8 100644
--- a/kernel/Kconfig.preempt
+++ b/kernel/Kconfig.preempt
@@ -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


[tip:sched/urgent] sched/rt, Kconfig: Introduce CONFIG_PREEMPT_RT

2019-07-18 Thread tip-bot for Thomas Gleixner
Commit-ID:  2c2ffb925b368a1f00d4ddcc837f830394861d6c
Gitweb: https://git.kernel.org/tip/2c2ffb925b368a1f00d4ddcc837f830394861d6c
Author: Thomas Gleixner 
AuthorDate: Wed, 17 Jul 2019 22:01:49 +0200
Committer:  Ingo Molnar 
CommitDate: Thu, 18 Jul 2019 14:53:32 +0200

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: Thomas Gleixner 
Acked-by: Paul E. McKenney 
Acked-by: Steven Rostedt (VMware) 
Acked-by: Clark Williams 
Acked-by: Daniel Bristot de Oliveira 
Acked-by: Frederic Weisbecker 
Acked-by: Peter Zijlstra (Intel) 
Acked-by: Marc Zyngier 
Acked-by: Daniel Wagner 
Acked-by: Luis Claudio R. Goncalves 
Cc: Andrew Morton 
Cc: Christoph Hellwig 
Cc: Clark Williams 
Cc: Gratian Crisan 
Cc: Greg Kroah-Hartman 
Cc: Julia Cartwright 
Cc: Linus Torvalds 
Cc: Lukas Bulwahn 
Cc: Mike Galbraith 
Cc: Paul McKenney 
Cc: Peter Zijlstra 
Cc: Sebastian Siewior 
Cc: Tejun Heo 
Cc: Tom Zanussi 
Link: 
http://lkml.kernel.org/r/alpine.deb.2.21.1907172200190.1...@nanos.tec.linutronix.de
Signed-off-by: Ingo Molnar 
---
 arch/Kconfig   |  3 +++
 kernel/Kconfig.preempt | 25 +++--
 2 files changed, 26 insertions(+), 2 deletions(-)

diff --git a/arch/Kconfig b/arch/Kconfig
index c47b328eada0..ada51f36bd5d 100644
--- a/arch/Kconfig
+++ b/arch/Kconfig
@@ -801,6 +801,9 @@ config ARCH_NO_COHERENT_DMA_MMAP
 config ARCH_NO_PREEMPT
bool
 
+config ARCH_SUPPORTS_RT
+   bool
+
 config CPU_NO_EFFICIENT_FFS
def_bool n
 
diff --git a/kernel/Kconfig.preempt b/kernel/Kconfig.preempt
index dc0b682ec2d9..fc020c09b7e8 100644
--- a/kernel/Kconfig.preempt
+++ b/kernel/Kconfig.preempt
@@ -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