History

Merge tag 'sched-urgent-2026-03-01' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull scheduler fixes from Ingo Molnar: - Fix zero_vruntime tracking when there's a single task running - Fix slice protection logic - Fix the ->vprot logic for reniced tasks - Fix lag clamping in mixed slice workloads - Fix objtool uaccess warning (and bug) in the !CONFIG_RSEQ_SLICE_EXTENSION case caused by unexpected un-inlining, which triggers with older compilers - Fix a comment in the rseq registration rseq_size bound check code - Fix a legacy RSEQ ABI quirk that handled 32-byte area sizes differently, which special size we now reached naturally and want to avoid. The visible ugliness of the new reserved field will be avoided the next time the RSEQ area is extended. * tag 'sched-urgent-2026-03-01' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: rseq: slice ext: Ensure rseq feature size differs from original rseq size rseq: Clarify rseq registration rseq_size bound check comment sched/core: Fix wakeup_preempt's next_class tracking rseq: Mark rseq_arm_slice_extension_timer() __always_inline sched/fair: Fix lag clamp sched/eevdf: Update se->vprot in reweight_entity() sched/fair: Only set slice protection at pick time sched/fair: Fix zero_vruntime tracking

Linus Torvalds committed 8 months ago

Commit 61706252 parents cb36eab 3b68df910 files · +172 −52Browse files

Showing the changes to include/uapi/linux (1 of 10 files). Show all

Unified · Split

include/uapi/linux/rseq.h+22−4
@@ -87,10 +87,17 @@ struct rseq_slice_ctrl { · 86 unmodified lines
87};87};
88 88
89/*89/*
90 * struct rseq is aligned on 4 * 8 bytes to ensure it is always90 * The original size and alignment of the allocation for struct rseq is
91 * contained within a single cache-line.91 * 32 bytes.
92 *92 *
93 * A single struct rseq per thread is allowed.93 * The allocation size needs to be greater or equal to
94 * max(getauxval(AT_RSEQ_FEATURE_SIZE), 32), and the allocation needs to
95 * be aligned on max(getauxval(AT_RSEQ_ALIGN), 32).
96 *
97 * As an alternative, userspace is allowed to use both the original size
98 * and alignment of 32 bytes for backward compatibility.
99 *
100 * A single active struct rseq registration per thread is allowed.
94 */101 */
95struct rseq {102struct rseq {
96 /*103 /*
@@ -180,10 +187,21 @@ struct rseq { · 83 unmodified lines
180 */187 */
181 struct rseq_slice_ctrl slice_ctrl;188 struct rseq_slice_ctrl slice_ctrl;
182 189
190 /*
191 * Before rseq became extensible, its original size was 32 bytes even
192 * though the active rseq area was only 20 bytes.
193 * Exposing a 32 bytes feature size would make life needlessly painful
194 * for userspace. Therefore, add a reserved byte after byte 32
195 * to bump the rseq feature size from 32 to 33.
196 * The next field to be added to the rseq area will be larger
197 * than one byte, and will replace this reserved byte.
198 */
199 __u8 __reserved;
200
183 /*201 /*
184 * Flexible array member at end of structure, after last feature field.202 * Flexible array member at end of structure, after last feature field.
185 */203 */
186 char end[];204 char end[];
187} __attribute__((aligned(4 * sizeof(__u64))));205} __attribute__((aligned(32)));
188 206
189#endif /* _UAPI_LINUX_RSEQ_H */207#endif /* _UAPI_LINUX_RSEQ_H */