Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
authorLinus Torvalds <torvalds@linux-foundation.org>
Wed, 3 May 2017 02:09:35 +0000 (19:09 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 3 May 2017 02:09:35 +0000 (19:09 -0700)
Pull trivial tree updates from Jiri Kosina.

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial:
  tty: fix comment for __tty_alloc_driver()
  init/main: properly align the multi-line comment
  init/main: Fix double "the" in comment
  Fix dead URLs to ftp.kernel.org
  drivers: Clean up duplicated email address
  treewide: Fix typo in xml/driver-api/basics.xml
  tools/testing/selftests/powerpc: remove redundant CFLAGS in Makefile: "-Wall -O2 -Wall" -> "-O2 -Wall"
  selftests/timers: Spelling s/privledges/privileges/
  HID: picoLCD: Spelling s/REPORT_WRTIE_MEMORY/REPORT_WRITE_MEMORY/
  net: phy: dp83848: Fix Typo
  UBI: Fix typos
  Documentation: ftrace.txt: Correct nice value of 120 priority
  net: fec: Fix typo in error msg and comment
  treewide: Fix typos in printk

12 files changed:
1  2 
MAINTAINERS
drivers/block/Kconfig
drivers/net/ethernet/freescale/fec_main.c
drivers/net/wireless/realtek/rtlwifi/rtl8821ae/hw.c
drivers/pinctrl/pinctrl-amd.c
include/linux/sched.h
init/main.c
kernel/sched/fair.c
kernel/time/hrtimer.c
kernel/time/timer.c
tools/perf/builtin-probe.c
tools/testing/selftests/powerpc/Makefile

diff --combined MAINTAINERS
@@@ -896,19 -896,12 +896,19 @@@ F:      arch/arm64/boot/dts/apm
  APPLIED MICRO (APM) X-GENE SOC ETHERNET DRIVER
  M:    Iyappan Subramanian <isubramanian@apm.com>
  M:    Keyur Chudgar <kchudgar@apm.com>
 +M:    Quan Nguyen <qnguyen@apm.com>
  S:    Supported
  F:    drivers/net/ethernet/apm/xgene/
  F:    drivers/net/phy/mdio-xgene.c
  F:    Documentation/devicetree/bindings/net/apm-xgene-enet.txt
  F:    Documentation/devicetree/bindings/net/apm-xgene-mdio.txt
  
 +APPLIED MICRO (APM) X-GENE SOC ETHERNET (V2) DRIVER
 +M:    Iyappan Subramanian <isubramanian@apm.com>
 +M:    Keyur Chudgar <kchudgar@apm.com>
 +S:    Supported
 +F:    drivers/net/ethernet/apm/xgene-v2/
 +
  APPLIED MICRO (APM) X-GENE SOC PMU
  M:    Tai Nguyen <ttnguyen@apm.com>
  S:    Supported
@@@ -1095,8 -1088,6 +1095,8 @@@ L:      linux-arm-kernel@axis.co
  F:    arch/arm/mach-artpec
  F:    arch/arm/boot/dts/artpec6*
  F:    drivers/clk/axis
 +F:    drivers/pinctrl/pinctrl-artpec*
 +F:    Documentation/devicetree/bindings/pinctrl/axis,artpec6-pinctrl.txt
  
  ARM/ASPEED MACHINE SUPPORT
  M:    Joel Stanley <joel@jms.id.au>
@@@ -2336,6 -2327,21 +2336,6 @@@ S:     Maintaine
  F:    drivers/auxdisplay/
  F:    include/linux/cfag12864b.h
  
 -AVR32 ARCHITECTURE
 -M:    Haavard Skinnemoen <hskinnemoen@gmail.com>
 -M:    Hans-Christian Egtvedt <egtvedt@samfundet.no>
 -W:    http://www.atmel.com/products/AVR32/
 -W:    http://mirror.egtvedt.no/avr32linux.org/
 -W:    http://avrfreaks.net/
 -S:    Maintained
 -F:    arch/avr32/
 -
 -AVR32/AT32AP MACHINE SUPPORT
 -M:    Haavard Skinnemoen <hskinnemoen@gmail.com>
 -M:    Hans-Christian Egtvedt <egtvedt@samfundet.no>
 -S:    Maintained
 -F:    arch/avr32/mach-at32ap/
 -
  AX.25 NETWORK LAYER
  M:    Ralf Baechle <ralf@linux-mips.org>
  L:    linux-hams@vger.kernel.org
@@@ -2538,14 -2544,6 +2538,14 @@@ F:    block
  F:    kernel/trace/blktrace.c
  F:    lib/sbitmap.c
  
 +BFQ I/O SCHEDULER
 +M:    Paolo Valente <paolo.valente@linaro.org>
 +M:    Jens Axboe <axboe@kernel.dk>
 +L:    linux-block@vger.kernel.org
 +S:    Maintained
 +F:    block/bfq-*
 +F:    Documentation/block/bfq-iosched.txt
 +
  BLOCK2MTD DRIVER
  M:    Joern Engel <joern@lazybastard.org>
  L:    linux-mtd@lists.infradead.org
@@@ -2587,26 -2585,12 +2587,26 @@@ F:   include/uapi/linux/if_bonding.
  
  BPF (Safe dynamic programs and tools)
  M:    Alexei Starovoitov <ast@kernel.org>
 +M:    Daniel Borkmann <daniel@iogearbox.net>
  L:    netdev@vger.kernel.org
  L:    linux-kernel@vger.kernel.org
  S:    Supported
 +F:    arch/x86/net/bpf_jit*
 +F:    Documentation/networking/filter.txt
 +F:    include/linux/bpf*
 +F:    include/linux/filter.h
 +F:    include/uapi/linux/bpf*
 +F:    include/uapi/linux/filter.h
  F:    kernel/bpf/
 -F:    tools/testing/selftests/bpf/
 +F:    kernel/trace/bpf_trace.c
  F:    lib/test_bpf.c
 +F:    net/bpf/
 +F:    net/core/filter.c
 +F:    net/sched/act_bpf.c
 +F:    net/sched/cls_bpf.c
 +F:    samples/bpf/
 +F:    tools/net/bpf*
 +F:    tools/testing/selftests/bpf/
  
  BROADCOM B44 10/100 ETHERNET DRIVER
  M:    Michael Chan <michael.chan@broadcom.com>
@@@ -2953,15 -2937,6 +2953,15 @@@ W:    http://www.linux-c6x.org/wiki/index.
  S:    Maintained
  F:    arch/c6x/
  
 +CA8210 IEEE-802.15.4 RADIO DRIVER
 +M:    Harry Morris <h.morris@cascoda.com>
 +M:    linuxdev@cascoda.com
 +L:    linux-wpan@vger.kernel.org
 +W:    https://github.com/Cascoda/ca8210-linux.git
 +S:    Maintained
 +F:    drivers/net/ieee802154/ca8210.c
 +F:    Documentation/devicetree/bindings/net/ieee802154/ca8210.txt
 +
  CACHEFILES: FS-CACHE BACKEND FOR CACHING ON MOUNTED FILESYSTEMS
  M:    David Howells <dhowells@redhat.com>
  L:    linux-cachefs@redhat.com (moderated for non-subscribers)
@@@ -3066,14 -3041,6 +3066,14 @@@ S:    Supporte
  F:    drivers/i2c/busses/i2c-octeon*
  F:    drivers/i2c/busses/i2c-thunderx*
  
 +CAVIUM MMC DRIVER
 +M:    Jan Glauber <jglauber@cavium.com>
 +M:    David Daney <david.daney@cavium.com>
 +M:    Steven J. Hill <Steven.Hill@cavium.com>
 +W:    http://www.cavium.com
 +S:    Supported
 +F:    drivers/mmc/host/cavium*
 +
  CAVIUM LIQUIDIO NETWORK DRIVER
  M:     Derek Chickles <derek.chickles@caviumnetworks.com>
  M:     Satanand Burla <satananda.burla@caviumnetworks.com>
@@@ -3249,6 -3216,7 +3249,6 @@@ F:      drivers/platform/chrome
  
  CISCO VIC ETHERNET NIC DRIVER
  M:    Christian Benvenuti <benve@cisco.com>
 -M:    Sujith Sankar <ssujith@cisco.com>
  M:    Govindarajulu Varadarajan <_govind@gmx.com>
  M:    Neel Patel <neepatel@cisco.com>
  S:    Supported
@@@ -3482,7 -3450,6 +3482,7 @@@ T:      git git://git.kernel.org/pub/scm/lin
  T:    git git://git.linaro.org/people/vireshk/linux.git (For ARM Updates)
  B:    https://bugzilla.kernel.org
  F:    Documentation/cpu-freq/
 +F:    Documentation/devicetree/bindings/cpufreq/
  F:    drivers/cpufreq/
  F:    include/linux/cpufreq.h
  F:    tools/testing/selftests/cpufreq/
@@@ -4151,13 -4118,14 +4151,13 @@@ F:   drivers/block/drbd
  F:    lib/lru_cache.c
  F:    Documentation/blockdev/drbd/
  
 -DRIVER CORE, KOBJECTS, DEBUGFS, KERNFS AND SYSFS
 +DRIVER CORE, KOBJECTS, DEBUGFS AND SYSFS
  M:    Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git
  S:    Supported
  F:    Documentation/kobject.txt
  F:    drivers/base/
  F:    fs/debugfs/
 -F:    fs/kernfs/
  F:    fs/sysfs/
  F:    include/linux/debugfs.h
  F:    include/linux/kobj*
@@@ -4727,7 -4695,6 +4727,7 @@@ L:      linux-edac@vger.kernel.or
  L:    linux-mips@linux-mips.org
  S:    Supported
  F:    drivers/edac/octeon_edac*
 +F:    drivers/edac/thunderx_edac*
  
  EDAC-E752X
  M:    Mark Gross <mark.gross@intel.com>
@@@ -4809,12 -4776,6 +4809,12 @@@ L:    linux-edac@vger.kernel.or
  S:    Maintained
  F:    drivers/edac/mpc85xx_edac.[ch]
  
 +EDAC-PND2
 +M:    Tony Luck <tony.luck@intel.com>
 +L:    linux-edac@vger.kernel.org
 +S:    Maintained
 +F:    drivers/edac/pnd2_edac.[ch]
 +
  EDAC-PASEMI
  M:    Egor Martovetsky <egor@pasemi.com>
  L:    linux-edac@vger.kernel.org
@@@ -4962,7 -4923,6 +4962,7 @@@ F:      include/linux/netfilter_bridge
  F:    net/bridge/
  
  ETHERNET PHY LIBRARY
 +M:    Andrew Lunn <andrew@lunn.ch>
  M:    Florian Fainelli <f.fainelli@gmail.com>
  L:    netdev@vger.kernel.org
  S:    Maintained
@@@ -5441,23 -5401,6 +5441,23 @@@ F:    fs/fuse
  F:    include/uapi/linux/fuse.h
  F:    Documentation/filesystems/fuse.txt
  
 +FUTEX SUBSYSTEM
 +M:    Thomas Gleixner <tglx@linutronix.de>
 +M:    Ingo Molnar <mingo@redhat.com>
 +R:    Peter Zijlstra <peterz@infradead.org>
 +R:    Darren Hart <dvhart@infradead.org>
 +L:    linux-kernel@vger.kernel.org
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git locking/core
 +S:    Maintained
 +F:    kernel/futex.c
 +F:    kernel/futex_compat.c
 +F:    include/asm-generic/futex.h
 +F:    include/linux/futex.h
 +F:    include/uapi/linux/futex.h
 +F:    tools/testing/selftests/futex/
 +F:    tools/perf/bench/futex*
 +F:    Documentation/*futex*
 +
  FUTURE DOMAIN TMC-16x0 SCSI DRIVER (16-bit)
  M:    Rik Faith <faith@cs.unc.edu>
  L:    linux-scsi@vger.kernel.org
@@@ -6062,7 -6005,7 +6062,7 @@@ M:      Sebastian Reichel <sre@kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-hsi.git
  S:    Maintained
  F:    Documentation/ABI/testing/sysfs-bus-hsi
 -F:    Documentation/device-drivers/serial-interfaces.rst
 +F:    Documentation/driver-api/hsi.rst
  F:    drivers/hsi/
  F:    include/linux/hsi/
  F:    include/uapi/linux/hsi/
@@@ -6268,7 -6211,7 +6268,7 @@@ F:      drivers/crypto/nx/nx_csbcpb.
  F:    drivers/crypto/nx/nx_debugfs.h
  
  IBM Power 842 compression accelerator
 -M:    Dan Streetman <ddstreet@ieee.org>
 +M:    Haren Myneni <haren@us.ibm.com>
  S:    Supported
  F:    drivers/crypto/nx/Makefile
  F:    drivers/crypto/nx/Kconfig
@@@ -7141,9 -7084,9 +7141,9 @@@ S:      Maintaine
  F:    fs/autofs4/
  
  KERNEL BUILD + files below scripts/ (unless maintained elsewhere)
 +M:    Masahiro Yamada <yamada.masahiro@socionext.com>
  M:    Michal Marek <mmarek@suse.com>
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild.git for-next
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild.git rc-fixes
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild.git
  L:    linux-kbuild@vger.kernel.org
  S:    Maintained
  F:    Documentation/kbuild/
@@@ -7227,7 -7170,6 +7227,7 @@@ S:      Supporte
  F:    Documentation/s390/kvm.txt
  F:    arch/s390/include/asm/kvm*
  F:    arch/s390/kvm/
 +F:    arch/s390/mm/gmap.c
  
  KERNEL VIRTUAL MACHINE (KVM) FOR ARM
  M:    Christoffer Dall <christoffer.dall@linaro.org>
@@@ -7261,14 -7203,6 +7261,14 @@@ F:    arch/mips/include/uapi/asm/kvm
  F:    arch/mips/include/asm/kvm*
  F:    arch/mips/kvm/
  
 +KERNFS
 +M:    Greg Kroah-Hartman <gregkh@linuxfoundation.org>
 +M:    Tejun Heo <tj@kernel.org>
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git
 +S:    Supported
 +F:    include/linux/kernfs.h
 +F:    fs/kernfs/
 +
  KEXEC
  M:    Eric Biederman <ebiederm@xmission.com>
  W:    http://kernel.org/pub/linux/utils/kernel/kexec/
@@@ -7840,6 -7774,13 +7840,6 @@@ F:     include/net/mac80211.
  F:    net/mac80211/
  F:    drivers/net/wireless/mac80211_hwsim.[ch]
  
 -MACVLAN DRIVER
 -M:    Patrick McHardy <kaber@trash.net>
 -L:    netdev@vger.kernel.org
 -S:    Maintained
 -F:    drivers/net/macvlan.c
 -F:    include/linux/if_macvlan.h
 -
  MAILBOX API
  M:    Jassi Brar <jassisinghbrar@gmail.com>
  L:    linux-kernel@vger.kernel.org
@@@ -7910,10 -7851,8 +7910,10 @@@ S:    Maintaine
  F:    drivers/net/ethernet/marvell/mvneta.*
  
  MARVELL MWIFIEX WIRELESS DRIVER
 -M:    Amitkumar Karwar <akarwar@marvell.com>
 +M:    Amitkumar Karwar <amitkarwar@gmail.com>
  M:    Nishant Sarmukadam <nishants@marvell.com>
 +M:    Ganapathi Bhat <gbhat@marvell.com>
 +M:    Xinming Hu <huxm@marvell.com>
  L:    linux-wireless@vger.kernel.org
  S:    Maintained
  F:    drivers/net/wireless/marvell/mwifiex/
@@@ -7929,13 -7868,6 +7929,13 @@@ M:    Nicolas Pitre <nico@fluxnic.net
  S:    Odd Fixes
  F:    drivers/mmc/host/mvsdio.*
  
 +MARVELL XENON MMC/SD/SDIO HOST CONTROLLER DRIVER
 +M:    Hu Ziji <huziji@marvell.com>
 +L:    linux-mmc@vger.kernel.org
 +S:    Supported
 +F:    drivers/mmc/host/sdhci-xenon*
 +F:    Documentation/devicetree/bindings/mmc/marvell,xenon-sdhci.txt
 +
  MATROX FRAMEBUFFER DRIVER
  L:    linux-fbdev@vger.kernel.org
  S:    Orphan
@@@ -8821,7 -8753,6 +8821,7 @@@ W:      http://www.linuxfoundation.org/en/Ne
  Q:    http://patchwork.ozlabs.org/project/netdev/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/davem/net.git
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git
 +B:    mailto:netdev@vger.kernel.org
  S:    Maintained
  F:    net/
  F:    include/net/
@@@ -8862,12 -8793,12 +8862,12 @@@ F:   net/core/flow.
  F:    net/xfrm/
  F:    net/key/
  F:    net/ipv4/xfrm*
 -F:    net/ipv4/esp4.c
 +F:    net/ipv4/esp4*
  F:    net/ipv4/ah4.c
  F:    net/ipv4/ipcomp.c
  F:    net/ipv4/ip_vti.c
  F:    net/ipv6/xfrm*
 -F:    net/ipv6/esp6.c
 +F:    net/ipv6/esp6*
  F:    net/ipv6/ah6.c
  F:    net/ipv6/ipcomp6.c
  F:    net/ipv6/ip6_vti.c
@@@ -8921,6 -8852,8 +8921,6 @@@ S:      Supporte
  F:    drivers/net/ethernet/qlogic/netxen/
  
  NFC SUBSYSTEM
 -M:    Lauro Ramos Venancio <lauro.venancio@openbossa.org>
 -M:    Aloisio Almeida Jr <aloisio.almeida@openbossa.org>
  M:    Samuel Ortiz <sameo@linux.intel.com>
  L:    linux-wireless@vger.kernel.org
  L:    linux-nfc@lists.01.org (subscribers-only)
@@@ -9975,8 -9908,6 +9975,8 @@@ M:      Krzysztof Kozlowski <krzk@kernel.org
  M:    Sylwester Nawrocki <s.nawrocki@samsung.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  L:    linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
 +Q:    https://patchwork.kernel.org/project/linux-samsung-soc/list/
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/pinctrl/samsung.git
  S:    Maintained
  F:    drivers/pinctrl/samsung/
  F:    include/dt-bindings/pinctrl/samsung.h
@@@ -10143,7 -10074,7 +10143,7 @@@ W:   http://sourceforge.net/projects/acce
  PREEMPTIBLE KERNEL
  M:    Robert Love <rml@tech9.net>
  L:    kpreempt-tech@lists.sourceforge.net
- W:    ftp://ftp.kernel.org/pub/linux/kernel/people/rml/preempt-kernel
+ W:    https://www.kernel.org/pub/linux/kernel/people/rml/preempt-kernel
  S:    Supported
  F:    Documentation/preempt-locking.txt
  F:    include/linux/preempt.h
@@@ -10883,7 -10814,6 +10883,7 @@@ F:   drivers/s390/block/dasd
  F:    block/partitions/ibm.c
  
  S390 NETWORK DRIVERS
 +M:    Julian Wiedmann <jwi@linux.vnet.ibm.com>
  M:    Ursula Braun <ubraun@linux.vnet.ibm.com>
  L:    linux-s390@vger.kernel.org
  W:    http://www.ibm.com/developerworks/linux/linux390/
@@@ -10914,7 -10844,6 +10914,7 @@@ S:   Supporte
  F:    drivers/s390/scsi/zfcp_*
  
  S390 IUCV NETWORK LAYER
 +M:    Julian Wiedmann <jwi@linux.vnet.ibm.com>
  M:    Ursula Braun <ubraun@linux.vnet.ibm.com>
  L:    linux-s390@vger.kernel.org
  W:    http://www.ibm.com/developerworks/linux/linux390/
@@@ -10930,16 -10859,6 +10930,16 @@@ W: http://www.ibm.com/developerworks/li
  S:    Supported
  F:    drivers/iommu/s390-iommu.c
  
 +S390 VFIO-CCW DRIVER
 +M:    Cornelia Huck <cornelia.huck@de.ibm.com>
 +M:    Dong Jia Shi <bjsdjshi@linux.vnet.ibm.com>
 +L:    linux-s390@vger.kernel.org
 +L:    kvm@vger.kernel.org
 +S:    Supported
 +F:    drivers/s390/cio/vfio_ccw*
 +F:    Documentation/s390/vfio-ccw.txt
 +F:    include/uapi/linux/vfio_ccw.h
 +
  S3C24XX SD/MMC Driver
  M:    Ben Dooks <ben-linux@fluff.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@@ -10987,14 -10906,6 +10987,14 @@@ L: alsa-devel@alsa-project.org (moderat
  S:    Supported
  F:    sound/soc/samsung/
  
 +SAMSUNG EXYNOS PSEUDO RANDOM NUMBER GENERATOR (RNG) DRIVER
 +M:    Krzysztof Kozlowski <krzk@kernel.org>
 +L:    linux-crypto@vger.kernel.org
 +L:    linux-samsung-soc@vger.kernel.org
 +S:    Maintained
 +F:    drivers/crypto/exynos-rng.c
 +F:    Documentation/devicetree/bindings/rng/samsung,exynos-rng4.txt
 +
  SAMSUNG FRAMEBUFFER DRIVER
  M:    Jingoo Han <jingoohan1@gmail.com>
  L:    linux-fbdev@vger.kernel.org
@@@ -11019,14 -10930,6 +11019,14 @@@ F: Documentation/devicetree/bindings/re
  F:    Documentation/devicetree/bindings/regulator/samsung,s5m*.txt
  F:    Documentation/devicetree/bindings/clock/samsung,s2mps11.txt
  
 +SAMSUNG S5P Security SubSystem (SSS) DRIVER
 +M:    Krzysztof Kozlowski <krzk@kernel.org>
 +M:    Vladimir Zapolskiy <vz@mleia.com>
 +L:    linux-crypto@vger.kernel.org
 +L:    linux-samsung-soc@vger.kernel.org
 +S:    Maintained
 +F:    drivers/crypto/s5p-sss.c
 +
  SAMSUNG S5P/EXYNOS4 SOC SERIES CAMERA SUBSYSTEM DRIVERS
  M:    Kyungmin Park <kyungmin.park@samsung.com>
  M:    Sylwester Nawrocki <s.nawrocki@samsung.com>
@@@ -11158,12 -11061,6 +11158,12 @@@ F: include/linux/dma/dw.
  F:    include/linux/platform_data/dma-dw.h
  F:    drivers/dma/dw/
  
 +SYNOPSYS DESIGNWARE ENTERPRISE ETHERNET DRIVER
 +M:    Jie Deng <jiedeng@synopsys.com>
 +L:    netdev@vger.kernel.org
 +S:    Supported
 +F:    drivers/net/ethernet/synopsys/
 +
  SYNOPSYS DESIGNWARE I2C DRIVER
  M:    Jarkko Nikula <jarkko.nikula@linux.intel.com>
  R:    Andy Shevchenko <andriy.shevchenko@linux.intel.com>
@@@ -11202,7 -11099,6 +11202,7 @@@ F:   drivers/power/supply/bq27xxx_battery
  TIMEKEEPING, CLOCKSOURCE CORE, NTP, ALARMTIMER
  M:    John Stultz <john.stultz@linaro.org>
  M:    Thomas Gleixner <tglx@linutronix.de>
 +R:    Stephen Boyd <sboyd@codeaurora.org>
  L:    linux-kernel@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/core
  S:    Supported
@@@ -12268,19 -12164,12 +12268,19 @@@ F:        Documentation/accounting/taskstats
  F:    include/linux/taskstats*
  F:    kernel/taskstats.c
  
 -TC CLASSIFIER
 +TC subsystem
  M:    Jamal Hadi Salim <jhs@mojatatu.com>
 +M:    Cong Wang <xiyou.wangcong@gmail.com>
 +M:    Jiri Pirko <jiri@resnulli.us>
  L:    netdev@vger.kernel.org
  S:    Maintained
  F:    include/net/pkt_cls.h
 +F:    include/net/pkt_sched.h
 +F:    include/net/tc_act/
  F:    include/uapi/linux/pkt_cls.h
 +F:    include/uapi/linux/pkt_sched.h
 +F:    include/uapi/linux/tc_act/
 +F:    include/uapi/linux/tc_ematch/
  F:    net/sched/
  
  TCP LOW PRIORITY MODULE
@@@ -12565,6 -12454,7 +12565,6 @@@ F:   drivers/clk/ti
  F:    include/linux/clk/ti.h
  
  TI ETHERNET SWITCH DRIVER (CPSW)
 -M:    Mugunthan V N <mugunthanvnm@ti.com>
  R:    Grygorii Strashko <grygorii.strashko@ti.com>
  L:    linux-omap@vger.kernel.org
  L:    netdev@vger.kernel.org
@@@ -13376,11 -13266,8 +13376,11 @@@ L: netdev@vger.kernel.or
  S:    Maintained
  F:    include/linux/virtio_vsock.h
  F:    include/uapi/linux/virtio_vsock.h
 +F:    include/uapi/linux/vsockmon.h
 +F:    net/vmw_vsock/af_vsock_tap.c
  F:    net/vmw_vsock/virtio_transport_common.c
  F:    net/vmw_vsock/virtio_transport.c
 +F:    drivers/net/vsockmon.c
  F:    drivers/vhost/vsock.c
  F:    drivers/vhost/vsock.h
  
@@@ -13408,7 -13295,7 +13408,7 @@@ F:   drivers/virtio
  F:    tools/virtio/
  F:    drivers/net/virtio_net.c
  F:    drivers/block/virtio_blk.c
 -F:    include/linux/virtio_*.h
 +F:    include/linux/virtio*.h
  F:    include/uapi/linux/virtio_*.h
  F:    drivers/crypto/virtio/
  
@@@ -13496,6 -13383,14 +13496,6 @@@ W:  https://linuxtv.or
  S:    Maintained
  F:    drivers/media/platform/vivid/*
  
 -VLAN (802.1Q)
 -M:    Patrick McHardy <kaber@trash.net>
 -L:    netdev@vger.kernel.org
 -S:    Maintained
 -F:    drivers/net/macvlan.c
 -F:    include/linux/if_*vlan.h
 -F:    net/8021q/
 -
  VLYNQ BUS
  M:    Florian Fainelli <f.fainelli@gmail.com>
  L:    openwrt-devel@lists.openwrt.org (subscribers-only)
diff --combined drivers/block/Kconfig
@@@ -219,7 -219,7 +219,7 @@@ config BLK_DEV_LOO
  
          To use the loop device, you need the losetup utility, found in the
          util-linux package, see
-         <ftp://ftp.kernel.org/pub/linux/utils/util-linux/>.
+         <https://www.kernel.org/pub/linux/utils/util-linux/>.
  
          The loop device driver can also be used to "hide" a file system in
          a disk partition, floppy, or regular file, either using encryption
@@@ -312,6 -312,22 +312,6 @@@ config BLK_DEV_SK
  
        Use device /dev/skd$N amd /dev/skd$Np$M.
  
 -config BLK_DEV_OSD
 -      tristate "OSD object-as-blkdev support"
 -      depends on SCSI_OSD_ULD
 -      ---help---
 -        Saying Y or M here will allow the exporting of a single SCSI
 -        OSD (object-based storage) object as a Linux block device.
 -
 -        For example, if you create a 2G object on an OSD device,
 -        you can then use this module to present that 2G object as
 -        a Linux block device.
 -
 -        To compile this driver as a module, choose M here: the
 -        module will be called osdblk.
 -
 -        If unsure, say N.
 -
  config BLK_DEV_SX8
        tristate "Promise SATA SX8 support"
        depends on PCI
@@@ -418,6 -434,23 +418,6 @@@ config ATA_OVER_ET
        This driver provides Support for ATA over Ethernet block
        devices like the Coraid EtherDrive (R) Storage Blade.
  
 -config MG_DISK
 -      tristate "mGine mflash, gflash support"
 -      depends on ARM && GPIOLIB
 -      help
 -        mGine mFlash(gFlash) block device driver
 -
 -config MG_DISK_RES
 -      int "Size of reserved area before MBR"
 -      depends on MG_DISK
 -      default 0
 -      help
 -        Define size of reserved area that usually used for boot. Unit is KB.
 -        All of the block device operation will be taken this value as start
 -        offset
 -        Examples:
 -                      1024 => 1 MB
 -
  config SUNVDC
        tristate "Sun Virtual Disk Client support"
        depends on SUN_LDOMS
@@@ -479,7 -512,19 +479,7 @@@ config VIRTIO_BLK_SCS
          Enable support for SCSI passthrough (e.g. the SG_IO ioctl) on
          virtio-blk devices.  This is only supported for the legacy
          virtio protocol and not enabled by default by any hypervisor.
 -        Your probably want to virtio-scsi instead.
 -
 -config BLK_DEV_HD
 -      bool "Very old hard disk (MFM/RLL/IDE) driver"
 -      depends on HAVE_IDE
 -      depends on !ARM || ARCH_RPC || BROKEN
 -      help
 -        This is a very old hard disk driver that lacks the enhanced
 -        functionality of the newer ones.
 -
 -        It is required for systems with ancient MFM/RLL/ESDI drives.
 -
 -        If unsure, say N.
 +        You probably want to use virtio-scsi instead.
  
  config BLK_DEV_RBD
        tristate "Rados block device (RBD)"
@@@ -117,9 -117,8 +117,9 @@@ static struct platform_device_id fec_de
                .name = "imx6ul-fec",
                .driver_data = FEC_QUIRK_ENET_MAC | FEC_QUIRK_HAS_GBIT |
                                FEC_QUIRK_HAS_BUFDESC_EX | FEC_QUIRK_HAS_CSUM |
 -                              FEC_QUIRK_HAS_VLAN | FEC_QUIRK_BUG_CAPTURE |
 -                              FEC_QUIRK_HAS_RACC | FEC_QUIRK_HAS_COALESCE,
 +                              FEC_QUIRK_HAS_VLAN | FEC_QUIRK_ERR007885 |
 +                              FEC_QUIRK_BUG_CAPTURE | FEC_QUIRK_HAS_RACC |
 +                              FEC_QUIRK_HAS_COALESCE,
        }, {
                /* sentinel */
        }
