Re: [patch 1/1] Kconfig: Introduce CONFIG_PREEMPT_RT

2019-07-17 Thread Luis Claudio R. Goncalves
On Mon, Jul 15, 2019 at 05:04:03PM +0200, Thomas Gleixner wrote:
> 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 
> ---

Glad to see this important step being taken!

Acked-by: Luis Claudio R. Goncalves 



Re: [patch 1/1] Kconfig: Introduce CONFIG_PREEMPT_RT

2019-07-17 Thread Daniel Wagner

Hi,

On 7/15/19 5:04 PM, Thomas Gleixner wrote:

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 


As one of the stable-rt maintainers I love to see this move forward!

Acked-by: Daniel Wagner 


Re: [patch 1/1] Kconfig: Introduce CONFIG_PREEMPT_RT

2019-07-17 Thread Marc Zyngier
On 15/07/2019 16:04, Thomas Gleixner wrote:
> 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: Marc Zyngier 

M.
-- 
Jazz is not dead. It just smells funny...


Re: [patch 1/1] Kconfig: Introduce CONFIG_PREEMPT_RT

2019-07-17 Thread Peter Zijlstra
On Mon, Jul 15, 2019 at 05:04:03PM +0200, Thomas Gleixner wrote:
> 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: Peter Zijlstra (Intel) 

> ---
>  arch/Kconfig   |3 +++
>  kernel/Kconfig.preempt |   25 +++--
>  2 files changed, 26 insertions(+), 2 deletions(-)
> 
> --- a/arch/Kconfig
> +++ b/arch/Kconfig
> @@ -809,6 +809,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
>  
> --- 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-preemtible sections. This makes the kernel, except for very
> +   low level and critical code pathes (entry code, scheduler, low
> +   level interrupt handling) fully preemtible 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
> 
> 


Re: [patch 1/1] Kconfig: Introduce CONFIG_PREEMPT_RT

2019-07-16 Thread Gratian Crisan


Thomas Gleixner writes:

> 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 

+1 from National Instruments. We have a vested interest in preempt_rt
and we're committed in helping support, maintain, and test it. Glad to
see this happening.

Acked-by: Gratian Crisan 

Thanks,
Gratian

> ---
>  arch/Kconfig   |3 +++
>  kernel/Kconfig.preempt |   25 +++--
>  2 files changed, 26 insertions(+), 2 deletions(-)
>
> --- a/arch/Kconfig
> +++ b/arch/Kconfig
> @@ -809,6 +809,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
>
> --- 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-preemtible sections. This makes the kernel, except for very
> +   low level and critical code pathes (entry code, scheduler, low
> +   level interrupt handling) fully preemtible 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


Re: [patch 1/1] Kconfig: Introduce CONFIG_PREEMPT_RT

2019-07-16 Thread Ingo Molnar


* Thomas Gleixner  wrote:

> 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 
> ---
>  arch/Kconfig   |3 +++
>  kernel/Kconfig.preempt |   25 +++--
>  2 files changed, 26 insertions(+), 2 deletions(-)
> 
> --- a/arch/Kconfig
> +++ b/arch/Kconfig
> @@ -809,6 +809,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
>  
> --- 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

s/etc/etc.

> +   preemptible priority-inheritance aware variants, enforcing
> +   interrupt threading and introducing mechanisms to break up long
> +   non-preemtible sections. This makes the kernel, except for very

s/preemtible/preemptible

> +   low level and critical code pathes (entry code, scheduler, low
> +   level interrupt handling) fully preemtible and brings most

s/preemtible/preemptible

> +   execution contexts under scheduler control.
> +
> +   Select this if you are building a kernel for systems which
> +   require real-time guarantees.

Nice to see this getting started! :-)

Acked-by: Ingo Molnar 

Thanks,

Ingo


Re: [patch 1/1] Kconfig: Introduce CONFIG_PREEMPT_RT

2019-07-16 Thread Frederic Weisbecker
On Tue, Jul 16, 2019 at 10:18:00PM +0200, Daniel Bristot de Oliveira wrote:
> On 16/07/2019 22:10, Clark Williams wrote:
> > Excited to see this Thomas. Now I can start planning to build from a single 
> > tree
> > rather than an RT tree off to the side of RHEL :)
> > 
> > Acked-by: Clark Williams 
> > 
> 
> yeah! We (Red Hat) are committed with maintaining and testing the PREEMPT RT
> mainstream in the long term. Including the development of more tests and 
> formal
> verification for it!

AND MY AXE!!! (Suse)

