All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tejun Heo <tj@kernel.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: David Vernet <void@manifault.com>,
	Andrea Righi <arighi@nvidia.com>,
	Changwoo Min <multics69@gmail.com>,
	linux-kernel@vger.kernel.org, sched-ext@lists.linux.dev
Subject: [GIT PULL] sched_ext: Changes for v6.19
Date: Mon, 01 Dec 2025 13:48:47 -1000	[thread overview]
Message-ID: <ca8ceefd49d27fa71aed4859c0037b2f@kernel.org> (raw)

The following changes since commit 81e839803f9355084bc78f9e0c350c4e2853c880:

  Merge tag 'cgroup-for-6.19' into pr-base-for-6.19 (2025-12-01 13:20:56 -1000)

are available in the Git repository at:

  https://git.kernel.org/pub/scm/linux/kernel/git/tj/sched_ext.git tags/sched_ext-for-6.19

for you to fetch changes up to 1dd6c84f1c544e552848a8968599220bd464e338:

  sched_ext: Fix incorrect sched_class settings for per-cpu migration tasks (2025-12-01 10:58:49 -1000)

Please note that sched_ext-for-6.19 is based on v6.18 + tip/sched-core-2025-12-01
+ cgroup/for-6.19.

When merging sched_ext-for-6.19 into the above base, there is a trivial merge
conflict in kernel/sched/ext.c around pick_task_scx(). Both sched_ext and tip
sched/core independently pulled in a8ad873113d3 ("sched_ext: defer
queue_balance_callback() until after ops.dispatch") resolving conflicts
slightly differently (whitespace only). 67fa319f5fff ("sched_ext: Allow
forcibly picking an scx task") then added further changes in the same area.
Resolve by taking the sched_ext side.

----------------------------------------------------------------
sched_ext: Changes for v6.19

- Improve recovery from misbehaving BPF schedulers. When a scheduler puts many
  tasks with varying affinity restrictions on a shared DSQ, CPUs scanning
  through tasks they cannot run can overwhelm the system, causing lockups.
  Bypass mode now uses per-CPU DSQs with a load balancer to avoid this, and
  hooks into the hardlockup detector to attempt recovery. Add scx_cpu0 example
  scheduler to demonstrate this scenario.

- Add lockless peek operation for DSQs to reduce lock contention for schedulers
  that need to query queue state during load balancing.

- Allow scx_bpf_reenqueue_local() to be called from anywhere in preparation for
  deprecating cpu_acquire/release() callbacks in favor of generic BPF hooks.

- Prepare for hierarchical scheduler support: add scx_bpf_task_set_slice() and
  scx_bpf_task_set_dsq_vtime() kfuncs, make scx_bpf_dsq_insert*() return bool,
  and wrap kfunc args in structs for future aux__prog parameter.

- Implement cgroup_set_idle() callback to notify BPF schedulers when a cgroup's
  idle state changes.

- Fix migration tasks being incorrectly downgraded from stop_sched_class to
  rt_sched_class across sched_ext enable/disable. Applied late as the fix is
  low risk and the bug subtle but needs stable backporting.

- Various fixes and cleanups including cgroup exit ordering, SCX_KICK_WAIT
  reliability, and backward compatibility improvements.

----------------------------------------------------------------
Andrea Righi (4):
      sched_ext: Exit early on hotplug events during attach
      sched_ext: Allow forcibly picking an scx task
      sched_ext: Fix scx_bpf_dsq_peek() with FIFO DSQs
      sched_ext: Update comments replacing breather with aborting mechanism

Rong Tao (1):
      sched_ext: tools: Removing duplicate targets during non-cross compilation

Ryan Newton (2):
      sched_ext: Add lockless peek operation for DSQs
      sched_ext: Add a selftest for scx_bpf_dsq_peek

Tejun Heo (34):
      tools/sched_ext: Strip compatibility macros for cgroup and dispatch APIs
      sched_ext: Add scx_bpf_task_set_slice() and scx_bpf_task_set_dsq_vtime()
      sched_ext: Wrap kfunc args in struct to prepare for aux__prog
      sched_ext: Make scx_bpf_dsq_insert*() return bool
      sched_ext/tools: Add compat wrapper for scx_bpf_task_set_slice/dsq_vtime()
      sched_ext: Fix scx_bpf_dsq_insert() backward binary compatibility
      sched_ext: Don't kick CPUs running higher classes
      sched_ext: Fix SCX_KICK_WAIT to work reliably
      sched_ext: Rename pnt_seq to kick_sync
      sched_ext: Use rhashtable_lookup() instead of rhashtable_lookup_fast()
      sched_ext: Add ___compat suffix to scx_bpf_dsq_insert___v2 in compat.bpf.h
      sched_ext: Use SCX_TASK_READY test instead of tryget_task_struct() during class switch
      sched_ext: Split schedule_deferred() into locked and unlocked variants
      sched_ext: Factor out reenq_local() from scx_bpf_reenqueue_local()
      sched_ext: Allow scx_bpf_reenqueue_local() to be called from anywhere
      sched_ext/tools: Restore backward compat with v6.12 kernels
      sched_ext: Fix cgroup exit ordering by moving sched_ext_free() to finish_task_switch()
      sched_ext: Move __SCX_DSQ_ITER_ALL_FLAGS BUILD_BUG_ON to the right place
      sched_ext: Minor cleanups to scx_task_iter
      sched_ext: Mark racy bitfields to prevent adding fields that can't tolerate races
      sched_ext: Use shorter slice in bypass mode
      sched_ext: Refactor do_enqueue_task() local and global DSQ paths
      sched_ext: Use per-CPU DSQs instead of per-node global DSQs in bypass mode
      sched_ext: Simplify breather mechanism with scx_aborting flag
      sched_ext: Exit dispatch and move operations immediately when aborting
      sched_ext: Make scx_exit() and scx_vexit() return bool
      sched_ext: Refactor lockup handlers into handle_lockup()
      sched_ext: Make handle_lockup() propagate scx_verror() result
      sched_ext: Hook up hardlockup detector
      sched_ext: Add scx_cpu0 example scheduler
      sched_ext: Factor out scx_dsq_list_node cursor initialization into INIT_DSQ_LIST_CURSOR
      sched_ext: Factor out abbreviated dispatch dequeue into dispatch_dequeue_locked()
      sched_ext: Implement load balancer for bypass mode
      sched_ext: Pass locked CPU parameter to scx_hardlockup() and add docs

Zqiang (2):
      sched_ext: Use kvfree_rcu() to release per-cpu ksyncs object
      sched_ext: Fix incorrect sched_class settings for per-cpu migration tasks

zhidao su (1):
      sched/ext: Implement cgroup_set_idle() callback

 include/linux/sched/ext.h                        |   27 +-
 include/trace/events/sched_ext.h                 |   39 +
 kernel/fork.c                                    |    1 -
 kernel/sched/core.c                              |    6 +
 kernel/sched/ext.c                               | 1068 ++++++++++++++++------
 kernel/sched/ext_idle.c                          |   43 +-
 kernel/sched/ext_internal.h                      |   29 +-
 kernel/sched/sched.h                             |    4 +-
 kernel/watchdog.c                                |    9 +
 tools/sched_ext/Makefile                         |    4 +-
 tools/sched_ext/include/scx/common.bpf.h         |   15 +-
 tools/sched_ext/include/scx/compat.bpf.h         |  314 ++++--
 tools/sched_ext/include/scx/compat.h             |   14 +
 tools/sched_ext/scx_cpu0.bpf.c                   |   88 ++
 tools/sched_ext/scx_cpu0.c                       |  106 +++
 tools/sched_ext/scx_flatcg.bpf.c                 |   10 +-
 tools/sched_ext/scx_qmap.bpf.c                   |   52 +-
 tools/testing/selftests/sched_ext/Makefile       |    1 +
 tools/testing/selftests/sched_ext/peek_dsq.bpf.c |  251 +++++
 tools/testing/selftests/sched_ext/peek_dsq.c     |  224 +++++
 20 files changed, 1894 insertions(+), 411 deletions(-)
 create mode 100644 tools/sched_ext/scx_cpu0.bpf.c
 create mode 100644 tools/sched_ext/scx_cpu0.c
 create mode 100644 tools/testing/selftests/sched_ext/peek_dsq.bpf.c
 create mode 100644 tools/testing/selftests/sched_ext/peek_dsq.c

Thanks.

-- 
tejun

             reply	other threads:[~2025-12-01 23:48 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-12-01 23:48 Tejun Heo [this message]
2025-12-03 21:50 ` [GIT PULL] sched_ext: Changes for v6.19 pr-tracker-bot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ca8ceefd49d27fa71aed4859c0037b2f@kernel.org \
    --to=tj@kernel.org \
    --cc=arighi@nvidia.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=multics69@gmail.com \
    --cc=sched-ext@lists.linux.dev \
    --cc=torvalds@linux-foundation.org \
    --cc=void@manifault.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.