[GIT PULL] scheduler changes for v4.13

Ingo Molnar
2017-07-03T08:39:18Z

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 ... ]