From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3754E2FFF97 for ; Mon, 9 Feb 2026 07:46:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770623188; cv=none; b=BeGm+BtjgFvSkDexfqvf1yceCC0aRV5xOMNPEx9ci4f00ICquJkcuCvs77H/iospvl4YuypvmjfmOwZGuLO8+4fct/SYuVfeYpdEUYCNx9rHdkZFtcMaj21iW1EiHjQ3AZwRHyT00riNyGIsUBIsZMCDkI5ZekyK1PagFBWEMq8= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770623188; c=relaxed/simple; bh=PcznG2MjdskseeM8hv+3fDQNOnvhk5fOEmw4pf3Jygc=; h=Date:From:To:Cc:Subject:Message-ID:MIME-Version:Content-Type: Content-Disposition; b=Dq50K+GJazevFrAJ2M8Y2ZPkHsMVNSJCjS2SXvBgzXmxr2nb3xAJ6MQyKaspZziao8GflBCIx3ycYt07kmO32uYvNDFPyMPHkNUgCYmt6vhPTNoUqHnptDGqGvI7H/nMUALRl/Qf+yt2LPY+tCzyoNRqYmIHW6QIb37trBB73SM= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=hcuwj2kW; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="hcuwj2kW" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7A07AC116C6; Mon, 9 Feb 2026 07:46:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1770623187; bh=PcznG2MjdskseeM8hv+3fDQNOnvhk5fOEmw4pf3Jygc=; h=Date:From:To:Cc:Subject:From; b=hcuwj2kWDSyfFVjOoMNQS4LPfqKysbnjyumq1up29YP0RLGeEQeXSUXYcYqnu3skC 1tEnF9F0l9Q7qjrQtawV2EOiBfFVKxiLqkvXA4Hz87E+itqC4Akk1D4VxywfKczUz1 89sA234QTIv/4pjbt8Lxqlf9/CFRFszqqIsPZcMgQF4hHv3vZqNiQ3FyjrBSlEYY0O sDnJrFQMLBugLjy/wwhjkldrN18IuMEoeRq/Z6JnhK1nd4lsKsbUe2PaXk4iA+Lxpv kLzF9xpzd8g7KMhHBf044FejWBSd0cH5LleTdz8/JB5g9ptix0EYVQYmDuLWYXGPpI VCvdSb2C3slYg== Date: Mon, 9 Feb 2026 08:46:16 +0100 From: Ingo Molnar To: Linus Torvalds Cc: linux-kernel@vger.kernel.org, Peter Zijlstra , Thomas Gleixner , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Mel Gorman , Tejun Heo , Valentin Schneider , Shrikanth Hegde , Andrea Righi , Joel Fernandes Subject: [GIT PULL] Scheduler changes for v7.0 Message-ID: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Linus, Please pull the latest sched/core Git tree from: git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git sched-core-2026-02-09 for you to fetch changes up to e34881c84c255bc300f24d9fe685324be20da3d1: Scheduler changes for v7.0: Scheduler Kconfig space updates: - Further consolidate configurable preemption modes: reduce the number of architectures that are allowed to offer PREEMPT_NONE and PREEMPT_VOLUNTARY, reducing the number of preemption models from four to just two: 'full' and 'lazy' on up-to-date architectures (arm64, loongarch, powerpc, riscv, s390, x86). None and voluntary are only available as legacy features on platforms that don't implement lazy preemption yet, or which don't even support preemption. The goal is to eventually remove cond_resched() and voluntary preemption altogether. (Peter Zijlstra) RSEQ based 'scheduler time slice extension' support: This allows a thread to request a time slice extension when it enters a critical section to avoid contention on a resource when the thread is scheduled out inside of the critical section. - Add fields and constants for time slice extension - Provide static branch for time slice extensions - Add statistics for time slice extensions - Add prctl() to enable time slice extensions - Implement sys_rseq_slice_yield() - Implement syscall entry work for time slice extensions - Implement time slice extension enforcement timer - Reset slice extension when scheduled - Implement rseq_grant_slice_extension() - entry: Hook up rseq time slice extension - selftests: Implement time slice extension test (Thomas Gleixner) - Allow registering RSEQ with slice extension - Move slice_ext_nsec to debugfs - Lower default slice extension - selftests/rseq: Add rseq slice histogram script (Peter Zijlstra) Scheduler performance/scalability improvements: - Update rq->avg_idle when a task is moved to an idle CPU, which improves the scalability of various workloads. (Shubhang Kaushik) - Reorder fields in 'struct rq' for better caching (Blake Jones) - Fair scheduler SMP NOHZ balancing code speedups: - Move checking for nohz cpus after time check - Change likelyhood of nohz.nr_cpus - Remove nohz.nr_cpus and use weight of cpumask instead (Shrikanth Hegde) - Avoid false sharing for sched_clock_irqtime (Wangyang Guo) - Drop useless cpumask_empty() in find_energy_efficient_cpu() - Simplify task_numa_find_cpu() - Use cpumask_weight_and() in sched_balance_find_dst_group() (Yury Norov) DL scheduler updates: - Add a deadline server for sched_ext tasks (by Andrea Righi and Joel Fernandes, with fixes by Peter Zijlstra) RT scheduler updates: - Skip currently executing CPU in rto_next_cpu() (Chen Jinghuang) Entry code updates and performance improvements, which is part of the scheduler tree in this cycle due to interdependencies with the RSEQ based time slice extension work: - Remove unused syscall argument from syscall_trace_enter() - Rework syscall_exit_to_user_mode_work() for architecture reuse - Add arch_ptrace_report_syscall_entry/exit() - Inline syscall_exit_work() and syscall_trace_enter() (Jinjie Ruan) Scheduler core updates: - Rework sched_class::wakeup_preempt() and rq_modified_*() - Avoid rq->lock bouncing in sched_balance_newidle() - Rename rcu_dereference_check_sched_domain() => rcu_dereference_sched_domain() - : Add the __signed_scalar_typeof() helper (Peter Zijlstra) Fair scheduler updates/refactoring: - Fold the sched_avg update - Change rcu_dereference_check_sched_domain() to rcu-sched - Switch to rcu_dereference_all() - Remove superfluous rcu_read_lock() - Limit hrtick work (Peter Zijlstra) - Join two #ifdef CONFIG_FAIR_GROUP_SCHED blocks - Clean up comments in 'struct cfs_rq' - Separate se->vlag from se->vprot - Rename cfs_rq::avg_load to cfs_rq::sum_weight - Rename cfs_rq::avg_vruntime to ::sum_w_vruntime & helper functions - Introduce and use the vruntime_cmp() and vruntime_op() wrappers for wrapped-signed aritmetics - Sort out 'blocked_load*' namespace noise (Ingo Molnar) Scheduler debugging code updates: - Export hidden tracepoints to modules (Gabriele Monaco) - Convert copy_from_user() + kstrtouint() to kstrtouint_from_user() (Fushuai Wang) - Add assertions to QUEUE_CLASS (Peter Zijlstra) - hrtimer: Fix tracing oddity (Thomas Gleixner) Misc fixes and cleanups: - Re-evaluate scheduling when migrating queued tasks out of throttled cgroups (Zicheng Qu) - Remove task_struct->faults_disabled_mapping (Christoph Hellwig) - Fix math notation errors in avg_vruntime comment (Zhan Xusheng) - sched/cpufreq: Use %pe format for PTR_ERR() printing (zenghongling) Thanks, Ingo ------------------> Andrea Righi (2): sched_ext: Add a DL server for sched_ext tasks selftests/sched_ext: Add test for sched_ext dl_server Blake Jones (1): sched: Reorder some fields in struct rq Chen Jinghuang (1): sched/rt: Skip currently executing CPU in rto_next_cpu() Christoph Hellwig (1): sched: remove task_struct->faults_disabled_mapping Fushuai Wang (1): sched/debug: Convert copy_from_user() + kstrtouint() to kstrtouint_from_user() Gabriele Monaco (2): sched: Export hidden tracepoints to modules sched: Fix build for modules using set_tsk_need_resched() Ingo Molnar (7): sched/fair: Join two #ifdef CONFIG_FAIR_GROUP_SCHED blocks sched/fair: Clean up comments in 'struct cfs_rq' sched/fair: Separate se->vlag from se->vprot sched/fair: Rename cfs_rq::avg_load to cfs_rq::sum_weight sched/fair: Rename cfs_rq::avg_vruntime to ::sum_w_vruntime, and helper functions sched/fair: Introduce and use the vruntime_cmp() and vruntime_op() wrappers for wrapped-signed aritmetics sched/fair: Sort out 'blocked_load*' namespace noise Jinjie Ruan (4): entry: Remove unused syscall argument from syscall_trace_enter() entry: Rework syscall_exit_to_user_mode_work() for architecture reuse entry: Add arch_ptrace_report_syscall_entry/exit() entry: Inline syscall_exit_work() and syscall_trace_enter() Joel Fernandes (5): sched/deadline: Clear the defer params sched/debug: Fix updating of ppos on server write ops sched/debug: Stop and start server based on if it was active sched/debug: Add support to change sched_ext server params selftests/sched_ext: Add test for DL server total_bw consistency Peter Zijlstra (17): : Add the __signed_scalar_typeof() helper sched/fair: Fold the sched_avg update sched/fair: Avoid rq->lock bouncing in sched_balance_newidle() sched/headers: Rename rcu_dereference_check_sched_domain() => rcu_dereference_sched_domain() sched/fair: Switch to rcu_dereference_all() sched/fair: Remove superfluous rcu_read_lock() sched/fair: Limit hrtick work sched/core: Add assertions to QUEUE_CLASS sched/core: Rework sched_class::wakeup_preempt() and rq_modified_*() sched: Fix faulty assertion in sched_change_end() sched/fair: Fix sched_avg fold sched: Further restrict the preemption modes rseq: Allow registering RSEQ with slice extension rseq: Move slice_ext_nsec to debugfs rseq: Lower default slice extension selftests/rseq: Add rseq slice histogram script sched/debug: Fix dl_server (re)start conditions Shrikanth Hegde (3): sched/fair: Move checking for nohz cpus after time check sched/fair: Change likelyhood of nohz.nr_cpus sched/fair: Remove nohz.nr_cpus and use weight of cpumask instead Shubhang Kaushik (1): sched: Update rq->avg_idle when a task is moved to an idle CPU Thomas Gleixner (12): rseq: Add fields and constants for time slice extension rseq: Provide static branch for time slice extensions rseq: Add statistics for time slice extensions rseq: Add prctl() to enable time slice extensions rseq: Implement sys_rseq_slice_yield() rseq: Implement syscall entry work for time slice extensions rseq: Implement time slice extension enforcement timer rseq: Reset slice extension when scheduled rseq: Implement rseq_grant_slice_extension() entry: Hook up rseq time slice extension selftests/rseq: Implement time slice extension test hrtimer: Fix trace oddity Wangyang Guo (1): sched/clock: Avoid false sharing for sched_clock_irqtime Yury Norov (NVIDIA) (3): sched/fair: Drop useless cpumask_empty() in find_energy_efficient_cpu() sched/fair: Simplify task_numa_find_cpu() sched/fair: Use cpumask_weight_and() in sched_balance_find_dst_group() Zhan Xusheng (1): sched/fair: Fix math notation errors in avg_vruntime comment Zicheng Qu (1): sched: Re-evaluate scheduling when migrating queued tasks out of throttled cgroups zenghongling (1): sched/cpufreq: Use %pe format for PTR_ERR() printing Documentation/admin-guide/kernel-parameters.txt | 5 + Documentation/userspace-api/index.rst | 1 + Documentation/userspace-api/rseq.rst | 140 ++++++++ arch/alpha/kernel/syscalls/syscall.tbl | 1 + arch/arm/tools/syscall.tbl | 1 + arch/arm64/tools/syscall_32.tbl | 1 + arch/m68k/kernel/syscalls/syscall.tbl | 1 + arch/microblaze/kernel/syscalls/syscall.tbl | 1 + arch/mips/kernel/syscalls/syscall_n32.tbl | 1 + arch/mips/kernel/syscalls/syscall_n64.tbl | 1 + arch/mips/kernel/syscalls/syscall_o32.tbl | 1 + arch/parisc/kernel/syscalls/syscall.tbl | 1 + arch/powerpc/kernel/syscalls/syscall.tbl | 1 + arch/s390/kernel/syscalls/syscall.tbl | 1 + arch/sh/kernel/syscalls/syscall.tbl | 1 + arch/sparc/kernel/syscalls/syscall.tbl | 1 + arch/x86/entry/syscalls/syscall_32.tbl | 1 + arch/x86/entry/syscalls/syscall_64.tbl | 1 + arch/x86/kernel/tsc.c | 2 - arch/xtensa/kernel/syscalls/syscall.tbl | 1 + include/linux/compiler_types.h | 19 ++ include/linux/entry-common.h | 167 ++++++++- include/linux/rseq.h | 11 + include/linux/rseq_entry.h | 192 ++++++++++- include/linux/rseq_types.h | 32 +- include/linux/sched.h | 14 +- include/linux/syscalls.h | 1 + include/linux/thread_info.h | 16 +- include/uapi/asm-generic/unistd.h | 5 +- include/uapi/linux/prctl.h | 10 + include/uapi/linux/rseq.h | 41 ++- init/Kconfig | 12 + init/init_task.c | 1 - kernel/Kconfig.preempt | 3 + kernel/entry/common.c | 27 +- kernel/entry/common.h | 7 - kernel/entry/syscall-common.c | 97 +----- kernel/entry/syscall_user_dispatch.c | 4 +- kernel/rseq.c | 365 +++++++++++++++++++- kernel/sched/clock.c | 3 + kernel/sched/core.c | 86 +++-- kernel/sched/cpufreq_schedutil.c | 2 +- kernel/sched/cputime.c | 9 +- kernel/sched/deadline.c | 105 ++++-- kernel/sched/debug.c | 187 ++++++++--- kernel/sched/ext.c | 42 ++- kernel/sched/fair.c | 411 ++++++++++++----------- kernel/sched/idle.c | 7 +- kernel/sched/rt.c | 14 +- kernel/sched/sched.h | 142 ++++---- kernel/sched/stop_task.c | 3 - kernel/sched/topology.c | 5 + kernel/sys.c | 6 + kernel/sys_ni.c | 1 + kernel/time/hrtimer.c | 2 +- scripts/syscall.tbl | 1 + tools/testing/selftests/rseq/.gitignore | 1 + tools/testing/selftests/rseq/Makefile | 5 +- tools/testing/selftests/rseq/rseq-abi.h | 27 ++ tools/testing/selftests/rseq/rseq-slice-hist.py | 132 ++++++++ tools/testing/selftests/rseq/slice_test.c | 219 ++++++++++++ tools/testing/selftests/sched_ext/Makefile | 2 + tools/testing/selftests/sched_ext/rt_stall.bpf.c | 23 ++ tools/testing/selftests/sched_ext/rt_stall.c | 240 +++++++++++++ tools/testing/selftests/sched_ext/total_bw.c | 281 ++++++++++++++++ 65 files changed, 2598 insertions(+), 546 deletions(-) create mode 100644 Documentation/userspace-api/rseq.rst delete mode 100644 kernel/entry/common.h create mode 100644 tools/testing/selftests/rseq/rseq-slice-hist.py create mode 100644 tools/testing/selftests/rseq/slice_test.c create mode 100644 tools/testing/selftests/sched_ext/rt_stall.bpf.c create mode 100644 tools/testing/selftests/sched_ext/rt_stall.c create mode 100644 tools/testing/selftests/sched_ext/total_bw.c