Acked-by: Frederic Weisbecker 

> 
> Acked-by: Daniel Bristot de Oliveira 
> 
> Thanks!
> -- Daniel


Re: [patch 1/1] Kconfig: Introduce CONFIG_PREEMPT_RT

2019-07-16 Thread Daniel Bristot de Oliveira
On 16/07/2019 22:10, Clark Williams wrote:
> On Mon, 15 Jul 2019 17:04:03 +0200
> Thomas Gleixner  wrote:
> 
>> 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 
> Excited to see this Thomas. Now I can start planning to build from a single 
> tree
> rather than an RT tree off to the side of RHEL :)
> 
> Acked-by: Clark Williams 
> 

yeah! We (Red Hat) are committed with maintaining and testing the PREEMPT RT
mainstream in the long term. Including the development of more tests and formal
verification for it!

Acked-by: Daniel Bristot de Oliveira 

Thanks!
-- Daniel


Re: [patch 1/1] Kconfig: Introduce CONFIG_PREEMPT_RT

2019-07-16 Thread Clark Williams
On Mon, 15 Jul 2019 17:04:03 +0200
Thomas Gleixner  wrote:

> 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 

Excited to see this Thomas. Now I can start planning to build from a single tree
rather than an RT tree off to the side of RHEL :)

Acked-by: Clark Williams 

> ---
>  arch/Kconfig   |3 +++
>  kernel/Kconfig.preempt |   25 +++--
>  2 files changed, 26 insertions(+), 2 deletions(-)
> 
> --- a/arch/Kconfig
> +++ b/arch/Kconfig
> @@ -809,6 +809,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
>  
> --- 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-preemtible sections. This makes the kernel, except for very
> +   low level and critical code pathes (entry code, scheduler, low
> +   level interrupt handling) fully preemtible 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
> 
> 


-- 
The United States Coast Guard
Ruining Natural Selection since 1790


Re: [patch 1/1] Kconfig: Introduce CONFIG_PREEMPT_RT

2019-07-16 Thread Steven Rostedt
On Mon, 15 Jul 2019 17:04:03 +0200
Thomas Gleixner  wrote:

> 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 
> ---
>  arch/Kconfig   |3 +++
>  kernel/Kconfig.preempt |   25 +++--
>  2 files changed, 26 insertions(+), 2 deletions(-)
> 
> --- a/arch/Kconfig
> +++ b/arch/Kconfig
> @@ -809,6 +809,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
>  
> --- 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

I can't wait to see the CONFIG_ARCH_SUPPORTS_RT added!

Acked-by: Steven Rostedt (VMware) 

-- Steve


> + 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-preemtible sections. This makes the kernel, except for very
> +   low level and critical code pathes (entry code, scheduler, low
> +   level interrupt handling) fully preemtible 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
> 



Re: [patch 1/1] Kconfig: Introduce CONFIG_PREEMPT_RT

2019-07-16 Thread Paul E. McKenney
On Mon, Jul 15, 2019 at 05:04:03PM +0200, Thomas Gleixner wrote:
> 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 

This would make it easier to get some of the remaining RCU patches
from -rt to mainline, for example, the rcutorture changes proposed
recently.

Acked-by: Paul E. McKenney 

> ---
>  arch/Kconfig   |3 +++
>  kernel/Kconfig.preempt |   25 +++--
>  2 files changed, 26 insertions(+), 2 deletions(-)
> 
> --- a/arch/Kconfig
> +++ b/arch/Kconfig
> @@ -809,6 +809,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
> 
> --- 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-preemtible sections. This makes the kernel, except for very
> +   low level and critical code pathes (entry code, scheduler, low
> +   level interrupt handling) fully preemtible 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
> 
> 



Re: [patch 1/1] Kconfig: Introduce CONFIG_PREEMPT_RT

2019-07-15 Thread Lukas Bulwahn



On Mon, 15 Jul 2019, Thomas Gleixner wrote:

> 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 
> ---
>  arch/Kconfig   |3 +++
>  kernel/Kconfig.preempt |   25 +++--
>  2 files changed, 26 insertions(+), 2 deletions(-)
> 
> --- a/arch/Kconfig
> +++ b/arch/Kconfig
> @@ -809,6 +809,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
>  
> --- 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-preemtible sections. This makes the kernel, except for very

Here is a typo:

s/non-preemtible/non-preemptible/

Nice to see this feature finally getting very close to being merged :)

Lukas

> +   low level and critical code pathes (entry code, scheduler, low
> +   level interrupt handling) fully preemtible 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
> 
> 
>