Pull scheduler updates from Ingo Molnar: - Improve the scalability of the CFS bandwidth unthrottling logic with large number of CPUs. - Fix & rework various cpuidle routines, simplify interaction with the generic scheduler code. Add __cpuidle methods as noinstr to objtool's noinstr detection and fix boatloads of cpuidle bugs & quirks. - Add new ABI: introduce MEMBARRIER_CMD_GET_REGISTRATIONS, to query previously issued registrations. - Limit scheduler slice duration to the sysctl_sched_latency period, to improve scheduling granularity with a large number of SCHED_IDLE tasks. - Debuggability enhancement on sys_exit(): warn about disabled IRQs, but also enable them to prevent a cascade of followup problems and repeat warnings. - Fix the rescheduling logic in prio_changed_dl(). - Micro-optimize cpufreq and sched-util methods. - Micro-optimize ttwu_runnable() - Micro-optimize the idle-scanning in update_numa_stats(), select_idle_capacity() and steal_cookie_task(). - Update the RSEQ code & self-tests - Constify various scheduler methods - Remove unused methods - Refine __init tags - Documentation updates - Misc other cleanups, fixes * tag 'sched-core-2023-02-20' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (110 commits) sched/rt: pick_next_rt_entity(): check list_entry sched/deadline: Add more reschedule cases to prio_changed_dl() sched/fair: sanitize vruntime of entity being placed sched/fair: Remove capacity inversion detection sched/fair: unlink misfit task from cpu overutilized objtool: mem*() are not uaccess safe cpuidle: Fix poll_idle() noinstr annotation sched/clock: Make local_clock() noinstr sched/clock/x86: Mark sched_clock() noinstr x86/pvclock: Improve atomic update of last_value in pvclock_clocksource_read() x86/atomics: Always inline arch_atomic64*() cpuidle: tracing, preempt: Squash _rcuidle tracing cpuidle: tracing: Warn about !rcu_is_watching() cpuidle: lib/bug: Disable rcu_is_watching() during WARN/BUG cpuidle: drivers: firmware: psci: Dont instrument suspend code KVM: selftests: Fix build of rseq test exit: Detect and fix irq disabled state in oops cpuidle, arm64: Fix the ARM64 cpuidle logic cpuidle: mvebu: Fix duplicate flags assignment sched/fair: Limit sched slice duration ...
Showing the changes to include/uapi/linux (3 of 211 files). Show all
Unified · Split
| @@ -30,6 +30,8 @@ · 29 unmodified lines | ||
| 30 | 30 | * differ from AT_PLATFORM. */ |
| 31 | 31 | #define AT_RANDOM 25 /* address of 16 random bytes */ |
| 32 | 32 | #define AT_HWCAP2 26 /* extension of AT_HWCAP */ |
| 33 | +#define AT_RSEQ_FEATURE_SIZE 27 /* rseq supported feature size */ | |
| 34 | +#define AT_RSEQ_ALIGN 28 /* rseq allocation alignment */ | |
| 33 | 35 | |
| 34 | 36 | #define AT_EXECFN 31 /* filename of program */ |
| 35 | 37 | |
| @@ -137,6 +137,9 @@ · 136 unmodified lines | ||
| 137 | 137 | * @MEMBARRIER_CMD_SHARED: |
| 138 | 138 | * Alias to MEMBARRIER_CMD_GLOBAL. Provided for |
| 139 | 139 | * header backward compatibility. |
| 140 | + * @MEMBARRIER_CMD_GET_REGISTRATIONS: | |
| 141 | + * Returns a bitmask of previously issued | |
| 142 | + * registration commands. | |
| 140 | 143 | * |
| 141 | 144 | * Command to be passed to the membarrier system call. The commands need to |
| 142 | 145 | * be a single bit each, except for MEMBARRIER_CMD_QUERY which is assigned to |
| @@ -153,6 +156,7 @@ enum membarrier_cmd { · 10 unmodified lines | ||
| 153 | 156 | MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE = (1 << 6), |
| 154 | 157 | MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ = (1 << 7), |
| 155 | 158 | MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ = (1 << 8), |
| 159 | + MEMBARRIER_CMD_GET_REGISTRATIONS = (1 << 9), | |
| 156 | 160 | |
| 157 | 161 | /* Alias for header backward compatibility. */ |
| 158 | 162 | MEMBARRIER_CMD_SHARED = MEMBARRIER_CMD_GLOBAL, |
| @@ -130,6 +130,28 @@ struct rseq { · 129 unmodified lines | ||
| 130 | 130 | * this thread. |
| 131 | 131 | */ |
| 132 | 132 | __u32 flags; |
| 133 | + | |
| 134 | + /* | |
| 135 | + * Restartable sequences node_id field. Updated by the kernel. Read by | |
| 136 | + * user-space with single-copy atomicity semantics. This field should | |
| 137 | + * only be read by the thread which registered this data structure. | |
| 138 | + * Aligned on 32-bit. Contains the current NUMA node ID. | |
| 139 | + */ | |
| 140 | + __u32 node_id; | |
| 141 | + | |
| 142 | + /* | |
| 143 | + * Restartable sequences mm_cid field. Updated by the kernel. Read by | |
| 144 | + * user-space with single-copy atomicity semantics. This field should | |
| 145 | + * only be read by the thread which registered this data structure. | |
| 146 | + * Aligned on 32-bit. Contains the current thread's concurrency ID | |
| 147 | + * (allocated uniquely within a memory map). | |
| 148 | + */ | |
| 149 | + __u32 mm_cid; | |
| 150 | + | |
| 151 | + /* | |
| 152 | + * Flexible array member at end of structure, after last feature field. | |
| 153 | + */ | |
| 154 | + char end[]; | |
| 133 | 155 | } __attribute__((aligned(4 * sizeof(__u64)))); |
| 134 | 156 | |
| 135 | 157 | #endif /* _UAPI_LINUX_RSEQ_H */ |