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