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 <t...@linutronix.de>

+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 <gratian.cri...@ni.com>

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

Reply via email to