1. 25 Sep, 2019 16 commits
    • Quentin Perret's avatar
      sched/fair: Avoid redundant EAS calculation · 4892f51a
      Quentin Perret authored
      The EAS wake-up path computes the system energy for several CPU
      candidates: the CPU with maximum spare capacity in each performance
      domain, and the prev_cpu. However, if prev_cpu also happens to be the
      CPU with maximum spare capacity in its performance domain, the energy
      calculation is still done twice, unnecessarily.
      
      Add a condition to filter out this corner case before doing the energy
      calculation.
      Reported-by: default avatarPavan Kondeti <pkondeti@codeaurora.org>
      Signed-off-by: default avatarQuentin Perret <qperret@qperret.net>
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: dietmar.eggemann@arm.com
      Cc: juri.lelli@redhat.com
      Cc: morten.rasmussen@arm.com
      Cc: qais.yousef@arm.com
      Cc: rjw@rjwysocki.net
      Cc: tkjos@google.com
      Cc: valentin.schneider@arm.com
      Cc: vincent.guittot@linaro.org
      Fixes: eb92692b ("sched/fair: Speed-up energy-aware wake-ups")
      Link: https://lkml.kernel.org/r/20190920094115.GA11503@qperret.netSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
      4892f51a
    • Valentin Schneider's avatar
      sched/core: Remove double update_max_interval() call on CPU startup · 9fc41acc
      Valentin Schneider authored
      update_max_interval() is called in both CPUHP_AP_SCHED_STARTING's startup
      and teardown callbacks, but it turns out it's also called at the end of
      the startup callback of CPUHP_AP_ACTIVE (which is further down the
      startup sequence).
      
      There's no point in repeating this interval update in the startup sequence
      since the CPU will remain online until it goes down the teardown path.
      
      Remove the redundant call in sched_cpu_activate() (CPUHP_AP_ACTIVE).
      Signed-off-by: default avatarValentin Schneider <valentin.schneider@arm.com>
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: dietmar.eggemann@arm.com
      Cc: juri.lelli@redhat.com
      Cc: vincent.guittot@linaro.org
      Link: https://lkml.kernel.org/r/20190923093017.11755-1-valentin.schneider@arm.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
      9fc41acc
    • Valentin Schneider's avatar
      sched/core: Fix preempt_schedule() interrupt return comment · a49b4f40
      Valentin Schneider authored
      preempt_schedule_irq() is the one that should be called on return from
      interrupt, clean up the comment to avoid any ambiguity.
      Signed-off-by: default avatarValentin Schneider <valentin.schneider@arm.com>
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Acked-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: linux-m68k@lists.linux-m68k.org
      Cc: linux-riscv@lists.infradead.org
      Cc: uclinux-h8-devel@lists.sourceforge.jp
      Link: https://lkml.kernel.org/r/20190923143620.29334-2-valentin.schneider@arm.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
      a49b4f40
    • Qian Cai's avatar
      sched/fair: Fix -Wunused-but-set-variable warnings · 763a9ec0
      Qian Cai authored
      Commit:
      
         de53fd7a ("sched/fair: Fix low cpu usage with high throttling by removing expiration of cpu-local slices")
      
      introduced a few compilation warnings:
      
        kernel/sched/fair.c: In function '__refill_cfs_bandwidth_runtime':
        kernel/sched/fair.c:4365:6: warning: variable 'now' set but not used [-Wunused-but-set-variable]
        kernel/sched/fair.c: In function 'start_cfs_bandwidth':
        kernel/sched/fair.c:4992:6: warning: variable 'overrun' set but not used [-Wunused-but-set-variable]
      
      Also, __refill_cfs_bandwidth_runtime() does no longer update the
      expiration time, so fix the comments accordingly.
      Signed-off-by: default avatarQian Cai <cai@lca.pw>
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Reviewed-by: default avatarBen Segall <bsegall@google.com>
      Reviewed-by: default avatarDave Chiluk <chiluk+linux@indeed.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: pauld@redhat.com
      Fixes: de53fd7a ("sched/fair: Fix low cpu usage with high throttling by removing expiration of cpu-local slices")
      Link: https://lkml.kernel.org/r/1566326455-8038-1-git-send-email-cai@lca.pwSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
      763a9ec0
    • KeMeng Shi's avatar
      sched/core: Fix migration to invalid CPU in __set_cpus_allowed_ptr() · 714e501e
      KeMeng Shi authored
      An oops can be triggered in the scheduler when running qemu on arm64:
      
       Unable to handle kernel paging request at virtual address ffff000008effe40
       Internal error: Oops: 96000007 [#1] SMP
       Process migration/0 (pid: 12, stack limit = 0x00000000084e3736)
       pstate: 20000085 (nzCv daIf -PAN -UAO)
       pc : __ll_sc___cmpxchg_case_acq_4+0x4/0x20
       lr : move_queued_task.isra.21+0x124/0x298
       ...
       Call trace:
        __ll_sc___cmpxchg_case_acq_4+0x4/0x20
        __migrate_task+0xc8/0xe0
        migration_cpu_stop+0x170/0x180
        cpu_stopper_thread+0xec/0x178
        smpboot_thread_fn+0x1ac/0x1e8
        kthread+0x134/0x138
        ret_from_fork+0x10/0x18
      
      __set_cpus_allowed_ptr() will choose an active dest_cpu in affinity mask to
      migrage the process if process is not currently running on any one of the
      CPUs specified in affinity mask. __set_cpus_allowed_ptr() will choose an
      invalid dest_cpu (dest_cpu >= nr_cpu_ids, 1024 in my virtual machine) if
      CPUS in an affinity mask are deactived by cpu_down after cpumask_intersects
      check. cpumask_test_cpu() of dest_cpu afterwards is overflown and may pass if
      corresponding bit is coincidentally set. As a consequence, kernel will
      access an invalid rq address associate with the invalid CPU in
      migration_cpu_stop->__migrate_task->move_queued_task and the Oops occurs.
      
      The reproduce the crash:
      
        1) A process repeatedly binds itself to cpu0 and cpu1 in turn by calling
        sched_setaffinity.
      
        2) A shell script repeatedly does "echo 0 > /sys/devices/system/cpu/cpu1/online"
        and "echo 1 > /sys/devices/system/cpu/cpu1/online" in turn.
      
        3) Oops appears if the invalid CPU is set in memory after tested cpumask.
      Signed-off-by: default avatarKeMeng Shi <shikemeng@huawei.com>
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Reviewed-by: default avatarValentin Schneider <valentin.schneider@arm.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Link: https://lkml.kernel.org/r/1568616808-16808-1-git-send-email-shikemeng@huawei.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
      714e501e
    • Mathieu Desnoyers's avatar
      sched/membarrier: Return -ENOMEM to userspace on memory allocation failure · c172e0a3
      Mathieu Desnoyers authored
      Remove the IPI fallback code from membarrier to deal with very
      infrequent cpumask memory allocation failure. Use GFP_KERNEL rather
      than GFP_NOWAIT, and relax the blocking guarantees for the expedited
      membarrier system call commands, allowing it to block if waiting for
      memory to be made available.
      
      In addition, now -ENOMEM can be returned to user-space if the cpumask
      memory allocation fails.
      Signed-off-by: default avatarMathieu Desnoyers <mathieu.desnoyers@efficios.com>
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Chris Metcalf <cmetcalf@ezchip.com>
      Cc: Christoph Lameter <cl@linux.com>
      Cc: Eric W. Biederman <ebiederm@xmission.com>
      Cc: Kirill Tkhai <tkhai@yandex.ru>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Oleg Nesterov <oleg@redhat.com>
      Cc: Paul E. McKenney <paulmck@linux.ibm.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Russell King - ARM Linux admin <linux@armlinux.org.uk>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Link: https://lkml.kernel.org/r/20190919173705.2181-8-mathieu.desnoyers@efficios.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
      c172e0a3
    • Mathieu Desnoyers's avatar
      sched/membarrier: Skip IPIs when mm->mm_users == 1 · c6d68c1c
      Mathieu Desnoyers authored
      If there is only a single mm_user for the mm, the private expedited
      membarrier command can skip the IPIs, because only a single thread
      is using the mm.
      Signed-off-by: default avatarMathieu Desnoyers <mathieu.desnoyers@efficios.com>
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Chris Metcalf <cmetcalf@ezchip.com>
      Cc: Christoph Lameter <cl@linux.com>
      Cc: Eric W. Biederman <ebiederm@xmission.com>
      Cc: Kirill Tkhai <tkhai@yandex.ru>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Oleg Nesterov <oleg@redhat.com>
      Cc: Paul E. McKenney <paulmck@linux.ibm.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Russell King - ARM Linux admin <linux@armlinux.org.uk>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Link: https://lkml.kernel.org/r/20190919173705.2181-7-mathieu.desnoyers@efficios.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
      c6d68c1c
    • Mathieu Desnoyers's avatar
      selftests, sched/membarrier: Add multi-threaded test · 19a4ff53
      Mathieu Desnoyers authored
      membarrier commands cover very different code paths if they are in
      a single-threaded vs multi-threaded process. Therefore, exercise both
      scenarios in the kernel selftests to increase coverage of this selftest.
      Signed-off-by: default avatarMathieu Desnoyers <mathieu.desnoyers@efficios.com>
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Chris Metcalf <cmetcalf@ezchip.com>
      Cc: Christoph Lameter <cl@linux.com>
      Cc: Eric W. Biederman <ebiederm@xmission.com>
      Cc: Kirill Tkhai <tkhai@yandex.ru>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Oleg Nesterov <oleg@redhat.com>
      Cc: Paul E. McKenney <paulmck@linux.ibm.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Russell King - ARM Linux admin <linux@armlinux.org.uk>
      Cc: Shuah Khan <shuahkh@osg.samsung.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Link: https://lkml.kernel.org/r/20190919173705.2181-6-mathieu.desnoyers@efficios.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
      19a4ff53
    • Mathieu Desnoyers's avatar
      sched/membarrier: Fix p->mm->membarrier_state racy load · 227a4aad
      Mathieu Desnoyers authored
      The membarrier_state field is located within the mm_struct, which
      is not guaranteed to exist when used from runqueue-lock-free iteration
      on runqueues by the membarrier system call.
      
      Copy the membarrier_state from the mm_struct into the scheduler runqueue
      when the scheduler switches between mm.
      
      When registering membarrier for mm, after setting the registration bit
      in the mm membarrier state, issue a synchronize_rcu() to ensure the
      scheduler observes the change. In order to take care of the case
      where a runqueue keeps executing the target mm without swapping to
      other mm, iterate over each runqueue and issue an IPI to copy the
      membarrier_state from the mm_struct into each runqueue which have the
      same mm which state has just been modified.
      
      Move the mm membarrier_state field closer to pgd in mm_struct to use
      a cache line already touched by the scheduler switch_mm.
      
      The membarrier_execve() (now membarrier_exec_mmap) hook now needs to
      clear the runqueue's membarrier state in addition to clear the mm
      membarrier state, so move its implementation into the scheduler
      membarrier code so it can access the runqueue structure.
      
      Add memory barrier in membarrier_exec_mmap() prior to clearing
      the membarrier state, ensuring memory accesses executed prior to exec
      are not reordered with the stores clearing the membarrier state.
      
      As suggested by Linus, move all membarrier.c RCU read-side locks outside
      of the for each cpu loops.
      Suggested-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarMathieu Desnoyers <mathieu.desnoyers@efficios.com>
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Chris Metcalf <cmetcalf@ezchip.com>
      Cc: Christoph Lameter <cl@linux.com>
      Cc: Eric W. Biederman <ebiederm@xmission.com>
      Cc: Kirill Tkhai <tkhai@yandex.ru>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Oleg Nesterov <oleg@redhat.com>
      Cc: Paul E. McKenney <paulmck@linux.ibm.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Russell King - ARM Linux admin <linux@armlinux.org.uk>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Link: https://lkml.kernel.org/r/20190919173705.2181-5-mathieu.desnoyers@efficios.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
      227a4aad
    • Mathieu Desnoyers's avatar
      sched/membarrier: Call sync_core only before usermode for same mm · 2840cf02
      Mathieu Desnoyers authored
      When the prev and next task's mm change, switch_mm() provides the core
      serializing guarantees before returning to usermode. The only case
      where an explicit core serialization is needed is when the scheduler
      keeps the same mm for prev and next.
      Suggested-by: default avatarOleg Nesterov <oleg@redhat.com>
      Signed-off-by: default avatarMathieu Desnoyers <mathieu.desnoyers@efficios.com>
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Chris Metcalf <cmetcalf@ezchip.com>
      Cc: Christoph Lameter <cl@linux.com>
      Cc: Eric W. Biederman <ebiederm@xmission.com>
      Cc: Kirill Tkhai <tkhai@yandex.ru>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Paul E. McKenney <paulmck@linux.ibm.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Russell King - ARM Linux admin <linux@armlinux.org.uk>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Link: https://lkml.kernel.org/r/20190919173705.2181-4-mathieu.desnoyers@efficios.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
      2840cf02
    • Mathieu Desnoyers's avatar
      sched/membarrier: Remove redundant check · 09554009
      Mathieu Desnoyers authored
      Checking that the number of threads is 1 is redundant with checking
      mm_users == 1.
      
      No change in functionality intended.
      Suggested-by: default avatarOleg Nesterov <oleg@redhat.com>
      Signed-off-by: default avatarMathieu Desnoyers <mathieu.desnoyers@efficios.com>
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Chris Metcalf <cmetcalf@ezchip.com>
      Cc: Christoph Lameter <cl@linux.com>
      Cc: Eric W. Biederman <ebiederm@xmission.com>
      Cc: Kirill Tkhai <tkhai@yandex.ru>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Paul E. McKenney <paulmck@linux.ibm.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Russell King - ARM Linux admin <linux@armlinux.org.uk>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Link: https://lkml.kernel.org/r/20190919173705.2181-3-mathieu.desnoyers@efficios.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
      09554009
    • Mathieu Desnoyers's avatar
      sched/membarrier: Fix private expedited registration check · fc0d7738
      Mathieu Desnoyers authored
      Fix a logic flaw in the way membarrier_register_private_expedited()
      handles ready state checks for private expedited sync core and private
      expedited registrations.
      
      If a private expedited membarrier registration is first performed, and
      then a private expedited sync_core registration is performed, the ready
      state check will skip the second registration when it really should not.
      Signed-off-by: default avatarMathieu Desnoyers <mathieu.desnoyers@efficios.com>
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Chris Metcalf <cmetcalf@ezchip.com>
      Cc: Christoph Lameter <cl@linux.com>
      Cc: Eric W. Biederman <ebiederm@xmission.com>
      Cc: Kirill Tkhai <tkhai@yandex.ru>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Oleg Nesterov <oleg@redhat.com>
      Cc: Paul E. McKenney <paulmck@linux.ibm.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Russell King - ARM Linux admin <linux@armlinux.org.uk>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Link: https://lkml.kernel.org/r/20190919173705.2181-2-mathieu.desnoyers@efficios.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
      fc0d7738
    • Eric W. Biederman's avatar
      tasks, sched/core: RCUify the assignment of rq->curr · 5311a98f
      Eric W. Biederman authored
      The current task on the runqueue is currently read with rcu_dereference().
      
      To obtain ordinary RCU semantics for an rcu_dereference() of rq->curr it needs
      to be paired with rcu_assign_pointer() of rq->curr.  Which provides the
      memory barrier necessary to order assignments to the task_struct
      and the assignment to rq->curr.
      
      Unfortunately the assignment of rq->curr in __schedule is a hot path,
      and it has already been show that additional barriers in that code
      will reduce the performance of the scheduler.  So I will attempt to
      describe below why you can effectively have ordinary RCU semantics
      without any additional barriers.
      
      The assignment of rq->curr in init_idle is a slow path called once
      per cpu and that can use rcu_assign_pointer() without any concerns.
      
      As I write this there are effectively two users of rcu_dereference() on
      rq->curr.  There is the membarrier code in kernel/sched/membarrier.c
      that only looks at "->mm" after the rcu_dereference().  Then there is
      task_numa_compare() in kernel/sched/fair.c.  My best reading of the
      code shows that task_numa_compare only access: "->flags",
      "->cpus_ptr", "->numa_group", "->numa_faults[]",
      "->total_numa_faults", and "->se.cfs_rq".
      
      The code in __schedule() essentially does:
      	rq_lock(...);
      	smp_mb__after_spinlock();
      
      	next = pick_next_task(...);
      	rq->curr = next;
      
      	context_switch(prev, next);
      
      At the start of the function the rq_lock/smp_mb__after_spinlock
      pair provides a full memory barrier.  Further there is a full memory barrier
      in context_switch().
      
      This means that any task that has already run and modified itself (the
      common case) has already seen two memory barriers before __schedule()
      runs and begins executing.  A task that modifies itself then sees a
      third full memory barrier pair with the rq_lock();
      
      For a brand new task that is enqueued with wake_up_new_task() there
      are the memory barriers present from the taking and release the
      pi_lock and the rq_lock as the processes is enqueued as well as the
      full memory barrier at the start of __schedule() assuming __schedule()
      happens on the same cpu.
      
      This means that by the time we reach the assignment of rq->curr
      except for values on the task struct modified in pick_next_task
      the code has the same guarantees as if it used rcu_assign_pointer().
      
      Reading through all of the implementations of pick_next_task it
      appears pick_next_task is limited to modifying the task_struct fields
      "->se", "->rt", "->dl".  These fields are the sched_entity structures
      of the varies schedulers.
      
      Further "->se.cfs_rq" is only changed in cgroup attach/move operations
      initialized by userspace.
      
      Unless I have missed something this means that in practice that the
      users of "rcu_dereference(rq->curr)" get normal RCU semantics of
      rcu_dereference() for the fields the care about, despite the
      assignment of rq->curr in __schedule() ot using rcu_assign_pointer.
      Signed-off-by: default avatarEric W. Biederman <ebiederm@xmission.com>
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Chris Metcalf <cmetcalf@ezchip.com>
      Cc: Christoph Lameter <cl@linux.com>
      Cc: Davidlohr Bueso <dave@stgolabs.net>
      Cc: Kirill Tkhai <tkhai@yandex.ru>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Oleg Nesterov <oleg@redhat.com>
      Cc: Paul E. McKenney <paulmck@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Russell King - ARM Linux admin <linux@armlinux.org.uk>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Link: https://lore.kernel.org/r/20190903200603.GW2349@hirez.programming.kicks-ass.netSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
      5311a98f
    • Eric W. Biederman's avatar
      tasks, sched/core: With a grace period after finish_task_switch(), remove unnecessary code · 154abafc
      Eric W. Biederman authored
      Remove work arounds that were written before there was a grace period
      after tasks left the runqueue in finish_task_switch().
      
      In particular now that there tasks exiting the runqueue exprience
      a RCU grace period none of the work performed by task_rcu_dereference()
      excpet the rcu_dereference() is necessary so replace task_rcu_dereference()
      with rcu_dereference().
      
      Remove the code in rcuwait_wait_event() that checks to ensure the current
      task has not exited.  It is no longer necessary as it is guaranteed
      that any running task will experience a RCU grace period after it
      leaves the run queueue.
      
      Remove the comment in rcuwait_wake_up() as it is no longer relevant.
      
      Ref: 8f95c90c ("sched/wait, RCU: Introduce rcuwait machinery")
      Ref: 150593bf ("sched/api: Introduce task_rcu_dereference() and try_get_task_struct()")
      Signed-off-by: default avatarEric W. Biederman <ebiederm@xmission.com>
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Chris Metcalf <cmetcalf@ezchip.com>
      Cc: Christoph Lameter <cl@linux.com>
      Cc: Davidlohr Bueso <dave@stgolabs.net>
      Cc: Kirill Tkhai <tkhai@yandex.ru>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Oleg Nesterov <oleg@redhat.com>
      Cc: Paul E. McKenney <paulmck@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Russell King - ARM Linux admin <linux@armlinux.org.uk>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Link: https://lkml.kernel.org/r/87lfurdpk9.fsf_-_@x220.int.ebiederm.orgSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
      154abafc
    • Eric W. Biederman's avatar
      tasks, sched/core: Ensure tasks are available for a grace period after leaving the runqueue · 0ff7b2cf
      Eric W. Biederman authored
      In the ordinary case today the RCU grace period for a task_struct is
      triggered when another process wait's for it's zombine and causes the
      kernel to call release_task().  As the waiting task has to receive a
      signal and then act upon it before this happens, typically this will
      occur after the original task as been removed from the runqueue.
      
      Unfortunaty in some cases such as self reaping tasks it can be shown
      that release_task() will be called starting the grace period for
      task_struct long before the task leaves the runqueue.
      
      Therefore use put_task_struct_rcu_user() in finish_task_switch() to
      guarantee that the there is a RCU lifetime after the task
      leaves the runqueue.
      
      Besides the change in the start of the RCU grace period for the
      task_struct this change may cause perf_event_delayed_put and
      trace_sched_process_free.  The function perf_event_delayed_put boils
      down to just a WARN_ON for cases that I assume never show happen.  So
      I don't see any problem with delaying it.
      
      The function trace_sched_process_free is a trace point and thus
      visible to user space.  Occassionally userspace has the strangest
      dependencies so this has a miniscule chance of causing a regression.
      This change only changes the timing of when the tracepoint is called.
      The change in timing arguably gives userspace a more accurate picture
      of what is going on.  So I don't expect there to be a regression.
      
      In the case where a task self reaps we are pretty much guaranteed that
      the RCU grace period is delayed.  So we should get quite a bit of
      coverage in of this worst case for the change in a normal threaded
      workload.  So I expect any issues to turn up quickly or not at all.
      
      I have lightly tested this change and everything appears to work
      fine.
      Inspired-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Inspired-by: default avatarOleg Nesterov <oleg@redhat.com>
      Signed-off-by: default avatarEric W. Biederman <ebiederm@xmission.com>
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Chris Metcalf <cmetcalf@ezchip.com>
      Cc: Christoph Lameter <cl@linux.com>
      Cc: Davidlohr Bueso <dave@stgolabs.net>
      Cc: Kirill Tkhai <tkhai@yandex.ru>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Paul E. McKenney <paulmck@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Russell King - ARM Linux admin <linux@armlinux.org.uk>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Link: https://lkml.kernel.org/r/87r24jdpl5.fsf_-_@x220.int.ebiederm.orgSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
      0ff7b2cf
    • Eric W. Biederman's avatar
      tasks: Add a count of task RCU users · 3fbd7ee2
      Eric W. Biederman authored
      Add a count of the number of RCU users (currently 1) of the task
      struct so that we can later add the scheduler case and get rid of the
      very subtle task_rcu_dereference(), and just use rcu_dereference().
      
      As suggested by Oleg have the count overlap rcu_head so that no
      additional space in task_struct is required.
      Inspired-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Inspired-by: default avatarOleg Nesterov <oleg@redhat.com>
      Signed-off-by: default avatarEric W. Biederman <ebiederm@xmission.com>
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Chris Metcalf <cmetcalf@ezchip.com>
      Cc: Christoph Lameter <cl@linux.com>
      Cc: Davidlohr Bueso <dave@stgolabs.net>
      Cc: Kirill Tkhai <tkhai@yandex.ru>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Paul E. McKenney <paulmck@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Russell King - ARM Linux admin <linux@armlinux.org.uk>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Link: https://lkml.kernel.org/r/87woebdplt.fsf_-_@x220.int.ebiederm.orgSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
      3fbd7ee2
  2. 18 Sep, 2019 1 commit
  3. 17 Sep, 2019 13 commits
    • Qian Cai's avatar
      sched/fair: Remove unused cfs_rq_clock_task() function · dac9f027
      Qian Cai authored
      cfs_rq_clock_task() was first introduced and used in:
      
        f1b17280 ("sched: Maintain runnable averages across throttled periods")
      
      Over time its use has been graduately removed by the following commits:
      
        d31b1a66 ("sched/fair: Factorize PELT update")
        23127296 ("sched/fair: Update scale invariance of PELT")
      
      Today, there is no single user left, so it can be safely removed.
      
      Found via the -Wunused-function build warning.
      Signed-off-by: default avatarQian Cai <cai@lca.pw>
      Cc: Ben Segall <bsegall@google.com>
      Cc: Dietmar Eggemann <dietmar.eggemann@arm.com>
      Cc: Juri Lelli <juri.lelli@redhat.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Mel Gorman <mgorman@suse.de>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Vincent Guittot <vincent.guittot@linaro.org>
      Link: https://lkml.kernel.org/r/1568668775-2127-1-git-send-email-cai@lca.pw
      [ Rewrote the changelog. ]
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      dac9f027
    • Linus Torvalds's avatar
      Merge tag 'platform-drivers-x86-v5.4-1' of git://git.infradead.org/linux-platform-drivers-x86 · ad062195
      Linus Torvalds authored
      Pull x86 platform-drivers updates from Andy Shevchenko:
      
       - ASUS WMI driver got a couple of updates, i.e. support of FAN is fixed
         for recent products and the charge threshold support has been added
      
       - Two uknown key events for Dell laptops are being ignored now to avoid
         spamming users with harmless messages
      
       - HP ZBook 17 G5 and ASUS Zenbook UX430UNR got accelerometer support.
      
       - Intel CherryTrail platforms had a regression with wake up. Now it's
         fixed
      
       - Intel PMC driver got fixed in order to work nicely in Xen
         environment
      
       - Intel Speed Select driver provides bucket vs core count relationship.
         Besides that the tools has been updated for better output
      
       - The PrivacyGuard is enabled on Lenovo ThinkPad laptops
      
       - Three tablets - Trekstor Primebook C11B 2-in-1, Irbis TW90 and Chuwi
         Surbook Mini - got touchscreen support
      
      * tag 'platform-drivers-x86-v5.4-1' of git://git.infradead.org/linux-platform-drivers-x86: (53 commits)
        MAINTAINERS: Switch PDx86 subsystem status to Odd Fixes
        platform/x86: asus-wmi: Refactor charge threshold to use the battery hooking API
        platform/x86: asus-wmi: Rename CHARGE_THRESHOLD to RSOC
        platform/x86: asus-wmi: Reorder ASUS_WMI_CHARGE_THRESHOLD
        tools/power/x86/intel-speed-select: Display core count for bucket
        platform/x86: ISST: Allow additional TRL MSRs
        tools/power/x86/intel-speed-select: Fix memory leak
        tools/power/x86/intel-speed-select: Output success/failed for command output
        tools/power/x86/intel-speed-select: Output human readable CPU list
        tools/power/x86/intel-speed-select: Change turbo ratio output to maximum turbo frequency
        tools/power/x86/intel-speed-select: Switch output to MHz
        tools/power/x86/intel-speed-select: Simplify output for turbo-freq and base-freq
        tools/power/x86/intel-speed-select: Fix cpu-count output
        tools/power/x86/intel-speed-select: Fix help option typo
        tools/power/x86/intel-speed-select: Fix package typo
        tools/power/x86/intel-speed-select: Fix a read overflow in isst_set_tdp_level_msr()
        platform/x86: intel_int0002_vgpio: Use device_init_wakeup
        platform/x86: intel_int0002_vgpio: Fix wakeups not working on Cherry Trail
        platform/x86: compal-laptop: Initialize "value" in ec_read_u8()
        platform/x86: touchscreen_dmi: Add info for the Trekstor Primebook C11B 2-in-1
        ...
      ad062195
    • Linus Torvalds's avatar
      Merge branch 'x86-vmware-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 7ac63f6b
      Linus Torvalds authored
      Pull x86 vmware updates from Ingo Molnar:
       "This updates the VMWARE guest driver with support for VMCALL/VMMCALL
        based hypercalls"
      
      * 'x86-vmware-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        input/vmmouse: Update the backdoor call with support for new instructions
        drm/vmwgfx: Update the backdoor call with support for new instructions
        x86/vmware: Add a header file for hypercall definitions
        x86/vmware: Update platform detection code for VMCALL/VMMCALL hypercalls
      7ac63f6b
    • Linus Torvalds's avatar
      Merge branch 'x86-hyperv-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · e2bddc20
      Linus Torvalds authored
      Pull x86 hyperv updates from Ingo Molnar:
       "Misc updates related to page size abstractions within the HyperV code,
        in preparation for future features"
      
      * 'x86-hyperv-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        drivers: hv: vmbus: Replace page definition with Hyper-V specific one
        x86/hyperv: Add functions to allocate/deallocate page for Hyper-V
        x86/hyperv: Create and use Hyper-V page definitions
      e2bddc20
    • Linus Torvalds's avatar
      Merge branch 'x86-platform-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 6f246714
      Linus Torvalds authored
      Pull x86 platform update from Ingo Molnar:
       "The biggest change is the rework of the intel/iosf_mbi locking code
        which used a few non-standard locking patterns, to make it work under
        lockdep"
      
      * 'x86-platform-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/platform/uv: Fix kmalloc() NULL check routine
        x86/platform/intel/iosf_mbi Rewrite locking
      6f246714
    • Linus Torvalds's avatar
      Merge branch 'x86-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · ac51667b
      Linus Torvalds authored
      Pull x86 mm updates from Ingo Molnar:
      
       - Make cpumask_of_node() more robust against invalid node IDs
      
       - Simplify and speed up load_mm_cr4()
      
       - Unexport and remove various unused set_memory_*() APIs
      
       - Misc cleanups
      
      * 'x86-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/mm: Fix cpumask_of_node() error condition
        x86/mm: Remove the unused set_memory_wt() function
        x86/mm: Remove set_pages_x() and set_pages_nx()
        x86/mm: Remove the unused set_memory_array_*() functions
        x86/mm: Unexport set_memory_x() and set_memory_nx()
        x86/fixmap: Cleanup outdated comments
        x86/kconfig: Remove X86_DIRECT_GBPAGES dependency on !DEBUG_PAGEALLOC
        x86/mm: Avoid redundant interrupt disable in load_mm_cr4()
      ac51667b
    • Linus Torvalds's avatar
      Merge branch 'x86-entry-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · e0d60a1e
      Linus Torvalds authored
      Pull x86 entry updates from Ingo Molnar:
       "This contains x32 and compat syscall improvements, the biggest one of
        which splits x32 syscalls into their own table, which allows new
        syscalls to share the x32 and x86-64 number - which turns the
        512-547 special syscall numbers range into a legacy wart that won't be
        extended going forward"
      
      * 'x86-entry-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/syscalls: Split the x32 syscalls into their own table
        x86/syscalls: Disallow compat entries for all types of 64-bit syscalls
        x86/syscalls: Use the compat versions of rt_sigsuspend() and rt_sigprocmask()
        x86/syscalls: Make __X32_SYSCALL_BIT be unsigned long
      e0d60a1e
    • Linus Torvalds's avatar
      Merge branch 'x86-cpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 22331f89
      Linus Torvalds authored
      Pull x86 cpu-feature updates from Ingo Molnar:
      
       - Rework the Intel model names symbols/macros, which were decades of
         ad-hoc extensions and added random noise. It's now a coherent, easy
         to follow nomenclature.
      
       - Add new Intel CPU model IDs:
          - "Tiger Lake" desktop and mobile models
          - "Elkhart Lake" model ID
          - and the "Lightning Mountain" variant of Airmont, plus support code
      
       - Add the new AVX512_VP2INTERSECT instruction to cpufeatures
      
       - Remove Intel MPX user-visible APIs and the self-tests, because the
         toolchain (gcc) is not supporting it going forward. This is the
         first, lowest-risk phase of MPX removal.
      
       - Remove X86_FEATURE_MFENCE_RDTSC
      
       - Various smaller cleanups and fixes
      
      * 'x86-cpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (25 commits)
        x86/cpu: Update init data for new Airmont CPU model
        x86/cpu: Add new Airmont variant to Intel family
        x86/cpu: Add Elkhart Lake to Intel family
        x86/cpu: Add Tiger Lake to Intel family
        x86: Correct misc typos
        x86/intel: Add common OPTDIFFs
        x86/intel: Aggregate microserver naming
        x86/intel: Aggregate big core graphics naming
        x86/intel: Aggregate big core mobile naming
        x86/intel: Aggregate big core client naming
        x86/cpufeature: Explain the macro duplication
        x86/ftrace: Remove mcount() declaration
        x86/PCI: Remove superfluous returns from void functions
        x86/msr-index: Move AMD MSRs where they belong
        x86/cpu: Use constant definitions for CPU models
        lib: Remove redundant ftrace flag removal
        x86/crash: Remove unnecessary comparison
        x86/bitops: Use __builtin_constant_p() directly instead of IS_IMMEDIATE()
        x86: Remove X86_FEATURE_MFENCE_RDTSC
        x86/mpx: Remove MPX APIs
        ...
      22331f89
    • Linus Torvalds's avatar
      Merge branch 'x86-build-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · fc6fd139
      Linus Torvalds authored
      Pull x86 build cleanup from Ingo Molnar:
       "A single change that removes unnecessary asm-generic wrappers"
      
      * 'x86-build-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/build: Remove unneeded uapi asm-generic wrappers
      fc6fd139
    • Linus Torvalds's avatar
      Merge branch 'x86-boot-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 49a21e52
      Linus Torvalds authored
      Pull x86 boot code cleanup from Ingo Molnar:
       "Clean up the BUILD_BUG_ON() definition which can cause build warnings"
      
      * 'x86-boot-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/boot: Use common BUILD_BUG_ON
      49a21e52
    • Linus Torvalds's avatar
      Merge branch 'x86-asm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · df4c0b18
      Linus Torvalds authored
      Pull x86 asm updates from Ingo Molnar:
      
       - Add UMIP emulation/spoofing for 64-bit processes as well, because of
         Wine based gaming.
      
       - Clean up symbols/labels in low level asm code
      
       - Add an assembly optimized mul_u64_u32_div() implementation on x86-64.
      
      * 'x86-asm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/umip: Add emulation (spoofing) for UMIP covered instructions in 64-bit processes as well
        x86/asm: Make some functions local labels
        x86/asm/suspend: Get rid of bogus_64_magic
        x86/math64: Provide a sane mul_u64_u32_div() implementation for x86_64
      df4c0b18
    • Linus Torvalds's avatar
      Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 7e67a859
      Linus Torvalds authored
      Pull scheduler updates from Ingo Molnar:
      
       - MAINTAINERS: Add Mark Rutland as perf submaintainer, Juri Lelli and
         Vincent Guittot as scheduler submaintainers. Add Dietmar Eggemann,
         Steven Rostedt, Ben Segall and Mel Gorman as scheduler reviewers.
      
         As perf and the scheduler is getting bigger and more complex,
         document the status quo of current responsibilities and interests,
         and spread the review pain^H^H^H^H fun via an increase in the Cc:
         linecount generated by scripts/get_maintainer.pl. :-)
      
       - Add another series of patches that brings the -rt (PREEMPT_RT) tree
         closer to mainline: split the monolithic CONFIG_PREEMPT dependencies
         into a new CONFIG_PREEMPTION category that will allow the eventual
         introduction of CONFIG_PREEMPT_RT. Still a few more hundred patches
         to go though.
      
       - Extend the CPU cgroup controller with uclamp.min and uclamp.max to
         allow the finer shaping of CPU bandwidth usage.
      
       - Micro-optimize energy-aware wake-ups from O(CPUS^2) to O(CPUS).
      
       - Improve the behavior of high CPU count, high thread count
         applications running under cpu.cfs_quota_us constraints.
      
       - Improve balancing with SCHED_IDLE (SCHED_BATCH) tasks present.
      
       - Improve CPU isolation housekeeping CPU allocation NUMA locality.
      
       - Fix deadline scheduler bandwidth calculations and logic when cpusets
         rebuilds the topology, or when it gets deadline-throttled while it's
         being offlined.
      
       - Convert the cpuset_mutex to percpu_rwsem, to allow it to be used from
         setscheduler() system calls without creating global serialization.
         Add new synchronization between cpuset topology-changing events and
         the deadline acceptance tests in setscheduler(), which were broken
         before.
      
       - Rework the active_mm state machine to be less confusing and more
         optimal.
      
       - Rework (simplify) the pick_next_task() slowpath.
      
       - Improve load-balancing on AMD EPYC systems.
      
       - ... and misc cleanups, smaller fixes and improvements - please see
         the Git log for more details.
      
      * 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (53 commits)
        sched/psi: Correct overly pessimistic size calculation
        sched/fair: Speed-up energy-aware wake-ups
        sched/uclamp: Always use 'enum uclamp_id' for clamp_id values
        sched/uclamp: Update CPU's refcount on TG's clamp changes
        sched/uclamp: Use TG's clamps to restrict TASK's clamps
        sched/uclamp: Propagate system defaults to the root group
        sched/uclamp: Propagate parent clamps
        sched/uclamp: Extend CPU's cgroup controller
        sched/topology: Improve load balancing on AMD EPYC systems
        arch, ia64: Make NUMA select SMP
        sched, perf: MAINTAINERS update, add submaintainers and reviewers
        sched/fair: Use rq_lock/unlock in online_fair_sched_group
        cpufreq: schedutil: fix equation in comment
        sched: Rework pick_next_task() slow-path
        sched: Allow put_prev_task() to drop rq->lock
        sched/fair: Expose newidle_balance()
        sched: Add task_struct pointer to sched_class::set_curr_task
        sched: Rework CPU hotplug task selection
        sched/{rt,deadline}: Fix set_next_task vs pick_next_task
        sched: Fix kerneldoc comment for ia64_set_curr_task
        ...
      7e67a859
    • Linus Torvalds's avatar
      Merge branch 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 772c1d06
      Linus Torvalds authored
      Pull perf updates from Ingo Molnar:
       "Kernel side changes:
      
         - Improved kbprobes robustness
      
         - Intel PEBS support for PT hardware tracing
      
         - Other Intel PT improvements: high order pages memory footprint
           reduction and various related cleanups
      
         - Misc cleanups
      
        The perf tooling side has been very busy in this cycle, with over 300
        commits. This is an incomplete high-level summary of the many
        improvements done by over 30 developers:
      
         - Lots of updates to the following tools:
      
            'perf c2c'
            'perf config'
            'perf record'
            'perf report'
            'perf script'
            'perf test'
            'perf top'
            'perf trace'
      
         - Updates to libperf and libtraceevent, and a consolidation of the
           proliferation of x86 instruction decoder libraries.
      
         - Vendor event updates for Intel and PowerPC CPUs,
      
         - Updates to hardware tracing tooling for ARM and Intel CPUs,
      
         - ... and lots of other changes and cleanups - see the shortlog and
           Git log for details"
      
      * 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (322 commits)
        kprobes: Prohibit probing on BUG() and WARN() address
        perf/x86: Make more stuff static
        x86, perf: Fix the dependency of the x86 insn decoder selftest
        objtool: Ignore intentional differences for the x86 insn decoder
        objtool: Update sync-check.sh from perf's check-headers.sh
        perf build: Ignore intentional differences for the x86 insn decoder
        perf intel-pt: Use shared x86 insn decoder
        perf intel-pt: Remove inat.c from build dependency list
        perf: Update .gitignore file
        objtool: Move x86 insn decoder to a common location
        perf metricgroup: Support multiple events for metricgroup
        perf metricgroup: Scale the metric result
        perf pmu: Change convert_scale from static to global
        perf symbols: Move mem_info and branch_info out of symbol.h
        perf auxtrace: Uninline functions that touch perf_session
        perf tools: Remove needless evlist.h include directives
        perf tools: Remove needless evlist.h include directives
        perf tools: Remove needless thread_map.h include directives
        perf tools: Remove needless thread.h include directives
        perf tools: Remove needless map.h include directives
        ...
      772c1d06
  4. 16 Sep, 2019 10 commits
    • Linus Torvalds's avatar
      Merge branch 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · c7eba51c
      Linus Torvalds authored
      Pull locking updates from Ingo Molnar:
      
       - improve rwsem scalability
      
       - add uninitialized rwsem debugging check
      
       - reduce lockdep's stacktrace memory usage and add diagnostics
      
       - misc cleanups, code consolidation and constification
      
      * 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        mutex: Fix up mutex_waiter usage
        locking/mutex: Use mutex flags macro instead of hard code
        locking/mutex: Make __mutex_owner static to mutex.c
        locking/qspinlock,x86: Clarify virt_spin_lock_key
        locking/rwsem: Check for operations on an uninitialized rwsem
        locking/rwsem: Make handoff writer optimistically spin on owner
        locking/lockdep: Report more stack trace statistics
        locking/lockdep: Reduce space occupied by stack traces
        stacktrace: Constify 'entries' arguments
        locking/lockdep: Make it clear that what lock_class::key points at is not modified
      c7eba51c
    • Linus Torvalds's avatar
      Merge branch 'efi-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · cc9b499a
      Linus Torvalds authored
      Pull EFI updates from Ingo Molnar:
      
       - refactor the EFI config table handling across architectures
      
       - add support for the Dell EMC OEM config table
      
       - include AER diagnostic output to CPER handling of fatal PCIe errors
      
      * 'efi-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        efi: cper: print AER info of PCIe fatal error
        efi: Export Runtime Configuration Interface table to sysfs
        efi: ia64: move SAL systab handling out of generic EFI code
        efi/x86: move UV_SYSTAB handling into arch/x86
        efi: x86: move efi_is_table_address() into arch/x86
      cc9b499a
    • Linus Torvalds's avatar
      Merge branch 'core-stacktrace-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 98c82b4b
      Linus Torvalds authored
      Pull stacktrace fixlet from Ingo Molnar:
       "Two comment fixes"
      
      * 'core-stacktrace-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        lib/stackdepot: Fix outdated comments
      98c82b4b
    • Linus Torvalds's avatar
      Merge branch 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 94d18ee9
      Linus Torvalds authored
      Pull RCU updates from Ingo Molnar:
       "This cycle's RCU changes were:
      
         - A few more RCU flavor consolidation cleanups.
      
         - Updates to RCU's list-traversal macros improving lockdep usability.
      
         - Forward-progress improvements for no-CBs CPUs: Avoid ignoring
           incoming callbacks during grace-period waits.
      
         - Forward-progress improvements for no-CBs CPUs: Use ->cblist
           structure to take advantage of others' grace periods.
      
         - Also added a small commit that avoids needlessly inflicting
           scheduler-clock ticks on callback-offloaded CPUs.
      
         - Forward-progress improvements for no-CBs CPUs: Reduce contention on
           ->nocb_lock guarding ->cblist.
      
         - Forward-progress improvements for no-CBs CPUs: Add ->nocb_bypass
           list to further reduce contention on ->nocb_lock guarding ->cblist.
      
         - Miscellaneous fixes.
      
         - Torture-test updates.
      
         - minor LKMM updates"
      
      * 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (86 commits)
        MAINTAINERS: Update from paulmck@linux.ibm.com to paulmck@kernel.org
        rcu: Don't include <linux/ktime.h> in rcutiny.h
        rcu: Allow rcu_do_batch() to dynamically adjust batch sizes
        rcu/nocb: Don't wake no-CBs GP kthread if timer posted under overload
        rcu/nocb: Reduce __call_rcu_nocb_wake() leaf rcu_node ->lock contention
        rcu/nocb: Reduce nocb_cb_wait() leaf rcu_node ->lock contention
        rcu/nocb: Advance CBs after merge in rcutree_migrate_callbacks()
        rcu/nocb: Avoid synchronous wakeup in __call_rcu_nocb_wake()
        rcu/nocb: Print no-CBs diagnostics when rcutorture writer unduly delayed
        rcu/nocb: EXP Check use and usefulness of ->nocb_lock_contended
        rcu/nocb: Add bypass callback queueing
        rcu/nocb: Atomic ->len field in rcu_segcblist structure
        rcu/nocb: Unconditionally advance and wake for excessive CBs
        rcu/nocb: Reduce ->nocb_lock contention with separate ->nocb_gp_lock
        rcu/nocb: Reduce contention at no-CBs invocation-done time
        rcu/nocb: Reduce contention at no-CBs registry-time CB advancement
        rcu/nocb: Round down for number of no-CBs grace-period kthreads
        rcu/nocb: Avoid ->nocb_lock capture by corresponding CPU
        rcu/nocb: Avoid needless wakeups of no-CBs grace-period kthread
        rcu/nocb: Make __call_rcu_nocb_wake() safe for many callbacks
        ...
      94d18ee9
    • Linus Torvalds's avatar
      Merge branch 'core-objtool-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · d75a43c6
      Linus Torvalds authored
      Pull objtool build fix from Ingo Molnar:
       "Fix objtool builds with more exotic, user-defined CFLAGS"
      
      * 'core-objtool-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        objtool: Clobber user CFLAGS variable
      d75a43c6
    • Linus Torvalds's avatar
      Merge branch 'core-headers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · a480222f
      Linus Torvalds authored
      Pull header documentation fix from Ingo Molnar:
       "Fix the parameter description <asm-generic/div64.h>"
      
      * 'core-headers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        asm-generic/div64: Fix documentation of do_div() parameter
      a480222f
    • Linus Torvalds's avatar
      Merge tag 'armsoc-dt' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc · cef72982
      Linus Torvalds authored
      Pull ARM DT updates from Arnd Bergmann:
       "This is another huge branch with close to 450 changessets related to
        devicetree files, roughly half of this for 32-bit and 64-bit
        respectively. There are lots of cleanups and additional hardware
        support for platforms we already support based on SoCs from Renesas,
        ST-Microelectronics, Intel/Altera, Rockchips, Allwinner, Broadcom and
        other manufacturers.
      
        A total of 6 new SoCs and 37 new boards gets added this time, one more
        SoC will come in a follow-up branch. Most of the new boards are for
        64-bit ARM SoCs, the others are typically for the 32-bit Cortex-A7.
      
        Going more into details for SoC platforms with new hardware support:
      
         - The Snapdragon 855 (SM8150) is Qualcomm's current high-end phone
           platform, usually paired with an external 5G modem. So far we only
           support the Qualcomm SM8150 MTP reference platform, but no actual
           products.
      
         - For the slightly older Qualcomm platforms, support for several
           interesting products is getting added: Three laptops based on
           Snapdragon 835/MSM8998 (Asus NovaGo, HP Envy X2 and Lenovo Miix
           630), one laptop based on Snapdragon 850/sdm850 (Lenovo Yoga C630)
           and several phones based on the older Snapdragon 410/MSM8916
           (Samsung A3 and A5, Longcheer L8150 aka Android One 2nd gen "seed"
           aka Wileyfox Swift).
      
         - Mediatek MT7629 is a new wireless network router chip, similar to
           the older MT7623. It gets added together with the reference board
           implementation.
      
         - Allwinner V3 is a repackaged version of the existing low-end V3s
           chip, and is used in the tiny Lichee Pi Zero plus, also added here.
           There is also a new TV set-top box based on Allwinner H6, the Tanix
           TX6, and the eMMC variant of the Olimex A64-Olinuxino development
           board.
      
         - NXP i.MX8M Nano is a new member of the ever-expanding i.MX SoC
           family, similar to the i.MX8M Mini. As usual, there is a large
           number of new boards for i.MX SoCs: Einfochips i.MX8QXP AI_ML,
           SolidRun Hummingboard Pulse baseboard and System-on-Module,
           Boundary Devices i.MX8MQ Nitrogen8M, and TechNexion
           PICO-PI-IMX8M-DEV for the 64-bit i.MX8 line. For 32-bit, we get the
           Kontron i.MX6UL N6310 SoM with two baseboards, the PHYTEC
           phyBOARD-Segin SoM with three baseboards, and the Zodiac Inflight
           Innovations i.MX7 RMU2 board.
      
         - In a different NXP product line, the Layerscape LS1046A "Freeway"
           reference board gets added.
      
         - Amlogic SM1 (S905X3) and G12B (S922X, A311D) are updated chips from
           their set-top-box line and smart speaker with newer CPU and GPU
           cores compared to their predecessors. Both are now also supported
           by the Khadas VIM3 development board series, and the dts files for
           that get reorganized a bit to better deal with all variants.
           Another board based on SM1 that gets added is the SEI Robotics
           SEI610.
      
         - There are a handful of new x86 and Power9 server boards using
           Aspeed BMC chips that are gaining support for running Linux on the
           BMC through the OpenBMC project: Facebook
           Minipack/Wedge100/Wedge40, Lenovo Hr855xg2, and Mihawk. Notably
           these are still new machines using SoCs based on the ARM9 and ARM11
           CPU cores, as support for the new Cortex-A7 based AST2600 is still
           ramping up.
      
         - There are three new end-user products using 32-bit Rockchips SoCs:
           Mecer Xtreme Mini S6 is an Android "mini PC" box based on the
           low-end RK3229 chip, while the two AOpen products Chromebox Mini
           (Fievel) and Chromebase Mini (Tiger) run ChromeOS and are meant for
           commercial settings(digital signage, PoS, ...).
      
         - One more single-board computer based on the popular 64-bit RK3399
           is added: the Leez RK3399 P710"
      
      * tag 'armsoc-dt' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: (467 commits)
        arm64: dts: qcom: Add Lenovo Yoga C630
        ARM: dts: aspeed-g5: Fixe gpio-ranges upper limit
        ARM; dts: aspeed: mihawk: File should not be executable
        ARM: dts: aspeed: swift: Change power supplies to version 2
        ARM: dts: aspeed: vesnin: Add secondary SPI flash chip
        ARM: dts: aspeed: vesnin: Add wdt2 with alt-boot option
        ARM: dts: aspeed-g4: Add all flash chips
        ARM: dts: exynos: Enable GPU/Mali T604 on Arndale board
        ARM: dts: exynos: Enable GPU/Mali T604 on Chromebook Snow
        ARM: dts: exynos: Add GPU/Mali T604 node to Exynos5250
        ARM: dts: exynos: Fix min/max buck4 for GPU on Arndale board
        ARM: dts: exynos: Mark LDO10 as always-on on Peach Pit/Pi Chromebooks
        ARM: dts: exynos: Remove not accurate secondary ADC compatible
        arm64: dts: rockchip: limit clock rate of MMC controllers for RK3328
        arm64: dts: meson-sm1-sei610: add stdout-path property back
        arm64: dts: meson-sm1-sei610: enable DVFS
        arm64: dts: khadas-vim3: add support for the SM1 based VIM3L
        dt-bindings: arm: amlogic: add Amlogic SM1 based Khadas VIM3L bindings
        arm64: dts: khadas-vim3: move common nodes into meson-khadas-vim3.dtsi
        arm64: dts: meson: g12a: add reset to tdm formatters
        ...
      cef72982
    • Linus Torvalds's avatar
      Merge tag 'armsoc-defconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc · d47ebd68
      Linus Torvalds authored
      Pull ARM SoC defconfig updates from Arnd Bergmann:
       "As usual, a bunch of commits, mostly adding drivers and other options
        to defconfigs after the code was merged through another tree"
      
      * tag 'armsoc-defconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: (32 commits)
        arm64: defconfig: Enable Qualcomm QUSB2 PHY
        arm64: defconfig: Enable the EFI Framebuffer
        arm64: defconfig: Enable Qualcomm GENI based I2C controller
        ARM: multi_v7_defconfig: Make MAX77802 regulator driver built-in
        arm64: defconfig: Enable CPU clock drivers for Qualcomm msm8916
        arm64: defconfig: Add DRM_MSM to defconfigs with ARCH_QCOM
        ARM: multi_v7_defconfig: Add DRM_MSM to defconfigs with ARCH_QCOM
        ARM: qcom_defconfig: Add DRM_MSM to defconfigs with ARCH_QCOM
        ARM: configs: aspeed_g5: Enable AST2600
        ARM: configs: multi_v7: Add ASPEED G6
        arm64: defconfig: Enable SM8150 GCC and pinctrl driver
        arm64: defconfig: Enable CONFIG_ACPI_APEI_PCIEAER
        arm64: defconfig: Enable the DesignWare watchdog
        ARM: multi_v7_defconfig: Enable SPI_STM32_QSPI support
        ARM: imx_v6_v7_defconfig: Enable the PSCI CPUidle driver
        arm64: defconfig: Enable the PSCI CPUidle driver
        arm64: defconfig: Enable Sun4i SPDIF module
        ARM: exynos_defconfig: Enable AHCI-platform SATA driver
        arm64: defconfig: CONFIG_DRM_ETNAVIV=m
        ARM: imx_v6_v7_defconfig: Select the OV5645 camera driver
        ...
      d47ebd68
    • Linus Torvalds's avatar
      Merge tag 'armsoc-drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc · 399eb9b6
      Linus Torvalds authored
      Pull ARM SoC driver updates from Arnd Bergmann:
       "This contains driver changes that are tightly connected to SoC
        specific code. Aside from smaller cleanups and bug fixes, here is a
        list of the notable changes.
      
        New device drivers:
      
         - The Turris Mox router has a new "moxtet" bus driver for its
           on-board pluggable extension bus. The same platform also gains a
           firmware driver.
      
         - The Samsung Exynos family gains a new Chipid driver exporting using
           the soc device sysfs interface
      
         - A similar socinfo driver for Qualcomm Snapdragon chips.
      
         - A firmware driver for the NXP i.MX DSP IPC protocol using shared
           memory and a mailbox
      
        Other changes:
      
         - The i.MX reset controller driver now supports the NXP i.MX8MM chip
      
         - Amlogic SoC specific drivers gain support for the S905X3 and A311D
           chips
      
         - A rework of the TI Davinci framebuffer driver to allow important
           cleanups in the platform code
      
         - A couple of device drivers for removed ARM SoC platforms are
           removed. Most of the removals were picked up by other maintainers,
           this contains whatever was left"
      
      * tag 'armsoc-drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: (123 commits)
        bus: uniphier-system-bus: use devm_platform_ioremap_resource()
        soc: ti: ti_sci_pm_domains: Add support for exclusive and shared access
        dt-bindings: ti_sci_pm_domains: Add support for exclusive and shared access
        firmware: ti_sci: Allow for device shared and exclusive requests
        bus: imx-weim: remove incorrect __init annotations
        fbdev: remove w90x900/nuc900 platform drivers
        spi: remove w90x900 driver
        net: remove w90p910-ether driver
        net: remove ks8695 driver
        firmware: turris-mox-rwtm: Add sysfs documentation
        firmware: Add Turris Mox rWTM firmware driver
        dt-bindings: firmware: Document cznic,turris-mox-rwtm binding
        bus: moxtet: fix unsigned comparison to less than zero
        bus: moxtet: remove set but not used variable 'dummy'
        ARM: scoop: Use the right include
        dt-bindings: power: add Amlogic Everything-Else power domains bindings
        soc: amlogic: Add support for Everything-Else power domains controller
        fbdev: da8xx: use resource management for dma
        fbdev: da8xx-fb: drop a redundant if
        fbdev: da8xx-fb: use devm_platform_ioremap_resource()
        ...
      399eb9b6
    • Linus Torvalds's avatar
      Merge tag 'armsoc-soc' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc · 2b97c395
      Linus Torvalds authored
      Pull ARM SoC platform updates from Arnd Bergmann:
       "The main change this time around is a cleanup of some of the oldest
        platforms based on the XScale and ARM9 CPU cores, which are between 10
        and 20 years old.
      
        The Kendin/Micrel/Microchip KS8695, Winbond/Nuvoton W90x900 and Intel
        IOP33x/IOP13xx platforms are removed after we determined that nobody
        is using them any more.
      
        The TI Davinci and NXP LPC32xx platforms on the other hand are still
        in active use and are converted to the ARCH_MULTIPLATFORM build,
        meaning that we can compile a kernel that works on these along with
        most other ARMv5 platforms. Changes toward that goal are also merged
        for IOP32x, but additional work is needed to complete this. Patches
        for the remaining ARMv5 platforms have started but need more work and
        some testing.
      
        Support for the new ASpeed AST2600 gets added, this is based on the
        Cortex-A7 ARMv7 core, and is a newer version of the existing ARMv5 and
        ARMv6 chips in the same family.
      
        Other changes include a cleanup of the ST-Ericsson ux500 platform and
        the move of the TI Davinci platform to a new clocksource driver"
      
      [ The changes had marked INTEL_IOP_ADMA and USB_LPC32XX as being
        buildable on other platforms through COMPILE_TEST, but that causes new
        warnings that I most definitely do not want to see during the merge
        window as that could hide other issues.
      
        So the COMPILE_TEST option got disabled for them again   - Linus ]
      
      * tag 'armsoc-soc' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: (61 commits)
        ARM: multi_v5_defconfig: make DaVinci part of the ARM v5 multiplatform build
        ARM: davinci: support multiplatform build for ARM v5
        arm64: exynos: Enable exynos-chipid driver
        ARM: OMAP2+: Delete an unnecessary kfree() call in omap_hsmmc_pdata_init()
        ARM: OMAP2+: move platform-specific asm-offset.h to arch/arm/mach-omap2
        ARM: davinci: dm646x: Fix a typo in the comment
        ARM: davinci: dm646x: switch to using the clocksource driver
        ARM: davinci: dm644x: switch to using the clocksource driver
        ARM: aspeed: Enable SMP boot
        ARM: aspeed: Add ASPEED AST2600 architecture
        ARM: aspeed: Select timer in each SoC
        dt-bindings: arm: cpus: Add ASPEED SMP
        ARM: imx: stop adjusting ar8031 phy tx delay
        mailmap: map old company name to new one @microchip.com
        MAINTAINERS: at91: remove the TC entry
        MAINTAINERS: at91: Collect all pinctrl/gpio drivers in same entry
        ARM: at91: move platform-specific asm-offset.h to arch/arm/mach-at91
        MAINTAINERS: Extend patterns for Samsung SoC, Security Subsystem and clock drivers
        ARM: s3c64xx: squash samsung_usb_phy.h into setup-usb-phy.c
        ARM: debug-ll: Add support for r7s9210
        ...
      2b97c395