Messages in this thread | | | Date | Mon, 3 Jul 2017 10:39:09 +0200 | From | Ingo Molnar <> | Subject | [GIT PULL] scheduler changes for v4.13 |
| |
Linus,
Please pull the latest sched-core-for-linus git tree from:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git sched-core-for-linus
# HEAD: 72298e5c92c50edd8cb7cfda4519483ce65fa166 sched/cputime: Refactor the cputime_adjust() code
The main changes in this cycle were:
- Add the SYSTEM_SCHEDULING bootup state to move various scheduler debug checks earlier into the bootup. This turns silent and sporadically deadly bugs into nice, deterministic splats. Fix some of the splats that triggered. (Thomas Gleixner)
- A round of restructuring and refactoring of the load-balancing and topology code (Peter Zijlstra)
- Another round of consolidating ~20 of incremental scheduler code history: this time in terms of wait-queue nomenclature. (I didn't get much feedback on these renaming patches, and we can still easily change any names I might have misplaced, so if anyone hates a new name, please holler and I'll fix it.) (Ingo Molnar)
- sched/numa improvements, fixes and updates (Rik van Riel)
- Another round of x86/tsc scheduler clock code improvements, in hope of making it more robust (Peter Zijlstra)
- Improve NOHZ behavior (Frederic Weisbecker)
- Deadline scheduler improvements and fixes (Luca Abeni, Daniel Bristot de Oliveira)
- Simplify and optimize the topology setup code (Lauro Ramos Venancio)
- Debloat and decouple scheduler code some more (Nicolas Pitre)
- Simplify code by making better use of llist primitives (Byungchul Park)
- ... plus other fixes and improvements.
Thanks,
Ingo
------------------> Aaron Lu (1): smp: Avoid sending needless IPI in smp_call_function_many()
Arnd Bergmann (1): x86/tsc: Fold set_cyc2ns_scale() into caller
Aubrey Li (1): sched/idle: Add deferrable vmstat_updater back
Byungchul Park (4): llist: Provide a safe version for llist_for_each() sched/core: Use the new llist_for_each_entry_safe() primitive sched/rt: Remove unnecessary condition in push_rt_task() sched/deadline: Remove unnecessary condition in push_dl_task()
Claudio Scordino (1): sched/deadline: Add documentation about GRUB reclaiming
Daniel Axtens (1): sched/fair: WARN() and refuse to set buddy when !se->on_rq
Daniel Bristot de Oliveira (3): sched/deadline: Fix dl_bw comment sched/deadline: Use the revised wakeup rule for suspending constrained dl tasks sched/debug: Expose the number of RT/DL tasks that can migrate
Dave Kleikamp (1): sched/rt: Minimize rq->lock contention in do_sched_rt_period_timer()
Davidlohr Bueso (1): sched/core: Drop the unused try_get_task_struct() helper function
Frederic Weisbecker (3): sched/loadavg: Generalize "_idle" naming to "_nohz" nohz: Move idle balancer registration to the idle path sched/fair: Spare idle load balancing on nohz_full CPUs
Gustavo A. R. Silva (1): sched/cputime: Refactor the cputime_adjust() code
Ingo Molnar (11): sched/wait: Rename wait_queue_t => wait_queue_entry_t sched/wait: Standardize internal naming of wait-queue entries sched/wait: Standardize internal naming of wait-queue heads sched/wait: Standardize 'struct wait_bit_queue' wait-queue entry field name sched/wait: Standardize wait_bit_queue naming sched/wait: Improve the bit-wait API parameter names in the API function prototypes sched/wait: Re-adjust macro line continuation backslashes in <linux/wait.h> sched/wait: Split out the wait_bit*() APIs from <linux/wait.h> into <linux/wait_bit.h> sched/wait: Move bit_wait_table[] and related functionality from sched/core.c to sched/wait_bit.c sched/wait: Disambiguate wq_entry->task_list and wq_head->task_list naming sched/debug: Fix SCHED_WARN_ON() to return a value on !CONFIG_SCHED_DEBUG as well
Lauro Ramos Venancio (3): sched/topology: Refactor function build_overlap_sched_groups() sched/topology: Optimize build_group_mask() sched/topology: Move comment about asymmetric node setups
Luca Abeni (9): sched/deadline: Track the active utilization sched/deadline: Improve the tracking of active utilization sched/deadline: Fix the update of the total -deadline utilization sched/deadline: Implement GRUB accounting sched/deadline: Do not reclaim the whole CPU bandwidth sched/deadline: Make GRUB a task's flag sched/deadline: Track the "total rq utilization" too sched/deadline: Base GRUB reclaiming on the inactive utilization sched/deadline: Reclaim bandwidth not used by dl tasks
Nicolas Pitre (4): sched/core: Omit building stop_sched_class when !SMP sched/cpuset: Only offer CONFIG_CPUSETS if SMP is enabled sched/deadline: Move DL related code from sched/core.c to sched/deadline.c sched/rt: Move RT related code from sched/core.c to sched/rt.c
Perr Zhang (1): sched/header: Remove leftover, obsolete comment
Peter Zijlstra (30): x86/tsc: Provide 'tsc=unstable' boot parameter x86/tsc: Remodel cyc2ns to use seqcount_latch() x86/tsc: Fix sched_clock() sync x86/tsc: Feed refined TSC calibration into sched_clock() sched/clock: Initialize all per-CPU state before switching (back) to unstable x86/tsc, sched/clock, clocksource: Use clocksource watchdog to provide stable sync points sched/clock: Remove unused argument to sched_clock_idle_wakeup_event() sched/clock: Remove watchdog touching cpuidle: Fix idle time tracking sched/clock: Use late_initcall() instead of sched_init_smp() sched/clock: Print a warning recommending 'tsc=unstable' sched/fair, cpumask: Export for_each_cpu_wrap() sched/topology: Fix building of overlapping sched-groups sched/topology: Simplify build_overlap_sched_groups() sched/debug: Print the scheduler topology group mask sched/topology: Verify the first group matches the child domain sched/topology: Remove FORCE_SD_OVERLAP sched/topology: Fix overlapping sched_group_mask sched/topology: Small cleanup sched/topology: Add sched_group_capacity debugging sched/topology: Fix overlapping sched_group_capacity sched/topology: Add a few comments sched/topology: Rewrite get_group() sched/topology: Simplify sched_group_mask() usage sched/topology: Rename sched_group_mask() sched/topology: Rename sched_group_cpus() sched/fair: Use task_groups instead of leaf_cfs_rq_list to walk all cfs_rqs smp, cpumask: Use non-atomic cpumask_{set,clear}_cpu() sched/clock: Fix early boot preempt assumption in __set_sched_clock_stable() sched/core: Implement new approach to scale select_idle_cpu()
Rik van Riel (4): sched/numa: Override part of migrate_degrades_locality() when idle balancing sched/fair: Simplify wake_affine() for the single socket case sched/numa: Implement NUMA node level wake_affine() sched/fair: Remove effective_load()
Steven Rostedt (VMware) (1): sched/core: Allow __sched_setscheduler() in interrupts when PI is not used
Tejun Heo (1): sched/fair: Fix O(nr_cgroups) in load balance path
Thomas Gleixner (18): init: Pin init task to the boot CPU, initially arm: Adjust system_state check arm64: Adjust system_state check x86/smp: Adjust system_state check metag: Adjust system_state check powerpc: Adjust system_state check ACPI: Adjust system_state check mm: Adjust system_state check cpufreq/pasemi: Adjust system_state check iommu/vt-d: Adjust system_state checks iommu/of: Adjust system_state check async: Adjust system_state checks extable: Adjust system_state checks printk: Adjust system_state checks mm/vmscan: Adjust system_state checks init: Introduce SYSTEM_SCHEDULING state sched/core: Enable might_sleep() and smp_processor_id() checks early sched/numa: Hide numa_wake_affine() from UP build
Vincent Guittot (1): sched/cfs: Make util/load_avg more stable
Vlastimil Babka (1): sched/numa: Use down_read_trylock() for the mmap_sem
Xunlei Pang (1): sched/deadline: Zero out positive runtime after throttling constrained tasks
Documentation/DocBook/kernel-hacking.tmpl | 2 +- Documentation/filesystems/autofs4.txt | 12 +- Documentation/scheduler/sched-deadline.txt | 168 ++++ Documentation/trace/ftrace.txt | 2 +- arch/arm/kernel/smp.c | 3 +- arch/arm64/kernel/smp.c | 3 +- arch/metag/kernel/smp.c | 3 +- arch/powerpc/kernel/smp.c | 2 +- arch/x86/events/core.c | 12 +- arch/x86/include/asm/timer.h | 8 +- arch/x86/kernel/smpboot.c | 2 +- arch/x86/kernel/tsc.c | 206 ++-- arch/x86/platform/uv/tlb_uv.c | 14 +- block/blk-mq.c | 4 +- block/blk-wbt.c | 4 +- block/kyber-iosched.c | 16 +- drivers/acpi/pci_root.c | 2 +- drivers/base/node.c | 2 +- drivers/bluetooth/btmrvl_main.c | 2 +- drivers/char/ipmi/ipmi_watchdog.c | 2 +- drivers/cpufreq/pasemi-cpufreq.c | 2 +- drivers/cpuidle/cpuidle.c | 1 + drivers/gpu/drm/i915/i915_gem_request.h | 2 +- drivers/gpu/drm/i915/i915_sw_fence.c | 35 +- drivers/gpu/drm/i915/i915_sw_fence.h | 2 +- drivers/gpu/drm/radeon/radeon.h | 2 +- drivers/gpu/drm/radeon/radeon_fence.c | 2 +- drivers/gpu/vga/vgaarb.c | 2 +- drivers/infiniband/hw/i40iw/i40iw_main.c | 2 +- drivers/iommu/intel-iommu.c | 4 +- drivers/iommu/of_iommu.c | 2 +- drivers/md/bcache/btree.h | 2 +- drivers/net/ethernet/cavium/liquidio/octeon_main.h | 4 +- drivers/net/wireless/cisco/airo.c | 2 +- .../net/wireless/intersil/hostap/hostap_ioctl.c | 2 +- drivers/net/wireless/marvell/libertas/main.c | 2 +- drivers/rtc/rtc-imxdi.c | 2 +- drivers/scsi/dpt/dpti_i2o.h | 2 +- drivers/scsi/ips.c | 12 +- drivers/scsi/ips.h | 4 +- .../staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c | 6 +- .../staging/lustre/lnet/klnds/socklnd/socklnd_cb.c | 4 +- drivers/staging/lustre/lnet/libcfs/debug.c | 2 +- drivers/staging/lustre/lnet/libcfs/tracefile.c | 2 +- drivers/staging/lustre/lnet/lnet/lib-eq.c | 2 +- drivers/staging/lustre/lnet/lnet/lib-socket.c | 2 +- drivers/staging/lustre/lustre/fid/fid_request.c | 6 +- drivers/staging/lustre/lustre/include/lustre_lib.h | 4 +- drivers/staging/lustre/lustre/llite/lcommon_cl.c | 2 +- .../staging/lustre/lustre/lov/lov_cl_internal.h | 2 +- drivers/staging/lustre/lustre/lov/lov_object.c | 2 +- drivers/staging/lustre/lustre/obdclass/lu_object.c | 6 +- drivers/tty/synclink_gt.c | 2 +- drivers/vfio/virqfd.c | 2 +- drivers/vhost/vhost.c | 2 +- drivers/vhost/vhost.h | 2 +- drivers/xen/manage.c | 1 + fs/autofs4/autofs_i.h | 2 +- fs/autofs4/waitq.c | 18 +- fs/cachefiles/internal.h | 4 +- fs/cachefiles/namei.c | 2 +- fs/cachefiles/rdwr.c | 4 +- fs/cifs/inode.c | 1 + fs/dax.c | 4 +- fs/eventfd.c | 2 +- fs/eventpoll.c | 12 +- fs/fs_pin.c | 4 +- fs/inode.c | 8 +- fs/jbd2/journal.c | 4 +- fs/nfs/internal.h | 1 + fs/nfs/nfs4proc.c | 4 +- fs/nilfs2/segment.c | 5 +- fs/orangefs/orangefs-bufmap.c | 12 +- fs/reiserfs/journal.c | 2 +- fs/select.c | 4 +- fs/signalfd.c | 2 +- fs/userfaultfd.c | 30 +- fs/xfs/xfs_icache.c | 4 +- fs/xfs/xfs_inode.c | 8 +- include/linux/blk-mq.h | 2 +- include/linux/clocksource.h | 1 + include/linux/cpumask.h | 28 + include/linux/eventfd.h | 4 +- include/linux/fs.h | 2 +- include/linux/kernel.h | 6 +- include/linux/kvm_irqfd.h | 2 +- include/linux/llist.h | 19 + include/linux/pagemap.h | 2 +- include/linux/poll.h | 2 +- include/linux/sched.h | 22 +- include/linux/sched/clock.h | 11 +- include/linux/sched/nohz.h | 8 +- include/linux/sched/task.h | 2 - include/linux/sunrpc/sched.h | 2 +- include/linux/vfio.h | 2 +- include/linux/wait.h | 1000 ++++++++------------ include/linux/wait_bit.h | 261 +++++ include/net/af_unix.h | 2 +- include/uapi/linux/auto_fs.h | 4 +- include/uapi/linux/auto_fs4.h | 4 +- include/uapi/linux/sched.h | 1 + init/Kconfig | 1 + init/main.c | 27 +- kernel/async.c | 8 +- kernel/exit.c | 17 +- kernel/extable.c | 2 +- kernel/futex.c | 2 +- kernel/printk/printk.c | 2 +- kernel/sched/Makefile | 6 +- kernel/sched/clock.c | 128 ++- kernel/sched/completion.c | 2 +- kernel/sched/core.c | 772 ++------------- kernel/sched/cputime.c | 16 +- kernel/sched/deadline.c | 894 ++++++++++++++++- kernel/sched/debug.c | 17 +- kernel/sched/fair.c | 451 ++++----- kernel/sched/features.h | 2 +- kernel/sched/idle.c | 1 + kernel/sched/loadavg.c | 51 +- kernel/sched/rt.c | 323 ++++++- kernel/sched/sched.h | 113 ++- kernel/sched/topology.c | 430 +++++++-- kernel/sched/wait.c | 441 ++------- kernel/sched/wait_bit.c | 286 ++++++ kernel/smp.c | 16 +- kernel/time/clocksource.c | 3 + kernel/time/tick-sched.c | 11 +- kernel/workqueue.c | 4 +- lib/cpumask.c | 32 + lib/smp_processor_id.c | 2 +- mm/filemap.c | 12 +- mm/memcontrol.c | 10 +- mm/mempool.c | 2 +- mm/shmem.c | 6 +- mm/vmscan.c | 2 +- net/9p/trans_fd.c | 4 +- net/bluetooth/bnep/core.c | 2 +- net/bluetooth/cmtp/core.c | 2 +- net/bluetooth/hidp/core.c | 2 +- net/core/datagram.c | 2 +- net/unix/af_unix.c | 4 +- security/keys/internal.h | 1 + sound/core/control.c | 2 +- sound/core/hwdep.c | 2 +- sound/core/init.c | 2 +- sound/core/oss/pcm_oss.c | 4 +- sound/core/pcm_lib.c | 2 +- sound/core/pcm_native.c | 4 +- sound/core/rawmidi.c | 8 +- sound/core/seq/seq_fifo.c | 2 +- sound/core/seq/seq_memory.c | 2 +- sound/core/timer.c | 2 +- sound/isa/wavefront/wavefront_synth.c | 2 +- sound/pci/mixart/mixart_core.c | 4 +- sound/pci/ymfpci/ymfpci_main.c | 2 +- virt/kvm/eventfd.c | 2 +- 156 files changed, 3658 insertions(+), 2621 deletions(-) create mode 100644 include/linux/wait_bit.h create mode 100644 kernel/sched/wait_bit.c
[ ... diff skipped due to size ... ]
| |