1. 25 Sep, 2019 6 commits
    • 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 20 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
    • Linus Torvalds's avatar
      Merge branch 'parisc-5.4-1' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux · d0a16fe9
      Linus Torvalds authored
      Pull parisc updates from Helge Deller:
      
       - Make the powerpc implementation to read elf files available as a
         public kexec interface so it can be re-used on other architectures
         (Sven)
      
       - Implement kexec on parisc (Sven)
      
       - Add kprobes on ftrace on parisc (Sven)
      
       - Fix kernel crash with HSC-PCI cards based on card-mode Dino
      
       - Add assembly implementations for memset, strlen, strcpy, strncpy and
         strcat
      
       - Some cleanups, documentation updates, warning fixes, ...
      
      * 'parisc-5.4-1' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux: (25 commits)
        parisc: Have git ignore generated real2.S and firmware.c
        parisc: Disable HP HSC-PCI Cards to prevent kernel crash
        parisc: add support for kexec_file_load() syscall
        parisc: wire up kexec_file_load syscall
        parisc: add kexec syscall support
        parisc: add __pdc_cpu_rendezvous()
        kprobes/parisc: remove arch_kprobe_on_func_entry()
        kexec_elf: support 32 bit ELF files
        kexec_elf: remove unused variable in kexec_elf_load()
        kexec_elf: remove Elf_Rel macro
        kexec_elf: remove PURGATORY_STACK_SIZE
        kexec_elf: remove parsing of section headers
        kexec_elf: change order of elf_*_to_cpu() functions
        kexec: add KEXEC_ELF
        parisc: Save some bytes in dino driver
        parisc: Drop comments which are already in pci.h
        parisc: Convert eisa_enumerator to use pr_cont()
        parisc: Avoid warning when loading hppb driver
        parisc: speed up flush_tlb_all_local with qemu
        parisc: Add ALTERNATIVE_CODE() and ALT_COND_RUN_ON_QEMU
        ...
      d0a16fe9
    • Linus Torvalds's avatar
      Merge tag 'please-pull-ia64_for_5.4' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux · 76f0f227
      Linus Torvalds authored
      Pull ia64 updates from Tony Luck:
       "The big change here is removal of support for SGI Altix"
      
      * tag 'please-pull-ia64_for_5.4' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux: (33 commits)
        genirq: remove the is_affinity_mask_valid hook
        ia64: remove CONFIG_SWIOTLB ifdefs
        ia64: remove support for machvecs
        ia64: move the screen_info setup to common code
        ia64: move the ROOT_DEV setup to common code
        ia64: rework iommu probing
        ia64: remove the unused sn_coherency_id symbol
        ia64: remove the SGI UV simulator support
        ia64: remove the zx1 swiotlb machvec
        ia64: remove CONFIG_ACPI ifdefs
        ia64: remove CONFIG_PCI ifdefs
        ia64: remove the hpsim platform
        ia64: remove now unused machvec indirections
        ia64: remove support for the SGI SN2 platform
        drivers: remove the SGI SN2 IOC4 base support
        drivers: remove the SGI SN2 IOC3 base support
        qla2xxx: remove SGI SN2 support
        qla1280: remove SGI SN2 support
        misc/sgi-xp: remove SGI SN2 support
        char/mspec: remove SGI SN2 support
        ...
      76f0f227
    • Linus Torvalds's avatar
      Merge tag 'riscv/for-v5.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux · 58d4fafd
      Linus Torvalds authored
      Pull RISC-V updates from Paul Walmsley:
       "Add the following new features:
      
         - Generic CPU topology description support for DT-based platforms,
           including ARM64, ARM and RISC-V.
      
         - Sparsemem support
      
         - Perf callchain support
      
         - SiFive PLIC irqchip modifications, in preparation for M-mode Linux
      
        and clean up the code base:
      
         - Clean up chip-specific register (CSR) manipulation code, IPIs, TLB
           flushing, and the RISC-V CPU-local timer code
      
         - Kbuild cleanup from one of the Kbuild maintainers"
      
      [ The CPU topology parts came in through the arm64 tree with a shared
        branch   - Linus ]
      
      * tag 'riscv/for-v5.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux:
        irqchip/sifive-plic: set max threshold for ignored handlers
        riscv: move the TLB flush logic out of line
        riscv: don't use the rdtime(h) pseudo-instructions
        riscv: cleanup riscv_cpuid_to_hartid_mask
        riscv: optimize send_ipi_single
        riscv: cleanup send_ipi_mask
        riscv: refactor the IPI code
        riscv: Add support for libdw
        riscv: Add support for perf registers sampling
        riscv: Add perf callchain support
        riscv: add arch/riscv/Kbuild
        RISC-V: Implement sparsemem
        riscv: Using CSR numbers to access CSRs
      58d4fafd
    • Linus Torvalds's avatar
      Merge tag 'm68k-for-v5.4-tag1' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k · dbcda58a
      Linus Torvalds authored
      Pull m68k updates from Geert Uytterhoeven:
      
       - ioremap() cleanups
      
       - defconfig updates
      
       - small fixes and cleanups
      
      * tag 'm68k-for-v5.4-tag1' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k:
        m68k: Remove ioremap_fullcache()
        m68k: Simplify ioremap_nocache()
        m68k: defconfig: Update defconfigs for v5.3-rc2
        m68k: atari: Rename shifter to shifter_st to avoid conflict
        m68k: Prevent some compiler warnings in Coldfire builds
        m68k: mac: Revisit floppy disc controller base addresses
      dbcda58a
    • Linus Torvalds's avatar
      Merge tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux · e77fafe9
      Linus Torvalds authored
      Pull arm64 updates from Will Deacon:
       "Although there isn't tonnes of code in terms of line count, there are
        a fair few headline features which I've noted both in the tag and also
        in the merge commits when I pulled everything together.
      
        The part I'm most pleased with is that we had 35 contributors this
        time around, which feels like a big jump from the usual small group of
        core arm64 arch developers. Hopefully they all enjoyed it so much that
        they'll continue to contribute, but we'll see.
      
        It's probably worth highlighting that we've pulled in a branch from
        the risc-v folks which moves our CPU topology code out to where it can
        be shared with others.
      
        Summary:
      
         - 52-bit virtual addressing in the kernel
      
         - New ABI to allow tagged user pointers to be dereferenced by
           syscalls
      
         - Early RNG seeding by the bootloader
      
         - Improve robustness of SMP boot
      
         - Fix TLB invalidation in light of recent architectural
           clarifications
      
         - Support for i.MX8 DDR PMU
      
         - Remove direct LSE instruction patching in favour of static keys
      
         - Function error injection using kprobes
      
         - Support for the PPTT "thread" flag introduced by ACPI 6.3
      
         - Move PSCI idle code into proper cpuidle driver
      
         - Relaxation of implicit I/O memory barriers
      
         - Build with RELR relocations when toolchain supports them
      
         - Numerous cleanups and non-critical fixes"
      
      * tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux: (114 commits)
        arm64: remove __iounmap
        arm64: atomics: Use K constraint when toolchain appears to support it
        arm64: atomics: Undefine internal macros after use
        arm64: lse: Make ARM64_LSE_ATOMICS depend on JUMP_LABEL
        arm64: asm: Kill 'asm/atomic_arch.h'
        arm64: lse: Remove unused 'alt_lse' assembly macro
        arm64: atomics: Remove atomic_ll_sc compilation unit
        arm64: avoid using hard-coded registers for LSE atomics
        arm64: atomics: avoid out-of-line ll/sc atomics
        arm64: Use correct ll/sc atomic constraints
        jump_label: Don't warn on __exit jump entries
        docs/perf: Add documentation for the i.MX8 DDR PMU
        perf/imx_ddr: Add support for AXI ID filtering
        arm64: kpti: ensure patched kernel text is fetched from PoU
        arm64: fix fixmap copy for 16K pages and 48-bit VA
        perf/smmuv3: Validate groups for global filtering
        perf/smmuv3: Validate group size
        arm64: Relax Documentation/arm64/tagged-pointers.rst
        arm64: kvm: Replace hardcoded '1' with SYS_PAR_EL1_F
        arm64: mm: Ignore spurious translation faults taken from the kernel
        ...
      e77fafe9
    • Linus Torvalds's avatar
      Merge tag 'iommu-updates-v5.4' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu · 52a55252
      Linus Torvalds authored
      Pull iommu updates from Joerg Roedel:
      
       - batched unmap support for the IOMMU-API
      
       - support for unlocked command queueing in the ARM-SMMU driver
      
       - rework the ATS support in the ARM-SMMU driver
      
       - more refactoring in the ARM-SMMU driver to support hardware
         implemention specific quirks and errata
      
       - bounce buffering DMA-API implementatation in the Intel VT-d driver
         for untrusted devices (like Thunderbolt devices)
      
       - fixes for runtime PM support in the OMAP iommu driver
      
       - MT8183 IOMMU support in the Mediatek IOMMU driver
      
       - rework of the way the IOMMU core sets the default domain type for
         groups. Changing the default domain type on x86 does not require two
         kernel parameters anymore.
      
       - more smaller fixes and cleanups
      
      * tag 'iommu-updates-v5.4' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu: (113 commits)
        iommu/vt-d: Declare Broadwell igfx dmar support snafu
        iommu/vt-d: Add Scalable Mode fault information
        iommu/vt-d: Use bounce buffer for untrusted devices
        iommu/vt-d: Add trace events for device dma map/unmap
        iommu/vt-d: Don't switch off swiotlb if bounce page is used
        iommu/vt-d: Check whether device requires bounce buffer
        swiotlb: Split size parameter to map/unmap APIs
        iommu/omap: Mark pm functions __maybe_unused
        iommu/ipmmu-vmsa: Disable cache snoop transactions on R-Car Gen3
        iommu/ipmmu-vmsa: Move IMTTBCR_SL0_TWOBIT_* to restore sort order
        iommu: Don't use sme_active() in generic code
        iommu/arm-smmu-v3: Fix build error without CONFIG_PCI_ATS
        iommu/qcom: Use struct_size() helper
        iommu: Remove wrong default domain comments
        iommu/dma: Fix for dereferencing before null checking
        iommu/mediatek: Clean up struct mtk_smi_iommu
        memory: mtk-smi: Get rid of need_larbid
        iommu/mediatek: Fix VLD_PA_RNG register backup when suspend
        memory: mtk-smi: Add bus_sel for mt8183
        memory: mtk-smi: Invoke pm runtime_callback to enable clocks
        ...
      52a55252
    • Linus Torvalds's avatar
      Merge tag 'gpio-v5.4-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio · bbfe0d6b
      Linus Torvalds authored
      Pull GPIO updates from Linus Walleij:
       "This is the bulk of changes in the GPIO subsystem for the v5.4 kernel
        cycle.
      
        Core changes:
      
         - Support hierarchical GPIO irqchips.
      
           We now have three consumers that can use this: Intel IXP4xx,
           ThunderX and Qualcomm SPMI GPIO (in the pinctrl subsystem).
      
           The support code has been long in the making and hashed out so it
           should be easily adaptable for all hierarchical irqchip parents.
           The code only gets compiled in if hierarchical irqchip is used at
           the topmost irq controller at least, as the hierarchical irqchip
           requires strict hierarchy all the way up in the system.
      
         - Determine the need for a "valid_mask" for GPIO lines on the
           gpio_chip and conversely for the "valid_mask" for the GPIO
           interrupt chip interrupt lines by looking for a .init_valid_mask()
           callback in the main chip or GPIO interrupt chip respectively.
           Allocate it with bitmap_alloc().
      
         - Isolate the device tree/open firmware GPIO description code out in
           its own file properly.
      
         - Isolate the ACPI GPIO description code out in its own file
           properly.
      
         - Drop a whole lot of #ifdef:s in the main includes: it does not hurt
           to keep the include items around, and we get quicker and clearer
           compile failures if the appropriate kernel symbols are not selected
           for drivers.
      
        New/deleted drivers:
      
         - New driver for Aspeed SGPIO.
      
         - The KS8695 driver is deleted as the platform gets deleted from
           arch/arm in this kernel cycle.
      
         - The Cirrus Logic Madera driver now supports CS47L92 and CS47L15.
      
         - The Freescale MPC8xxx now supports LS1028A and LS1088A.
      
        Driver improvements:
      
         - We pass the GPIO irqchip intialization by directly filling in the
           struct instead of using set-up functions (the new way) for Intel
           MID, Lynxpoint, Merrifield, XLP, HLWD, Aspeed, ZX, VF610, TQMX86,
           MT7621, Zynq and EP93xx.
      
        Out-of-band changes:
      
         - Fix a GPIO header inclusion in Unicore - no response from
           maintainer.
      
         - Drop FMC subsystem from MAINTAINERS - was deleted in the GPIO tree
           last cycle so let's mop up the shards"
      
      * tag 'gpio-v5.4-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio: (82 commits)
        gpiolib: of: add a fallback for wlf,reset GPIO name
        gpio: htc-egpio: Remove unused exported htc_egpio_get_wakeup_irq()
        gpio: remove explicit comparison with 0
        gpio: creg-snps: use devm_platform_ioremap_resource() to simplify code
        gpio: devres: Switch to EXPORT_SYMBOL_GPL()
        gpio: of: Switch to EXPORT_SYMBOL_GPL()
        gpio: of: Make of_gpio_simple_xlate() private
        gpio: of: Make of_get_named_gpiod_flags() private
        gpio: aspeed: Add in ast2600 details to Aspeed driver
        gpio: aspeed: Use ngpio property from device tree if available
        gpio: aspeed: Setup irqchip dynamically
        gpio/aspeed: Fix incorrect number of banks
        gpio: aspeed: Update documentation with ast2600 controllers
        gpio: Initialize the irqchip valid_mask with a callback
        gpiolib: acpi: make acpi_can_fallback_to_crs() static
        gpio: Fix further merge errors
        gpio: Fix up merge collision in include file
        gpio: of: Normalize return code variable name
        gpio: gpiolib: Normalize return code variable name
        gpio: ep93xx: Pass irqchip when adding gpiochip
        ...
      bbfe0d6b
    • Linus Torvalds's avatar
      Merge tag 'i3c/for-5.4' of git://git.kernel.org/pub/scm/linux/kernel/git/i3c/linux · 31dda85e
      Linus Torvalds authored
      Pull i3c updates from Boris Brezillon:
       "Core changes:
      
         - Export i3c_device_match_id() so driver can get per-device data
      
         - Add addr and lvr fields to i2c_dev_desc so we can attach I2C
           devices that are not described in the DT
      
         - Add a missing of_node_put()
      
         - Fix a memory leak
      
         - Use dev_to_i3cmaster() instead of open-coding it
      
        Driver changes:
      
         - Use for_each_set_bit() in the Cadence driver"
      
      * tag 'i3c/for-5.4' of git://git.kernel.org/pub/scm/linux/kernel/git/i3c/linux:
        i3c: master: Use dev_to_i3cmaster()
        i3c: master: fix a memory leak bug
        i3c: add addr and lvr to i2c_dev_desc structure
        i3c: master: cdns: Use for_each_set_bit()
        i3c: master: Add of_node_put() before return
        i3c: move i3c_device_match_id to device.c and export it
      31dda85e
    • Linus Torvalds's avatar
      Merge tag 'spi-v5.4' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi · aa62325d
      Linus Torvalds authored
      Pull spi updates from Mark Brown:
       "The big theme for this release has been performance, we've had a
        series of unrelated overhauls of a few drivers all with a big
        peformance component.
      
        Otherwise it's been relatively quiet, highlights include:
      
         - A big overhaul of the spi-fsl-dspi driver improving the code
           quality, performance and stability from Vladimir Oltean.
      
         - A big performance enhancement for the bc2835 (Raspberry Pi) driver
           for unidirectional transfers from Lukas Wunner.
      
         - Improved performance on small transfers for the uniphier driver
           from Keiji Hayashibara.
      
         - Lots of coccinelle generated cleanups from Yue Haibing.
      
         - New device support for Freescale ls2080a and Nuvoton NPCM FIU"
      
      * tag 'spi-v5.4' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi: (102 commits)
        spi: mediatek: support large PA
        spi: mediatek: add spi support for mt6765 IC
        dt-bindings: spi: update bindings for MT6765 SoC
        spi: bcm2835: Speed up RX-only DMA transfers by zero-filling TX FIFO
        spi: bcm2835: Speed up TX-only DMA transfers by clearing RX FIFO
        dmaengine: bcm2835: Avoid accessing memory when copying zeroes
        spi: bcm2835: Cache CS register value for ->prepare_message()
        dmaengine: bcm2835: Document struct bcm2835_dmadev
        spi: Guarantee cacheline alignment of driver-private data
        dmaengine: bcm2835: Allow reusable descriptors
        dmaengine: bcm2835: Allow cyclic transactions without interrupt
        spi: bcm2835: Drop dma_pending flag
        spi: bcm2835: Work around DONE bit erratum
        spi-gpio: Use PTR_ERR_OR_ZERO() in spi_gpio_request()
        spi: Use an abbreviated pointer to ctlr->cur_msg in __spi_pump_messages
        spi: npcm-fiu: remove set but not used variable 'retlen'
        spi: fsl-spi: use devm_platform_ioremap_resource() to simplify code
        spi: zynq-qspi: use devm_platform_ioremap_resource() to simplify code
        spi: zynqmp: use devm_platform_ioremap_resource() to simplify code
        spi: xlp: use devm_platform_ioremap_resource() to simplify code
        ...
      aa62325d
    • Linus Torvalds's avatar
      Merge tag 'regulator-v5.4' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator · c4d11ccb
      Linus Torvalds authored
      Pull regulator updates from Mark Brown:
       "A small update for the regualtor API for this cycle, some small fixes
        and a bunch of new devices but none of them very big.
      
        The most stand out thing is the regulator-fixed-clock driver which is
        for regulators where the enable control is done by using a clock
        instead of a GPIO or register write, a novel hardware design that had
        not previously come up.
      
        Summary:
      
         - Added a keyword pattern for regulator_get_optional() since usage of
           that API generally needs extra review.
      
         - Operating mode and suspend state support for act8865.
      
         - New device support for Active Semiconductor ACT8600 chargers,
           Mediatek MT6358, Qualcomm SM8150, regulator-fixed-clock, and
           Synoptics SY20276, SY20278 and SY8824E"
      
      * tag 'regulator-v5.4' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator: (52 commits)
        regulator: core: Fix error return for /sys access
        regulator: da9211: fix obtaining "enable" GPIO
        regulator: max77686: fix obtaining "maxim,ena" GPIO
        regulator: uniphier: Add Pro5 USB3 VBUS support
        dt-bindings: regulator: add regulator-fixed-clock binding
        regulator: fixed: add possibility to enable by clock
        regulator: s2mps11: Consistently use local variable
        regulator: lp87565: Simplify lp87565_buck_set_ramp_delay
        regulator: slg51000: use devm_gpiod_get_optional() in probe
        regulator: lp8788-ldo: make array en_mask static const, makes object smaller
        regulator: tps65132: Stop parsing DT when gpio is not found
        regulator: Defer init completion for a while after late_initcall
        regulator: add missing 'static inline' to a helper's stub
        regulator: provide regulator_bulk_set_supply_names()
        MAINTAINERS: Add keyword pattern on regulator_get_optional()
        regulator: sy8824x: add prefixes to BUCK_EN and MODE macros
        regulator: sy8824x: use c++style for the comment block near SPDX
        regulator: mt6358: Add BROKEN dependency while waiting for MFD to merge
        regulator: mt6358: Add support for MT6358 regulator
        regulator: Add document for MT6358 regulator
        ...
      c4d11ccb