mirror of https://github.com/torvalds/linux.git
- 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. -----BEGIN PGP SIGNATURE----- iIQEABYKACwWIQTfIjM1kS57o3GsC/uxYfJx3gVYGQUCaS4h1A4cdGpAa2VybmVs Lm9yZwAKCRCxYfJx3gVYGe/MAP9EZ0pLiTpmMtt6mI/11Fmi+aWfL84j1zt13cz9 W4vb4gEA9eVEH6n9xyC4nhcOk9AQwSDuCWMOzLsnhW8TbEHVTww= =8W/B -----END PGP SIGNATURE----- Merge tag 'sched_ext-for-6.19' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/sched_ext Pull sched_ext updates from Tejun Heo: - 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. * tag 'sched_ext-for-6.19' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/sched_ext: (44 commits) sched_ext: Fix incorrect sched_class settings for per-cpu migration tasks sched_ext: tools: Removing duplicate targets during non-cross compilation sched_ext: Use kvfree_rcu() to release per-cpu ksyncs object sched_ext: Pass locked CPU parameter to scx_hardlockup() and add docs sched_ext: Update comments replacing breather with aborting mechanism sched_ext: Implement load balancer for bypass mode sched_ext: Factor out abbreviated dispatch dequeue into dispatch_dequeue_locked() sched_ext: Factor out scx_dsq_list_node cursor initialization into INIT_DSQ_LIST_CURSOR sched_ext: Add scx_cpu0 example scheduler sched_ext: Hook up hardlockup detector sched_ext: Make handle_lockup() propagate scx_verror() result sched_ext: Refactor lockup handlers into handle_lockup() sched_ext: Make scx_exit() and scx_vexit() return bool sched_ext: Exit dispatch and move operations immediately when aborting sched_ext: Simplify breather mechanism with scx_aborting flag sched_ext: Use per-CPU DSQs instead of per-node global DSQs in bypass mode sched_ext: Refactor do_enqueue_task() local and global DSQ paths sched_ext: Use shorter slice in bypass mode sched_ext: Mark racy bitfields to prevent adding fields that can't tolerate races sched_ext: Minor cleanups to scx_task_iter ... |
||
|---|---|---|
| .. | ||
| 9p.h | ||
| afs.h | ||
| alarmtimer.h | ||
| amdxdna.h | ||
| asoc.h | ||
| avc.h | ||
| bcache.h | ||
| block.h | ||
| bpf_test_run.h | ||
| bridge.h | ||
| btrfs.h | ||
| cachefiles.h | ||
| capability.h | ||
| cgroup.h | ||
| clk.h | ||
| cma.h | ||
| compaction.h | ||
| context_tracking.h | ||
| cpuhp.h | ||
| csd.h | ||
| damon.h | ||
| devfreq.h | ||
| devlink.h | ||
| dlm.h | ||
| dma.h | ||
| dma_fence.h | ||
| erofs.h | ||
| error_report.h | ||
| exceptions.h | ||
| ext4.h | ||
| f2fs.h | ||
| fib.h | ||
| fib6.h | ||
| filelock.h | ||
| filemap.h | ||
| firewire.h | ||
| firewire_ohci.h | ||
| fs_dax.h | ||
| fscache.h | ||
| fsi.h | ||
| fsi_master_aspeed.h | ||
| fsi_master_ast_cf.h | ||
| fsi_master_gpio.h | ||
| fsi_master_i2cr.h | ||
| gpio.h | ||
| gpu_mem.h | ||
| habanalabs.h | ||
| handshake.h | ||
| host1x.h | ||
| huge_memory.h | ||
| hugetlbfs.h | ||
| hw_pressure.h | ||
| hwmon.h | ||
| i2c.h | ||
| i2c_slave.h | ||
| ib_mad.h | ||
| ib_umad.h | ||
| icmp.h | ||
| initcall.h | ||
| intel-sst.h | ||
| intel_ifs.h | ||
| intel_ish.h | ||
| io_uring.h | ||
| iocost.h | ||
| iommu.h | ||
| ipi.h | ||
| irq.h | ||
| irq_matrix.h | ||
| iscsi.h | ||
| jbd2.h | ||
| kmem.h | ||
| ksm.h | ||
| kvm.h | ||
| kyber.h | ||
| libata.h | ||
| lock.h | ||
| maple_tree.h | ||
| mce.h | ||
| mctp.h | ||
| mdio.h | ||
| memcg.h | ||
| migrate.h | ||
| mlxsw.h | ||
| mmap.h | ||
| mmap_lock.h | ||
| mmc.h | ||
| mmflags.h | ||
| module.h | ||
| mptcp.h | ||
| napi.h | ||
| nbd.h | ||
| neigh.h | ||
| net.h | ||
| net_probe_common.h | ||
| netfs.h | ||
| netlink.h | ||
| nilfs2.h | ||
| nmi.h | ||
| notifier.h | ||
| objagg.h | ||
| oom.h | ||
| osnoise.h | ||
| page_isolation.h | ||
| page_pool.h | ||
| page_ref.h | ||
| pagemap.h | ||
| percpu.h | ||
| power.h | ||
| power_cpu_migrate.h | ||
| preemptirq.h | ||
| printk.h | ||
| pwc.h | ||
| pwm.h | ||
| qdisc.h | ||
| qla.h | ||
| qrtr.h | ||
| rcu.h | ||
| rdma_core.h | ||
| readahead.h | ||
| regulator.h | ||
| rpcgss.h | ||
| rpcrdma.h | ||
| rpm.h | ||
| rseq.h | ||
| rtc.h | ||
| rust_sample.h | ||
| rwmmio.h | ||
| rxrpc.h | ||
| sched.h | ||
| sched_ext.h | ||
| scmi.h | ||
| scsi.h | ||
| sctp.h | ||
| signal.h | ||
| siox.h | ||
| skb.h | ||
| smbus.h | ||
| sock.h | ||
| sof.h | ||
| sof_intel.h | ||
| spi.h | ||
| spmi.h | ||
| sunrpc.h | ||
| sunvnet.h | ||
| swiotlb.h | ||
| syscalls.h | ||
| target.h | ||
| task.h | ||
| tcp.h | ||
| tegra_apb_dma.h | ||
| thp.h | ||
| timer.h | ||
| timer_migration.h | ||
| timestamp.h | ||
| tlb.h | ||
| tsm_mr.h | ||
| udp.h | ||
| v4l2.h | ||
| vb2.h | ||
| vmalloc.h | ||
| vmscan.h | ||
| vsock_virtio_transport_common.h | ||
| watchdog.h | ||
| wbt.h | ||
| workqueue.h | ||
| writeback.h | ||
| xdp.h | ||
| xen.h | ||