Merge branch 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 16 Sep 2019 23:28:19 +0000 (16:28 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 16 Sep 2019 23:28:19 +0000 (16:28 -0700)
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
  ...

1  2 
Documentation/admin-guide/kernel-parameters.txt
MAINTAINERS
kernel/sched/core.c
kernel/trace/trace.c

index 0d2a67e792ed725f91bf28be9ecfb3cb1386fcd4,84bac92f2cfae6c19d71ab5d03751a01fc16ee59..520dedae715088322a2b3b3bd8a4b3736a1ded45
                        Note that using this option lowers the security
                        provided by tboot because it makes the system
                        vulnerable to DMA attacks.
 +              nobounce [Default off]
 +                      Disable bounce buffer for unstrusted devices such as
 +                      the Thunderbolt devices. This will treat the untrusted
 +                      devices as the trusted ones, hence might expose security
 +                      risks of DMA attacks.
  
        intel_idle.max_cstate=  [KNL,HW,ACPI,X86]
                        0       disables intel_idle and fall back on acpi_idle.
                          synchronously.
  
        iommu.passthrough=
 -                      [ARM64] Configure DMA to bypass the IOMMU by default.
 +                      [ARM64, X86] Configure DMA to bypass the IOMMU by default.
                        Format: { "0" | "1" }
                        0 - Use IOMMU translation for DMA.
                        1 - Bypass the IOMMU for DMA.
  
        machvec=        [IA-64] Force the use of a particular machine-vector
                        (machvec) in a generic kernel.
 -                      Example: machvec=hpzx1_swiotlb
 +                      Example: machvec=hpzx1
  
        machtype=       [Loongson] Share the same kernel image file between different
                         yeeloong laptop.
                        RCU_BOOST is not set, valid values are 0-99 and
                        the default is zero (non-realtime operation).
  
-       rcutree.rcu_nocb_leader_stride= [KNL]
-                       Set the number of NOCB kthread groups, which
-                       defaults to the square root of the number of
-                       CPUs.  Larger numbers reduces the wakeup overhead
-                       on the per-CPU grace-period kthreads, but increases
-                       that same overhead on each group's leader.
+       rcutree.rcu_nocb_gp_stride= [KNL]
+                       Set the number of NOCB callback kthreads in
+                       each group, which defaults to the square root
+                       of the number of CPUs.  Larger numbers reduce
+                       the wakeup overhead on the global grace-period
+                       kthread, but increases that same overhead on
+                       each group's NOCB grace-period kthread.
  
        rcutree.qhimark= [KNL]
                        Set threshold of queued RCU callbacks beyond which
        rcutorture.verbose= [KNL]
                        Enable additional printk() statements.
  
+       rcupdate.rcu_cpu_stall_ftrace_dump= [KNL]
+                       Dump ftrace buffer after reporting RCU CPU
+                       stall warning.
        rcupdate.rcu_cpu_stall_suppress= [KNL]
                        Suppress RCU CPU stall warning messages.
  
                        Run specified binary instead of /init from the ramdisk,
                        used for early userspace startup. See initrd.
  
 +      rdrand=         [X86]
 +                      force - Override the decision by the kernel to hide the
 +                              advertisement of RDRAND support (this affects
 +                              certain AMD processors because of buggy BIOS
 +                              support, specifically around the suspend/resume
 +                              path).
 +
        rdt=            [HW,X86,RDT]
                        Turn on/off individual RDT features. List is:
                        cmt, mbmtotal, mbmlocal, l3cat, l3cdp, l2cat, l2cdp,
diff --combined MAINTAINERS
index 9f1bc299e8fd20950c7e8c3b2d3e888dac5a07b3,d27075e3a38f4daab34f2c5a9663f73a5e5de5dd..cbe625343277ea0277e470e413c9cdbf79cabc04
@@@ -517,6 -517,14 +517,6 @@@ W:        http://ez.analog.com/community/linux
  S:    Supported
  F:    drivers/video/backlight/adp8860_bl.c
  
 -ADS1015 HARDWARE MONITOR DRIVER
 -M:    Dirk Eibach <eibach@gdsys.de>
 -L:    linux-hwmon@vger.kernel.org
 -S:    Maintained
 -F:    Documentation/hwmon/ads1015.rst
 -F:    drivers/hwmon/ads1015.c
 -F:    include/linux/platform_data/ads1015.h
 -
  ADT746X FAN DRIVER
  M:    Colin Leroy <colin@colino.net>
  S:    Maintained
@@@ -675,7 -683,7 +675,7 @@@ S: Maintaine
  F:    drivers/crypto/sunxi-ss/
  
  ALLWINNER VPU DRIVER
 -M:    Maxime Ripard <maxime.ripard@bootlin.com>
 +M:    Maxime Ripard <mripard@kernel.org>
  M:    Paul Kocialkowski <paul.kocialkowski@bootlin.com>
  L:    linux-media@vger.kernel.org
  S:    Maintained
@@@ -1342,7 -1350,8 +1342,7 @@@ M:      Will Deacon <will@kernel.org
  R:    Robin Murphy <robin.murphy@arm.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
 -F:    drivers/iommu/arm-smmu.c
 -F:    drivers/iommu/arm-smmu-v3.c
 +F:    drivers/iommu/arm-smmu*
  F:    drivers/iommu/io-pgtable-arm.c
  F:    drivers/iommu/io-pgtable-arm-v7s.c
  
@@@ -1399,7 -1408,7 +1399,7 @@@ S:      Maintaine
  F:    drivers/clk/sunxi/
  
  ARM/Allwinner sunXi SoC support
 -M:    Maxime Ripard <maxime.ripard@bootlin.com>
 +M:    Maxime Ripard <mripard@kernel.org>
  M:    Chen-Yu Tsai <wens@csie.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
@@@ -1617,21 -1626,6 +1617,21 @@@ F:    drivers/clocksource/timer-atlas7.
  N:    [^a-z]sirf
  X:    drivers/gnss
  
 +ARM/CZ.NIC TURRIS MOX SUPPORT
 +M:    Marek Behun <marek.behun@nic.cz>
 +W:    http://mox.turris.cz
 +S:    Maintained
 +F:    Documentation/ABI/testing/debugfs-moxtet
 +F:    Documentation/ABI/testing/sysfs-bus-moxtet-devices
 +F:    Documentation/ABI/testing/sysfs-firmware-turris-mox-rwtm
 +F:    Documentation/devicetree/bindings/bus/moxtet.txt
 +F:    Documentation/devicetree/bindings/firmware/cznic,turris-mox-rwtm.txt
 +F:    Documentation/devicetree/bindings/gpio/gpio-moxtet.txt
 +F:    include/linux/moxtet.h
 +F:    drivers/bus/moxtet.c
 +F:    drivers/firmware/turris-mox-rwtm.c
 +F:    drivers/gpio/gpio-moxtet.c
 +
  ARM/EBSA110 MACHINE SUPPORT
  M:    Russell King <linux@armlinux.org.uk>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@@ -1755,11 -1749,20 +1755,11 @@@ L:   linux-arm-kernel@lists.infradead.or
  S:    Maintained
  F:    arch/arm/mach-pxa/colibri-pxa270-income.c
  
 -ARM/INTEL IOP13XX ARM ARCHITECTURE
 -M:    Lennert Buytenhek <kernel@wantstofly.org>
 -L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -S:    Maintained
 -
  ARM/INTEL IOP32X ARM ARCHITECTURE
  M:    Lennert Buytenhek <kernel@wantstofly.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  
 -ARM/INTEL IOP33X ARM ARCHITECTURE
 -L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -S:    Orphan
 -
  ARM/INTEL IQ81342EX MACHINE SUPPORT
  M:    Lennert Buytenhek <kernel@wantstofly.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@@ -1918,6 -1921,12 +1918,6 @@@ S:     Maintaine
  F:    drivers/phy/mediatek/
  F:    Documentation/devicetree/bindings/phy/phy-mtk-*
  
 -ARM/MICREL KS8695 ARCHITECTURE
 -M:    Greg Ungerer <gerg@uclinux.org>
 -L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -F:    arch/arm/mach-ks8695/
 -S:    Odd Fixes
 -
  ARM/Microchip (AT91) SoC support
  M:    Nicolas Ferre <nicolas.ferre@microchip.com>
  M:    Alexandre Belloni <alexandre.belloni@bootlin.com>
@@@ -1959,7 -1968,6 +1959,7 @@@ F:      Documentation/devicetree/bindings/i2
  F:    arch/arm/mach-nomadik/
  F:    arch/arm/mach-u300/
  F:    arch/arm/mach-ux500/
 +F:    drivers/soc/ux500/
  F:    arch/arm/boot/dts/ste-*
  F:    drivers/clk/clk-nomadik.c
  F:    drivers/clk/clk-u300.c
@@@ -2003,6 -2011,22 +2003,6 @@@ F:     drivers/*/*npcm
  F:    Documentation/devicetree/bindings/*/*npcm*
  F:    Documentation/devicetree/bindings/*/*/*npcm*
  
 -ARM/NUVOTON W90X900 ARM ARCHITECTURE
 -M:    Wan ZongShun <mcuos.com@gmail.com>
 -L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -W:    http://www.mcuos.com
 -S:    Maintained
 -F:    arch/arm/mach-w90x900/
 -F:    drivers/input/keyboard/w90p910_keypad.c
 -F:    drivers/input/touchscreen/w90p910_ts.c
 -F:    drivers/watchdog/nuc900_wdt.c
 -F:    drivers/net/ethernet/nuvoton/w90p910_ether.c
 -F:    drivers/mtd/nand/raw/nuc900_nand.c
 -F:    drivers/rtc/rtc-nuc900.c
 -F:    drivers/spi/spi-nuc900.c
 -F:    drivers/usb/host/ehci-w90x900.c
 -F:    drivers/video/fbdev/nuc900fb.c
 -
  ARM/OPENMOKO NEO FREERUNNER (GTA02) MACHINE SUPPORT
  L:    openmoko-kernel@lists.openmoko.org (subscribers-only)
  W:    http://wiki.openmoko.org/wiki/Neo_FreeRunner
@@@ -2195,9 -2219,8 +2195,9 @@@ F:      drivers/*/*s3c24
  F:    drivers/*/*/*s3c24*
  F:    drivers/*/*s3c64xx*
  F:    drivers/*/*s5pv210*
 -F:    drivers/memory/samsung/*
 -F:    drivers/soc/samsung/*
 +F:    drivers/memory/samsung/
 +F:    drivers/soc/samsung/
 +F:    include/linux/soc/samsung/
  F:    Documentation/arm/samsung/
  F:    Documentation/devicetree/bindings/arm/samsung/
  F:    Documentation/devicetree/bindings/sram/samsung-sram.txt
@@@ -3554,7 -3577,7 +3554,7 @@@ F:      Documentation/filesystems/caching/ca
  F:    fs/cachefiles/
  
  CADENCE MIPI-CSI2 BRIDGES
 -M:    Maxime Ripard <maxime.ripard@bootlin.com>
 +M:    Maxime Ripard <mripard@kernel.org>
  L:    linux-media@vger.kernel.org
  S:    Maintained
  F:    Documentation/devicetree/bindings/media/cdns,*.txt
@@@ -4267,14 -4290,6 +4267,14 @@@ S:    Supporte
  F:    drivers/cpuidle/cpuidle-exynos.c
  F:    arch/arm/mach-exynos/pm.c
  
 +CPUIDLE DRIVER - ARM PSCI
 +M:    Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
 +M:    Sudeep Holla <sudeep.holla@arm.com>
 +L:    linux-pm@vger.kernel.org
 +L:    linux-arm-kernel@lists.infradead.org
 +S:    Supported
 +F:    drivers/cpuidle/cpuidle-psci.c
 +
  CPU IDLE TIME MANAGEMENT FRAMEWORK
  M:    "Rafael J. Wysocki" <rjw@rjwysocki.net>
  M:    Daniel Lezcano <daniel.lezcano@linaro.org>
@@@ -5280,7 -5295,7 +5280,7 @@@ F:      include/linux/vga
  
  DRM DRIVERS AND MISC GPU PATCHES
  M:    Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
 -M:    Maxime Ripard <maxime.ripard@bootlin.com>
 +M:    Maxime Ripard <mripard@kernel.org>
  M:    Sean Paul <sean@poorly.run>
  W:    https://01.org/linuxgraphics/gfx-docs/maintainer-tools/drm-misc.html
  S:    Maintained
@@@ -5293,7 -5308,7 +5293,7 @@@ F:      include/uapi/drm/drm
  F:    include/linux/vga*
  
  DRM DRIVERS FOR ALLWINNER A10
 -M:    Maxime Ripard  <maxime.ripard@bootlin.com>
 +M:    Maxime Ripard <mripard@kernel.org>
  L:    dri-devel@lists.freedesktop.org
  S:    Supported
  F:    drivers/gpu/drm/sun4i/
@@@ -5746,11 -5761,6 +5746,11 @@@ S:    Supporte
  F:    drivers/edac/aspeed_edac.c
  F:    Documentation/devicetree/bindings/edac/aspeed-sdram-edac.txt
  
 +EDAC-BLUEFIELD
 +M:    Shravan Kumar Ramani <sramani@mellanox.com>
 +S:    Supported
 +F:    drivers/edac/bluefield_edac.c
 +
  EDAC-CALXEDA
  M:    Robert Richter <rric@kernel.org>
  L:    linux-edac@vger.kernel.org
@@@ -5775,11 -5785,10 +5775,11 @@@ F:   drivers/edac/thunderx_edac
  EDAC-CORE
  M:    Borislav Petkov <bp@alien8.de>
  M:    Mauro Carvalho Chehab <mchehab@kernel.org>
 +M:    Tony Luck <tony.luck@intel.com>
  R:    James Morse <james.morse@arm.com>
 +R:    Robert Richter <rrichter@marvell.com>
  L:    linux-edac@vger.kernel.org
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp.git for-next
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-edac.git linux_next
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/ras/ras.git edac-for-next
  S:    Supported
  F:    Documentation/admin-guide/ras.rst
  F:    Documentation/driver-api/edac.rst
@@@ -6322,6 -6331,15 +6322,6 @@@ S:     Odd Fixe
  L:    linux-block@vger.kernel.org
  F:    drivers/block/floppy.c
  
 -FMC SUBSYSTEM
 -M:    Alessandro Rubini <rubini@gnudd.com>
 -W:    http://www.ohwr.org/projects/fmc-bus
 -S:    Supported
 -F:    drivers/fmc/
 -F:    include/linux/fmc*.h
 -F:    include/linux/ipmi-fru.h
 -K:    fmc_d.*register
 -
  FPGA MANAGER FRAMEWORK
  M:    Moritz Fischer <mdf@kernel.org>
  L:    linux-fpga@vger.kernel.org
@@@ -6421,7 -6439,6 +6421,7 @@@ M:      Frank Li <Frank.li@nxp.com
  L:    linux-arm-kernel@lists.infradead.org
  S:    Maintained
  F:    drivers/perf/fsl_imx8_ddr_perf.c
 +F:    Documentation/admin-guide/perf/imx-ddr.rst
  F:    Documentation/devicetree/bindings/perf/fsl-imx-ddr.txt
  
  FREESCALE IMX I2C DRIVER
@@@ -6715,13 -6732,6 +6715,13 @@@ W:    https://linuxtv.or
  S:    Maintained
  F:    drivers/media/radio/radio-gemtek*
  
 +GENERIC ARCHITECTURE TOPOLOGY
 +M:    Sudeep Holla <sudeep.holla@arm.com>
 +L:    linux-kernel@vger.kernel.org
 +S:    Maintained
 +F:    drivers/base/arch_topology.c
 +F:    include/linux/arch_topology.h
 +
  GENERIC GPIO I2C DRIVER
  M:    Wolfram Sang <wsa+renesas@sang-engineering.com>
  S:    Supported
@@@ -7503,7 -7513,7 +7503,7 @@@ I2C MV64XXX MARVELL AND ALLWINNER DRIVE
  M:    Gregory CLEMENT <gregory.clement@bootlin.com>
  L:    linux-i2c@vger.kernel.org
  S:    Maintained
 -F:    Documentation/devicetree/bindings/i2c/i2c-mv64xxx.txt
 +F:    Documentation/devicetree/bindings/i2c/marvell,mv64xxx-i2c.yaml
  F:    drivers/i2c/busses/i2c-mv64xxx.c
  
  I2C OVER PARALLEL PORT
@@@ -8375,6 -8385,12 +8375,6 @@@ F:     Documentation/x86/intel_txt.rs
  F:    include/linux/tboot.h
  F:    arch/x86/kernel/tboot.c
  
 -INTEL-MID GPIO DRIVER
 -M:    David Cohen <david.a.cohen@linux.intel.com>
 -L:    linux-gpio@vger.kernel.org
 -S:    Maintained
 -F:    drivers/gpio/gpio-intel-mid.c
 -
  INTERCONNECT API
  M:    Georgi Djakov <georgi.djakov@linaro.org>
  L:    linux-pm@vger.kernel.org
@@@ -8399,6 -8415,12 +8399,6 @@@ L:     linux-mips@vger.kernel.or
  S:    Maintained
  F:    drivers/net/ethernet/sgi/ioc3-eth.c
  
 -IOC3 SERIAL DRIVER
 -M:    Pat Gefre <pfg@sgi.com>
 -L:    linux-serial@vger.kernel.org
 -S:    Maintained
 -F:    drivers/tty/serial/ioc3_serial.c
 -
  IOMAP FILESYSTEM LIBRARY
  M:    Christoph Hellwig <hch@infradead.org>
  M:    Darrick J. Wong <darrick.wong@oracle.com>
@@@ -8432,6 -8454,11 +8432,6 @@@ S:     Maintaine
  F:    fs/io_uring.c
  F:    include/uapi/linux/io_uring.h
  
 -IP MASQUERADING
 -M:    Juanjo Ciarlante <jjciarla@raiz.uncu.edu.ar>
 -S:    Maintained
 -F:    net/ipv4/netfilter/ipt_MASQUERADE.c
 -
  IPMI SUBSYSTEM
  M:    Corey Minyard <minyard@acm.org>
  L:    openipmi-developer@lists.sourceforge.net (moderated for non-subscribers)
@@@ -8911,7 -8938,7 +8911,7 @@@ F:      security/keys/encrypted-keys
  
  KEYS-TRUSTED
  M:    James Bottomley <jejb@linux.ibm.com>
 -M:      Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
 +M:    Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
  M:    Mimi Zohar <zohar@linux.ibm.com>
  L:    linux-integrity@vger.kernel.org
  L:    keyrings@vger.kernel.org
@@@ -9207,18 -9234,6 +9207,18 @@@ F:    include/linux/nd.
  F:    include/linux/libnvdimm.h
  F:    include/uapi/linux/ndctl.h
  
 +LICENSES and SPDX stuff
 +M:    Thomas Gleixner <tglx@linutronix.de>
 +M:    Greg Kroah-Hartman <gregkh@linuxfoundation.org>
 +L:    linux-spdx@vger.kernel.org
 +S:    Maintained
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/spdx.git
 +F:    COPYING
 +F:    Documentation/process/license-rules.rst
 +F:    LICENSES/
 +F:    scripts/spdxcheck-test.sh
 +F:    scripts/spdxcheck.py
 +
  LIGHTNVM PLATFORM SUPPORT
  M:    Matias Bjorling <mb@lightnvm.io>
  W:    http://github/OpenChannelSSD
@@@ -9325,7 -9340,7 +9325,7 @@@ F:      drivers/misc/lkdtm/
  
  LINUX KERNEL MEMORY CONSISTENCY MODEL (LKMM)
  M:    Alan Stern <stern@rowland.harvard.edu>
- M:    Andrea Parri <andrea.parri@amarulasolutions.com>
+ M:    Andrea Parri <parri.andrea@gmail.com>
  M:    Will Deacon <will@kernel.org>
  M:    Peter Zijlstra <peterz@infradead.org>
  M:    Boqun Feng <boqun.feng@gmail.com>
@@@ -9333,7 -9348,7 +9333,7 @@@ M:      Nicholas Piggin <npiggin@gmail.com
  M:    David Howells <dhowells@redhat.com>
  M:    Jade Alglave <j.alglave@ucl.ac.uk>
  M:    Luc Maranget <luc.maranget@inria.fr>
- M:    "Paul E. McKenney" <paulmck@linux.ibm.com>
+ M:    "Paul E. McKenney" <paulmck@kernel.org>
  R:    Akira Yokosawa <akiyks@gmail.com>
  R:    Daniel Lustig <dlustig@nvidia.com>
  L:    linux-kernel@vger.kernel.org
@@@ -10016,8 -10031,8 +10016,8 @@@ L:   linux-media@vger.kernel.or
  L:    linux-renesas-soc@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
  S:    Supported
 -F:    Documentation/devicetree/bindings/media/renesas,rcar-csi2.txt
 -F:    Documentation/devicetree/bindings/media/rcar_vin.txt
 +F:    Documentation/devicetree/bindings/media/renesas,csi2.txt
 +F:    Documentation/devicetree/bindings/media/renesas,vin.txt
  F:    drivers/media/platform/rcar-vin/
  
  MEDIA DRIVERS FOR RENESAS - VSP1
@@@ -10362,7 -10377,7 +10362,7 @@@ F:   drivers/platform/x86/mlx-platform.
  
  MEMBARRIER SUPPORT
  M:    Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
- M:    "Paul E. McKenney" <paulmck@linux.ibm.com>
+ M:    "Paul E. McKenney" <paulmck@kernel.org>
  L:    linux-kernel@vger.kernel.org
  S:    Supported
  F:    kernel/sched/membarrier.c
@@@ -10614,6 -10629,12 +10614,6 @@@ M:  Nicolas Ferre <nicolas.ferre@microch
  S:    Supported
  F:    drivers/power/reset/at91-sama5d2_shdwc.c
  
 -MICROCHIP SAMA5D2-COMPATIBLE PIOBU GPIO
 -M:    Andrei Stefanescu <andrei.stefanescu@microchip.com>
 -L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -L:    linux-gpio@vger.kernel.org
 -F:    drivers/gpio/gpio-sama5d2-piobu.c
 -
  MICROCHIP SPI DRIVER
  M:    Nicolas Ferre <nicolas.ferre@microchip.com>
  S:    Supported
@@@ -10626,6 -10647,13 +10626,6 @@@ S:  Supporte
  F:    drivers/misc/atmel-ssc.c
  F:    include/linux/atmel-ssc.h
  
 -MICROCHIP TIMER COUNTER (TC) AND CLOCKSOURCE DRIVERS
 -M:    Nicolas Ferre <nicolas.ferre@microchip.com>
 -L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -S:    Supported
 -F:    drivers/misc/atmel_tclib.c
 -F:    drivers/clocksource/tcb_clksrc.c
 -
  MICROCHIP USBA UDC DRIVER
  M:    Cristian Birsan <cristian.birsan@microchip.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@@ -11058,7 -11086,7 +11058,7 @@@ NET_FAILOVER MODUL
  M:    Sridhar Samudrala <sridhar.samudrala@intel.com>
  L:    netdev@vger.kernel.org
  S:    Supported
 -F:    driver/net/net_failover.c
 +F:    drivers/net/net_failover.c
  F:    include/net/net_failover.h
  F:    Documentation/networking/net_failover.rst
  
@@@ -12667,7 -12695,6 +12667,7 @@@ L:   linux-arm-kernel@lists.infradead.or
  L:    linux-gpio@vger.kernel.org
  S:    Supported
  F:    drivers/pinctrl/pinctrl-at91*
 +F:    drivers/gpio/gpio-sama5d2-piobu.c
  
  PIN CONTROLLER - FREESCALE
  M:    Dong Aisheng <aisheng.dong@nxp.com>
@@@ -13465,7 -13492,7 +13465,7 @@@ S:   Orpha
  F:    drivers/net/wireless/ray*
  
  RCUTORTURE TEST FRAMEWORK
- M:    "Paul E. McKenney" <paulmck@linux.ibm.com>
+ M:    "Paul E. McKenney" <paulmck@kernel.org>
  M:    Josh Triplett <josh@joshtriplett.org>
  R:    Steven Rostedt <rostedt@goodmis.org>
  R:    Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
@@@ -13512,7 -13539,7 +13512,7 @@@ F:   arch/x86/include/asm/resctrl_sched.
  F:    Documentation/x86/resctrl*
  
  READ-COPY UPDATE (RCU)
- M:    "Paul E. McKenney" <paulmck@linux.ibm.com>
+ M:    "Paul E. McKenney" <paulmck@kernel.org>
  M:    Josh Triplett <josh@joshtriplett.org>
  R:    Steven Rostedt <rostedt@goodmis.org>
  R:    Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
@@@ -13670,7 -13697,7 +13670,7 @@@ F:   include/linux/reset-controller.
  RESTARTABLE SEQUENCES SUPPORT
  M:    Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
  M:    Peter Zijlstra <peterz@infradead.org>
- M:    "Paul E. McKenney" <paulmck@linux.ibm.com>
+ M:    "Paul E. McKenney" <paulmck@kernel.org>
  M:    Boqun Feng <boqun.feng@gmail.com>
  L:    linux-kernel@vger.kernel.org
  S:    Supported
@@@ -14101,8 -14128,6 +14101,8 @@@ M:   Kamil Konieczny <k.konieczny@partner
  L:    linux-crypto@vger.kernel.org
  L:    linux-samsung-soc@vger.kernel.org
  S:    Maintained
 +F:    Documentation/devicetree/bindings/crypto/samsung-slimsss.txt
 +F:    Documentation/devicetree/bindings/crypto/samsung-sss.txt
  F:    drivers/crypto/s5p-sss.c
  
  SAMSUNG S5P/EXYNOS4 SOC SERIES CAMERA SUBSYSTEM DRIVERS
@@@ -14123,8 -14148,6 +14123,8 @@@ T:   git git://git.kernel.org/pub/scm/lin
  F:    drivers/clk/samsung/
  F:    include/dt-bindings/clock/exynos*.h
  F:    Documentation/devicetree/bindings/clock/exynos*.txt
 +F:    Documentation/devicetree/bindings/clock/samsung,s3c*
 +F:    Documentation/devicetree/bindings/clock/samsung,s5p*
  
  SAMSUNG SPI DRIVERS
  M:    Kukjin Kim <kgene@kernel.org>
@@@ -14455,7 -14478,6 +14455,7 @@@ F:   drivers/net/phy/phylink.
  F:    drivers/net/phy/sfp*
  F:    include/linux/phylink.h
  F:    include/linux/sfp.h
 +K:    phylink
  
  SGI GRU DRIVER
  M:    Dimitri Sivanich <sivanich@sgi.com>
@@@ -14710,7 -14732,7 +14710,7 @@@ F:   mm/sl?b
  
  SLEEPABLE READ-COPY UPDATE (SRCU)
  M:    Lai Jiangshan <jiangshanlai@gmail.com>
- M:    "Paul E. McKenney" <paulmck@linux.ibm.com>
+ M:    "Paul E. McKenney" <paulmck@kernel.org>
  M:    Josh Triplett <josh@joshtriplett.org>
  R:    Steven Rostedt <rostedt@goodmis.org>
  R:    Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
@@@ -14861,9 -14883,9 +14861,9 @@@ F:   include/linux/arm_sdei.
  F:    include/uapi/linux/arm_sdei.h
  
  SOFTWARE RAID (Multiple Disks) SUPPORT
 -M:    Shaohua Li <shli@kernel.org>
 +M:    Song Liu <song@kernel.org>
  L:    linux-raid@vger.kernel.org
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/shli/md.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/song/md.git
  S:    Supported
  F:    drivers/md/Makefile
  F:    drivers/md/Kconfig
@@@ -15545,7 -15567,6 +15545,7 @@@ F:   drivers/clk/clk-sc[mp]i.
  F:    drivers/cpufreq/sc[mp]i-cpufreq.c
  F:    drivers/firmware/arm_scpi.c
  F:    drivers/firmware/arm_scmi/
 +F:    drivers/reset/reset-scmi.c
  F:    include/linux/sc[mp]i_protocol.h
  
  SYSTEM RESET/SHUTDOWN DRIVERS
@@@ -15854,7 -15875,6 +15854,7 @@@ F:   drivers/firmware/ti_sci
  F:    include/linux/soc/ti/ti_sci_protocol.h
  F:    Documentation/devicetree/bindings/soc/ti/sci-pm-domain.txt
  F:    drivers/soc/ti/ti_sci_pm_domains.c
 +F:    include/dt-bindings/soc/ti,sci_pm_domain.h
  F:    Documentation/devicetree/bindings/reset/ti,sci-reset.txt
  F:    Documentation/devicetree/bindings/clock/ti,sci-clk.txt
  F:    drivers/clk/keystone/sci-clk.c
@@@ -16209,7 -16229,7 +16209,7 @@@ F:   drivers/platform/x86/topstar-laptop.
  
  TORTURE-TEST MODULES
  M:    Davidlohr Bueso <dave@stgolabs.net>
- M:    "Paul E. McKenney" <paulmck@linux.ibm.com>
+ M:    "Paul E. McKenney" <paulmck@kernel.org>
  M:    Josh Triplett <josh@joshtriplett.org>
  L:    linux-kernel@vger.kernel.org
  S:    Supported
@@@ -17235,7 -17255,6 +17235,7 @@@ F:   Documentation/power/regulator
  F:    drivers/regulator/
  F:    include/dt-bindings/regulator/
  F:    include/linux/regulator/
 +K:    regulator_get_optional
  
  VRF
  M:    David Ahern <dsa@cumulusnetworks.com>
@@@ -17672,7 -17691,8 +17672,7 @@@ F:   include/uapi/linux/dqblk_xfs.
  F:    include/uapi/linux/fsmap.h
  
  XILINX AXI ETHERNET DRIVER
 -M:    Anirudha Sarangi <anirudh@xilinx.com>
 -M:    John Linn <John.Linn@xilinx.com>
 +M:    Radhey Shyam Pandey <radhey.shyam.pandey@xilinx.com>
  S:    Maintained
  F:    drivers/net/ethernet/xilinx/xilinx_axienet*
  
diff --combined kernel/sched/core.c
index df9f1fe5689b04006907283f798b91959c0b9d51,0b22e55cebe8f012a92a6ba26338b545c1a5d0ed..7fa8e74ad2ab4003457d266df57373f41f0e0d2a
@@@ -3486,8 -3486,36 +3486,36 @@@ void scheduler_tick(void
  
  struct tick_work {
        int                     cpu;
+       atomic_t                state;
        struct delayed_work     work;
  };
+ /* Values for ->state, see diagram below. */
+ #define TICK_SCHED_REMOTE_OFFLINE     0
+ #define TICK_SCHED_REMOTE_OFFLINING   1
+ #define TICK_SCHED_REMOTE_RUNNING     2
+ /*
+  * State diagram for ->state:
+  *
+  *
+  *          TICK_SCHED_REMOTE_OFFLINE
+  *                    |   ^
+  *                    |   |
+  *                    |   | sched_tick_remote()
+  *                    |   |
+  *                    |   |
+  *                    +--TICK_SCHED_REMOTE_OFFLINING
+  *                    |   ^
+  *                    |   |
+  * sched_tick_start() |   | sched_tick_stop()
+  *                    |   |
+  *                    V   |
+  *          TICK_SCHED_REMOTE_RUNNING
+  *
+  *
+  * Other transitions get WARN_ON_ONCE(), except that sched_tick_remote()
+  * and sched_tick_start() are happy to leave the state in RUNNING.
+  */
  
  static struct tick_work __percpu *tick_work_cpu;
  
@@@ -3500,6 -3528,7 +3528,7 @@@ static void sched_tick_remote(struct wo
        struct task_struct *curr;
        struct rq_flags rf;
        u64 delta;
+       int os;
  
        /*
         * Handle the tick only if it appears the remote CPU is running in full
  
        rq_lock_irq(rq, &rf);
        curr = rq->curr;
-       if (is_idle_task(curr))
+       if (is_idle_task(curr) || cpu_is_offline(cpu))
                goto out_unlock;
  
        update_rq_clock(rq);
@@@ -3533,13 -3562,18 +3562,18 @@@ out_requeue
        /*
         * Run the remote tick once per second (1Hz). This arbitrary
         * frequency is large enough to avoid overload but short enough
-        * to keep scheduler internal stats reasonably up to date.
+        * to keep scheduler internal stats reasonably up to date.  But
+        * first update state to reflect hotplug activity if required.
         */
-       queue_delayed_work(system_unbound_wq, dwork, HZ);
+       os = atomic_fetch_add_unless(&twork->state, -1, TICK_SCHED_REMOTE_RUNNING);
+       WARN_ON_ONCE(os == TICK_SCHED_REMOTE_OFFLINE);
+       if (os == TICK_SCHED_REMOTE_RUNNING)
+               queue_delayed_work(system_unbound_wq, dwork, HZ);
  }
  
  static void sched_tick_start(int cpu)
  {
+       int os;
        struct tick_work *twork;
  
        if (housekeeping_cpu(cpu, HK_FLAG_TICK))
        WARN_ON_ONCE(!tick_work_cpu);
  
        twork = per_cpu_ptr(tick_work_cpu, cpu);
-       twork->cpu = cpu;
-       INIT_DELAYED_WORK(&twork->work, sched_tick_remote);
-       queue_delayed_work(system_unbound_wq, &twork->work, HZ);
+       os = atomic_xchg(&twork->state, TICK_SCHED_REMOTE_RUNNING);
+       WARN_ON_ONCE(os == TICK_SCHED_REMOTE_RUNNING);
+       if (os == TICK_SCHED_REMOTE_OFFLINE) {
+               twork->cpu = cpu;
+               INIT_DELAYED_WORK(&twork->work, sched_tick_remote);
+               queue_delayed_work(system_unbound_wq, &twork->work, HZ);
+       }
  }
  
  #ifdef CONFIG_HOTPLUG_CPU
  static void sched_tick_stop(int cpu)
  {
        struct tick_work *twork;
+       int os;
  
        if (housekeeping_cpu(cpu, HK_FLAG_TICK))
                return;
        WARN_ON_ONCE(!tick_work_cpu);
  
        twork = per_cpu_ptr(tick_work_cpu, cpu);
-       cancel_delayed_work_sync(&twork->work);
+       /* There cannot be competing actions, but don't rely on stop-machine. */
+       os = atomic_xchg(&twork->state, TICK_SCHED_REMOTE_OFFLINING);
+       WARN_ON_ONCE(os != TICK_SCHED_REMOTE_RUNNING);
+       /* Don't cancel, as this would mess up the state machine. */
  }
  #endif /* CONFIG_HOTPLUG_CPU */
  
@@@ -3572,7 -3614,6 +3614,6 @@@ int __init sched_tick_offload_init(void
  {
        tick_work_cpu = alloc_percpu(struct tick_work);
        BUG_ON(!tick_work_cpu);
        return 0;
  }
  
@@@ -3904,7 -3945,7 +3945,7 @@@ void __noreturn do_task_dead(void
  
  static inline void sched_submit_work(struct task_struct *tsk)
  {
 -      if (!tsk->state || tsk_is_pi_blocked(tsk))
 +      if (!tsk->state)
                return;
  
        /*
                preempt_enable_no_resched();
        }
  
 +      if (tsk_is_pi_blocked(tsk))
 +              return;
 +
        /*
         * If we are going to sleep and we have plugged IO queued,
         * make sure to submit it to avoid deadlocks.
@@@ -5105,40 -5143,37 +5146,40 @@@ out_unlock
        return retval;
  }
  
 -static int sched_read_attr(struct sched_attr __user *uattr,
 -                         struct sched_attr *attr,
 -                         unsigned int usize)
 +/*
 + * Copy the kernel size attribute structure (which might be larger
 + * than what user-space knows about) to user-space.
 + *
 + * Note that all cases are valid: user-space buffer can be larger or
 + * smaller than the kernel-space buffer. The usual case is that both
 + * have the same size.
 + */
 +static int
 +sched_attr_copy_to_user(struct sched_attr __user *uattr,
 +                      struct sched_attr *kattr,
 +                      unsigned int usize)
  {
 -      int ret;
 +      unsigned int ksize = sizeof(*kattr);
  
        if (!access_ok(uattr, usize))
                return -EFAULT;
  
        /*
 -       * If we're handed a smaller struct than we know of,
 -       * ensure all the unknown bits are 0 - i.e. old
 -       * user-space does not get uncomplete information.
 +       * sched_getattr() ABI forwards and backwards compatibility:
 +       *
 +       * If usize == ksize then we just copy everything to user-space and all is good.
 +       *
 +       * If usize < ksize then we only copy as much as user-space has space for,
 +       * this keeps ABI compatibility as well. We skip the rest.
 +       *
 +       * If usize > ksize then user-space is using a newer version of the ABI,
 +       * which part the kernel doesn't know about. Just ignore it - tooling can
 +       * detect the kernel's knowledge of attributes from the attr->size value
 +       * which is set to ksize in this case.
         */
 -      if (usize < sizeof(*attr)) {
 -              unsigned char *addr;
 -              unsigned char *end;
 -
 -              addr = (void *)attr + usize;
 -              end  = (void *)attr + sizeof(*attr);
 +      kattr->size = min(usize, ksize);
  
 -              for (; addr < end; addr++) {
 -                      if (*addr)
 -                              return -EFBIG;
 -              }
 -
 -              attr->size = usize;
 -      }
 -
 -      ret = copy_to_user(uattr, attr, attr->size);
 -      if (ret)
 +      if (copy_to_user(uattr, kattr, kattr->size))
                return -EFAULT;
  
        return 0;
   * sys_sched_getattr - similar to sched_getparam, but with sched_attr
   * @pid: the pid in question.
   * @uattr: structure containing the extended parameters.
 - * @size: sizeof(attr) for fwd/bwd comp.
 + * @usize: sizeof(attr) that user-space knows about, for forwards and backwards compatibility.
   * @flags: for future extension.
   */
  SYSCALL_DEFINE4(sched_getattr, pid_t, pid, struct sched_attr __user *, uattr,
 -              unsigned int, size, unsigned int, flags)
 +              unsigned int, usize, unsigned int, flags)
  {
 -      struct sched_attr attr = {
 -              .size = sizeof(struct sched_attr),
 -      };
 +      struct sched_attr kattr = { };
        struct task_struct *p;
        int retval;
  
 -      if (!uattr || pid < 0 || size > PAGE_SIZE ||
 -          size < SCHED_ATTR_SIZE_VER0 || flags)
 +      if (!uattr || pid < 0 || usize > PAGE_SIZE ||
 +          usize < SCHED_ATTR_SIZE_VER0 || flags)
                return -EINVAL;
  
        rcu_read_lock();
        if (retval)
                goto out_unlock;
  
 -      attr.sched_policy = p->policy;
 +      kattr.sched_policy = p->policy;
        if (p->sched_reset_on_fork)
 -              attr.sched_flags |= SCHED_FLAG_RESET_ON_FORK;
 +              kattr.sched_flags |= SCHED_FLAG_RESET_ON_FORK;
        if (task_has_dl_policy(p))
 -              __getparam_dl(p, &attr);
 +              __getparam_dl(p, &kattr);
        else if (task_has_rt_policy(p))
 -              attr.sched_priority = p->rt_priority;
 +              kattr.sched_priority = p->rt_priority;
        else
 -              attr.sched_nice = task_nice(p);
 +              kattr.sched_nice = task_nice(p);
  
  #ifdef CONFIG_UCLAMP_TASK
 -      attr.sched_util_min = p->uclamp_req[UCLAMP_MIN].value;
 -      attr.sched_util_max = p->uclamp_req[UCLAMP_MAX].value;
 +      kattr.sched_util_min = p->uclamp_req[UCLAMP_MIN].value;
 +      kattr.sched_util_max = p->uclamp_req[UCLAMP_MAX].value;
  #endif
  
        rcu_read_unlock();
  
 -      retval = sched_read_attr(uattr, &attr, size);
 -      return retval;
 +      return sched_attr_copy_to_user(uattr, &kattr, usize);
  
  out_unlock:
        rcu_read_unlock();
diff --combined kernel/trace/trace.c
index 563e80f9006a438442dcfb1736e846aca7959b63,642474b26ba7b19ee2c884b2f1cb7718a2c5ad99..947ba433865f410ca7a0c9b9b3533830c4203b72
@@@ -1567,9 -1567,9 +1567,9 @@@ update_max_tr(struct trace_array *tr, s
  
  /**
   * update_max_tr_single - only copy one trace over, and reset the rest
 - * @tr - tracer
 - * @tsk - task with the latency
 - * @cpu - the cpu of the buffer to copy.
 + * @tr: tracer
 + * @tsk: task with the latency
 + * @cpu: the cpu of the buffer to copy.
   *
   * Flip the trace of a single CPU buffer between the @tr and the max_tr.
   */
@@@ -1767,7 -1767,7 +1767,7 @@@ static void __init apply_trace_boot_opt
  
  /**
   * register_tracer - register a tracer with the ftrace system.
 - * @type - the plugin for the tracer
 + * @type: the plugin for the tracer
   *
   * Register a new plugin tracer.
   */
@@@ -2230,9 -2230,9 +2230,9 @@@ static bool tracing_record_taskinfo_ski
  /**
   * tracing_record_taskinfo - record the task info of a task
   *
 - * @task  - task to record
 - * @flags - TRACE_RECORD_CMDLINE for recording comm
 - *        - TRACE_RECORD_TGID for recording tgid
 + * @task task to record
 + * @flags: TRACE_RECORD_CMDLINE for recording comm
 + *         TRACE_RECORD_TGID for recording tgid
   */
  void tracing_record_taskinfo(struct task_struct *task, int flags)
  {
  /**
   * tracing_record_taskinfo_sched_switch - record task info for sched_switch
   *
 - * @prev - previous task during sched_switch
 - * @next - next task during sched_switch
 - * @flags - TRACE_RECORD_CMDLINE for recording comm
 - *          TRACE_RECORD_TGID for recording tgid
 + * @prev: previous task during sched_switch
 + * @next: next task during sched_switch
 + * @flags: TRACE_RECORD_CMDLINE for recording comm
 + *         TRACE_RECORD_TGID for recording tgid
   */
  void tracing_record_taskinfo_sched_switch(struct task_struct *prev,
                                          struct task_struct *next, int flags)
@@@ -2642,10 -2642,10 +2642,10 @@@ static void ftrace_exports(struct ring_
  
        preempt_disable_notrace();
  
-       export = rcu_dereference_raw_notrace(ftrace_exports_list);
+       export = rcu_dereference_raw_check(ftrace_exports_list);
        while (export) {
                trace_process_export(export, event);
-               export = rcu_dereference_raw_notrace(export->next);
+               export = rcu_dereference_raw_check(export->next);
        }
  
        preempt_enable_notrace();
@@@ -3072,9 -3072,7 +3072,9 @@@ static void trace_printk_start_stop_com
  
  /**
   * trace_vbprintk - write binary msg to tracing buffer
 - *
 + * @ip:    The address of the caller
 + * @fmt:   The string format to write to the buffer
 + * @args:  Arguments for @fmt
   */
  int trace_vbprintk(unsigned long ip, const char *fmt, va_list args)
  {