@@@ -236,14 -235,14 +236,14 @@@ static struct bufdesc *fec_enet_get_nex
                                             struct bufdesc_prop *bd)
  {
        return (bdp >= bd->last) ? bd->base
 -                      : (struct bufdesc *)(((unsigned)bdp) + bd->dsize);
 +                      : (struct bufdesc *)(((void *)bdp) + bd->dsize);
  }
  
  static struct bufdesc *fec_enet_get_prevdesc(struct bufdesc *bdp,
                                             struct bufdesc_prop *bd)
  {
        return (bdp <= bd->base) ? bd->last
 -                      : (struct bufdesc *)(((unsigned)bdp) - bd->dsize);
 +                      : (struct bufdesc *)(((void *)bdp) - bd->dsize);
  }
  
  static int fec_enet_get_bd_index(struct bufdesc *bdp,
@@@ -1267,7 -1266,7 +1267,7 @@@ skb_done
                }
        }
  
 -      /* ERR006538: Keep the transmitter going */
 +      /* ERR006358: Keep the transmitter going */
        if (bdp != txq->bd.cur &&
            readl(txq->bd.reg_desc_active) == 0)
                writel(0, txq->bd.reg_desc_active);
@@@ -2002,7 -2001,7 +2002,7 @@@ static int fec_enet_mii_init(struct pla
                mii_speed--;
        if (mii_speed > 63) {
                dev_err(&pdev->dev,
-                       "fec clock (%lu) to fast to get right mii speed\n",
+                       "fec clock (%lu) too fast to get right mii speed\n",
                        clk_get_rate(fep->clk_ipg));
                err = -EINVAL;
                goto err_out;
@@@ -2652,7 -2651,7 +2652,7 @@@ static void fec_enet_free_queue(struct 
        for (i = 0; i < fep->num_tx_queues; i++)
                if (fep->tx_queue[i] && fep->tx_queue[i]->tso_hdrs) {
                        txq = fep->tx_queue[i];
 -                      dma_free_coherent(NULL,
 +                      dma_free_coherent(&fep->pdev->dev,
                                          txq->bd.ring_size * TSO_HEADER_SIZE,
                                          txq->tso_hdrs,
                                          txq->tso_hdrs_dma);
@@@ -2686,7 -2685,7 +2686,7 @@@ static int fec_enet_alloc_queue(struct 
                txq->tx_wake_threshold =
                        (txq->bd.ring_size - txq->tx_stop_threshold) / 2;
  
 -              txq->tso_hdrs = dma_alloc_coherent(NULL,
 +              txq->tso_hdrs = dma_alloc_coherent(&fep->pdev->dev,
                                        txq->bd.ring_size * TSO_HEADER_SIZE,
                                        &txq->tso_hdrs_dma,
                                        GFP_KERNEL);
@@@ -2948,7 -2947,7 +2948,7 @@@ static void set_multicast_list(struct n
                }
  
                /* only upper 6 bits (FEC_HASH_BITS) are used
-                * which point to specific bit in he hash registers
+                * which point to specific bit in the hash registers
                 */
                hash = (crc >> (32 - FEC_HASH_BITS)) & 0x3f;
  
@@@ -3188,7 -3187,7 +3188,7 @@@ static int fec_enet_init(struct net_dev
  }
  
  #ifdef CONFIG_OF
 -static void fec_reset_phy(struct platform_device *pdev)
 +static int fec_reset_phy(struct platform_device *pdev)
  {
        int err, phy_reset;
        bool active_high = false;
        struct device_node *np = pdev->dev.of_node;
  
        if (!np)
 -              return;
 +              return 0;
  
 -      of_property_read_u32(np, "phy-reset-duration", &msec);
 +      err = of_property_read_u32(np, "phy-reset-duration", &msec);
        /* A sane reset duration should not be longer than 1s */
 -      if (msec > 1000)
 +      if (!err && msec > 1000)
                msec = 1;
  
        phy_reset = of_get_named_gpio(np, "phy-reset-gpios", 0);
 -      if (!gpio_is_valid(phy_reset))
 -              return;
 +      if (phy_reset == -EPROBE_DEFER)
 +              return phy_reset;
 +      else if (!gpio_is_valid(phy_reset))
 +              return 0;
  
        active_high = of_property_read_bool(np, "phy-reset-active-high");
  
                        "phy-reset");
        if (err) {
                dev_err(&pdev->dev, "failed to get phy-reset-gpios: %d\n", err);
 -              return;
 +              return err;
        }
  
        if (msec > 20)
                usleep_range(msec * 1000, msec * 1000 + 1000);
  
        gpio_set_value_cansleep(phy_reset, !active_high);
 +
 +      return 0;
  }
  #else /* CONFIG_OF */
 -static void fec_reset_phy(struct platform_device *pdev)
 +static int fec_reset_phy(struct platform_device *pdev)
  {
        /*
         * In case of platform probe, the reset has been done
         * by machine code.
         */
 +      return 0;
  }
  #endif /* CONFIG_OF */
  
@@@ -3406,7 -3400,6 +3406,7 @@@ fec_probe(struct platform_device *pdev
                if (ret) {
                        dev_err(&pdev->dev,
                                "Failed to enable phy regulator: %d\n", ret);
 +                      clk_disable_unprepare(fep->clk_ipg);
                        goto failed_regulator;
                }
        } else {
        pm_runtime_set_active(&pdev->dev);
        pm_runtime_enable(&pdev->dev);
  
 -      fec_reset_phy(pdev);
 +      ret = fec_reset_phy(pdev);
 +      if (ret)
 +              goto failed_reset;
  
        if (fep->bufdesc_ex)
                fec_ptp_init(pdev);
@@@ -3482,10 -3473,8 +3482,10 @@@ failed_init
        fec_ptp_stop(pdev);
        if (fep->reg_phy)
                regulator_disable(fep->reg_phy);
 +failed_reset:
 +      pm_runtime_put(&pdev->dev);
 +      pm_runtime_disable(&pdev->dev);
  failed_regulator:
 -      clk_disable_unprepare(fep->clk_ipg);
  failed_clk_ipg:
        fec_enet_clk_enable(ndev, false);
  failed_clk:
@@@ -842,8 -842,12 +842,8 @@@ static bool _rtl8821ae_llt_table_init(s
        bool status;
  
        maxpage = 255;
 -      txpktbuf_bndy = 0xF8;
 -      rqpn = 0x80e70808;
 -      if (rtlpriv->rtlhal.hw_type == HARDWARE_TYPE_RTL8812AE) {
 -              txpktbuf_bndy = 0xFA;
 -              rqpn = 0x80e90808;
 -      }
 +      txpktbuf_bndy = 0xF7;
 +      rqpn = 0x80e60808;
  
        rtl_write_byte(rtlpriv, REG_TRXFF_BNDY, txpktbuf_bndy);
        rtl_write_word(rtlpriv, REG_TRXFF_BNDY + 2, MAX_RX_DMA_BUFFER_SIZE - 1);
@@@ -2111,7 -2115,7 +2111,7 @@@ static enum version_8821ae _rtl8821ae_r
                break;
        default:
                RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD,
-                        "Chip Version ID: Unknow (0x%X)\n", version);
+                        "Chip Version ID: Unknown (0x%X)\n", version);
                break;
        }
  
@@@ -41,11 -41,11 +41,11 @@@ static int amd_gpio_direction_input(str
        u32 pin_reg;
        struct amd_gpio *gpio_dev = gpiochip_get_data(gc);
  
 -      spin_lock_irqsave(&gpio_dev->lock, flags);
 +      raw_spin_lock_irqsave(&gpio_dev->lock, flags);
        pin_reg = readl(gpio_dev->base + offset * 4);
        pin_reg &= ~BIT(OUTPUT_ENABLE_OFF);
        writel(pin_reg, gpio_dev->base + offset * 4);
 -      spin_unlock_irqrestore(&gpio_dev->lock, flags);
 +      raw_spin_unlock_irqrestore(&gpio_dev->lock, flags);
  
        return 0;
  }
@@@ -57,7 -57,7 +57,7 @@@ static int amd_gpio_direction_output(st
        unsigned long flags;
        struct amd_gpio *gpio_dev = gpiochip_get_data(gc);
  
 -      spin_lock_irqsave(&gpio_dev->lock, flags);
 +      raw_spin_lock_irqsave(&gpio_dev->lock, flags);
        pin_reg = readl(gpio_dev->base + offset * 4);
        pin_reg |= BIT(OUTPUT_ENABLE_OFF);
        if (value)
@@@ -65,7 -65,7 +65,7 @@@
        else
                pin_reg &= ~BIT(OUTPUT_VALUE_OFF);
        writel(pin_reg, gpio_dev->base + offset * 4);
 -      spin_unlock_irqrestore(&gpio_dev->lock, flags);
 +      raw_spin_unlock_irqrestore(&gpio_dev->lock, flags);
  
        return 0;
  }
@@@ -76,9 -76,9 +76,9 @@@ static int amd_gpio_get_value(struct gp
        unsigned long flags;
        struct amd_gpio *gpio_dev = gpiochip_get_data(gc);
  
 -      spin_lock_irqsave(&gpio_dev->lock, flags);
 +      raw_spin_lock_irqsave(&gpio_dev->lock, flags);
        pin_reg = readl(gpio_dev->base + offset * 4);
 -      spin_unlock_irqrestore(&gpio_dev->lock, flags);
 +      raw_spin_unlock_irqrestore(&gpio_dev->lock, flags);
  
        return !!(pin_reg & BIT(PIN_STS_OFF));
  }
@@@ -89,14 -89,14 +89,14 @@@ static void amd_gpio_set_value(struct g
        unsigned long flags;
        struct amd_gpio *gpio_dev = gpiochip_get_data(gc);
  
 -      spin_lock_irqsave(&gpio_dev->lock, flags);
 +      raw_spin_lock_irqsave(&gpio_dev->lock, flags);
        pin_reg = readl(gpio_dev->base + offset * 4);
        if (value)
                pin_reg |= BIT(OUTPUT_VALUE_OFF);
        else
                pin_reg &= ~BIT(OUTPUT_VALUE_OFF);
        writel(pin_reg, gpio_dev->base + offset * 4);
 -      spin_unlock_irqrestore(&gpio_dev->lock, flags);
 +      raw_spin_unlock_irqrestore(&gpio_dev->lock, flags);
  }
  
  static int amd_gpio_set_debounce(struct gpio_chip *gc, unsigned offset,
        unsigned long flags;
        struct amd_gpio *gpio_dev = gpiochip_get_data(gc);
  
 -      spin_lock_irqsave(&gpio_dev->lock, flags);
 +      raw_spin_lock_irqsave(&gpio_dev->lock, flags);
        pin_reg = readl(gpio_dev->base + offset * 4);
  
        if (debounce) {
                pin_reg &= ~DB_CNTRl_MASK;
        }
        writel(pin_reg, gpio_dev->base + offset * 4);
 -      spin_unlock_irqrestore(&gpio_dev->lock, flags);
 +      raw_spin_unlock_irqrestore(&gpio_dev->lock, flags);
  
        return ret;
  }
@@@ -224,9 -224,9 +224,9 @@@ static void amd_gpio_dbg_show(struct se
                }
                for (; i < pin_num; i++) {
                        seq_printf(s, "pin%d\t", i);
 -                      spin_lock_irqsave(&gpio_dev->lock, flags);
 +                      raw_spin_lock_irqsave(&gpio_dev->lock, flags);
                        pin_reg = readl(gpio_dev->base + i * 4);
 -                      spin_unlock_irqrestore(&gpio_dev->lock, flags);
 +                      raw_spin_unlock_irqrestore(&gpio_dev->lock, flags);
  
                        if (pin_reg & BIT(INTERRUPT_ENABLE_OFF)) {
                                interrupt_enable = "interrupt is enabled|";
                                         pin_reg & BIT(ACTIVE_LEVEL_OFF + 1))
                                        active_level = "Active on both|";
                                else
-                                       active_level = "Unknow Active level|";
+                                       active_level = "Unknown Active level|";
  
                                if (pin_reg & BIT(LEVEL_TRIG_OFF))
                                        level_trig = "Level trigger|";
@@@ -331,12 -331,12 +331,12 @@@ static void amd_gpio_irq_enable(struct 
        struct gpio_chip *gc = irq_data_get_irq_chip_data(d);
        struct amd_gpio *gpio_dev = gpiochip_get_data(gc);
  
 -      spin_lock_irqsave(&gpio_dev->lock, flags);
 +      raw_spin_lock_irqsave(&gpio_dev->lock, flags);
        pin_reg = readl(gpio_dev->base + (d->hwirq)*4);
        pin_reg |= BIT(INTERRUPT_ENABLE_OFF);
        pin_reg |= BIT(INTERRUPT_MASK_OFF);
        writel(pin_reg, gpio_dev->base + (d->hwirq)*4);
 -      spin_unlock_irqrestore(&gpio_dev->lock, flags);
 +      raw_spin_unlock_irqrestore(&gpio_dev->lock, flags);
  }
  
  static void amd_gpio_irq_disable(struct irq_data *d)
        struct gpio_chip *gc = irq_data_get_irq_chip_data(d);
        struct amd_gpio *gpio_dev = gpiochip_get_data(gc);
  
 -      spin_lock_irqsave(&gpio_dev->lock, flags);
 +      raw_spin_lock_irqsave(&gpio_dev->lock, flags);
        pin_reg = readl(gpio_dev->base + (d->hwirq)*4);
        pin_reg &= ~BIT(INTERRUPT_ENABLE_OFF);
        pin_reg &= ~BIT(INTERRUPT_MASK_OFF);
        writel(pin_reg, gpio_dev->base + (d->hwirq)*4);
 -      spin_unlock_irqrestore(&gpio_dev->lock, flags);
 +      raw_spin_unlock_irqrestore(&gpio_dev->lock, flags);
  }
  
  static void amd_gpio_irq_mask(struct irq_data *d)
        struct gpio_chip *gc = irq_data_get_irq_chip_data(d);
        struct amd_gpio *gpio_dev = gpiochip_get_data(gc);
  
 -      spin_lock_irqsave(&gpio_dev->lock, flags);
 +      raw_spin_lock_irqsave(&gpio_dev->lock, flags);
        pin_reg = readl(gpio_dev->base + (d->hwirq)*4);
        pin_reg &= ~BIT(INTERRUPT_MASK_OFF);
        writel(pin_reg, gpio_dev->base + (d->hwirq)*4);
 -      spin_unlock_irqrestore(&gpio_dev->lock, flags);
 +      raw_spin_unlock_irqrestore(&gpio_dev->lock, flags);
  }
  
  static void amd_gpio_irq_unmask(struct irq_data *d)
        struct gpio_chip *gc = irq_data_get_irq_chip_data(d);
        struct amd_gpio *gpio_dev = gpiochip_get_data(gc);
  
 -      spin_lock_irqsave(&gpio_dev->lock, flags);
 +      raw_spin_lock_irqsave(&gpio_dev->lock, flags);
        pin_reg = readl(gpio_dev->base + (d->hwirq)*4);
        pin_reg |= BIT(INTERRUPT_MASK_OFF);
        writel(pin_reg, gpio_dev->base + (d->hwirq)*4);
 -      spin_unlock_irqrestore(&gpio_dev->lock, flags);
 +      raw_spin_unlock_irqrestore(&gpio_dev->lock, flags);
  }
  
  static void amd_gpio_irq_eoi(struct irq_data *d)
        struct gpio_chip *gc = irq_data_get_irq_chip_data(d);
        struct amd_gpio *gpio_dev = gpiochip_get_data(gc);
  
 -      spin_lock_irqsave(&gpio_dev->lock, flags);
 +      raw_spin_lock_irqsave(&gpio_dev->lock, flags);
        reg = readl(gpio_dev->base + WAKE_INT_MASTER_REG);
        reg |= EOI_MASK;
        writel(reg, gpio_dev->base + WAKE_INT_MASTER_REG);
 -      spin_unlock_irqrestore(&gpio_dev->lock, flags);
 +      raw_spin_unlock_irqrestore(&gpio_dev->lock, flags);
  }
  
  static int amd_gpio_irq_set_type(struct irq_data *d, unsigned int type)
        struct gpio_chip *gc = irq_data_get_irq_chip_data(d);
        struct amd_gpio *gpio_dev = gpiochip_get_data(gc);
  
 -      spin_lock_irqsave(&gpio_dev->lock, flags);
 +      raw_spin_lock_irqsave(&gpio_dev->lock, flags);
        pin_reg = readl(gpio_dev->base + (d->hwirq)*4);
  
        /* Ignore the settings coming from the client and
  
        pin_reg |= CLR_INTR_STAT << INTERRUPT_STS_OFF;
        writel(pin_reg, gpio_dev->base + (d->hwirq)*4);
 -      spin_unlock_irqrestore(&gpio_dev->lock, flags);
 +      raw_spin_unlock_irqrestore(&gpio_dev->lock, flags);
  
        return ret;
  }
@@@ -511,14 -511,14 +511,14 @@@ static void amd_gpio_irq_handler(struc
  
        chained_irq_enter(chip, desc);
        /*enable GPIO interrupt again*/
 -      spin_lock_irqsave(&gpio_dev->lock, flags);
 +      raw_spin_lock_irqsave(&gpio_dev->lock, flags);
        reg = readl(gpio_dev->base + WAKE_INT_STATUS_REG1);
        reg64 = reg;
        reg64 = reg64 << 32;
  
        reg = readl(gpio_dev->base + WAKE_INT_STATUS_REG0);
        reg64 |= reg;
 -      spin_unlock_irqrestore(&gpio_dev->lock, flags);
 +      raw_spin_unlock_irqrestore(&gpio_dev->lock, flags);
  
        /*
         * first 46 bits indicates interrupt status.
        if (handled == 0)
                handle_bad_irq(desc);
  
 -      spin_lock_irqsave(&gpio_dev->lock, flags);
 +      raw_spin_lock_irqsave(&gpio_dev->lock, flags);
        reg = readl(gpio_dev->base + WAKE_INT_MASTER_REG);
        reg |= EOI_MASK;
        writel(reg, gpio_dev->base + WAKE_INT_MASTER_REG);
 -      spin_unlock_irqrestore(&gpio_dev->lock, flags);
 +      raw_spin_unlock_irqrestore(&gpio_dev->lock, flags);
  
        chained_irq_exit(chip, desc);
  }
@@@ -602,9 -602,9 +602,9 @@@ static int amd_pinconf_get(struct pinct
        struct amd_gpio *gpio_dev = pinctrl_dev_get_drvdata(pctldev);
        enum pin_config_param param = pinconf_to_config_param(*config);
  
 -      spin_lock_irqsave(&gpio_dev->lock, flags);
 +      raw_spin_lock_irqsave(&gpio_dev->lock, flags);
        pin_reg = readl(gpio_dev->base + pin*4);
 -      spin_unlock_irqrestore(&gpio_dev->lock, flags);
 +      raw_spin_unlock_irqrestore(&gpio_dev->lock, flags);
        switch (param) {
        case PIN_CONFIG_INPUT_DEBOUNCE:
                arg = pin_reg & DB_TMR_OUT_MASK;
@@@ -644,7 -644,7 +644,7 @@@ static int amd_pinconf_set(struct pinct
        enum pin_config_param param;
        struct amd_gpio *gpio_dev = pinctrl_dev_get_drvdata(pctldev);
  
 -      spin_lock_irqsave(&gpio_dev->lock, flags);
 +      raw_spin_lock_irqsave(&gpio_dev->lock, flags);
        for (i = 0; i < num_configs; i++) {
                param = pinconf_to_config_param(configs[i]);
                arg = pinconf_to_config_argument(configs[i]);
  
                writel(pin_reg, gpio_dev->base + pin*4);
        }
 -      spin_unlock_irqrestore(&gpio_dev->lock, flags);
 +      raw_spin_unlock_irqrestore(&gpio_dev->lock, flags);
  
        return ret;
  }
@@@ -751,7 -751,7 +751,7 @@@ static int amd_gpio_probe(struct platfo
        if (!gpio_dev)
                return -ENOMEM;
  
 -      spin_lock_init(&gpio_dev->lock);
 +      raw_spin_lock_init(&gpio_dev->lock);
  
        res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
        if (!res) {
diff --combined include/linux/sched.h
@@@ -186,7 -186,7 +186,7 @@@ extern long io_schedule_timeout(long ti
  extern void io_schedule(void);
  
  /**
-  * struct prev_cputime - snaphsot of system and user cputime
+  * struct prev_cputime - snapshot of system and user cputime
   * @utime: time spent in user mode
   * @stime: time spent in system mode
   * @lock: protects the above two fields
@@@ -604,10 -604,6 +604,10 @@@ struct task_struct 
  #ifdef CONFIG_COMPAT_BRK
        unsigned                        brk_randomized:1;
  #endif
 +#ifdef CONFIG_CGROUPS
 +      /* disallow userland-initiated cgroup migration */
 +      unsigned                        no_cgroup_migration:1;
 +#endif
  
        unsigned long                   atomic_flags; /* Flags requiring atomic access. */
  
        /* PI waiters blocked on a rt_mutex held by this task: */
        struct rb_root                  pi_waiters;
        struct rb_node                  *pi_waiters_leftmost;
 +      /* Updated under owner's pi_lock and rq lock */
 +      struct task_struct              *pi_top_task;
        /* Deadlock detection and priority inheritance handling: */
        struct rt_mutex_waiter          *pi_blocked_on;
  #endif
        /* A live task holds one reference: */
        atomic_t                        stack_refcount;
  #endif
 +#ifdef CONFIG_LIVEPATCH
 +      int patch_state;
 +#endif
        /* CPU-specific state of this task: */
        struct thread_struct            thread;
  
@@@ -1295,10 -1286,10 +1295,10 @@@ TASK_PFA_TEST(LMK_WAITING, lmk_waiting
  TASK_PFA_SET(LMK_WAITING, lmk_waiting)
  
  static inline void
 -tsk_restore_flags(struct task_struct *task, unsigned long orig_flags, unsigned long flags)
 +current_restore_flags(unsigned long orig_flags, unsigned long flags)
  {
 -      task->flags &= ~flags;
 -      task->flags |= orig_flags & flags;
 +      current->flags &= ~flags;
 +      current->flags |= orig_flags & flags;
  }
  
  extern int cpuset_cpumask_can_shrink(const struct cpumask *cur, const struct cpumask *trial);
diff --combined init/main.c
@@@ -495,7 -495,7 +495,7 @@@ asmlinkage __visible void __init start_
        debug_objects_early_init();
  
        /*
-        * Set up the the initial canary ASAP:
+        * Set up the initial canary ASAP:
         */
        boot_init_stack_canary();
  
        local_irq_disable();
        early_boot_irqs_disabled = true;
  
- /*
-  * Interrupts are still disabled. Do necessary setups, then
-  * enable them
-  */
      /*
+        * Interrupts are still disabled. Do necessary setups, then
+        * enable them.
+        */
        boot_cpu_init();
        page_address_init();
        pr_notice("%s", linux_banner);
@@@ -1022,8 -1022,6 +1022,8 @@@ static noinline void __init kernel_init
  
        workqueue_init();
  
 +      init_mm_internals();
 +
        do_pre_smp_initcalls();
        lockup_detector_init();
  
diff --combined kernel/sched/fair.c
@@@ -717,12 -717,18 +717,12 @@@ static u64 sched_vslice(struct cfs_rq *
  }
  
  #ifdef CONFIG_SMP
 +
 +#include "sched-pelt.h"
 +
  static int select_idle_sibling(struct task_struct *p, int prev_cpu, int cpu);
  static unsigned long task_h_load(struct task_struct *p);
  
 -/*
 - * We choose a half-life close to 1 scheduling period.
 - * Note: The tables runnable_avg_yN_inv and runnable_avg_yN_sum are
 - * dependent on this value.
 - */
 -#define LOAD_AVG_PERIOD 32
 -#define LOAD_AVG_MAX 47742 /* maximum possible load avg */
 -#define LOAD_AVG_MAX_N 345 /* number of full periods to produce LOAD_AVG_MAX */
 -
  /* Give new sched_entity start runnable values to heavy its load in infant time */
  void init_entity_runnable_average(struct sched_entity *se)
  {
@@@ -2727,15 -2733,47 +2727,15 @@@ static inline void update_cfs_shares(st
  #endif /* CONFIG_FAIR_GROUP_SCHED */
  
  #ifdef CONFIG_SMP
 -/* Precomputed fixed inverse multiplies for multiplication by y^n */
 -static const u32 runnable_avg_yN_inv[] = {
 -      0xffffffff, 0xfa83b2da, 0xf5257d14, 0xefe4b99a, 0xeac0c6e6, 0xe5b906e6,
 -      0xe0ccdeeb, 0xdbfbb796, 0xd744fcc9, 0xd2a81d91, 0xce248c14, 0xc9b9bd85,
 -      0xc5672a10, 0xc12c4cc9, 0xbd08a39e, 0xb8fbaf46, 0xb504f333, 0xb123f581,
 -      0xad583ee9, 0xa9a15ab4, 0xa5fed6a9, 0xa2704302, 0x9ef5325f, 0x9b8d39b9,
 -      0x9837f050, 0x94f4efa8, 0x91c3d373, 0x8ea4398a, 0x8b95c1e3, 0x88980e80,
 -      0x85aac367, 0x82cd8698,
 -};
 -
 -/*
 - * Precomputed \Sum y^k { 1<=k<=n }.  These are floor(true_value) to prevent
 - * over-estimates when re-combining.
 - */
 -static const u32 runnable_avg_yN_sum[] = {
 -          0, 1002, 1982, 2941, 3880, 4798, 5697, 6576, 7437, 8279, 9103,
 -       9909,10698,11470,12226,12966,13690,14398,15091,15769,16433,17082,
 -      17718,18340,18949,19545,20128,20698,21256,21802,22336,22859,23371,
 -};
 -
 -/*
 - * Precomputed \Sum y^k { 1<=k<=n, where n%32=0). Values are rolled down to
 - * lower integers. See Documentation/scheduler/sched-avg.txt how these
 - * were generated:
 - */
 -static const u32 __accumulated_sum_N32[] = {
 -          0, 23371, 35056, 40899, 43820, 45281,
 -      46011, 46376, 46559, 46650, 46696, 46719,
 -};
 -
  /*
   * Approximate:
   *   val * y^n,    where y^32 ~= 0.5 (~1 scheduling period)
   */
 -static __always_inline u64 decay_load(u64 val, u64 n)
 +static u64 decay_load(u64 val, u64 n)
  {
        unsigned int local_n;
  
 -      if (!n)
 -              return val;
 -      else if (unlikely(n > LOAD_AVG_PERIOD * 63))
 +      if (unlikely(n > LOAD_AVG_PERIOD * 63))
                return 0;
  
        /* after bounds checking we can collapse to 32-bit */
        return val;
  }
  
 +static u32 __accumulate_pelt_segments(u64 periods, u32 d1, u32 d3)
 +{
 +      u32 c1, c2, c3 = d3; /* y^0 == 1 */
 +
 +      /*
 +       * c1 = d1 y^p
 +       */
 +      c1 = decay_load((u64)d1, periods);
 +
 +      /*
 +       *            p-1
 +       * c2 = 1024 \Sum y^n
 +       *            n=1
 +       *
 +       *              inf        inf
 +       *    = 1024 ( \Sum y^n - \Sum y^n - y^0 )
 +       *              n=0        n=p
 +       */
 +      c2 = LOAD_AVG_MAX - decay_load(LOAD_AVG_MAX, periods) - 1024;
 +
 +      return c1 + c2 + c3;
 +}
 +
 +#define cap_scale(v, s) ((v)*(s) >> SCHED_CAPACITY_SHIFT)
 +
  /*
 - * For updates fully spanning n periods, the contribution to runnable
 - * average will be: \Sum 1024*y^n
 + * Accumulate the three separate parts of the sum; d1 the remainder
 + * of the last (incomplete) period, d2 the span of full periods and d3
 + * the remainder of the (incomplete) current period.
 + *
 + *           d1          d2           d3
 + *           ^           ^            ^
 + *           |           |            |
 + *         |<->|<----------------->|<--->|
 + * ... |---x---|------| ... |------|-----x (now)
 + *
 + *                           p-1
 + * u' = (u + d1) y^p + 1024 \Sum y^n + d3 y^0
 + *                           n=1
   *
 - * We can compute this reasonably efficiently by combining:
 - *   y^PERIOD = 1/2 with precomputed \Sum 1024*y^n {for  n <PERIOD}
 + *    = u y^p +                                       (Step 1)
 + *
 + *                     p-1
 + *      d1 y^p + 1024 \Sum y^n + d3 y^0               (Step 2)
 + *                     n=1
   */
 -static u32 __compute_runnable_contrib(u64 n)
 +static __always_inline u32
 +accumulate_sum(u64 delta, int cpu, struct sched_avg *sa,
 +             unsigned long weight, int running, struct cfs_rq *cfs_rq)
  {
 -      u32 contrib = 0;
 +      unsigned long scale_freq, scale_cpu;
 +      u32 contrib = (u32)delta; /* p == 0 -> delta < 1024 */
 +      u64 periods;
  
 -      if (likely(n <= LOAD_AVG_PERIOD))
 -              return runnable_avg_yN_sum[n];
 -      else if (unlikely(n >= LOAD_AVG_MAX_N))
 -              return LOAD_AVG_MAX;
 +      scale_freq = arch_scale_freq_capacity(NULL, cpu);
 +      scale_cpu = arch_scale_cpu_capacity(NULL, cpu);
  
 -      /* Since n < LOAD_AVG_MAX_N, n/LOAD_AVG_PERIOD < 11 */
 -      contrib = __accumulated_sum_N32[n/LOAD_AVG_PERIOD];
 -      n %= LOAD_AVG_PERIOD;
 -      contrib = decay_load(contrib, n);
 -      return contrib + runnable_avg_yN_sum[n];
 -}
 +      delta += sa->period_contrib;
 +      periods = delta / 1024; /* A period is 1024us (~1ms) */
  
 -#define cap_scale(v, s) ((v)*(s) >> SCHED_CAPACITY_SHIFT)
 +      /*
 +       * Step 1: decay old *_sum if we crossed period boundaries.
 +       */
 +      if (periods) {
 +              sa->load_sum = decay_load(sa->load_sum, periods);
 +              if (cfs_rq) {
 +                      cfs_rq->runnable_load_sum =
 +                              decay_load(cfs_rq->runnable_load_sum, periods);
 +              }
 +              sa->util_sum = decay_load((u64)(sa->util_sum), periods);
 +
 +              /*
 +               * Step 2
 +               */
 +              delta %= 1024;
 +              contrib = __accumulate_pelt_segments(periods,
 +                              1024 - sa->period_contrib, delta);
 +      }
 +      sa->period_contrib = delta;
 +
 +      contrib = cap_scale(contrib, scale_freq);
 +      if (weight) {
 +              sa->load_sum += weight * contrib;
 +              if (cfs_rq)
 +                      cfs_rq->runnable_load_sum += weight * contrib;
 +      }
 +      if (running)
 +              sa->util_sum += contrib * scale_cpu;
 +
 +      return periods;
 +}
  
  /*
   * We can represent the historical contribution to runnable average as the
   *            = u_0 + u_1*y + u_2*y^2 + ... [re-labeling u_i --> u_{i+1}]
   */
  static __always_inline int
 -__update_load_avg(u64 now, int cpu, struct sched_avg *sa,
 +___update_load_avg(u64 now, int cpu, struct sched_avg *sa,
                  unsigned long weight, int running, struct cfs_rq *cfs_rq)
  {
 -      u64 delta, scaled_delta, periods;
 -      u32 contrib;
 -      unsigned int delta_w, scaled_delta_w, decayed = 0;
 -      unsigned long scale_freq, scale_cpu;
 +      u64 delta;
  
        delta = now - sa->last_update_time;
        /*
        delta >>= 10;
        if (!delta)
                return 0;
 -      sa->last_update_time = now;
 -
 -      scale_freq = arch_scale_freq_capacity(NULL, cpu);
 -      scale_cpu = arch_scale_cpu_capacity(NULL, cpu);
 -
 -      /* delta_w is the amount already accumulated against our next period */
 -      delta_w = sa->period_contrib;
 -      if (delta + delta_w >= 1024) {
 -              decayed = 1;
  
 -              /* how much left for next period will start over, we don't know yet */
 -              sa->period_contrib = 0;
 +      sa->last_update_time += delta << 10;
  
 -              /*
 -               * Now that we know we're crossing a period boundary, figure
 -               * out how much from delta we need to complete the current
 -               * period and accrue it.
 -               */
 -              delta_w = 1024 - delta_w;
 -              scaled_delta_w = cap_scale(delta_w, scale_freq);
 -              if (weight) {
 -                      sa->load_sum += weight * scaled_delta_w;
 -                      if (cfs_rq) {
 -                              cfs_rq->runnable_load_sum +=
 -                                              weight * scaled_delta_w;
 -                      }
 -              }
 -              if (running)
 -                      sa->util_sum += scaled_delta_w * scale_cpu;
 -
 -              delta -= delta_w;
 -
 -              /* Figure out how many additional periods this update spans */
 -              periods = delta / 1024;
 -              delta %= 1024;
 +      /*
 +       * Now we know we crossed measurement unit boundaries. The *_avg
 +       * accrues by two steps:
 +       *
 +       * Step 1: accumulate *_sum since last_update_time. If we haven't
 +       * crossed period boundaries, finish.
 +       */
 +      if (!accumulate_sum(delta, cpu, sa, weight, running, cfs_rq))
 +              return 0;
  
 -              sa->load_sum = decay_load(sa->load_sum, periods + 1);
 -              if (cfs_rq) {
 -                      cfs_rq->runnable_load_sum =
 -                              decay_load(cfs_rq->runnable_load_sum, periods + 1);
 -              }
 -              sa->util_sum = decay_load((u64)(sa->util_sum), periods + 1);
 -
 -              /* Efficiently calculate \sum (1..n_period) 1024*y^i */
 -              contrib = __compute_runnable_contrib(periods);
 -              contrib = cap_scale(contrib, scale_freq);
 -              if (weight) {
 -                      sa->load_sum += weight * contrib;
 -                      if (cfs_rq)
 -                              cfs_rq->runnable_load_sum += weight * contrib;
 -              }
 -              if (running)
 -                      sa->util_sum += contrib * scale_cpu;
 +      /*
 +       * Step 2: update *_avg.
 +       */
 +      sa->load_avg = div_u64(sa->load_sum, LOAD_AVG_MAX);
 +      if (cfs_rq) {
 +              cfs_rq->runnable_load_avg =
 +                      div_u64(cfs_rq->runnable_load_sum, LOAD_AVG_MAX);
        }
 +      sa->util_avg = sa->util_sum / LOAD_AVG_MAX;
  
 -      /* Remainder of delta accrued against u_0` */
 -      scaled_delta = cap_scale(delta, scale_freq);
 -      if (weight) {
 -              sa->load_sum += weight * scaled_delta;
 -              if (cfs_rq)
 -                      cfs_rq->runnable_load_sum += weight * scaled_delta;
 -      }
 -      if (running)
 -              sa->util_sum += scaled_delta * scale_cpu;
 +      return 1;
 +}
  
 -      sa->period_contrib += delta;
 +static int
 +__update_load_avg_blocked_se(u64 now, int cpu, struct sched_entity *se)
 +{
 +      return ___update_load_avg(now, cpu, &se->avg, 0, 0, NULL);
 +}
  
 -      if (decayed) {
 -              sa->load_avg = div_u64(sa->load_sum, LOAD_AVG_MAX);
 -              if (cfs_rq) {
 -                      cfs_rq->runnable_load_avg =
 -                              div_u64(cfs_rq->runnable_load_sum, LOAD_AVG_MAX);
 -              }
 -              sa->util_avg = sa->util_sum / LOAD_AVG_MAX;
 -      }
 +static int
 +__update_load_avg_se(u64 now, int cpu, struct cfs_rq *cfs_rq, struct sched_entity *se)
 +{
 +      return ___update_load_avg(now, cpu, &se->avg,
 +                                se->on_rq * scale_load_down(se->load.weight),
 +                                cfs_rq->curr == se, NULL);
 +}
  
 -      return decayed;
 +static int
 +__update_load_avg_cfs_rq(u64 now, int cpu, struct cfs_rq *cfs_rq)
 +{
 +      return ___update_load_avg(now, cpu, &cfs_rq->avg,
 +                      scale_load_down(cfs_rq->load.weight),
 +                      cfs_rq->curr != NULL, cfs_rq);
  }
  
  /*
@@@ -3009,9 -3014,6 +3009,9 @@@ static inline void update_tg_load_avg(s
  void set_task_rq_fair(struct sched_entity *se,
                      struct cfs_rq *prev, struct cfs_rq *next)
  {
 +      u64 p_last_update_time;
 +      u64 n_last_update_time;
 +
        if (!sched_feat(ATTACH_AGE_LOAD))
                return;
  
         * time. This will result in the wakee task is less decayed, but giving
         * the wakee more load sounds not bad.
         */
 -      if (se->avg.last_update_time && prev) {
 -              u64 p_last_update_time;
 -              u64 n_last_update_time;
 +      if (!(se->avg.last_update_time && prev))
 +              return;
  
  #ifndef CONFIG_64BIT
 +      {
                u64 p_last_update_time_copy;
                u64 n_last_update_time_copy;
  
  
                } while (p_last_update_time != p_last_update_time_copy ||
                         n_last_update_time != n_last_update_time_copy);
 +      }
  #else
 -              p_last_update_time = prev->avg.last_update_time;
 -              n_last_update_time = next->avg.last_update_time;
 +      p_last_update_time = prev->avg.last_update_time;
 +      n_last_update_time = next->avg.last_update_time;
  #endif
 -              __update_load_avg(p_last_update_time, cpu_of(rq_of(prev)),
 -                                &se->avg, 0, 0, NULL);
 -              se->avg.last_update_time = n_last_update_time;
 -      }
 +      __update_load_avg_blocked_se(p_last_update_time, cpu_of(rq_of(prev)), se);
 +      se->avg.last_update_time = n_last_update_time;
  }
  
  /* Take into account change of utilization of a child task group */
@@@ -3170,36 -3173,6 +3170,36 @@@ static inline int propagate_entity_load
        return 1;
  }
  
 +/*
 + * Check if we need to update the load and the utilization of a blocked
 + * group_entity:
 + */
 +static inline bool skip_blocked_update(struct sched_entity *se)
 +{
 +      struct cfs_rq *gcfs_rq = group_cfs_rq(se);
 +
 +      /*
 +       * If sched_entity still have not zero load or utilization, we have to
 +       * decay it:
 +       */
 +      if (se->avg.load_avg || se->avg.util_avg)
 +              return false;
 +
 +      /*
 +       * If there is a pending propagation, we have to update the load and
 +       * the utilization of the sched_entity:
 +       */
 +      if (gcfs_rq->propagate_avg)
 +              return false;
 +
 +      /*
 +       * Otherwise, the load and the utilization of the sched_entity is
 +       * already zero and there is no pending propagation, so it will be a
 +       * waste of time to try to decay it:
 +       */
 +      return true;
 +}
 +
  #else /* CONFIG_FAIR_GROUP_SCHED */
  
  static inline void update_tg_load_avg(struct cfs_rq *cfs_rq, int force) {}
@@@ -3292,7 -3265,8 +3292,7 @@@ update_cfs_rq_load_avg(u64 now, struct 
                set_tg_cfs_propagate(cfs_rq);
        }
  
 -      decayed = __update_load_avg(now, cpu_of(rq_of(cfs_rq)), sa,
 -              scale_load_down(cfs_rq->load.weight), cfs_rq->curr != NULL, cfs_rq);
 +      decayed = __update_load_avg_cfs_rq(now, cpu_of(rq_of(cfs_rq)), cfs_rq);
  
  #ifndef CONFIG_64BIT
        smp_wmb();
@@@ -3324,8 -3298,11 +3324,8 @@@ static inline void update_load_avg(stru
         * Track task load average for carrying it to new CPU after migrated, and
         * track group sched_entity load average for task_h_load calc in migration
         */
 -      if (se->avg.last_update_time && !(flags & SKIP_AGE_LOAD)) {
 -              __update_load_avg(now, cpu, &se->avg,
 -                        se->on_rq * scale_load_down(se->load.weight),
 -                        cfs_rq->curr == se, NULL);
 -      }
 +      if (se->avg.last_update_time && !(flags & SKIP_AGE_LOAD))
 +              __update_load_avg_se(now, cpu, cfs_rq, se);
  
        decayed  = update_cfs_rq_load_avg(now, cfs_rq, true);
        decayed |= propagate_entity_load_avg(se);
@@@ -3430,7 -3407,7 +3430,7 @@@ void sync_entity_load_avg(struct sched_
        u64 last_update_time;
  
        last_update_time = cfs_rq_last_update_time(cfs_rq);
 -      __update_load_avg(last_update_time, cpu_of(rq_of(cfs_rq)), &se->avg, 0, 0, NULL);
 +      __update_load_avg_blocked_se(last_update_time, cpu_of(rq_of(cfs_rq)), se);
  }
  
  /*
@@@ -4294,9 -4271,8 +4294,9 @@@ static u64 distribute_cfs_runtime(struc
        list_for_each_entry_rcu(cfs_rq, &cfs_b->throttled_cfs_rq,
                                throttled_list) {
                struct rq *rq = rq_of(cfs_rq);
 +              struct rq_flags rf;
  
 -              raw_spin_lock(&rq->lock);
 +              rq_lock(rq, &rf);
                if (!cfs_rq_throttled(cfs_rq))
                        goto next;
  
                        unthrottle_cfs_rq(cfs_rq);
  
  next:
 -              raw_spin_unlock(&rq->lock);
 +              rq_unlock(rq, &rf);
  
                if (!remaining)
                        break;
@@@ -5121,16 -5097,15 +5121,16 @@@ void cpu_load_update_nohz_stop(void
        unsigned long curr_jiffies = READ_ONCE(jiffies);
        struct rq *this_rq = this_rq();
        unsigned long load;
 +      struct rq_flags rf;
  
        if (curr_jiffies == this_rq->last_load_update_tick)
                return;
  
        load = weighted_cpuload(cpu_of(this_rq));
 -      raw_spin_lock(&this_rq->lock);
 +      rq_lock(this_rq, &rf);
        update_rq_clock(this_rq);
        cpu_load_update_nohz(this_rq, curr_jiffies, load);
 -      raw_spin_unlock(&this_rq->lock);
 +      rq_unlock(this_rq, &rf);
  }
  #else /* !CONFIG_NO_HZ_COMMON */
  static inline void cpu_load_update_nohz(struct rq *this_rq,
@@@ -6794,7 -6769,7 +6794,7 @@@ static void detach_task(struct task_str
        lockdep_assert_held(&env->src_rq->lock);
  
        p->on_rq = TASK_ON_RQ_MIGRATING;
 -      deactivate_task(env->src_rq, p, 0);
 +      deactivate_task(env->src_rq, p, DEQUEUE_NOCLOCK);
        set_task_cpu(p, env->dst_cpu);
  }
  
@@@ -6927,7 -6902,7 +6927,7 @@@ static void attach_task(struct rq *rq, 
        lockdep_assert_held(&rq->lock);
  
        BUG_ON(task_rq(p) != rq);
 -      activate_task(rq, p, 0);
 +      activate_task(rq, p, ENQUEUE_NOCLOCK);
        p->on_rq = TASK_ON_RQ_QUEUED;
        check_preempt_curr(rq, p, 0);
  }
   */
  static void attach_one_task(struct rq *rq, struct task_struct *p)
  {
 -      raw_spin_lock(&rq->lock);
 +      struct rq_flags rf;
 +
 +      rq_lock(rq, &rf);
 +      update_rq_clock(rq);
        attach_task(rq, p);
 -      raw_spin_unlock(&rq->lock);
 +      rq_unlock(rq, &rf);
  }
  
  /*
@@@ -6954,10 -6926,8 +6954,10 @@@ static void attach_tasks(struct lb_env 
  {
        struct list_head *tasks = &env->tasks;
        struct task_struct *p;
 +      struct rq_flags rf;
  
 -      raw_spin_lock(&env->dst_rq->lock);
 +      rq_lock(env->dst_rq, &rf);
 +      update_rq_clock(env->dst_rq);
  
        while (!list_empty(tasks)) {
                p = list_first_entry(tasks, struct task_struct, se.group_node);
                attach_task(env->dst_rq, p);
        }
  
 -      raw_spin_unlock(&env->dst_rq->lock);
 +      rq_unlock(env->dst_rq, &rf);
  }
  
  #ifdef CONFIG_FAIR_GROUP_SCHED
@@@ -6974,9 -6944,9 +6974,9 @@@ static void update_blocked_averages(in
  {
        struct rq *rq = cpu_rq(cpu);
        struct cfs_rq *cfs_rq;
 -      unsigned long flags;
 +      struct rq_flags rf;
  
 -      raw_spin_lock_irqsave(&rq->lock, flags);
 +      rq_lock_irqsave(rq, &rf);
        update_rq_clock(rq);
  
        /*
         * list_add_leaf_cfs_rq() for details.
         */
        for_each_leaf_cfs_rq(rq, cfs_rq) {
 +              struct sched_entity *se;
 +
                /* throttled entities do not contribute to load */
                if (throttled_hierarchy(cfs_rq))
                        continue;
                if (update_cfs_rq_load_avg(cfs_rq_clock_task(cfs_rq), cfs_rq, true))
                        update_tg_load_avg(cfs_rq, 0);
  
 -              /* Propagate pending load changes to the parent */
 -              if (cfs_rq->tg->se[cpu])
 -                      update_load_avg(cfs_rq->tg->se[cpu], 0);
 +              /* Propagate pending load changes to the parent, if any: */
 +              se = cfs_rq->tg->se[cpu];
 +              if (se && !skip_blocked_update(se))
 +                      update_load_avg(se, 0);
        }
 -      raw_spin_unlock_irqrestore(&rq->lock, flags);
 +      rq_unlock_irqrestore(rq, &rf);
  }
  
  /*
@@@ -7052,12 -7019,12 +7052,12 @@@ static inline void update_blocked_avera
  {
        struct rq *rq = cpu_rq(cpu);
        struct cfs_rq *cfs_rq = &rq->cfs;
 -      unsigned long flags;
 +      struct rq_flags rf;
  
 -      raw_spin_lock_irqsave(&rq->lock, flags);
 +      rq_lock_irqsave(rq, &rf);
        update_rq_clock(rq);
        update_cfs_rq_load_avg(cfs_rq_clock_task(cfs_rq), cfs_rq, true);
 -      raw_spin_unlock_irqrestore(&rq->lock, flags);
 +      rq_unlock_irqrestore(rq, &rf);
  }
  
  static unsigned long task_h_load(struct task_struct *p)
@@@ -7558,7 -7525,6 +7558,7 @@@ static inline void update_sd_lb_stats(s
  {
        struct sched_domain *child = env->sd->child;
        struct sched_group *sg = env->sd->groups;
 +      struct sg_lb_stats *local = &sds->local_stat;
        struct sg_lb_stats tmp_sgs;
        int load_idx, prefer_sibling = 0;
        bool overload = false;
                local_group = cpumask_test_cpu(env->dst_cpu, sched_group_cpus(sg));
                if (local_group) {
                        sds->local = sg;
 -                      sgs = &sds->local_stat;
 +                      sgs = local;
  
                        if (env->idle != CPU_NEWLY_IDLE ||
                            time_after_eq(jiffies, sg->sgc->next_update))
                 * the tasks on the system).
                 */
                if (prefer_sibling && sds->local &&
 -                  group_has_capacity(env, &sds->local_stat) &&
 -                  (sgs->sum_nr_running > 1)) {
 +                  group_has_capacity(env, local) &&
 +                  (sgs->sum_nr_running > local->sum_nr_running + 1)) {
                        sgs->group_no_capacity = 1;
                        sgs->group_type = group_classify(sg, sgs);
                }
@@@ -7631,7 -7597,7 +7631,7 @@@ next_group
  
  /**
   * check_asym_packing - Check to see if the group is packed into the
-  *                    sched doman.
+  *                    sched domain.
   *
   * This is primarily intended to used at the sibling level.  Some
   * cores like POWER7 prefer to use lower numbered SMT threads.  In the
@@@ -8076,7 -8042,7 +8076,7 @@@ static int load_balance(int this_cpu, s
        struct sched_domain *sd_parent = sd->parent;
        struct sched_group *group;
        struct rq *busiest;
 -      unsigned long flags;
 +      struct rq_flags rf;
        struct cpumask *cpus = this_cpu_cpumask_var_ptr(load_balance_mask);
  
        struct lb_env env = {
@@@ -8139,7 -8105,7 +8139,7 @@@ redo
                env.loop_max  = min(sysctl_sched_nr_migrate, busiest->nr_running);
  
  more_balance:
 -              raw_spin_lock_irqsave(&busiest->lock, flags);
 +              rq_lock_irqsave(busiest, &rf);
                update_rq_clock(busiest);
  
                /*
                 * See task_rq_lock() family for the details.
                 */
  
 -              raw_spin_unlock(&busiest->lock);
 +              rq_unlock(busiest, &rf);
  
                if (cur_ld_moved) {
                        attach_tasks(&env);
                        ld_moved += cur_ld_moved;
                }
  
 -              local_irq_restore(flags);
 +              local_irq_restore(rf.flags);
  
                if (env.flags & LBF_NEED_BREAK) {
                        env.flags &= ~LBF_NEED_BREAK;
                        sd->nr_balance_failed++;
  
                if (need_active_balance(&env)) {
 +                      unsigned long flags;
 +
                        raw_spin_lock_irqsave(&busiest->lock, flags);
  
                        /* don't kick the active_load_balance_cpu_stop,
@@@ -8480,9 -8444,8 +8480,9 @@@ static int active_load_balance_cpu_stop
        struct rq *target_rq = cpu_rq(target_cpu);
        struct sched_domain *sd;
        struct task_struct *p = NULL;
 +      struct rq_flags rf;
  
 -      raw_spin_lock_irq(&busiest_rq->lock);
 +      rq_lock_irq(busiest_rq, &rf);
  
        /* make sure the requested cpu hasn't gone down in the meantime */
        if (unlikely(busiest_cpu != smp_processor_id() ||
        rcu_read_unlock();
  out_unlock:
        busiest_rq->active_balance = 0;
 -      raw_spin_unlock(&busiest_rq->lock);
 +      rq_unlock(busiest_rq, &rf);
  
        if (p)
                attach_one_task(target_rq, p);
@@@ -8831,13 -8794,10 +8831,13 @@@ static void nohz_idle_balance(struct r
                 * do the balance.
                 */
                if (time_after_eq(jiffies, rq->next_balance)) {
 -                      raw_spin_lock_irq(&rq->lock);
 +                      struct rq_flags rf;
 +
 +                      rq_lock_irq(rq, &rf);
                        update_rq_clock(rq);
                        cpu_load_update_idle(rq);
 -                      raw_spin_unlock_irq(&rq->lock);
 +                      rq_unlock_irq(rq, &rf);
 +
                        rebalance_domains(rq, CPU_IDLE);
                }
  
@@@ -9028,9 -8988,8 +9028,9 @@@ static void task_fork_fair(struct task_
        struct cfs_rq *cfs_rq;
        struct sched_entity *se = &p->se, *curr;
        struct rq *rq = this_rq();
 +      struct rq_flags rf;
  
 -      raw_spin_lock(&rq->lock);
 +      rq_lock(rq, &rf);
        update_rq_clock(rq);
  
        cfs_rq = task_cfs_rq(current);
        }
  
        se->vruntime -= cfs_rq->min_vruntime;
 -      raw_spin_unlock(&rq->lock);
 +      rq_unlock(rq, &rf);
  }
  
  /*
@@@ -9413,6 -9372,7 +9413,6 @@@ static DEFINE_MUTEX(shares_mutex)
  int sched_group_set_shares(struct task_group *tg, unsigned long shares)
  {
        int i;
 -      unsigned long flags;
  
        /*
         * We can't change the weight of the root cgroup.
        tg->shares = shares;
        for_each_possible_cpu(i) {
                struct rq *rq = cpu_rq(i);
 -              struct sched_entity *se;
 +              struct sched_entity *se = tg->se[i];
 +              struct rq_flags rf;
  
 -              se = tg->se[i];
                /* Propagate contribution to hierarchy */
 -              raw_spin_lock_irqsave(&rq->lock, flags);
 -
 -              /* Possible calls to update_curr() need rq clock */
 +              rq_lock_irqsave(rq, &rf);
                update_rq_clock(rq);
                for_each_sched_entity(se) {
                        update_load_avg(se, UPDATE_TG);
                        update_cfs_shares(se);
                }
 -              raw_spin_unlock_irqrestore(&rq->lock, flags);
 +              rq_unlock_irqrestore(rq, &rf);
        }
  
  done:
diff --combined kernel/time/hrtimer.c
@@@ -987,7 -987,7 +987,7 @@@ EXPORT_SYMBOL_GPL(hrtimer_start_range_n
   * Returns:
   *  0 when the timer was not active
   *  1 when the timer was active
-  * -1 when the timer is currently excuting the callback function and
+  * -1 when the timer is currently executing the callback function and
   *    cannot be stopped
   */
  int hrtimer_try_to_cancel(struct hrtimer *timer)
@@@ -1368,7 -1368,10 +1368,7 @@@ retry
                    ktime_to_ns(delta));
  }
  
 -/*
 - * local version of hrtimer_peek_ahead_timers() called with interrupts
 - * disabled.
 - */
 +/* called with interrupts disabled */
  static inline void __hrtimer_peek_ahead_timers(void)
  {
        struct tick_device *td;
@@@ -1503,7 -1506,7 +1503,7 @@@ out
        return ret;
  }
  
 -long hrtimer_nanosleep(struct timespec *rqtp, struct timespec __user *rmtp,
 +long hrtimer_nanosleep(struct timespec64 *rqtp, struct timespec __user *rmtp,
                       const enum hrtimer_mode mode, const clockid_t clockid)
  {
        struct restart_block *restart;
                slack = 0;
  
        hrtimer_init_on_stack(&t.timer, clockid, mode);
 -      hrtimer_set_expires_range_ns(&t.timer, timespec_to_ktime(*rqtp), slack);
 +      hrtimer_set_expires_range_ns(&t.timer, timespec64_to_ktime(*rqtp), slack);
        if (do_nanosleep(&t, mode))
                goto out;
  
  SYSCALL_DEFINE2(nanosleep, struct timespec __user *, rqtp,
                struct timespec __user *, rmtp)
  {
 +      struct timespec64 tu64;
        struct timespec tu;
  
        if (copy_from_user(&tu, rqtp, sizeof(tu)))
                return -EFAULT;
  
 -      if (!timespec_valid(&tu))
 +      tu64 = timespec_to_timespec64(tu);
 +      if (!timespec64_valid(&tu64))
                return -EINVAL;
  
 -      return hrtimer_nanosleep(&tu, rmtp, HRTIMER_MODE_REL, CLOCK_MONOTONIC);
 +      return hrtimer_nanosleep(&tu64, rmtp, HRTIMER_MODE_REL, CLOCK_MONOTONIC);
  }
  
  /*
diff --combined kernel/time/timer.c
@@@ -241,7 -241,7 +241,7 @@@ int timer_migration_handler(struct ctl_
        int ret;
  
        mutex_lock(&mutex);
 -      ret = proc_dointvec(table, write, buffer, lenp, ppos);
 +      ret = proc_dointvec_minmax(table, write, buffer, lenp, ppos);
        if (!ret && write)
                timers_update_migration(false);
        mutex_unlock(&mutex);
@@@ -1120,7 -1120,7 +1120,7 @@@ void add_timer_on(struct timer_list *ti
  EXPORT_SYMBOL_GPL(add_timer_on);
  
  /**
-  * del_timer - deactive a timer.
+  * del_timer - deactivate a timer.
   * @timer: the timer to be deactivated
   *
   * del_timer() deactivates a timer - this works on both active and inactive
@@@ -442,9 -442,9 +442,9 @@@ static int perf_del_probe_events(struc
        }
  
        if (ret == -ENOENT && ret2 == -ENOENT)
 -              pr_debug("\"%s\" does not hit any event.\n", str);
 -              /* Note that this is silently ignored */
 -      ret = 0;
 +              pr_warning("\"%s\" does not hit any event.\n", str);
 +      else
 +              ret = 0;
  
  error:
        if (kfd >= 0)
@@@ -468,7 -468,7 +468,7 @@@ out
  
  
  static int
 -__cmd_probe(int argc, const char **argv, const char *prefix __maybe_unused)
 +__cmd_probe(int argc, const char **argv)
  {
        const char * const probe_usage[] = {
                "perf probe [<options>] 'PROBEDEF' ['PROBEDEF' ...]",
        OPT_INCR('v', "verbose", &verbose,
                    "be more verbose (show parsed arguments, etc)"),
        OPT_BOOLEAN('q', "quiet", &params.quiet,
-                   "be quiet (do not show any mesages)"),
+                   "be quiet (do not show any messages)"),
        OPT_CALLBACK_DEFAULT('l', "list", NULL, "[GROUP:]EVENT",
                             "list up probe events",
                             opt_set_filter_with_command, DEFAULT_LIST_FILTER),
        return 0;
  }
  
 -int cmd_probe(int argc, const char **argv, const char *prefix)
 +int cmd_probe(int argc, const char **argv)
  {
        int ret;
  
        ret = init_params();
        if (!ret) {
 -              ret = __cmd_probe(argc, argv, prefix);
 +              ret = __cmd_probe(argc, argv);
                cleanup_params();
        }
  
@@@ -8,7 -8,7 +8,7 @@@ ifeq ($(ARCH),powerpc
  
  GIT_VERSION = $(shell git describe --always --long --dirty || echo "unknown")
  
- CFLAGS := -std=gnu99 -Wall -O2 -Wall -Werror -DGIT_VERSION='"$(GIT_VERSION)"' -I$(CURDIR)/include $(CFLAGS)
+ CFLAGS := -std=gnu99 -O2 -Wall -Werror -DGIT_VERSION='"$(GIT_VERSION)"' -I$(CURDIR)/include $(CFLAGS)
  
  export CFLAGS
  
@@@ -34,34 -34,34 +34,34 @@@ endi
  all: $(SUB_DIRS)
  
  $(SUB_DIRS):
 -      BUILD_TARGET=$$OUTPUT/$@; mkdir -p $$BUILD_TARGET; $(MAKE) OUTPUT=$$BUILD_TARGET -k -C $@ all
 +      BUILD_TARGET=$(OUTPUT)/$@; mkdir -p $$BUILD_TARGET; $(MAKE) OUTPUT=$$BUILD_TARGET -k -C $@ all
  
  include ../lib.mk
  
  override define RUN_TESTS
        @for TARGET in $(SUB_DIRS); do \
 -              BUILD_TARGET=$$OUTPUT/$$TARGET; \
 +              BUILD_TARGET=$(OUTPUT)/$$TARGET;        \
                $(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET run_tests;\
        done;
  endef
  
  override define INSTALL_RULE
        @for TARGET in $(SUB_DIRS); do \
 -              BUILD_TARGET=$$OUTPUT/$$TARGET; \
 +              BUILD_TARGET=$(OUTPUT)/$$TARGET;        \
                $(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET install;\
        done;
  endef
  
  override define EMIT_TESTS
        @for TARGET in $(SUB_DIRS); do \
 -              BUILD_TARGET=$$OUTPUT/$$TARGET; \
 +              BUILD_TARGET=$(OUTPUT)/$$TARGET;        \
                $(MAKE) OUTPUT=$$BUILD_TARGET -s -C $$TARGET emit_tests;\
        done;
  endef
  
  clean:
        @for TARGET in $(SUB_DIRS); do \
 -              BUILD_TARGET=$$OUTPUT/$$TARGET; \
 +              BUILD_TARGET=$(OUTPUT)/$$TARGET;        \
                $(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET clean; \
        done;
        rm -f tags