| .. | .. |
|---|
| 1 | | -config PREEMPT |
|---|
| 2 | | - bool |
|---|
| 3 | | - select PREEMPT_COUNT |
|---|
| 4 | | - |
|---|
| 5 | | -config PREEMPT_RT_BASE |
|---|
| 6 | | - bool |
|---|
| 7 | | - select PREEMPT |
|---|
| 8 | | - |
|---|
| 9 | | -config PREEMPT_RT |
|---|
| 10 | | - bool |
|---|
| 1 | +# SPDX-License-Identifier: GPL-2.0-only |
|---|
| 11 | 2 | |
|---|
| 12 | 3 | config HAVE_PREEMPT_LAZY |
|---|
| 13 | 4 | bool |
|---|
| 14 | 5 | |
|---|
| 15 | 6 | config PREEMPT_LAZY |
|---|
| 16 | | - def_bool y if HAVE_PREEMPT_LAZY && PREEMPT_RT_FULL |
|---|
| 7 | + def_bool y if HAVE_PREEMPT_LAZY && PREEMPT_RT |
|---|
| 17 | 8 | |
|---|
| 18 | 9 | choice |
|---|
| 19 | 10 | prompt "Preemption Model" |
|---|
| .. | .. |
|---|
| 50 | 41 | |
|---|
| 51 | 42 | Select this if you are building a kernel for a desktop system. |
|---|
| 52 | 43 | |
|---|
| 53 | | -config PREEMPT__LL |
|---|
| 44 | +config PREEMPT |
|---|
| 54 | 45 | bool "Preemptible Kernel (Low-Latency Desktop)" |
|---|
| 55 | 46 | depends on !ARCH_NO_PREEMPT |
|---|
| 56 | | - select PREEMPT |
|---|
| 47 | + select PREEMPTION |
|---|
| 57 | 48 | select UNINLINE_SPIN_UNLOCK if !ARCH_INLINE_SPIN_UNLOCK |
|---|
| 58 | 49 | help |
|---|
| 59 | 50 | This option reduces the latency of the kernel by making |
|---|
| .. | .. |
|---|
| 70 | 61 | embedded system with latency requirements in the milliseconds |
|---|
| 71 | 62 | range. |
|---|
| 72 | 63 | |
|---|
| 73 | | -config PREEMPT_RTB |
|---|
| 74 | | - bool "Preemptible Kernel (Basic RT)" |
|---|
| 75 | | - select PREEMPT_RT_BASE |
|---|
| 64 | +config PREEMPT_RT |
|---|
| 65 | + bool "Fully Preemptible Kernel (Real-Time)" |
|---|
| 66 | + depends on EXPERT && ARCH_SUPPORTS_RT |
|---|
| 67 | + select PREEMPTION |
|---|
| 68 | + select RT_MUTEXES |
|---|
| 76 | 69 | help |
|---|
| 77 | | - This option is basically the same as (Low-Latency Desktop) but |
|---|
| 78 | | - enables changes which are preliminary for the full preemptible |
|---|
| 79 | | - RT kernel. |
|---|
| 70 | + This option turns the kernel into a real-time kernel by replacing |
|---|
| 71 | + various locking primitives (spinlocks, rwlocks, etc.) with |
|---|
| 72 | + preemptible priority-inheritance aware variants, enforcing |
|---|
| 73 | + interrupt threading and introducing mechanisms to break up long |
|---|
| 74 | + non-preemptible sections. This makes the kernel, except for very |
|---|
| 75 | + low level and critical code paths (entry code, scheduler, low |
|---|
| 76 | + level interrupt handling) fully preemptible and brings most |
|---|
| 77 | + execution contexts under scheduler control. |
|---|
| 80 | 78 | |
|---|
| 81 | | -config PREEMPT_RT_FULL |
|---|
| 82 | | - bool "Fully Preemptible Kernel (RT)" |
|---|
| 83 | | - depends on IRQ_FORCED_THREADING |
|---|
| 84 | | - select PREEMPT_RT_BASE |
|---|
| 85 | | - select PREEMPT_RCU |
|---|
| 86 | | - select PREEMPT_RT |
|---|
| 87 | | - help |
|---|
| 88 | | - All and everything |
|---|
| 79 | + Select this if you are building a kernel for systems which |
|---|
| 80 | + require real-time guarantees. |
|---|
| 89 | 81 | |
|---|
| 90 | 82 | endchoice |
|---|
| 91 | 83 | |
|---|
| 92 | 84 | config PREEMPT_COUNT |
|---|
| 93 | 85 | bool |
|---|
| 86 | + |
|---|
| 87 | +config PREEMPTION |
|---|
| 88 | + bool |
|---|
| 89 | + select PREEMPT_COUNT |
|---|