Skip to content
  1. May 17, 2019
  2. May 09, 2019
    • Dave Hansen's avatar
      x86/mpx, mm/core: Fix recursive munmap() corruption · 5a28fc94
      Dave Hansen authored
      This is a bit of a mess, to put it mildly.  But, it's a bug
      that only seems to have showed up in 4.20 but wasn't noticed
      until now, because nobody uses MPX.
      
      MPX has the arch_unmap() hook inside of munmap() because MPX
      uses bounds tables that protect other areas of memory.  When
      memory is unmapped, there is also a need to unmap the MPX
      bounds tables.  Barring this, unused bounds tables can eat 80%
      of the address space.
      
      But, the recursive do_munmap() that gets called vi arch_unmap()
      wreaks havoc with __do_munmap()'s state.  It can result in
      freeing populated page tables, accessing bogus VMA state,
      double-freed VMAs and more.
      
      See the "long story" further below for the gory details.
      
      To fix this, call arch_unmap() before __do_unmap() has a chance
      to do anything meaningful.  Also, remove the 'vma' argument
      and force the MPX code to do its own, independent VMA lookup.
      
      == UML / unicore32 impact ==
      
      Remove unused 'vma' argument to arch_unmap().  No functional
      change.
      
      I compile tested this on UML but not unicore32.
      
      == powerpc impact ==
      
      powerpc uses arch_unmap() well to watch for munmap() on the
      VDSO and zeroes out 'current->mm->context.vdso_base'.  Moving
      arch_unmap() makes this happen earlier in __do_munmap().  But,
      'vdso_base' seems to only be used in perf and in the signal
      delivery that happens near the return to userspace.  I can not
      find any likely impact to powerpc, other than the zeroing
      happening a little earlier.
      
      powerpc does not use the 'vma' argument and is unaffected by
      its removal.
      
      I compile-tested a 64-bit powerpc defconfig.
      
      == x86 impact ==
      
      For the common success case this is functionally identical to
      what was there before.  For the munmap() failure case, it's
      possible that some MPX tables will be zapped for memory that
      continues to be in use.  But, this is an extraordinarily
      unlikely scenario and the harm would be that MPX provides no
      protection since the bounds table got reset (zeroed).
      
      I can't imagine anyone doing this:
      
      	ptr = mmap();
      	// use ptr
      	ret = munmap(ptr);
      	if (ret)
      		// oh, there was an error, I'll
      		// keep using ptr.
      
      Because if you're doing munmap(), you are *done* with the
      memory.  There's probably no good data in there _anyway_.
      
      This passes the original reproducer from Richard Biener as
      well as the existing mpx selftests/.
      
      The long story:
      
      munmap() has a couple of pieces:
      
       1. Find the affected VMA(s)
       2. Split the start/end one(s) if neceesary
       3. Pull the VMAs out of the rbtree
       4. Actually zap the memory via unmap_region(), including
          freeing page tables (or queueing them to be freed).
       5. Fix up some of the accounting (like fput()) and actually
          free the VMA itself.
      
      This specific ordering was actually introduced by:
      
        dd2283f2 ("mm: mmap: zap pages with read mmap_sem in munmap")
      
      during the 4.20 merge window.  The previous __do_munmap() code
      was actually safe because the only thing after arch_unmap() was
      remove_vma_list().  arch_unmap() could not see 'vma' in the
      rbtree because it was detached, so it is not even capable of
      doing operations unsafe for remove_vma_list()'s use of 'vma'.
      
      Richard Biener reported a test that shows this in dmesg:
      
        [1216548.787498] BUG: Bad rss-counter state mm:0000000017ce560b idx:1 val:551
        [1216548.787500] BUG: non-zero pgtables_bytes on freeing mm: 24576
      
      What triggered this was the recursive do_munmap() called via
      arch_unmap().  It was freeing page tables that has not been
      properly zapped.
      
      But, the problem was bigger than this.  For one, arch_unmap()
      can free VMAs.  But, the calling __do_munmap() has variables
      that *point* to VMAs and obviously can't handle them just
      getting freed while the pointer is still in use.
      
      I tried a couple of things here.  First, I tried to fix the page
      table freeing problem in isolation, but I then found the VMA
      issue.  I also tried having the MPX code return a flag if it
      modified the rbtree which would force __do_munmap() to re-walk
      to restart.  That spiralled out of control in complexity pretty
      fast.
      
      Just moving arch_unmap() and accepting that the bonkers failure
      case might eat some bounds tables seems like the simplest viable
      fix.
      
      This was also reported in the following kernel bugzilla entry:
      
        https://bugzilla.kernel.org/show_bug.cgi?id=203123
      
      There are some reports that this commit triggered this bug:
      
        dd2283f2
      
       ("mm: mmap: zap pages with read mmap_sem in munmap")
      
      While that commit certainly made the issues easier to hit, I believe
      the fundamental issue has been with us as long as MPX itself, thus
      the Fixes: tag below is for one of the original MPX commits.
      
      [ mingo: Minor edits to the changelog and the patch. ]
      
      Reported-by: default avatarRichard Biener <rguenther@suse.de>
      Reported-by: default avatarH.J. Lu <hjl.tools@gmail.com>
      Signed-off-by: default avatarDave Hansen <dave.hansen@linux.intel.com>
      Reviewed-by Thomas Gleixner <tglx@linutronix.de>
      Reviewed-by: default avatarYang Shi <yang.shi@linux.alibaba.com>
      Acked-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Andy Lutomirski <luto@kernel.org>
      Cc: Anton Ivanov <anton.ivanov@cambridgegreys.com>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Borislav Petkov <bp@alien8.de>
      Cc: Guan Xuetao <gxt@pku.edu.cn>
      Cc: H. Peter Anvin <hpa@zytor.com>
      Cc: Jeff Dike <jdike@addtoit.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Michal Hocko <mhocko@suse.com>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Richard Weinberger <richard@nod.at>
      Cc: Rik van Riel <riel@surriel.com>
      Cc: Vlastimil Babka <vbabka@suse.cz>
      Cc: linux-arch@vger.kernel.org
      Cc: linux-mm@kvack.org
      Cc: linux-um@lists.infradead.org
      Cc: linuxppc-dev@lists.ozlabs.org
      Cc: stable@vger.kernel.org
      Fixes: dd2283f2 ("mm: mmap: zap pages with read mmap_sem in munmap")
      Link: http://lkml.kernel.org/r/20190419194747.5E1AD6DC@viggo.jf.intel.com
      
      
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      5a28fc94
  3. May 07, 2019
    • Linus Torvalds's avatar
      Merge branch 'ras-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · ffa6f55e
      Linus Torvalds authored
      Pull RAS updates from Borislav Petkov:
      
       - Support for varying MCA bank numbers per CPU: this is in preparation
         for future CPU enablement (Yazen Ghannam)
      
       - MCA banks read race fix (Tony Luck)
      
       - Facility to filter MCEs which should not be logged (Yazen Ghannam)
      
       - The usual round of cleanups and fixes
      
      * 'ras-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/MCE/AMD: Don't report L1 BTB MCA errors on some family 17h models
        x86/MCE: Add an MCE-record filtering function
        RAS/CEC: Increment cec_entered under the mutex lock
        x86/mce: Fix debugfs_simple_attr.cocci warnings
        x86/mce: Remove mce_report_event()
        x86/mce: Handle varying MCA bank counts
        x86/mce: Fix machine_check_poll() tests for error types
        MAINTAINERS: Fix file pattern for X86 MCE INFRASTRUCTURE
        x86/MCE: Group AMD function prototypes in <asm/mce.h>
      ffa6f55e
    • Linus Torvalds's avatar
      Merge tag 'edac_for_5.2' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp · 275b103a
      Linus Torvalds authored
      Pull EDAC updates from Borislav Petkov:
      
       - amd64_edac: Family 0x17, models 0x30-.. enablement (Yazen Ghannam)
      
       - skx_*: Librarize it so that it can be shared between drivers (Qiuxu Zhuo)
      
       - altera: Stratix10 improvements (Thor Thayer)
      
       - The usual round of fixes, fixlets and cleanups
      
      * tag 'edac_for_5.2' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp:
        Revert "EDAC/amd64: Support more than two controllers for chip select handling"
        arm64: dts: stratix10: Use new Stratix10 EDAC bindings
        Documentation: dt: edac: Add Stratix10 Peripheral bindings
        Documentation: dt: edac: Fix Stratix10 IRQ bindings
        EDAC/altera, firmware/intel: Add Stratix10 ECC DBE SMC call
        EDAC/altera: Initialize peripheral FIFOs in probe()
        EDAC/altera: Do less intrusive error injection
        EDAC/amd64: Adjust printed chip select sizes when interleaved
        EDAC/amd64: Support more than two controllers for chip select handling
        EDAC/amd64: Recognize x16 symbol size
        EDAC/amd64: Set maximum channel layer size depending on family
        EDAC/amd64: Support more than two Unified Memory Controllers
        EDAC/amd64: Use a macro for iterating over Unified Memory Controllers
        EDAC/amd64: Add Family 17h Model 30h PCI IDs
        MAINTAINERS: Add entry for EDAC-I10NM
        MAINTAINERS: Update entry for EDAC-SKYLAKE
        EDAC, altera: Fix S10 Double Bit Error Notification
        EDAC, skx, i10nm: Make skx_common.c a pure library
      275b103a
    • Linus Torvalds's avatar
      Merge tag 'devprop-5.2-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · 4dd2ab9a
      Linus Torvalds authored
      Pull device properties framework updates from Rafael Wysocki:
       "These fix the handling of data nodes in the ACPI properties support
        code, add a new helper for endpoint lookup in property graphs and
        restore a comment inadvertently removed by one of previous changes.
      
        Specifics:
      
         - Fix the handling of data nodes in the ACPI properties support code
           for devices with child devices and hierarchical _DSD properties
           (Pierre-Louis Bossart).
      
         - Add fwnode_graph_get_endpoint_by_id() helper for endpoint lookup in
           device property graphs (Sakari Ailus).
      
         - Restore the _DSD data subnodes GUID comment inadvertently removed
           by one of previous changes (Shunyong Yang)"
      
      * tag 'devprop-5.2-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
        ACPI / property: fix handling of data_nodes in acpi_get_next_subnode()
        device property: Add fwnode_graph_get_endpoint_by_id()
        ACPI: property: restore _DSD data subnodes GUID comment
      4dd2ab9a
    • Linus Torvalds's avatar
      Merge tag 'pm-5.2-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · 8f5e823f
      Linus Torvalds authored
      Pull power management updates from Rafael Wysocki:
       "These fix the (Intel-specific) Performance and Energy Bias Hint (EPB)
        handling and expose it to user space via sysfs, fix and clean up
        several cpufreq drivers, add support for two new chips to the qoriq
        cpufreq driver, fix, simplify and clean up the cpufreq core and the
        schedutil governor, add support for "CPU" domains to the generic power
        domains (genpd) framework and provide low-level PSCI firmware support
        for that feature, fix the exynos cpuidle driver and fix a couple of
        issues in the devfreq subsystem and clean it up.
      
        Specifics:
      
         - Fix the handling of Performance and Energy Bias Hint (EPB) on Intel
           processors and expose it to user space via sysfs to avoid having to
           access it through the generic MSR I/F (Rafael Wysocki).
      
         - Improve the handling of global turbo changes made by the platform
           firmware in the intel_pstate driver (Rafael Wysocki).
      
         - Convert some slow-path static_cpu_has() callers to boot_cpu_has()
           in cpufreq (Borislav Petkov).
      
         - Fix the frequency calculation loop in the armada-37xx cpufreq
           driver (Gregory CLEMENT).
      
         - Fix possible object reference leaks in multuple cpufreq drivers
           (Wen Yang).
      
         - Fix kerneldoc comment in the centrino cpufreq driver (dongjian).
      
         - Clean up the ACPI and maple cpufreq drivers (Viresh Kumar, Mohan
           Kumar).
      
         - Add support for lx2160a and ls1028a to the qoriq cpufreq driver
           (Vabhav Sharma, Yuantian Tang).
      
         - Fix kobject memory leak in the cpufreq core (Viresh Kumar).
      
         - Simplify the IOwait boosting in the schedutil cpufreq governor and
           rework the TSC cpufreq notifier on x86 (Rafael Wysocki).
      
         - Clean up the cpufreq core and statistics code (Yue Hu, Kyle Lin).
      
         - Improve the cpufreq documentation, add SPDX license tags to some PM
           documentation files and unify copyright notices in them (Rafael
           Wysocki).
      
         - Add support for "CPU" domains to the generic power domains (genpd)
           framework and provide low-level PSCI firmware support for that
           feature (Ulf Hansson).
      
         - Rearrange the PSCI firmware support code and add support for
           SYSTEM_RESET2 to it (Ulf Hansson, Sudeep Holla).
      
         - Improve genpd support for devices in multiple power domains (Ulf
           Hansson).
      
         - Unify target residency for the AFTR and coupled AFTR states in the
           exynos cpuidle driver (Marek Szyprowski).
      
         - Introduce new helper routine in the operating performance points
           (OPP) framework (Andrew-sh.Cheng).
      
         - Add support for passing on-die termination (ODT) and auto power
           down parameters from the kernel to Trusted Firmware-A (TF-A) to the
           rk3399_dmc devfreq driver (Enric Balletbo i Serra).
      
         - Add tracing to devfreq (Lukasz Luba).
      
         - Make the exynos-bus devfreq driver suspend all devices on system
           shutdown (Marek Szyprowski).
      
         - Fix a few minor issues in the devfreq subsystem and clean it up
           somewhat (Enric Balletbo i Serra, MyungJoo Ham, Rob Herring,
           Saravana Kannan, Yangtao Li).
      
         - Improve system wakeup diagnostics (Stephen Boyd).
      
         - Rework filesystem sync messages emitted during system suspend and
           hibernation (Harry Pan)"
      
      * tag 'pm-5.2-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (72 commits)
        cpufreq: Fix kobject memleak
        cpufreq: armada-37xx: fix frequency calculation for opp
        cpufreq: centrino: Fix centrino_setpolicy() kerneldoc comment
        cpufreq: qoriq: add support for lx2160a
        x86: tsc: Rework time_cpufreq_notifier()
        PM / Domains: Allow to attach a CPU via genpd_dev_pm_attach_by_id|name()
        PM / Domains: Search for the CPU device outside the genpd lock
        PM / Domains: Drop unused in-parameter to some genpd functions
        PM / Domains: Use the base device for driver_deferred_probe_check_state()
        cpufreq: qoriq: Add ls1028a chip support
        PM / Domains: Enable genpd_dev_pm_attach_by_id|name() for single PM domain
        PM / Domains: Allow OF lookup for multi PM domain case from ->attach_dev()
        PM / Domains: Don't kfree() the virtual device in the error path
        cpufreq: Move ->get callback check outside of __cpufreq_get()
        PM / Domains: remove unnecessary unlikely()
        cpufreq: Remove needless bios_limit check in show_bios_limit()
        drivers/cpufreq/acpi-cpufreq.c: This fixes the following checkpatch warning
        firmware/psci: add support for SYSTEM_RESET2
        PM / devfreq: add tracing for scheduling work
        trace: events: add devfreq trace event file
        ...
      8f5e823f
    • Linus Torvalds's avatar
      Merge tag 'acpi-5.2-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · 59df1c2b
      Linus Torvalds authored
      Pull ACPI updates from Rafael Wysocki:
       "These rearrange the ACPI documentation by converting it to the .rst
        format and splitting it into clear categories (admin guide, driver
        API, firmware guide), switch over multiple users of a problematic
        library function to a new better one, update the ACPICA code in the
        kernel to a new upstream release, fix a few issues, improve power
        device management diagnostics and do some cleanups.
      
        Specifics:
      
         - Convert the ACPI documentation in the kernel source tree to the
           .rst format and split it into the admin guide, driver API and
           firmware guide parts (Changbin Du).
      
         - Add a PRP0001 usage example to the ACPI documentation (Thomas
           Preston).
      
         - Switch over the users of the acpi_dev_get_first_match_name()
           library function which turned out to be problematic to a new,
           better one called acpi_dev_get_first_match_dev() (Andy Shevchenko,
           YueHaibing).
      
         - Update the ACPICA code in the kernel to upstream release 20190405
           including:
             * Null pointer dereference check in acpi_ns_delete_node() (Erik
               Schmauss).
             * Multiple macro and function name changes (Bob Moore).
             * Predefined operation region name fix (Erik Schmauss).
      
         - Fix hibernation issue on systems using the Baytrail and Cherrytrail
           Intel SoCs introduced during the 4.20 development cycle (Hans de
           Goede).
      
         - Add Sony VPCEH3U1E to the backlight quirk list (Zhang Rui).
      
         - Fix button handling during system resume (Zhang Rui).
      
         - Add a device PM diagnostic message (Rafael Wysocki).
      
         - Clean up the code, comments and white space in multiple places
           (Bjorn Helgaas, Gustavo Silva, Kefeng Wang)"
      
      * tag 'acpi-5.2-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (53 commits)
        Documentation: ACPI: move video_extension.txt to firmware-guide/acpi and convert to reST
        Documentation: ACPI: move ssdt-overlays.txt to admin-guide/acpi and convert to reST
        Documentation: ACPI: move lpit.txt to firmware-guide/acpi and convert to reST
        Documentation: ACPI: move cppc_sysfs.txt to admin-guide/acpi and convert to reST
        Documentation: ACPI: move apei/einj.txt to firmware-guide/acpi and convert to reST
        Documentation: ACPI: move apei/output_format.txt to firmware-guide/acpi and convert to reST
        Documentation: ACPI: move aml-debugger.txt to firmware-guide/acpi and convert to reST
        Documentation: ACPI: move method-tracing.txt to firmware-guide/acpi and convert to rsST
        Documentation: ACPI: move debug.txt to firmware-guide/acpi and convert to reST
        Documentation: ACPI: move dsd/data-node-references.txt to firmware-guide/acpi and convert to reST
        Documentation: ACPI: move dsd/graph.txt to firmware-guide/acpi and convert to reST
        Documentation: ACPI: move acpi-lid.txt to firmware-guide/acpi and convert to reST
        Documentation: ACPI: move i2c-muxes.txt to firmware-guide/acpi and convert to reST
        Documentation: ACPI: move dsdt-override.txt to admin-guide/acpi and convert to reST
        Documentation: ACPI: move initrd_table_override.txt to admin-guide/acpi and convert to reST
        Documentation: ACPI: move method-customizing.txt to firmware-guide/acpi and convert to reST
        Documentation: ACPI: move gpio-properties.txt to firmware-guide/acpi and convert to reST
        Documentation: ACPI: move DSD-properties-rules.txt to firmware-guide/acpi and covert to reST
        Documentation: ACPI: move scan_handlers.txt to driver-api/acpi and convert to reST
        Documentation: ACPI: move linuxized-acpica.txt to driver-api/acpi and convert to reST
        ...
      59df1c2b
    • Linus Torvalds's avatar
      Merge tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux · c620f7bd
      Linus Torvalds authored
      Pull arm64 updates from Will Deacon:
       "Mostly just incremental improvements here:
      
         - Introduce AT_HWCAP2 for advertising CPU features to userspace
      
         - Expose SVE2 availability to userspace
      
         - Support for "data cache clean to point of deep persistence" (DC PODP)
      
         - Honour "mitigations=off" on the cmdline and advertise status via
           sysfs
      
         - CPU timer erratum workaround (Neoverse-N1 #1188873)
      
         - Introduce perf PMU driver for the SMMUv3 performance counters
      
         - Add config option to disable the kuser helpers page for AArch32 tasks
      
         - Futex modifications to ensure liveness under contention
      
         - Rework debug exception handling to seperate kernel and user
           handlers
      
         - Non-critical fixes and cleanup"
      
      * tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux: (92 commits)
        Documentation: Add ARM64 to kernel-parameters.rst
        arm64/speculation: Support 'mitigations=' cmdline option
        arm64: ssbs: Don't treat CPUs with SSBS as unaffected by SSB
        arm64: enable generic CPU vulnerabilites support
        arm64: add sysfs vulnerability show for speculative store bypass
        arm64: Fix size of __early_cpu_boot_status
        clocksource/arm_arch_timer: Use arch_timer_read_counter to access stable counters
        clocksource/arm_arch_timer: Remove use of workaround static key
        clocksource/arm_arch_timer: Drop use of static key in arch_timer_reg_read_stable
        clocksource/arm_arch_timer: Direcly assign set_next_event workaround
        arm64: Use arch_timer_read_counter instead of arch_counter_get_cntvct
        watchdog/sbsa: Use arch_timer_read_counter instead of arch_counter_get_cntvct
        ARM: vdso: Remove dependency with the arch_timer driver internals
        arm64: Apply ARM64_ERRATUM_1188873 to Neoverse-N1
        arm64: Add part number for Neoverse N1
        arm64: Make ARM64_ERRATUM_1188873 depend on COMPAT
        arm64: Restrict ARM64_ERRATUM_1188873 mitigation to AArch32
        arm64: mm: Remove pte_unmap_nested()
        arm64: Fix compiler warning from pte_unmap() with -Wunused-but-set-variable
        arm64: compat: Reduce address limit for 64K pages
        ...
      c620f7bd
    • Linus Torvalds's avatar
      Merge tag 'arm64-mmiowb' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux · dd4e5d61
      Linus Torvalds authored
      Pull mmiowb removal from Will Deacon:
       "Remove Mysterious Macro Intended to Obscure Weird Behaviours (mmiowb())
      
        Remove mmiowb() from the kernel memory barrier API and instead, for
        architectures that need it, hide the barrier inside spin_unlock() when
        MMIO has been performed inside the critical section.
      
        The only relatively recent changes have been addressing review
        comments on the documentation, which is in a much better shape thanks
        to the efforts of Ben and Ingo.
      
        I was initially planning to split this into two pull requests so that
        you could run the coccinelle script yourself, however it's been plain
        sailing in linux-next so I've just included the whole lot here to keep
        things simple"
      
      * tag 'arm64-mmiowb' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux: (23 commits)
        docs/memory-barriers.txt: Update I/O section to be clearer about CPU vs thread
        docs/memory-barriers.txt: Fix style, spacing and grammar in I/O section
        arch: Remove dummy mmiowb() definitions from arch code
        net/ethernet/silan/sc92031: Remove stale comment about mmiowb()
        i40iw: Redefine i40iw_mmiowb() to do nothing
        scsi/qla1280: Remove stale comment about mmiowb()
        drivers: Remove explicit invocations of mmiowb()
        drivers: Remove useless trailing comments from mmiowb() invocations
        Documentation: Kill all references to mmiowb()
        riscv/mmiowb: Hook up mmwiob() implementation to asm-generic code
        powerpc/mmiowb: Hook up mmwiob() implementation to asm-generic code
        ia64/mmiowb: Add unconditional mmiowb() to arch_spin_unlock()
        mips/mmiowb: Add unconditional mmiowb() to arch_spin_unlock()
        sh/mmiowb: Add unconditional mmiowb() to arch_spin_unlock()
        m68k/io: Remove useless definition of mmiowb()
        nds32/io: Remove useless definition of mmiowb()
        x86/io: Remove useless definition of mmiowb()
        arm64/io: Remove useless definition of mmiowb()
        ARM/io: Remove useless definition of mmiowb()
        mmiowb: Hook up mmiowb helpers to spinlocks and generic I/O accessors
        ...
      dd4e5d61
    • Linus Torvalds's avatar
      Merge tag 's390-5.2-1' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux · 14be4c61
      Linus Torvalds authored
      Pull s390 updates from Martin Schwidefsky:
      
       - Support for kernel address space layout randomization
      
       - Add support for kernel image signature verification
      
       - Convert s390 to the generic get_user_pages_fast code
      
       - Convert s390 to the stack unwind API analog to x86
      
       - Add support for CPU directed interrupts for PCI devices
      
       - Provide support for MIO instructions to the PCI base layer, this will
         allow the use of direct PCI mappings in user space code
      
       - Add the basic KVM guest ultravisor interface for protected VMs
      
       - Add AT_HWCAP bits for several new hardware capabilities
      
       - Update the CPU measurement facility counter definitions to SVN 6
      
       - Arnds cleanup patches for his quest to get LLVM compiles working
      
       - A vfio-ccw update with bug fixes and support for halt and clear
      
       - Improvements for the hardware TRNG code
      
       - Another round of cleanup for the QDIO layer
      
       - Numerous cleanups and bug fixes
      
      * tag 's390-5.2-1' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: (98 commits)
        s390/vdso: drop unnecessary cc-ldoption
        s390: fix clang -Wpointer-sign warnigns in boot code
        s390: drop CONFIG_VIRT_TO_BUS
        s390: boot, purgatory: pass $(CLANG_FLAGS) where needed
        s390: only build for new CPUs with clang
        s390: simplify disabled_wait
        s390/ftrace: use HAVE_FUNCTION_GRAPH_RET_ADDR_PTR
        s390/unwind: introduce stack unwind API
        s390/opcodes: add missing instructions to the disassembler
        s390/bug: add entry size to the __bug_table section
        s390: use proper expoline sections for .dma code
        s390/nospec: rename assembler generated expoline thunks
        s390: add missing ENDPROC statements to assembler functions
        locking/lockdep: check for freed initmem in static_obj()
        s390/kernel: add support for kernel address space layout randomization (KASLR)
        s390/kernel: introduce .dma sections
        s390/sclp: do not use static sccbs
        s390/kprobes: use static buffer for insn_page
        s390/kernel: convert SYSCALL and PGM_CHECK handlers to .quad
        s390/kernel: build a relocatable kernel
        ...
      14be4c61
    • Linus Torvalds's avatar
      Merge tag 'm68k-for-v5.2-tag1' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k · ccbc2e5e
      Linus Torvalds authored
      Pull m68k updates from Geert Uytterhoeven:
      
       - drop arch_gettimeoffset and adopt clocksource API
      
       - defconfig updates
      
      * tag 'm68k-for-v5.2-tag1' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k:
        Documentation/features/time: Mark m68k having modern-timekeeping
        m68k: defconfig: Update defconfigs for v5.1-rc1
        m68k: mvme16x: Handle timer counter overflow
        m68k: mvme16x: Convert to clocksource API
        m68k: mvme147: Handle timer counter overflow
        m68k: mvme147: Convert to clocksource API
        m68k: mac: Convert to clocksource API
        m68k: hp300: Handle timer counter overflow
        m68k: hp300: Convert to clocksource API
        m68k: bvme6000: Convert to clocksource API
        m68k: atari: Convert to clocksource API
        m68k: amiga: Convert to clocksource API
        m68k: Drop ARCH_USES_GETTIMEOFFSET
        m68k: apollo, q40, sun3, sun3x: Remove arch_gettimeoffset implementations
        m68k: mac: Fix VIA timer counter accesses
        m68k: Call timer_interrupt() with interrupts disabled
      ccbc2e5e
    • Linus Torvalds's avatar
      Merge branch 'x86-microcode-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · fdafe5d1
      Linus Torvalds authored
      Pull x86 microcode loading update from Borislav Petkov:
       "A nice Intel microcode blob loading cleanup which gets rid of the ugly
        memcpy wrappers and switches the driver to use the iov_iter API. By
        Jann Horn.
      
        In addition, the /dev/cpu/microcode interface is finally deprecated as
        it is inadequate for the same reasons the late microcode loading is"
      
      * 'x86-microcode-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/microcode: Deprecate MICROCODE_OLD_INTERFACE
        x86/microcode: Fix the ancient deprecated microcode loading method
        x86/microcode/intel: Refactor Intel microcode blob loading
      fdafe5d1
    • Linus Torvalds's avatar
      Merge branch 'x86-topology-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 948a6499
      Linus Torvalds authored
      Pull x86 topology updates from Ingo Molnar:
       "Two main changes: preparatory changes for Intel multi-die topology
        support, plus a syslog message tweak"
      
      * 'x86-topology-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/topology: Make DEBUG_HOTPLUG_CPU0 pr_info() more descriptive
        x86/smpboot: Rename match_die() to match_pkg()
        topology: Simplify cputopology.txt formatting and wording
        x86/topology: Fix documentation typo
      948a6499
    • Linus Torvalds's avatar
      Merge branch 'x86-timers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · db10ad04
      Linus Torvalds authored
      Pull x86 timer updates from Ingo Molnar:
       "Two changes: an LTO improvement, plus the new 'nowatchdog' boot option
        to disable the clocksource watchdog"
      
      * 'x86-timers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/timer: Don't inline __const_udelay()
        x86/tsc: Add option to disable tsc clocksource watchdog
      db10ad04
    • Linus Torvalds's avatar
      Merge branch 'x86-platform-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · ba3934de
      Linus Torvalds authored
      Pull x86 platform updates from Ingo Molnar:
       "Smaller update for Hyper-V to support EOI assist, plus LTO fixes"
      
      * 'x86-platform-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/kvm: Make steal_time visible
        x86/hyperv: Make hv_vcpu_is_preempted() visible
        x86/hyper-v: Implement EOI assist
      ba3934de
    • Linus Torvalds's avatar
      Merge branch 'x86-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 0bc40e54
      Linus Torvalds authored
      Pull x86 mm updates from Ingo Molnar:
       "The changes in here are:
      
         - text_poke() fixes and an extensive set of executability lockdowns,
           to (hopefully) eliminate the last residual circumstances under
           which we are using W|X mappings even temporarily on x86 kernels.
           This required a broad range of surgery in text patching facilities,
           module loading, trampoline handling and other bits.
      
         - tweak page fault messages to be more informative and more
           structured.
      
         - remove DISCONTIGMEM support on x86-32 and make SPARSEMEM the
           default.
      
         - reduce KASLR granularity on 5-level paging kernels from 512 GB to
           1 GB.
      
         - misc other changes and updates"
      
      * 'x86-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (36 commits)
        x86/mm: Initialize PGD cache during mm initialization
        x86/alternatives: Add comment about module removal races
        x86/kprobes: Use vmalloc special flag
        x86/ftrace: Use vmalloc special flag
        bpf: Use vmalloc special flag
        modules: Use vmalloc special flag
        mm/vmalloc: Add flag for freeing of special permsissions
        mm/hibernation: Make hibernation handle unmapped pages
        x86/mm/cpa: Add set_direct_map_*() functions
        x86/alternatives: Remove the return value of text_poke_*()
        x86/jump-label: Remove support for custom text poker
        x86/modules: Avoid breaking W^X while loading modules
        x86/kprobes: Set instruction page as executable
        x86/ftrace: Set trampoline pages as executable
        x86/kgdb: Avoid redundant comparison of patched code
        x86/alternatives: Use temporary mm for text poking
        x86/alternatives: Initialize temporary mm for patching
        fork: Provide a function for copying init_mm
        uprobes: Initialize uprobes earlier
        x86/mm: Save debug registers when loading a temporary mm
        ...
      0bc40e54
    • Linus Torvalds's avatar
      Merge branch 'x86-kdump-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · e913c4a4
      Linus Torvalds authored
      Pull x86 kdump update from Ingo Molnar:
       "This includes two changes:
      
         - Raise the crash kernel reservation limit from from ~896MB to ~4GB.
      
           Only very old (and already known-broken) kexec-tools is supposed to
           be affected by this negatively.
      
         - Allow higher than 4GB crash kernel allocations when low allocations
           fail"
      
      * 'x86-kdump-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/kdump: Fall back to reserve high crashkernel memory
        x86/kdump: Have crashkernel=X reserve under 4G by default
      e913c4a4
    • Linus Torvalds's avatar
      Merge branch 'x86-irq-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 8f147727
      Linus Torvalds authored
      Pull x86 irq updates from Ingo Molnar:
       "Here are the main changes in this tree:
      
         - Introduce x86-64 IRQ/exception/debug stack guard pages to detect
           stack overflows immediately and deterministically.
      
         - Clean up over a decade worth of cruft accumulated.
      
        The outcome of this should be more clear-cut faults/crashes when any
        of the low level x86 CPU stacks overflow, instead of silent memory
        corruption and sporadic failures much later on"
      
      * 'x86-irq-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (33 commits)
        x86/irq: Fix outdated comments
        x86/irq/64: Remove stack overflow debug code
        x86/irq/64: Remap the IRQ stack with guard pages
        x86/irq/64: Split the IRQ stack into its own pages
        x86/irq/64: Init hardirq_stack_ptr during CPU hotplug
        x86/irq/32: Handle irq stack allocation failure proper
        x86/irq/32: Invoke irq_ctx_init() from init_IRQ()
        x86/irq/64: Rename irq_stack_ptr to hardirq_stack_ptr
        x86/irq/32: Rename hard/softirq_stack to hard/softirq_stack_ptr
        x86/irq/32: Make irq stack a character array
        x86/irq/32: Define IRQ_STACK_SIZE
        x86/dumpstack/64: Speedup in_exception_stack()
        x86/exceptions: Split debug IST stack
        x86/exceptions: Enable IST guard pages
        x86/exceptions: Disconnect IST index and stack order
        x86/cpu: Remove orig_ist array
        x86/cpu: Prepare TSS.IST setup for guard pages
        x86/dumpstack/64: Use cpu_entry_area instead of orig_ist
        x86/irq/64: Use cpu entry area instead of orig_ist
        x86/traps: Use cpu_entry_area instead of orig_ist
        ...
      8f147727
    • Linus Torvalds's avatar
      Merge branch 'x86-entry-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 53f8b081
      Linus Torvalds authored
      Pull x86 entry cleanup from Ingo Molnar:
       "A single commit that removes a redundant complication from
        preempt-schedule handling in the x86 entry code"
      
      * 'x86-entry-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/entry: Remove unneeded need_resched() loop
      53f8b081
    • Linus Torvalds's avatar
      Merge branch 'x86-cpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 31a4319b
      Linus Torvalds authored
      Pull x86 cpu updates from Ingo Molnar:
       "Two changes: a Hygon CPU fix, and an optimization Centaur CPUs"
      
      * 'x86-cpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/power: Optimize C3 entry on Centaur CPUs
        x86/CPU/hygon: Fix phys_proc_id calculation logic for multi-die processors
      31a4319b
    • Linus Torvalds's avatar
      Merge branch 'x86-cleanups-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 46e80e6c
      Linus Torvalds authored
      Pull x86 cleanups from Ingo Molnar:
       "A handful of cleanups: dma-ops cleanups, missing boot time kcalloc()
        check, a Sparse fix and use struct_size() to simplify a vzalloc()
        call"
      
      * 'x86-cleanups-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/pci: Clean up usage of X86_DEV_DMA_OPS
        x86/Kconfig: Remove the unused X86_DMA_REMAP KConfig symbol
        x86/kexec/crash: Use struct_size() in vzalloc()
        x86/mm/tlb: Define LOADED_MM_SWITCHING with pointer-sized number
        x86/platform/uv: Fix missing checks of kcalloc() return values
      46e80e6c
    • Linus Torvalds's avatar
      Merge branch 'x86-cache-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 82ac4043
      Linus Torvalds authored
      Pull x86 cache QoS updates from Ingo Molnar:
       "An RDT cleanup and a fix for RDT initialization of new resource
        groups"
      
      * 'x86-cache-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/resctrl: Initialize a new resource group with default MBA values
        x86/resctrl: Move per RDT domain initialization to a separate function
      82ac4043
    • Linus Torvalds's avatar
      Merge branch 'x86-build-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 75571d82
      Linus Torvalds authored
      Pull x86 build updates from Ingo Molnar:
       "Misc updates:
      
         - Add link flag quirk to solve LLVM linker bug that removes local
           relocations, causing KASLR boot failures.
      
         - Update the defconfigs to remove archaic partition table support
      
         - Fix kernel growing pains: we had a bug in relocs.c handling section
           header table entries count larger than 0xff00 (~65k), which can
           happen with the -ffunction-sections flag, causing a build failure
           with a cryptic error message. Add support for detecting the limit
           and using the ELF protocol that extends the sections table via
           ->sh_size. The new limit is now much larger - over a billion
           entries?"
      
      * 'x86-build-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/tools/relocs: Fix big section header tables
        x86/defconfig: Remove archaic partition tables support
        x86/build: Keep local relocations with ld.lld
      75571d82
    • Linus Torvalds's avatar
      Merge branch 'x86-asm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · f725492d
      Linus Torvalds authored
      Pull x86 asm updates from Ingo Molnar:
       "This includes the following changes:
      
         - cpu_has() cleanups
      
         - sync_bitops.h modernization to the rmwcc.h facility, similarly to
           bitops.h
      
         - continued LTO annotations/fixes
      
         - misc cleanups and smaller cleanups"
      
      * 'x86-asm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/um/vdso: Drop unnecessary cc-ldoption
        x86/vdso: Rename variable to fix -Wshadow warning
        x86/cpu/amd: Exclude 32bit only assembler from 64bit build
        x86/asm: Mark all top level asm statements as .text
        x86/build/vdso: Add FORCE to the build rule of %.so
        x86/asm: Modernize sync_bitops.h
        x86/mm: Convert some slow-path static_cpu_has() callers to boot_cpu_has()
        x86: Convert some slow-path static_cpu_has() callers to boot_cpu_has()
        x86/asm: Clarify static_cpu_has()'s intended use
        x86/uaccess: Fix implicit cast of __user pointer
        x86/cpufeature: Remove __pure attribute to _static_cpu_has()
      f725492d
    • Linus Torvalds's avatar
      Merge branch 'x86-apic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 80e77644
      Linus Torvalds authored
      Pull x86 apic update from Ingo Molnar:
       "A single commit which unifies the unnecessarily diverged
        implementations of APIC timer initialization. As a result the
        max_delta parameter is now consistently taken into account"
      
      * 'x86-apic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/apic: Unify duplicated local apic timer clockevent initialization
      80e77644
    • Linus Torvalds's avatar
      Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · a0e928ed
      Linus Torvalds authored
      Pull timer updates from Ingo Molnar:
       "This cycle had the following changes:
      
         - Timer tracing improvements (Anna-Maria Gleixner)
      
         - Continued tasklet reduction work: remove the hrtimer_tasklet
           (Thomas Gleixner)
      
         - Fix CPU hotplug remove race in the tick-broadcast mask handling
           code (Thomas Gleixner)
      
         - Force upper bound for setting CLOCK_REALTIME, to fix ABI
           inconsistencies with handling values that are close to the maximum
           supported and the vagueness of when uptime related wraparound might
           occur. Make the consistent maximum the year 2232 across all
           relevant ABIs and APIs. (Thomas Gleixner)
      
         - various cleanups and smaller fixes"
      
      * 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        tick: Fix typos in comments
        tick/broadcast: Fix warning about undefined tick_broadcast_oneshot_offline()
        timekeeping: Force upper bound for setting CLOCK_REALTIME
        timer/trace: Improve timer tracing
        timer/trace: Replace deprecated vsprintf pointer extension %pf by %ps
        timer: Move trace point to get proper index
        tick/sched: Update tick_sched struct documentation
        tick: Remove outgoing CPU from broadcast masks
        timekeeping: Consistently use unsigned int for seqcount snapshot
        softirq: Remove tasklet_hrtimer
        xfrm: Replace hrtimer tasklet with softirq hrtimer
        mac80211_hwsim: Replace hrtimer tasklet with softirq hrtimer
      a0e928ed
    • Linus Torvalds's avatar
      Merge branch 'smp-hotplug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 5a2bf1ab
      Linus Torvalds authored
      Pull CPU hotplug updates from Ingo Molnar:
       "Two changes in this cycle:
      
         - Make the /sys/devices/system/cpu/smt/* files available on all
           arches, so user space has a consistent way to detect whether SMT is
           enabled.
      
         - Sparse annotation fix"
      
      * 'smp-hotplug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        smpboot: Place the __percpu annotation correctly
        cpu/hotplug: Create SMT sysfs interface for all arches
      5a2bf1ab
    • Linus Torvalds's avatar
      Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · e00d4135
      Linus Torvalds authored
      Pull scheduler updates from Ingo Molnar:
       "The main changes in this cycle were:
      
         - Make nohz housekeeping processing more permissive and less
           intrusive to isolated CPUs
      
         - Decouple CPU-bound workqueue acconting from the scheduler and move
           it into the workqueue code.
      
         - Optimize topology building
      
         - Better handle quota and period overflows
      
         - Add more RCU annotations
      
         - Comment updates, misc cleanups"
      
      * 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (25 commits)
        nohz_full: Allow the boot CPU to be nohz_full
        sched/isolation: Require a present CPU in housekeeping mask
        kernel/cpu: Allow non-zero CPU to be primary for suspend / kexec freeze
        power/suspend: Add function to disable secondaries for suspend
        sched/core: Allow the remote scheduler tick to be started on CPU0
        sched/nohz: Run NOHZ idle load balancer on HK_FLAG_MISC CPUs
        sched/debug: Fix spelling mistake "logaritmic" -> "logarithmic"
        sched/topology: Update init_sched_domains() comment
        cgroup/cpuset: Update stale generate_sched_domains() comments
        sched/core: Check quota and period overflow at usec to nsec conversion
        sched/core: Handle overflow in cpu_shares_write_u64
        sched/rt: Check integer overflow at usec to nsec conversion
        sched/core: Fix typo in comment
        sched/core: Make some functions static
        sched/core: Unify p->on_rq updates
        sched/core: Remove ttwu_activate()
        sched/core, workqueues: Distangle worker accounting from rq lock
        sched/fair: Remove unneeded prototype of capacity_of()
        sched/topology: Skip duplicate group rewrites in build_sched_groups()
        sched/topology: Fix build_sched_groups() comment
        ...
      e00d4135
    • Linus Torvalds's avatar
      Merge branch 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 90489a72
      Linus Torvalds authored
      Pull perf updates from Ingo Molnar:
       "The main kernel changes were:
      
         - add support for Intel's "adaptive PEBS v4" - which embedds LBS data
           in PEBS records and can thus batch up and reduce the IRQ (NMI) rate
           significantly - reducing overhead and making call-graph profiling
           less intrusive.
      
         - add Intel CPU core and uncore support updates for Tremont, Icelake,
      
         - extend the x86 PMU constraints scheduler with 'constraint ranges'
           to better support Icelake hw constraints,
      
         - make x86 call-chain support work better with CONFIG_FRAME_POINTER=y
      
         - misc other changes
      
        Tooling changes:
      
         - updates to the main tools: 'perf record', 'perf trace', 'perf
           stat'
      
         - updated Intel and S/390 vendor events
      
         - libtraceevent updates
      
         - misc other updates and fixes"
      
      * 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (69 commits)
        perf/x86: Make perf callchains work without CONFIG_FRAME_POINTER
        watchdog: Fix typo in comment
        perf/x86/intel: Add Tremont core PMU support
        perf/x86/intel/uncore: Add Intel Icelake uncore support
        perf/x86/msr: Add Icelake support
        perf/x86/intel/rapl: Add Icelake support
        perf/x86/intel/cstate: Add Icelake support
        perf/x86/intel: Add Icelake support
        perf/x86: Support constraint ranges
        perf/x86/lbr: Avoid reading the LBRs when adaptive PEBS handles them
        perf/x86/intel: Support adaptive PEBS v4
        perf/x86/intel/ds: Extract code of event update in short period
        perf/x86/intel: Extract memory code PEBS parser for reuse
        perf/x86: Support outputting XMM registers
        perf/x86/intel: Force resched when TFA sysctl is modified
        perf/core: Add perf_pmu_resched() as global function
        perf/headers: Fix stale comment for struct perf_addr_filter
        perf/core: Make perf_swevent_init_cpu() static
        perf/x86: Add sanity checks to x86_schedule_events()
        perf/x86: Optimize x86_schedule_events()
        ...
      90489a72
    • Linus Torvalds's avatar
      Merge branch 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 007dc78f
      Linus Torvalds authored
      Pull locking updates from Ingo Molnar:
       "Here are the locking changes in this cycle:
      
         - rwsem unification and simpler micro-optimizations to prepare for
           more intrusive (and more lucrative) scalability improvements in
           v5.3 (Waiman Long)
      
         - Lockdep irq state tracking flag usage cleanups (Frederic
           Weisbecker)
      
         - static key improvements (Jakub Kicinski, Peter Zijlstra)
      
         - misc updates, cleanups and smaller fixes"
      
      * 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (26 commits)
        locking/lockdep: Remove unnecessary unlikely()
        locking/static_key: Don't take sleeping locks in __static_key_slow_dec_deferred()
        locking/static_key: Factor out the fast path of static_key_slow_dec()
        locking/static_key: Add support for deferred static branches
        locking/lockdep: Test all incompatible scenarios at once in check_irq_usage()
        locking/lockdep: Avoid bogus Clang warning
        locking/lockdep: Generate LOCKF_ bit composites
        locking/lockdep: Use expanded masks on find_usage_*() functions
        locking/lockdep: Map remaining magic numbers to lock usage mask names
        locking/lockdep: Move valid_state() inside CONFIG_TRACE_IRQFLAGS && CONFIG_PROVE_LOCKING
        locking/rwsem: Prevent unneeded warning during locking selftest
        locking/rwsem: Optimize rwsem structure for uncontended lock acquisition
        locking/rwsem: Enable lock event counting
        locking/lock_events: Don't show pvqspinlock events on bare metal
        locking/lock_events: Make lock_events available for all archs & other locks
        locking/qspinlock_stat: Introduce generic lockevent_*() counting APIs
        locking/rwsem: Enhance DEBUG_RWSEMS_WARN_ON() macro
        locking/rwsem: Add debug check for __down_read*()
        locking/rwsem: Micro-optimize rwsem_try_read_lock_unqueued()
        locking/rwsem: Move rwsem internal function declarations to rwsem-xadd.h
        ...
      007dc78f
    • Linus Torvalds's avatar
      Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 2f1835df
      Linus Torvalds authored
      Pull irq updates from Ingo Molnar:
       "The changes in this cycle were:
      
         - Remove the irq timings/variance statistics code that tried to
           predict when the next interrupt would occur, which didn't work out
           as hoped and is replaced by another mechanism.
      
         - This new mechanism is the 'array suffix computation' estimate,
           which is superior to the previous one as it can detect not just a
           single periodic pattern, but independent periodic patterns along a
           log-2 scale of bucketing and exponential moving average. The
           comments are longer than the code - and it works better at
           predicting various complex interrupt patterns from real-world
           devices than the previous estimate.
      
         - avoid IRQ-work self-IPIs on the local CPU
      
         - fix work-list corruption in irq_set_affinity_notifier()"
      
      * 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        irq_work: Do not raise an IPI when queueing work on the local CPU
        genirq/devres: Use struct_size() in devm_kzalloc()
        genirq/timings: Add array suffix computation code
        genirq/timings: Remove variance computation code
        genirq: Prevent use-after-free and work list corruption
      2f1835df
    • Linus Torvalds's avatar
      Merge branch 'efi-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · d90dcc1f
      Linus Torvalds authored
      Pull EFI updates from Ingo Molnar:
       "The changes in this cycle were:
      
         - Squash a spurious warning when using the EFI framebuffer on a
           non-EFI boot
      
         - Use DMI data to annotate RAS memory errors on ARM just like we do
           on Intel
      
         - Followup cleanups for DMI
      
         - libstub Makefile cleanups"
      
      * 'efi-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        efi/libstub/arm: Omit unneeded stripping of ksymtab/kcrctab sections
        efi: Unify DMI setup code over the arm/arm64, ia64 and x86 architectures
        efi/arm: Show SMBIOS bank/device location in CPER and GHES error logs
        efifb: Omit memory map check on legacy boot
        efi/libstub: Refactor the cmd_stubcopy Makefile command
      d90dcc1f
    • Linus Torvalds's avatar
      Merge branch 'core-stacktrace-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 2c6a392c
      Linus Torvalds authored
      Pull stack trace updates from Ingo Molnar:
       "So Thomas looked at the stacktrace code recently and noticed a few
        weirdnesses, and we all know how such stories of crummy kernel code
        meeting German engineering perfection end: a 45-patch series to clean
        it all up! :-)
      
        Here's the changes in Thomas's words:
      
         'Struct stack_trace is a sinkhole for input and output parameters
          which is largely pointless for most usage sites. In fact if embedded
          into other data structures it creates indirections and extra storage
          overhead for no benefit.
      
          Looking at all usage sites makes it clear that they just require an
          interface which is based on a storage array. That array is either on
          stack, global or embedded into some other data structure.
      
          Some of the stack depot usage sites are outright wrong, but
          fortunately the wrongness just causes more stack being used for
          nothing and does not have functional impact.
      
          Another oddity is the inconsistent termination of the stack trace
          with ULONG_MAX. It's pointless as the number of entries is what
          determines the length of the stored trace. In fact quite some call
          sites remove the ULONG_MAX marker afterwards with or without nasty
          comments about it. Not all architectures do that and those which do,
          do it inconsistenly either conditional on nr_entries == 0 or
          unconditionally.
      
          The following series cleans that up by:
      
            1) Removing the ULONG_MAX termination in the architecture code
      
            2) Removing the ULONG_MAX fixups at the call sites
      
            3) Providing plain storage array based interfaces for stacktrace
               and stackdepot.
      
            4) Cleaning up the mess at the callsites including some related
               cleanups.
      
            5) Removing the struct stack_trace based interfaces
      
          This is not changing the struct stack_trace interfaces at the
          architecture level, but it removes the exposure to the generic
          code'"
      
      * 'core-stacktrace-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (45 commits)
        x86/stacktrace: Use common infrastructure
        stacktrace: Provide common infrastructure
        lib/stackdepot: Remove obsolete functions
        stacktrace: Remove obsolete functions
        livepatch: Simplify stack trace retrieval
        tracing: Remove the last struct stack_trace usage
        tracing: Simplify stack trace retrieval
        tracing: Make ftrace_trace_userstack() static and conditional
        tracing: Use percpu stack trace buffer more intelligently
        tracing: Simplify stacktrace retrieval in histograms
        lockdep: Simplify stack trace handling
        lockdep: Remove save argument from check_prev_add()
        lockdep: Remove unused trace argument from print_circular_bug()
        drm: Simplify stacktrace handling
        dm persistent data: Simplify stack trace handling
        dm bufio: Simplify stack trace retrieval
        btrfs: ref-verify: Simplify stack trace retrieval
        dma/debug: Simplify stracktrace retrieval
        fault-inject: Simplify stacktrace retrieval
        mm/page_owner: Simplify stack trace handling
        ...
      2c6a392c
    • Linus Torvalds's avatar
      Merge branch 'core-speculation-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 0a499fc5
      Linus Torvalds authored
      Pull speculation mitigation update from Ingo Molnar:
       "This adds the "mitigations=" bootline option, which offers a
        cross-arch set of options that will work on x86, PowerPC and s390 that
        will map to the arch specific option internally"
      
      * 'core-speculation-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        s390/speculation: Support 'mitigations=' cmdline option
        powerpc/speculation: Support 'mitigations=' cmdline option
        x86/speculation: Support 'mitigations=' cmdline option
        cpu/speculation: Add 'mitigations=' cmdline option
      0a499fc5
    • Linus Torvalds's avatar
      Merge branch 'core-rseq-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · e50c5d2e
      Linus Torvalds authored
      Pull rseq updates from Ingo Molnar:
       "A cleanup and a fix to comments"
      
      * 'core-rseq-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        rseq: Remove superfluous rseq_len from task_struct
        rseq: Clean up comments by reflecting removal of event counter
      e50c5d2e
    • Linus Torvalds's avatar
      Merge branch 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 5ba2a4b1
      Linus Torvalds authored
      Pull RCU updates from Ingo Molnar:
       "This cycles's RCU changes include:
      
         - a couple of straggling RCU flavor consolidation updates
      
         - SRCU updates
      
         - RCU CPU stall-warning updates
      
         - torture-test updates
      
         - an LKMM commit adding support for synchronize_srcu_expedited()
      
         - documentation updates
      
         - miscellaneous fixes"
      
      * 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (57 commits)
        net/ipv4/netfilter: Update comment from call_rcu_bh() to call_rcu()
        tools/memory-model: Add support for synchronize_srcu_expedited()
        doc/kprobes: Update obsolete RCU update functions
        torture: Suppress false-positive CONFIG_INITRAMFS_SOURCE complaint
        locktorture: NULL cxt.lwsa and cxt.lrsa to allow bad-arg detection
        rcuperf: Fix cleanup path for invalid perf_type strings
        rcutorture: Fix cleanup path for invalid torture_type strings
        rcutorture: Fix expected forward progress duration in OOM notifier
        rcutorture: Remove ->ext_irq_conflict field
        rcutorture: Make rcutorture_extend_mask() comment match the code
        tools/.../rcutorture: Convert to SPDX license identifier
        torture: Don't try to offline the last CPU
        rcu: Fix nohz status in stall warning
        rcu: Move forward-progress checkers into tree_stall.h
        rcu: Move irq-disabled stall-warning checking to tree_stall.h
        rcu: Organize functions in tree_stall.h
        rcu: Move FAST_NO_HZ stall-warning code to tree_stall.h
        rcu: Inline RCU stall-warning info helper functions
        rcu: Move rcu_print_task_exp_stall() to tree_exp.h
        rcu: Inline RCU task stall-warning helper functions
        ...
      5ba2a4b1
    • Linus Torvalds's avatar
      Merge branch 'core-objtool-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 6ec62961
      Linus Torvalds authored
      Pull objtool updates from Ingo Molnar:
       "This is a series from Peter Zijlstra that adds x86 build-time uaccess
        validation of SMAP to objtool, which will detect and warn about the
        following uaccess API usage bugs and weirdnesses:
      
         - call to %s() with UACCESS enabled
         - return with UACCESS enabled
         - return with UACCESS disabled from a UACCESS-safe function
         - recursive UACCESS enable
         - redundant UACCESS disable
         - UACCESS-safe disables UACCESS
      
        As it turns out not leaking uaccess permissions outside the intended
        uaccess functionality is hard when the interfaces are complex and when
        such bugs are mostly dormant.
      
        As a bonus we now also check the DF flag. We had at least one
        high-profile bug in that area in the early days of Linux, and the
        checking is fairly simple. The checks performed and warnings emitted
        are:
      
         - call to %s() with DF set
         - return with DF set
         - return with modified stack frame
         - recursive STD
         - redundant CLD
      
        It's all x86-only for now, but later on this can also be used for PAN
        on ARM and objtool is fairly cross-platform in principle.
      
        While all warnings emitted by this new checking facility that got
        reported to us were fixed, there might be GCC version dependent
        warnings that were not reported yet - which we'll address, should they
        trigger.
      
        The warnings are non-fatal build warnings"
      
      * 'core-objtool-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (27 commits)
        mm/uaccess: Use 'unsigned long' to placate UBSAN warnings on older GCC versions
        x86/uaccess: Dont leak the AC flag into __put_user() argument evaluation
        sched/x86_64: Don't save flags on context switch
        objtool: Add Direction Flag validation
        objtool: Add UACCESS validation
        objtool: Fix sibling call detection
        objtool: Rewrite alt->skip_orig
        objtool: Add --backtrace support
        objtool: Rewrite add_ignores()
        objtool: Handle function aliases
        objtool: Set insn->func for alternatives
        x86/uaccess, kcov: Disable stack protector
        x86/uaccess, ftrace: Fix ftrace_likely_update() vs. SMAP
        x86/uaccess, ubsan: Fix UBSAN vs. SMAP
        x86/uaccess, kasan: Fix KASAN vs SMAP
        x86/smap: Ditch __stringify()
        x86/uaccess: Introduce user_access_{save,restore}()
        x86/uaccess, signal: Fix AC=1 bloat
        x86/uaccess: Always inline user_access_begin()
        x86/uaccess, xen: Suppress SMAP warnings
        ...
      6ec62961
    • Linus Torvalds's avatar
      Merge branch 'core-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 171c2bcb
      Linus Torvalds authored
      Pull unified TLB flushing from Ingo Molnar:
       "This contains the generic mmu_gather feature from Peter Zijlstra,
        which is an all-arch unification of TLB flushing APIs, via the
        following (broad) steps:
      
         - enhance the <asm-generic/tlb.h> APIs to cover more arch details
      
         - convert most TLB flushing arch implementations to the generic
           <asm-generic/tlb.h> APIs.
      
         - remove leftovers of per arch implementations
      
        After this series every single architecture makes use of the unified
        TLB flushing APIs"
      
      * 'core-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        mm/resource: Use resource_overlaps() to simplify region_intersects()
        ia64/tlb: Eradicate tlb_migrate_finish() callback
        asm-generic/tlb: Remove tlb_table_flush()
        asm-generic/tlb: Remove tlb_flush_mmu_free()
        asm-generic/tlb: Remove CONFIG_HAVE_GENERIC_MMU_GATHER
        asm-generic/tlb: Remove arch_tlb*_mmu()
        s390/tlb: Convert to generic mmu_gather
        asm-generic/tlb: Introduce CONFIG_HAVE_MMU_GATHER_NO_GATHER=y
        arch/tlb: Clean up simple architectures
        um/tlb: Convert to generic mmu_gather
        sh/tlb: Convert SH to generic mmu_gather
        ia64/tlb: Convert to generic mmu_gather
        arm/tlb: Convert to generic mmu_gather
        asm-generic/tlb, arch: Invert CONFIG_HAVE_RCU_TABLE_INVALIDATE
        asm-generic/tlb, ia64: Conditionally provide tlb_migrate_finish()
        asm-generic/tlb: Provide generic tlb_flush() based on flush_tlb_mm()
        asm-generic/tlb, arch: Provide generic tlb_flush() based on flush_tlb_range()
        asm-generic/tlb, arch: Provide generic VIPT cache flush
        asm-generic/tlb, arch: Provide CONFIG_HAVE_MMU_GATHER_PAGE_SIZE
        asm-generic/tlb: Provide a comment
      171c2bcb
    • Linus Torvalds's avatar
      tty: rocket: fix incorrect forward declaration of 'rp_init()' · 423ea325
      Linus Torvalds authored
      
      
      Make the forward declaration actually match the real function
      definition, something that previous versions of gcc had just ignored.
      
      This is another patch to fix new warnings from gcc-9 before I start the
      merge window pulls.  I don't want to miss legitimate new warnings just
      because my system update brought a new compiler with new warnings.
      
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      423ea325
    • Andrey Ryabinin's avatar
      ubsan: Remove vla bound checks. · 9a91ad92
      Andrey Ryabinin authored
      
      
      The kernel the kernel is built with -Wvla for some time, so is not
      supposed to have any variable length arrays.  Remove vla bounds checking
      from ubsan since it's useless now.
      
      Signed-off-by: default avatarAndrey Ryabinin <aryabinin@virtuozzo.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      9a91ad92