Merge tag 'char-misc-4.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregk...
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 1 Feb 2018 18:31:17 +0000 (10:31 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 1 Feb 2018 18:31:17 +0000 (10:31 -0800)
Pull char/misc driver updates from Greg KH:
 "Here is the big pull request for char/misc drivers for 4.16-rc1.

  There's a lot of stuff in here. Three new driver subsystems were added
  for various types of hardware busses:

   - siox
   - slimbus
   - soundwire

  as well as a new vboxguest subsystem for the VirtualBox hypervisor
  drivers.

  There's also big updates from the FPGA subsystem, lots of Android
  binder fixes, the usual handful of hyper-v updates, and lots of other
  smaller driver updates.

  All of these have been in linux-next for a long time, with no reported
  issues"

* tag 'char-misc-4.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc: (155 commits)
  char: lp: use true or false for boolean values
  android: binder: use VM_ALLOC to get vm area
  android: binder: Use true and false for boolean values
  lkdtm: fix handle_irq_event symbol for INT_HW_IRQ_EN
  EISA: Delete error message for a failed memory allocation in eisa_probe()
  EISA: Whitespace cleanup
  misc: remove AVR32 dependencies
  virt: vbox: Add error mapping for VERR_INVALID_NAME and VERR_NO_MORE_FILES
  soundwire: Fix a signedness bug
  uio_hv_generic: fix new type mismatch warnings
  uio_hv_generic: fix type mismatch warnings
  auxdisplay: img-ascii-lcd: add missing MODULE_DESCRIPTION/AUTHOR/LICENSE
  uio_hv_generic: add rescind support
  uio_hv_generic: check that host supports monitor page
  uio_hv_generic: create send and receive buffers
  uio: document uio_hv_generic regions
  doc: fix documentation about uio_hv_generic
  vmbus: add monitor_id and subchannel_id to sysfs per channel
  vmbus: fix ABI documentation
  uio_hv_generic: use ISR callback method
  ...

14 files changed:
1  2 
Documentation/devicetree/bindings/vendor-prefixes.txt
MAINTAINERS
arch/x86/include/asm/mshyperv.h
drivers/Kconfig
drivers/Makefile
drivers/android/binder.c
drivers/base/regmap/Kconfig
drivers/base/regmap/Makefile
drivers/misc/Kconfig
drivers/misc/hpilo.c
drivers/misc/mic/vop/vop_vringh.c
drivers/mux/core.c
include/linux/regmap.h
security/Kconfig

index f776fb804a8c211fffeda56bab019e8c02c1bd56,889d1c0f50503afe2f3f560877f94b1cf0fd5035..6ec1a028a3a8416f1545e128df5469b6f4943166
@@@ -97,6 -97,7 +97,7 @@@ dptechnics    DPTechnic
  dragino       Dragino Technology Co., Limited
  ea    Embedded Artists AB
  ebv   EBV Elektronik
+ eckelmann     Eckelmann AG
  edt   Emerging Display Technologies
  eeti  eGalax_eMPIA Technology Inc
  elan  Elan Microelectronic Corp.
@@@ -347,7 -348,6 +348,7 @@@ tcg        Trusted Computing Grou
  tcl   Toby Churchill Ltd.
  technexion    TechNexion
  technologic   Technologic Systems
 +tempo Tempo Semiconductor
  terasic       Terasic Inc.
  thine THine Electronics, Inc.
  ti    Texas Instruments
diff --combined MAINTAINERS
index 64c47587d1d4e5cee40cd573e4efd5f62a1377e0,76cd525b56fe0cac99ee7a462377b537f54511ea..a2a25331e3b140c881c5ef6cbb1f3e9b7388dbbb
@@@ -62,15 -62,7 +62,15 @@@ trivial patch so apply some common sens
  
  7.    When sending security related changes or reports to a maintainer
        please Cc: security@kernel.org, especially if the maintainer
 -      does not respond.
 +      does not respond. Please keep in mind that the security team is
 +      a small set of people who can be efficient only when working on
 +      verified bugs. Please only Cc: this list when you have identified
 +      that the bug would present a short-term risk to other users if it
 +      were publicly disclosed. For example, reports of address leaks do
 +      not represent an immediate threat and are better handled publicly,
 +      and ideally, should come with a patch proposal. Please do not send
 +      automated reports to this list either. Such bugs will be handled
 +      better and faster in the usual public places.
  
  8.    Happy hacking.
  
@@@ -270,7 -262,6 +270,7 @@@ ACCES 104-QUAD-8 IIO DRIVE
  M:    William Breathitt Gray <vilhelm.gray@gmail.com>
  L:    linux-iio@vger.kernel.org
  S:    Maintained
 +F:    Documentation/ABI/testing/sysfs-bus-iio-counter-104-quad-8
  F:    drivers/iio/counter/104-quad-8.c
  
  ACCES PCI-IDIO-16 GPIO DRIVER
@@@ -279,12 -270,6 +279,12 @@@ L:       linux-gpio@vger.kernel.or
  S:    Maintained
  F:    drivers/gpio/gpio-pci-idio-16.c
  
 +ACCES PCIe-IDIO-24 GPIO DRIVER
 +M:    William Breathitt Gray <vilhelm.gray@gmail.com>
 +L:    linux-gpio@vger.kernel.org
 +S:    Maintained
 +F:    drivers/gpio/gpio-pcie-idio-24.c
 +
  ACENIC DRIVER
  M:    Jes Sorensen <jes@trained-monkey.org>
  L:    linux-acenic@sunsite.dk
@@@ -336,7 -321,7 +336,7 @@@ F: drivers/acpi/apei
  
  ACPI COMPONENT ARCHITECTURE (ACPICA)
  M:    Robert Moore <robert.moore@intel.com>
 -M:    Lv Zheng <lv.zheng@intel.com>
 +M:    Erik Schmauss <erik.schmauss@intel.com>
  M:    "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
  L:    linux-acpi@vger.kernel.org
  L:    devel@acpica.org
@@@ -860,8 -845,6 +860,8 @@@ M: Michael Hennerich <Michael.Hennerich
  W:    http://wiki.analog.com/
  W:    http://ez.analog.com/community/linux-device-drivers
  S:    Supported
 +F:    Documentation/ABI/testing/sysfs-bus-iio-frequency-ad9523
 +F:    Documentation/ABI/testing/sysfs-bus-iio-frequency-adf4350
  F:    drivers/iio/*/ad*
  F:    drivers/iio/adc/ltc2497*
  X:    drivers/iio/*/adjd*
@@@ -884,12 -867,6 +884,12 @@@ S:       Supporte
  F:    drivers/android/
  F:    drivers/staging/android/
  
 +ANDROID GOLDFISH PIC DRIVER
 +M:    Miodrag Dinic <miodrag.dinic@mips.com>
 +S:    Supported
 +F:    Documentation/devicetree/bindings/interrupt-controller/google,goldfish-pic.txt
 +F:    drivers/irqchip/irq-goldfish-pic.c
 +
  ANDROID GOLDFISH RTC DRIVER
  M:    Miodrag Dinic <miodrag.dinic@mips.com>
  S:    Supported
@@@ -1336,8 -1313,7 +1336,8 @@@ F:      tools/perf/arch/arm/util/pmu.
  F:    tools/perf/arch/arm/util/auxtrace.c
  F:    tools/perf/arch/arm/util/cs-etm.c
  F:    tools/perf/arch/arm/util/cs-etm.h
 -F:    tools/perf/util/cs-etm.h
 +F:    tools/perf/util/cs-etm.*
 +F:    tools/perf/util/cs-etm-decoder/*
  
  ARM/CORGI MACHINE SUPPORT
  M:    Richard Purdie <rpurdie@rpsys.net>
@@@ -1351,10 -1327,8 +1351,10 @@@ T:    git git://github.com/ulli-kroll/linu
  S:    Maintained
  F:    Documentation/devicetree/bindings/arm/gemini.txt
  F:    Documentation/devicetree/bindings/pinctrl/cortina,gemini-pinctrl.txt
 +F:    Documentation/devicetree/bindings/net/cortina,gemini-ethernet.txt
  F:    Documentation/devicetree/bindings/rtc/faraday,ftrtc010.txt
  F:    arch/arm/mach-gemini/
 +F:    drivers/net/ethernet/cortina/gemini/*
  F:    drivers/pinctrl/pinctrl-gemini.c
  F:    drivers/rtc/rtc-ftrtc010.c
  
@@@ -1609,7 -1583,6 +1609,7 @@@ F:      arch/arm/boot/dts/kirkwood
  F:    arch/arm/configs/mvebu_*_defconfig
  F:    arch/arm/mach-mvebu/
  F:    arch/arm64/boot/dts/marvell/armada*
 +F:    drivers/cpufreq/armada-37xx-cpufreq.c
  F:    drivers/cpufreq/mvebu-cpufreq.c
  F:    drivers/irqchip/irq-armada-370-xp.c
  F:    drivers/irqchip/irq-mvebu-*
@@@ -2410,6 -2383,13 +2410,6 @@@ F:     Documentation/devicetree/bindings/in
  F:    drivers/input/touchscreen/atmel_mxt_ts.c
  F:    include/linux/platform_data/atmel_mxt_ts.h
  
 -ATMEL NAND DRIVER
 -M:    Wenyou Yang <wenyou.yang@atmel.com>
 -M:    Josh Wu <rainyfeeling@outlook.com>
 -L:    linux-mtd@lists.infradead.org
 -S:    Supported
 -F:    drivers/mtd/nand/atmel/*
 -
  ATMEL SAMA5D2 ADC DRIVER
  M:    Ludovic Desroches <ludovic.desroches@microchip.com>
  L:    linux-iio@vger.kernel.org
@@@ -2584,7 -2564,6 +2584,7 @@@ S:      Maintaine
  F:    Documentation/ABI/testing/sysfs-class-net-batman-adv
  F:    Documentation/ABI/testing/sysfs-class-net-mesh
  F:    Documentation/networking/batman-adv.rst
 +F:    include/uapi/linux/batadv_packet.h
  F:    include/uapi/linux/batman_adv.h
  F:    net/batman-adv/
  
@@@ -2708,6 -2687,7 +2708,6 @@@ F:      drivers/mtd/devices/block2mtd.
  
  BLUETOOTH DRIVERS
  M:    Marcel Holtmann <marcel@holtmann.org>
 -M:    Gustavo Padovan <gustavo@padovan.org>
  M:    Johan Hedberg <johan.hedberg@gmail.com>
  L:    linux-bluetooth@vger.kernel.org
  W:    http://www.bluez.org/
@@@ -2718,6 -2698,7 +2718,6 @@@ F:      drivers/bluetooth
  
  BLUETOOTH SUBSYSTEM
  M:    Marcel Holtmann <marcel@holtmann.org>
 -M:    Gustavo Padovan <gustavo@padovan.org>
  M:    Johan Hedberg <johan.hedberg@gmail.com>
  L:    linux-bluetooth@vger.kernel.org
  W:    http://www.bluez.org/
@@@ -2742,16 -2723,12 +2742,16 @@@ M:   Alexei Starovoitov <ast@kernel.org
  M:    Daniel Borkmann <daniel@iogearbox.net>
  L:    netdev@vger.kernel.org
  L:    linux-kernel@vger.kernel.org
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git
  S:    Supported
  F:    arch/x86/net/bpf_jit*
  F:    Documentation/networking/filter.txt
  F:    Documentation/bpf/
  F:    include/linux/bpf*
  F:    include/linux/filter.h
 +F:    include/trace/events/bpf.h
 +F:    include/trace/events/xdp.h
  F:    include/uapi/linux/bpf*
  F:    include/uapi/linux/filter.h
  F:    kernel/bpf/
@@@ -3216,7 -3193,7 +3216,7 @@@ W:      https://github.com/linux-ca
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can.git
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can-next.git
  S:    Maintained
 -F:    Documentation/networking/can.txt
 +F:    Documentation/networking/can.rst
  F:    net/can/
  F:    include/linux/can/core.h
  F:    include/uapi/linux/can.h
@@@ -3421,8 -3398,8 +3421,8 @@@ M:      Arnd Bergmann <arnd@arndb.de
  M:    Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git
  S:    Supported
- F:    drivers/char/*
- F:    drivers/misc/*
+ F:    drivers/char/
+ F:    drivers/misc/
  F:    include/linux/miscdevice.h
  
  CHECKPATCH
@@@ -4148,7 -4125,6 +4148,7 @@@ DEVANTECH SRF ULTRASONIC RANGER IIO DRI
  M:    Andreas Klinger <ak@it-klinger.de>
  L:    linux-iio@vger.kernel.org
  S:    Maintained
 +F:    Documentation/ABI/testing/sysfs-bus-iio-distance-srf08
  F:    drivers/iio/proximity/srf*.c
  
  DEVICE COREDUMP (DEV_COREDUMP)
@@@ -4358,12 -4334,10 +4358,12 @@@ T:   git git://git.infradead.org/users/hc
  W:    http://git.infradead.org/users/hch/dma-mapping.git
  S:    Supported
  F:    lib/dma-debug.c
 -F:    lib/dma-noop.c
 +F:    lib/dma-direct.c
  F:    lib/dma-virt.c
  F:    drivers/base/dma-mapping.c
  F:    drivers/base/dma-coherent.c
 +F:    include/asm-generic/dma-mapping.h
 +F:    include/linux/dma-direct.h
  F:    include/linux/dma-mapping.h
  
  DME1737 HARDWARE MONITOR DRIVER
@@@ -4965,11 -4939,6 +4965,11 @@@ S:    Maintaine
  F:    lib/dynamic_debug.c
  F:    include/linux/dynamic_debug.h
  
 +DYNAMIC INTERRUPT MODERATION
 +M:    Tal Gilboa <talgi@mellanox.com>
 +S:    Maintained
 +F:    include/linux/net_dim.h
 +
  DZ DECSTATION DZ11 SERIAL DRIVER
  M:    "Maciej W. Rozycki" <macro@linux-mips.org>
  S:    Maintained
@@@ -5170,12 -5139,6 +5170,12 @@@ L:    linux-edac@vger.kernel.or
  S:    Maintained
  F:    drivers/edac/skx_edac.c
  
 +EDAC-TI
 +M:    Tero Kristo <t-kristo@ti.com>
 +L:    linux-edac@vger.kernel.org
 +S:    Maintained
 +F:    drivers/edac/ti_edac.c
 +
  EDIROL UA-101/UA-1000 DRIVER
  M:    Clemens Ladisch <clemens@ladisch.de>
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
@@@ -5186,15 -5149,15 +5186,15 @@@ F:   sound/usb/misc/ua101.
  EFI TEST DRIVER
  L:    linux-efi@vger.kernel.org
  M:    Ivan Hu <ivan.hu@canonical.com>
 -M:    Matt Fleming <matt@codeblueprint.co.uk>
 +M:    Ard Biesheuvel <ard.biesheuvel@linaro.org>
  S:    Maintained
  F:    drivers/firmware/efi/test/
  
  EFI VARIABLE FILESYSTEM
  M:    Matthew Garrett <matthew.garrett@nebula.com>
  M:    Jeremy Kerr <jk@ozlabs.org>
 -M:    Matt Fleming <matt@codeblueprint.co.uk>
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mfleming/efi.git
 +M:    Ard Biesheuvel <ard.biesheuvel@linaro.org>
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/efi/efi.git
  L:    linux-efi@vger.kernel.org
  S:    Maintained
  F:    fs/efivarfs/
@@@ -5355,6 -5318,7 +5355,6 @@@ S:      Supporte
  F:    security/integrity/evm/
  
  EXTENSIBLE FIRMWARE INTERFACE (EFI)
 -M:    Matt Fleming <matt@codeblueprint.co.uk>
  M:    Ard Biesheuvel <ard.biesheuvel@linaro.org>
  L:    linux-efi@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/efi/efi.git
@@@ -5999,7 -5963,6 +5999,7 @@@ F:      drivers/media/rc/gpio-ir-tx.
  
  GPIO MOCKUP DRIVER
  M:    Bamvor Jian Zhang <bamvor.zhangjian@linaro.org>
 +R:    Bartosz Golaszewski <brgl@bgdev.pl>
  L:    linux-gpio@vger.kernel.org
  S:    Maintained
  F:    drivers/gpio/gpio-mockup.c
@@@ -6647,6 -6610,16 +6647,6 @@@ L:     linux-i2c@vger.kernel.or
  S:    Maintained
  F:    drivers/i2c/i2c-stub.c
  
 -i386 BOOT CODE
 -M:    "H. Peter Anvin" <hpa@zytor.com>
 -S:    Maintained
 -F:    arch/x86/boot/
 -
 -i386 SETUP CODE / CPU ERRATA WORKAROUNDS
 -M:    "H. Peter Anvin" <hpa@zytor.com>
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/hpa/linux-2.6-x86setup.git
 -S:    Maintained
 -
  IA64 (Itanium) PLATFORM
  M:    Tony Luck <tony.luck@intel.com>
  M:    Fenghua Yu <fenghua.yu@intel.com>
@@@ -6854,8 -6827,6 +6854,8 @@@ R:      Peter Meerwald-Stadler <pmeerw@pmeer
  L:    linux-iio@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio.git
  S:    Maintained
 +F:    Documentation/ABI/testing/configfs-iio*
 +F:    Documentation/ABI/testing/sysfs-bus-iio*
  F:    Documentation/devicetree/bindings/iio/
  F:    drivers/iio/
  F:    drivers/staging/iio/
@@@ -6915,7 -6886,7 +6915,7 @@@ M:      Jason Gunthorpe <jgg@mellanox.com
  L:    linux-rdma@vger.kernel.org
  W:    http://www.openfabrics.org/
  Q:    http://patchwork.kernel.org/project/linux-rdma/list/
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/dledford/rdma.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma.git
  S:    Supported
  F:    Documentation/devicetree/bindings/infiniband/
  F:    Documentation/infiniband/
@@@ -7337,16 -7308,17 +7337,16 @@@ F:   drivers/tty/ipwireless
  
  IPX NETWORK LAYER
  L:    netdev@vger.kernel.org
 -S:    Odd fixes
 -F:    include/net/ipx.h
 +S:    Obsolete
  F:    include/uapi/linux/ipx.h
 -F:    net/ipx/
 +F:    drivers/staging/ipx/
  
  IRDA SUBSYSTEM
  M:    Samuel Ortiz <samuel@sortiz.org>
  L:    irda-users@lists.sourceforge.net (subscribers-only)
  L:    netdev@vger.kernel.org
  W:    http://irda.sourceforge.net/
 -S:    Maintained
 +S:    Obsolete
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/sameo/irda-2.6.git
  F:    Documentation/networking/irda.txt
  F:    drivers/staging/irda/
@@@ -8221,7 -8193,6 +8221,7 @@@ F:      arch/*/include/asm/rwsem.
  F:    include/linux/seqlock.h
  F:    lib/locking*.[ch]
  F:    kernel/locking/
 +X:    kernel/locking/locktorture.c
  
  LOGICAL DISK MANAGER SUPPORT (LDM, Windows 2000/XP/Vista Dynamic Disks)
  M:    "Richard Russon (FlatCap)" <ldm@flatcap.org>
@@@ -8437,13 -8408,6 +8437,13 @@@ L:    linux-wireless@vger.kernel.or
  S:    Odd Fixes
  F:    drivers/net/wireless/marvell/mwl8k.c
  
 +MARVELL NAND CONTROLLER DRIVER
 +M:    Miquel Raynal <miquel.raynal@free-electrons.com>
 +L:    linux-mtd@lists.infradead.org
 +S:    Maintained
 +F:    drivers/mtd/nand/marvell_nand.c
 +F:    Documentation/devicetree/bindings/mtd/marvell-nand.txt
 +
  MARVELL SOC MMC/SD/SDIO CONTROLLER DRIVER
  M:    Nicolas Pitre <nico@fluxnic.net>
  S:    Odd Fixes
@@@ -8758,13 -8722,6 +8758,13 @@@ L:    netdev@vger.kernel.or
  S:    Maintained
  F:    drivers/net/ethernet/mediatek/
  
 +MEDIATEK SWITCH DRIVER
 +M:    Sean Wang <sean.wang@mediatek.com>
 +L:    netdev@vger.kernel.org
 +S:    Maintained
 +F:    drivers/net/dsa/mt7530.*
 +F:    net/dsa/tag_mtk.c
 +
  MEDIATEK JPEG DRIVER
  M:    Rick Chang <rick.chang@mediatek.com>
  M:    Bin Liu <bin.liu@mediatek.com>
@@@ -8998,7 -8955,7 +8998,7 @@@ L:      linux-mtd@lists.infradead.or
  W:    http://www.linux-mtd.infradead.org/
  Q:    http://patchwork.ozlabs.org/project/linux-mtd/list/
  T:    git git://git.infradead.org/linux-mtd.git master
 -T:    git git://git.infradead.org/l2-mtd.git master
 +T:    git git://git.infradead.org/linux-mtd.git mtd/next
  S:    Maintained
  F:    Documentation/devicetree/bindings/mtd/
  F:    drivers/mtd/
@@@ -9087,14 -9044,6 +9087,14 @@@ F:    drivers/media/platform/atmel/atmel-i
  F:    drivers/media/platform/atmel/atmel-isc-regs.h
  F:    devicetree/bindings/media/atmel-isc.txt
  
 +MICROCHIP / ATMEL NAND DRIVER
 +M:    Wenyou Yang <wenyou.yang@microchip.com>
 +M:    Josh Wu <rainyfeeling@outlook.com>
 +L:    linux-mtd@lists.infradead.org
 +S:    Supported
 +F:    drivers/mtd/nand/atmel/*
 +F:    Documentation/devicetree/bindings/mtd/atmel-nand.txt
 +
  MICROCHIP KSZ SERIES ETHERNET SWITCH DRIVER
  M:    Woojung Huh <Woojung.Huh@microchip.com>
  M:    Microchip Linux Driver Support <UNGLinuxDriver@microchip.com>
@@@ -9137,7 -9086,6 +9137,7 @@@ F:      drivers/usb/image/microtek.
  
  MIPS
  M:    Ralf Baechle <ralf@linux-mips.org>
 +M:    James Hogan <jhogan@kernel.org>
  L:    linux-mips@linux-mips.org
  W:    http://www.linux-mips.org/
  T:    git git://git.linux-mips.org/pub/scm/ralf/linux.git
@@@ -9395,7 -9343,7 +9395,7 @@@ L:      linux-mtd@lists.infradead.or
  W:    http://www.linux-mtd.infradead.org/
  Q:    http://patchwork.ozlabs.org/project/linux-mtd/list/
  T:    git git://git.infradead.org/linux-mtd.git nand/fixes
 -T:    git git://git.infradead.org/l2-mtd.git nand/next
 +T:    git git://git.infradead.org/linux-mtd.git nand/next
  S:    Maintained
  F:    drivers/mtd/nand/
  F:    include/linux/mtd/*nand*.h
@@@ -9413,8 -9361,8 +9413,8 @@@ F:      drivers/net/ethernet/natsemi/natsemi
  
  NCP FILESYSTEM
  M:    Petr Vandrovec <petr@vandrovec.name>
 -S:    Odd Fixes
 -F:    fs/ncpfs/
 +S:    Obsolete
 +F:    drivers/staging/ncpfs/
  
  NCR 5380 SCSI DRIVERS
  M:    Finn Thain <fthain@telegraphics.com.au>
@@@ -9650,11 -9598,6 +9650,11 @@@ NETWORKING [WIRELESS
  L:    linux-wireless@vger.kernel.org
  Q:    http://patchwork.kernel.org/project/linux-wireless/list/
  
 +NETDEVSIM
 +M:    Jakub Kicinski <jakub.kicinski@netronome.com>
 +S:    Maintained
 +F:    drivers/net/netdevsim/*
 +
  NETXEN (1/10) GbE SUPPORT
  M:    Manish Chopra <manish.chopra@cavium.com>
  M:    Rahul Verma <rahul.verma@cavium.com>
@@@ -9696,8 -9639,8 +9696,8 @@@ F:      include/uapi/linux/sunrpc
  NILFS2 FILESYSTEM
  M:    Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
  L:    linux-nilfs@vger.kernel.org
 -W:    http://nilfs.sourceforge.net/
 -W:    http://nilfs.osdn.jp/
 +W:    https://nilfs.sourceforge.io/
 +W:    https://nilfs.osdn.jp/
  T:    git git://github.com/konis/nilfs2.git
  S:    Supported
  F:    Documentation/filesystems/nilfs2.txt
@@@ -9801,15 -9744,6 +9801,15 @@@ S:    Supporte
  F:    Documentation/filesystems/ntfs.txt
  F:    fs/ntfs/
  
 +NUBUS SUBSYSTEM
 +M:    Finn Thain <fthain@telegraphics.com.au>
 +L:    linux-m68k@lists.linux-m68k.org
 +S:    Maintained
 +F:    arch/*/include/asm/nubus.h
 +F:    drivers/nubus/
 +F:    include/linux/nubus.h
 +F:    include/uapi/linux/nubus.h
 +
  NVIDIA (rivafb and nvidiafb) FRAMEBUFFER DRIVER
  M:    Antonino Daplas <adaplas@gmail.com>
  L:    linux-fbdev@vger.kernel.org
@@@ -9870,7 -9804,6 +9870,7 @@@ NXP TFA9879 DRIVE
  M:    Peter Rosin <peda@axentia.se>
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
  S:    Maintained
 +F:    Documentation/devicetree/bindings/sound/tfa9879.txt
  F:    sound/soc/codecs/tfa9879*
  
  NXP-NCI NFC DRIVER
@@@ -10202,7 -10135,7 +10202,7 @@@ F:   drivers/irqchip/irq-ompic.
  F:    drivers/irqchip/irq-or1k-*
  
  OPENVSWITCH
 -M:    Pravin Shelar <pshelar@nicira.com>
 +M:    Pravin B Shelar <pshelar@ovn.org>
  L:    netdev@vger.kernel.org
  L:    dev@openvswitch.org
  W:    http://openvswitch.org
@@@ -10957,7 -10890,6 +10957,7 @@@ F:   include/linux/pm.
  F:    include/linux/pm_*
  F:    include/linux/powercap.h
  F:    drivers/powercap/
 +F:    kernel/configs/nopm.config
  
  POWER STATE COORDINATION INTERFACE (PSCI)
  M:    Mark Rutland <mark.rutland@arm.com>
@@@ -11252,8 -11184,7 +11252,8 @@@ S:   Maintaine
  F:    drivers/firmware/qemu_fw_cfg.c
  
  QIB DRIVER
 -M:    Mike Marciniszyn <infinipath@intel.com>
 +M:    Dennis Dalessandro <dennis.dalessandro@intel.com>
 +M:    Mike Marciniszyn <mike.marciniszyn@intel.com>
  L:    linux-rdma@vger.kernel.org
  S:    Supported
  F:    drivers/infiniband/hw/qib/
@@@ -11280,6 -11211,7 +11280,6 @@@ F:   include/linux/qed
  F:    drivers/net/ethernet/qlogic/qede/
  
  QLOGIC QL4xxx RDMA DRIVER
 -M:    Ram Amrani <Ram.Amrani@cavium.com>
  M:    Michal Kalderon <Michal.Kalderon@cavium.com>
  M:    Ariel Elior <Ariel.Elior@cavium.com>
  L:    linux-rdma@vger.kernel.org
@@@ -11518,6 -11450,15 +11518,6 @@@ L:  linux-wireless@vger.kernel.or
  S:    Orphan
  F:    drivers/net/wireless/ray*
  
 -RCUTORTURE MODULE
 -M:    Josh Triplett <josh@joshtriplett.org>
 -M:    "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
 -L:    linux-kernel@vger.kernel.org
 -S:    Supported
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
 -F:    Documentation/RCU/torture.txt
 -F:    kernel/rcu/rcutorture.c
 -
  RCUTORTURE TEST FRAMEWORK
  M:    "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
  M:    Josh Triplett <josh@joshtriplett.org>
@@@ -11541,7 -11482,6 +11541,7 @@@ F:   drivers/net/ethernet/rdc/r6040.
  
  RDMAVT - RDMA verbs software
  M:    Dennis Dalessandro <dennis.dalessandro@intel.com>
 +M:    Mike Marciniszyn <mike.marciniszyn@intel.com>
  L:    linux-rdma@vger.kernel.org
  S:    Supported
  F:    drivers/infiniband/sw/rdmavt
@@@ -11711,8 -11651,8 +11711,8 @@@ F:   drivers/mtd/nand/r852.
  RISC-V ARCHITECTURE
  M:    Palmer Dabbelt <palmer@sifive.com>
  M:    Albert Ou <albert@sifive.com>
 -L:    patches@groups.riscv.org
 -T:    git https://github.com/riscv/riscv-linux
 +L:    linux-riscv@lists.infradead.org
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/palmer/riscv-linux.git
  S:    Supported
  F:    arch/riscv/
  K:    riscv
@@@ -11819,13 -11759,15 +11819,13 @@@ T:        git git://git.kernel.org/pub/scm/lin
  S:    Maintained
  F:    drivers/net/wireless/realtek/rtl818x/rtl8187/
  
 -RTL8192CE WIRELESS DRIVER
 -M:    Larry Finger <Larry.Finger@lwfinger.net>
 -M:    Chaoming Li <chaoming_li@realsil.com.cn>
 +REALTEK WIRELESS DRIVER (rtlwifi family)
 +M:    Ping-Ke Shih <pkshih@realtek.com>
  L:    linux-wireless@vger.kernel.org
  W:    http://wireless.kernel.org/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git
  S:    Maintained
  F:    drivers/net/wireless/realtek/rtlwifi/
 -F:    drivers/net/wireless/realtek/rtlwifi/rtl8192ce/
  
  RTL8XXXU WIRELESS DRIVER (rtl8xxxu)
  M:    Jes Sorensen <Jes.Sorensen@gmail.com>
@@@ -11989,13 -11931,6 +11989,13 @@@ S: Maintaine
  F:    drivers/crypto/exynos-rng.c
  F:    Documentation/devicetree/bindings/crypto/samsung,exynos-rng4.txt
  
 +SAMSUNG EXYNOS TRUE RANDOM NUMBER GENERATOR (TRNG) DRIVER
 +M:    Łukasz Stelmach <l.stelmach@samsung.com>
 +L:    linux-samsung-soc@vger.kernel.org
 +S:    Maintained
 +F:    drivers/char/hw_random/exynos-trng.c
 +F:    Documentation/devicetree/bindings/rng/samsung,exynos5250-trng.txt
 +
  SAMSUNG FRAMEBUFFER DRIVER
  M:    Jingoo Han <jingoohan1@gmail.com>
  L:    linux-fbdev@vger.kernel.org
@@@ -12058,7 -11993,6 +12058,7 @@@ F:   drivers/media/i2c/s5k5baf.
  SAMSUNG S5P Security SubSystem (SSS) DRIVER
  M:    Krzysztof Kozlowski <krzk@kernel.org>
  M:    Vladimir Zapolskiy <vz@mleia.com>
 +M:    Kamil Konieczny <k.konieczny@partner.samsung.com>
  L:    linux-crypto@vger.kernel.org
  L:    linux-samsung-soc@vger.kernel.org
  S:    Maintained
@@@ -12299,7 -12233,7 +12299,7 @@@ M:   Security Officers <security@kernel.o
  S:    Supported
  
  SECURITY SUBSYSTEM
 -M:    James Morris <james.l.morris@oracle.com>
 +M:    James Morris <jmorris@namei.org>
  M:    "Serge E. Hallyn" <serge@hallyn.com>
  L:    linux-security-module@vger.kernel.org (suggested Cc:)
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security.git
@@@ -12526,6 -12460,13 +12526,13 @@@ F: lib/siphash.
  F:    lib/test_siphash.c
  F:    include/linux/siphash.h
  
+ SIOX
+ M:    Gavin Schenk <g.schenk@eckelmann.de>
+ M:    Uwe Kleine-König <kernel@pengutronix.de>
+ S:    Supported
+ F:    drivers/siox/*
+ F:    include/trace/events/siox.h
  SIS 190 ETHERNET DRIVER
  M:    Francois Romieu <romieu@fr.zoreil.com>
  L:    netdev@vger.kernel.org
@@@ -12577,6 -12518,14 +12584,14 @@@ T: git git://git.kernel.org/pub/scm/lin
  F:    include/linux/srcu.h
  F:    kernel/rcu/srcu.c
  
+ SERIAL LOW-POWER INTER-CHIP MEDIA BUS (SLIMbus)
+ M:    Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
+ L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
+ S:    Maintained
+ F:    drivers/slimbus/
+ F:    Documentation/devicetree/bindings/slimbus/
+ F:    include/linux/slimbus.h
  SMACK SECURITY MODULE
  M:    Casey Schaufler <casey@schaufler-ca.com>
  L:    linux-security-module@vger.kernel.org
@@@ -12658,12 -12607,6 +12673,12 @@@ F: include/media/soc
  F:    drivers/media/i2c/soc_camera/
  F:    drivers/media/platform/soc_camera/
  
 +SOCIONEXT UNIPHIER SOUND DRIVER
 +M:    Katsuhiro Suzuki <suzuki.katsuhiro@socionext.com>
 +L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
 +S:    Maintained
 +F:    sound/soc/uniphier/
 +
  SOEKRIS NET48XX LED SUPPORT
  M:    Chris Boot <bootc@bootc.net>
  S:    Maintained
@@@ -12688,15 -12631,6 +12703,15 @@@ L: linux-media@vger.kernel.or
  S:    Supported
  F:    drivers/media/pci/solo6x10/
  
 +SOFTWARE DELEGATED EXCEPTION INTERFACE (SDEI)
 +M:    James Morse <james.morse@arm.com>
 +L:    linux-arm-kernel@lists.infradead.org
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/arm/firmware/sdei.txt
 +F:    drivers/firmware/arm_sdei.c
 +F:    include/linux/sdei.h
 +F:    include/uapi/linux/sdei.h
 +
  SOFTWARE RAID (Multiple Disks) SUPPORT
  M:    Shaohua Li <shli@kernel.org>
  L:    linux-raid@vger.kernel.org
@@@ -12709,13 -12643,6 +12724,13 @@@ F: drivers/md/raid
  F:    include/linux/raid/
  F:    include/uapi/linux/raid/
  
 +SOCIONEXT (SNI) NETSEC NETWORK DRIVER
 +M:    Jassi Brar <jaswinder.singh@linaro.org>
 +L:    netdev@vger.kernel.org
 +S:    Maintained
 +F:    drivers/net/ethernet/socionext/netsec.c
 +F:    Documentation/devicetree/bindings/net/socionext-netsec.txt
 +
  SONIC NETWORK DRIVER
  M:    Thomas Bogendoerfer <tsbogend@alpha.franken.de>
  L:    netdev@vger.kernel.org
@@@ -12802,6 -12729,16 +12817,16 @@@ F: Documentation/sound/alsa/soc
  F:    sound/soc/
  F:    include/sound/soc*
  
+ SOUNDWIRE SUBSYSTEM
+ M:    Vinod Koul <vinod.koul@intel.com>
+ M:    Sanyog Kale <sanyog.r.kale@intel.com>
+ R:    Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
+ L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
+ S:    Supported
+ F:    Documentation/driver-api/soundwire/
+ F:    drivers/soundwire/
+ F:    include/linux/soundwire/
  SP2 MEDIA DRIVER
  M:    Olli Salonen <olli.salonen@iki.fi>
  L:    linux-media@vger.kernel.org
@@@ -12868,7 -12805,7 +12893,7 @@@ L:   linux-mtd@lists.infradead.or
  W:    http://www.linux-mtd.infradead.org/
  Q:    http://patchwork.ozlabs.org/project/linux-mtd/list/
  T:    git git://git.infradead.org/linux-mtd.git spi-nor/fixes
 -T:    git git://git.infradead.org/l2-mtd.git spi-nor/next
 +T:    git git://git.infradead.org/linux-mtd.git spi-nor/next
  S:    Maintained
  F:    drivers/mtd/spi-nor/
  F:    include/linux/mtd/spi-nor.h
@@@ -13121,7 -13058,7 +13146,7 @@@ F:   arch/x86/boot/video
  
  SWIOTLB SUBSYSTEM
  M:    Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
 -L:    linux-kernel@vger.kernel.org
 +L:    iommu@lists.linux-foundation.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/konrad/swiotlb.git
  S:    Supported
  F:    lib/swiotlb.c
@@@ -13186,11 -13123,6 +13211,11 @@@ S: Supporte
  F:    drivers/reset/reset-axs10x.c
  F:    Documentation/devicetree/bindings/reset/snps,axs10x-reset.txt
  
 +SYNOPSYS DESIGNWARE 8250 UART DRIVER
 +R:    Andy Shevchenko <andriy.shevchenko@linux.intel.com>
 +S:    Maintained
 +F:    drivers/tty/serial/8250/8250_dw.c
 +
  SYNOPSYS DESIGNWARE APB GPIO DRIVER
  M:    Hoan Tran <hotran@apm.com>
  L:    linux-gpio@vger.kernel.org
@@@ -13860,18 -13792,6 +13885,18 @@@ L: platform-driver-x86@vger.kernel.or
  S:    Maintained
  F:    drivers/platform/x86/topstar-laptop.c
  
 +TORTURE-TEST MODULES
 +M:    Davidlohr Bueso <dave@stgolabs.net>
 +M:    "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
 +M:    Josh Triplett <josh@joshtriplett.org>
 +L:    linux-kernel@vger.kernel.org
 +S:    Supported
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
 +F:    Documentation/RCU/torture.txt
 +F:    kernel/torture.c
 +F:    kernel/rcu/rcutorture.c
 +F:    kernel/locking/locktorture.c
 +
  TOSHIBA ACPI EXTRAS DRIVER
  M:    Azael Avalos <coproscefalo@gmail.com>
  L:    platform-driver-x86@vger.kernel.org
@@@ -13914,10 -13834,9 +13939,10 @@@ F: drivers/platform/x86/toshiba-wmi.
  TPM DEVICE DRIVER
  M:    Peter Huewe <peterhuewe@gmx.de>
  M:    Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
 -R:    Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
 +R:    Jason Gunthorpe <jgg@ziepe.ca>
  L:    linux-integrity@vger.kernel.org
  Q:    https://patchwork.kernel.org/project/linux-integrity/list/
 +W:    https://kernsec.org/wiki/index.php/Linux_Kernel_Integrity
  T:    git git://git.infradead.org/users/jjs/linux-tpmdd.git
  S:    Maintained
  F:    drivers/char/tpm/
@@@ -13956,13 -13875,6 +13981,13 @@@ T: git git://git.kernel.org/pub/scm/lin
  S:    Maintained
  K:    ^Subject:.*(?i)trivial
  
 +TEMPO SEMICONDUCTOR DRIVERS
 +M:    Steven Eckhoff <steven.eckhoff.opensource@gmail.com>
 +S:    Maintained
 +F:    sound/soc/codecs/tscs*.c
 +F:    sound/soc/codecs/tscs*.h
 +F:    Documentation/devicetree/bindings/sound/tscs*.txt
 +
  TTY LAYER
  M:    Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  M:    Jiri Slaby <jslaby@suse.com>
@@@ -14124,8 -14036,6 +14149,8 @@@ UNISYS S-PAR DRIVER
  M:    David Kershner <david.kershner@unisys.com>
  L:    sparmaintainer@unisys.com (Unisys internal)
  S:    Supported
 +F:    include/linux/visorbus.h
 +F:    drivers/visorbus/
  F:    drivers/staging/unisys/
  
  UNIVERSAL FLASH STORAGE HOST CONTROLLER DRIVER
@@@ -14672,6 -14582,15 +14697,15 @@@ S: Maintaine
  F:    drivers/virtio/virtio_input.c
  F:    include/uapi/linux/virtio_input.h
  
+ VIRTUAL BOX GUEST DEVICE DRIVER
+ M:    Hans de Goede <hdegoede@redhat.com>
+ M:    Arnd Bergmann <arnd@arndb.de>
+ M:    Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+ S:    Maintained
+ F:    include/linux/vbox_utils.h
+ F:    include/uapi/linux/vbox*.h
+ F:    drivers/virt/vboxguest/
  VIRTUAL SERIO DEVICE DRIVER
  M:    Stephen Chandler Paul <thatslyude@gmail.com>
  S:    Maintained
@@@ -14763,7 -14682,6 +14797,7 @@@ W:   http://www.slimlogic.co.uk/?p=4
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator.git
  S:    Supported
  F:    Documentation/devicetree/bindings/regulator/
 +F:    Documentation/power/regulator/
  F:    drivers/regulator/
  F:    include/dt-bindings/regulator/
  F:    include/linux/regulator/
@@@ -14861,9 -14779,9 +14895,9 @@@ S:   Maintaine
  F:    drivers/hid/hid-wiimote*
  
  WILOCITY WIL6210 WIRELESS DRIVER
 -M:    Maya Erez <qca_merez@qca.qualcomm.com>
 +M:    Maya Erez <merez@codeaurora.org>
  L:    linux-wireless@vger.kernel.org
 -L:    wil6210@qca.qualcomm.com
 +L:    wil6210@qti.qualcomm.com
  S:    Supported
  W:    http://wireless.kernel.org/en/users/Drivers/wil6210
  F:    drivers/net/wireless/ath/wil6210/
@@@ -14957,12 -14875,6 +14991,12 @@@ F: include/linux/workqueue.
  F:    kernel/workqueue.c
  F:    Documentation/core-api/workqueue.rst
  
 +X-POWERS AXP288 PMIC DRIVERS
 +M:    Hans de Goede <hdegoede@redhat.com>
 +S:    Maintained
 +N:    axp288
 +F:    drivers/acpi/pmic/intel_pmic_xpower.c
 +
  X-POWERS MULTIFUNCTION PMIC DEVICE DRIVERS
  M:    Chen-Yu Tsai <wens@csie.org>
  L:    linux-kernel@vger.kernel.org
@@@ -14980,7 -14892,7 +15014,7 @@@ F:   net/x25
  X86 ARCHITECTURE (32-BIT AND 64-BIT)
  M:    Thomas Gleixner <tglx@linutronix.de>
  M:    Ingo Molnar <mingo@redhat.com>
 -M:    "H. Peter Anvin" <hpa@zytor.com>
 +R:    "H. Peter Anvin" <hpa@zytor.com>
  M:    x86@kernel.org
  L:    linux-kernel@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86/core
@@@ -15090,7 -15002,6 +15124,7 @@@ F:   include/xen/interface/io/vscsiif.
  XEN SWIOTLB SUBSYSTEM
  M:    Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
  L:    xen-devel@lists.xenproject.org (moderated for non-subscribers)
 +L:    iommu@lists.linux-foundation.org
  S:    Supported
  F:    arch/x86/xen/*swiotlb*
  F:    drivers/xen/*swiotlb*
index 8bf450b13d9f53883db9ee89ac6d39913963907e,b623a4288e8b3dfd919ec8e6c2e9e8895e456418..b52af150cbd8e55c8b77b75624534b989d372ee2
@@@ -7,7 -7,6 +7,7 @@@
  #include <linux/nmi.h>
  #include <asm/io.h>
  #include <asm/hyperv.h>
 +#include <asm/nospec-branch.h>
  
  /*
   * The below CPUID leaves are present if VersionAndFeatures.HypervisorPresent
@@@ -187,11 -186,10 +187,11 @@@ static inline u64 hv_do_hypercall(u64 c
                return U64_MAX;
  
        __asm__ __volatile__("mov %4, %%r8\n"
 -                           "call *%5"
 +                           CALL_NOSPEC
                             : "=a" (hv_status), ASM_CALL_CONSTRAINT,
                               "+c" (control), "+d" (input_address)
 -                           :  "r" (output_address), "m" (hv_hypercall_pg)
 +                           :  "r" (output_address),
 +                              THUNK_TARGET(hv_hypercall_pg)
                             : "cc", "memory", "r8", "r9", "r10", "r11");
  #else
        u32 input_address_hi = upper_32_bits(input_address);
        if (!hv_hypercall_pg)
                return U64_MAX;
  
 -      __asm__ __volatile__("call *%7"
 +      __asm__ __volatile__(CALL_NOSPEC
                             : "=A" (hv_status),
                               "+c" (input_address_lo), ASM_CALL_CONSTRAINT
                             : "A" (control),
                               "b" (input_address_hi),
                               "D"(output_address_hi), "S"(output_address_lo),
 -                             "m" (hv_hypercall_pg)
 +                             THUNK_TARGET(hv_hypercall_pg)
                             : "cc", "memory");
  #endif /* !x86_64 */
        return hv_status;
@@@ -229,10 -227,10 +229,10 @@@ static inline u64 hv_do_fast_hypercall8
  
  #ifdef CONFIG_X86_64
        {
 -              __asm__ __volatile__("call *%4"
 +              __asm__ __volatile__(CALL_NOSPEC
                                     : "=a" (hv_status), ASM_CALL_CONSTRAINT,
                                       "+c" (control), "+d" (input1)
 -                                   : "m" (hv_hypercall_pg)
 +                                   : THUNK_TARGET(hv_hypercall_pg)
                                     : "cc", "r8", "r9", "r10", "r11");
        }
  #else
                u32 input1_hi = upper_32_bits(input1);
                u32 input1_lo = lower_32_bits(input1);
  
 -              __asm__ __volatile__ ("call *%5"
 +              __asm__ __volatile__ (CALL_NOSPEC
                                      : "=A"(hv_status),
                                        "+c"(input1_lo),
                                        ASM_CALL_CONSTRAINT
                                      : "A" (control),
                                        "b" (input1_hi),
 -                                      "m" (hv_hypercall_pg)
 +                                      THUNK_TARGET(hv_hypercall_pg)
                                      : "cc", "edi", "esi");
        }
  #endif
@@@ -314,11 -312,11 +314,11 @@@ void hyperv_init(void)
  void hyperv_setup_mmu_ops(void);
  void hyper_alloc_mmu(void);
  void hyperv_report_panic(struct pt_regs *regs, long err);
- bool hv_is_hypercall_page_setup(void);
+ bool hv_is_hyperv_initialized(void);
  void hyperv_cleanup(void);
  #else /* CONFIG_HYPERV */
  static inline void hyperv_init(void) {}
- static inline bool hv_is_hypercall_page_setup(void) { return false; }
+ static inline bool hv_is_hyperv_initialized(void) { return false; }
  static inline void hyperv_cleanup(void) {}
  static inline void hyperv_setup_mmu_ops(void) {}
  #endif /* CONFIG_HYPERV */
diff --combined drivers/Kconfig
index ef5fb8395d76d0c726f2f2ce8c03bde0d9ccb694,02b6fd0864c825e46d4ef36de8f15c1e2bb9ad4e..879dc0604cbacb65a23d948ac3aa3a51cda4cdf0
@@@ -153,6 -153,8 +153,8 @@@ source "drivers/remoteproc/Kconfig
  
  source "drivers/rpmsg/Kconfig"
  
+ source "drivers/soundwire/Kconfig"
  source "drivers/soc/Kconfig"
  
  source "drivers/devfreq/Kconfig"
@@@ -211,6 -213,8 +213,10 @@@ source "drivers/mux/Kconfig
  
  source "drivers/opp/Kconfig"
  
 +source "drivers/visorbus/Kconfig"
 +
+ source "drivers/siox/Kconfig"
+ source "drivers/slimbus/Kconfig"
  endmenu
diff --combined drivers/Makefile
index 7a2330077e4721ae485a4f5e94ac91438d938b83,e09663776d8bc373eef0b217cb4d8d1a715d78eb..7a0438744053dac52a4afc082767621a419ecabe
@@@ -87,6 -87,7 +87,7 @@@ obj-$(CONFIG_MTD)             += mtd
  obj-$(CONFIG_SPI)             += spi/
  obj-$(CONFIG_SPMI)            += spmi/
  obj-$(CONFIG_HSI)             += hsi/
+ obj-$(CONFIG_SLIMBUS)         += slimbus/
  obj-y                         += net/
  obj-$(CONFIG_ATM)             += atm/
  obj-$(CONFIG_FUSION)          += message/
@@@ -157,6 -158,7 +158,7 @@@ obj-$(CONFIG_MAILBOX)              += mailbox
  obj-$(CONFIG_HWSPINLOCK)      += hwspinlock/
  obj-$(CONFIG_REMOTEPROC)      += remoteproc/
  obj-$(CONFIG_RPMSG)           += rpmsg/
+ obj-$(CONFIG_SOUNDWIRE)               += soundwire/
  
  # Virtualization drivers
  obj-$(CONFIG_VIRT_DRIVERS)    += virt/
@@@ -184,4 -186,4 +186,5 @@@ obj-$(CONFIG_FPGA)         += fpga
  obj-$(CONFIG_FSI)             += fsi/
  obj-$(CONFIG_TEE)             += tee/
  obj-$(CONFIG_MULTIPLEXER)     += mux/
 +obj-$(CONFIG_UNISYS_VISORBUS) += visorbus/
+ obj-$(CONFIG_SIOX)            += siox/
diff --combined drivers/android/binder.c
index cc89d0d2b9654a2e44b61b38e1b44cbfb7da8a97,145c062c176dcf87f3a78f0421b72e0be6cfc9d8..d21040c5d343f3fafdd4e97d6bc29bc489aa35db
@@@ -141,7 -141,7 +141,7 @@@ enum 
  };
  static uint32_t binder_debug_mask = BINDER_DEBUG_USER_ERROR |
        BINDER_DEBUG_FAILED_TRANSACTION | BINDER_DEBUG_DEAD_TRANSACTION;
- module_param_named(debug_mask, binder_debug_mask, uint, S_IWUSR | S_IRUGO);
+ module_param_named(debug_mask, binder_debug_mask, uint, 0644);
  
  static char *binder_devices_param = CONFIG_ANDROID_BINDER_DEVICES;
  module_param_named(devices, binder_devices_param, charp, 0444);
@@@ -160,7 -160,7 +160,7 @@@ static int binder_set_stop_on_user_erro
        return ret;
  }
  module_param_call(stop_on_user_error, binder_set_stop_on_user_error,
-       param_get_int, &binder_stop_on_user_error, S_IWUSR | S_IRUGO);
+       param_get_int, &binder_stop_on_user_error, 0644);
  
  #define binder_debug(mask, x...) \
        do { \
@@@ -249,7 -249,7 +249,7 @@@ static struct binder_transaction_log_en
        unsigned int cur = atomic_inc_return(&log->cur);
  
        if (cur >= ARRAY_SIZE(log->entry))
-               log->full = 1;
+               log->full = true;
        e = &log->entry[cur % ARRAY_SIZE(log->entry)];
        WRITE_ONCE(e->debug_id_done, 0);
        /*
@@@ -493,8 -493,6 +493,6 @@@ enum binder_deferred_state 
   *                        (protected by @inner_lock)
   * @todo:                 list of work for this process
   *                        (protected by @inner_lock)
-  * @wait:                 wait queue head to wait for proc work
-  *                        (invariant after initialized)
   * @stats:                per-process binder statistics
   *                        (atomics, no lock needed)
   * @delivered_death:      list of delivered death notification
@@@ -537,7 -535,6 +535,6 @@@ struct binder_proc 
        bool is_dead;
  
        struct list_head todo;
-       wait_queue_head_t wait;
        struct binder_stats stats;
        struct list_head delivered_death;
        int max_threads;
@@@ -579,6 -576,8 +576,8 @@@ enum 
   *                        (protected by @proc->inner_lock)
   * @todo:                 list of work to do for this thread
   *                        (protected by @proc->inner_lock)
+  * @process_todo:         whether work in @todo should be processed
+  *                        (protected by @proc->inner_lock)
   * @return_error:         transaction errors reported by this thread
   *                        (only accessed by this thread)
   * @reply_error:          transaction errors reported by target thread
@@@ -604,6 -603,7 +603,7 @@@ struct binder_thread 
        bool looper_need_return; /* can be written by other thread */
        struct binder_transaction *transaction_stack;
        struct list_head todo;
+       bool process_todo;
        struct binder_error return_error;
        struct binder_error reply_error;
        wait_queue_head_t wait;
@@@ -789,6 -789,16 +789,16 @@@ static bool binder_worklist_empty(struc
        return ret;
  }
  
+ /**
+  * binder_enqueue_work_ilocked() - Add an item to the work list
+  * @work:         struct binder_work to add to list
+  * @target_list:  list to add work to
+  *
+  * Adds the work to the specified list. Asserts that work
+  * is not already on a list.
+  *
+  * Requires the proc->inner_lock to be held.
+  */
  static void
  binder_enqueue_work_ilocked(struct binder_work *work,
                           struct list_head *target_list)
  }
  
  /**
-  * binder_enqueue_work() - Add an item to the work list
-  * @proc:         binder_proc associated with list
+  * binder_enqueue_deferred_thread_work_ilocked() - Add deferred thread work
+  * @thread:       thread to queue work to
   * @work:         struct binder_work to add to list
-  * @target_list:  list to add work to
   *
-  * Adds the work to the specified list. Asserts that work
-  * is not already on a list.
+  * Adds the work to the todo list of the thread. Doesn't set the process_todo
+  * flag, which means that (if it wasn't already set) the thread will go to
+  * sleep without handling this work when it calls read.
+  *
+  * Requires the proc->inner_lock to be held.
   */
  static void
- binder_enqueue_work(struct binder_proc *proc,
-                   struct binder_work *work,
-                   struct list_head *target_list)
+ binder_enqueue_deferred_thread_work_ilocked(struct binder_thread *thread,
+                                           struct binder_work *work)
  {
-       binder_inner_proc_lock(proc);
-       binder_enqueue_work_ilocked(work, target_list);
-       binder_inner_proc_unlock(proc);
+       binder_enqueue_work_ilocked(work, &thread->todo);
+ }
+ /**
+  * binder_enqueue_thread_work_ilocked() - Add an item to the thread work list
+  * @thread:       thread to queue work to
+  * @work:         struct binder_work to add to list
+  *
+  * Adds the work to the todo list of the thread, and enables processing
+  * of the todo queue.
+  *
+  * Requires the proc->inner_lock to be held.
+  */
+ static void
+ binder_enqueue_thread_work_ilocked(struct binder_thread *thread,
+                                  struct binder_work *work)
+ {
+       binder_enqueue_work_ilocked(work, &thread->todo);
+       thread->process_todo = true;
+ }
+ /**
+  * binder_enqueue_thread_work() - Add an item to the thread work list
+  * @thread:       thread to queue work to
+  * @work:         struct binder_work to add to list
+  *
+  * Adds the work to the todo list of the thread, and enables processing
+  * of the todo queue.
+  */
+ static void
+ binder_enqueue_thread_work(struct binder_thread *thread,
+                          struct binder_work *work)
+ {
+       binder_inner_proc_lock(thread->proc);
+       binder_enqueue_thread_work_ilocked(thread, work);
+       binder_inner_proc_unlock(thread->proc);
  }
  
  static void
@@@ -940,7 -984,7 +984,7 @@@ err
  static bool binder_has_work_ilocked(struct binder_thread *thread,
                                    bool do_proc_work)
  {
-       return !binder_worklist_empty_ilocked(&thread->todo) ||
+       return thread->process_todo ||
                thread->looper_need_return ||
                (do_proc_work &&
                 !binder_worklist_empty_ilocked(&thread->proc->todo));
@@@ -1228,6 -1272,17 +1272,17 @@@ static int binder_inc_node_nilocked(str
                        node->local_strong_refs++;
                if (!node->has_strong_ref && target_list) {
                        binder_dequeue_work_ilocked(&node->work);
+                       /*
+                        * Note: this function is the only place where we queue
+                        * directly to a thread->todo without using the
+                        * corresponding binder_enqueue_thread_work() helper
+                        * functions; in this case it's ok to not set the
+                        * process_todo flag, since we know this node work will
+                        * always be followed by other work that starts queue
+                        * processing: in case of synchronous transactions, a
+                        * BR_REPLY or BR_ERROR; in case of oneway
+                        * transactions, a BR_TRANSACTION_COMPLETE.
+                        */
                        binder_enqueue_work_ilocked(&node->work, target_list);
                }
        } else {
                                        node->debug_id);
                                return -EINVAL;
                        }
+                       /*
+                        * See comment above
+                        */
                        binder_enqueue_work_ilocked(&node->work, target_list);
                }
        }
@@@ -1928,9 -1986,9 +1986,9 @@@ static void binder_send_failed_reply(st
                        binder_pop_transaction_ilocked(target_thread, t);
                        if (target_thread->reply_error.cmd == BR_OK) {
                                target_thread->reply_error.cmd = error_code;
-                               binder_enqueue_work_ilocked(
-                                       &target_thread->reply_error.work,
-                                       &target_thread->todo);
+                               binder_enqueue_thread_work_ilocked(
+                                       target_thread,
+                                       &target_thread->reply_error.work);
                                wake_up_interruptible(&target_thread->wait);
                        } else {
                                WARN(1, "Unexpected reply error: %u\n",
@@@ -2569,20 -2627,18 +2627,18 @@@ static bool binder_proc_transaction(str
                                    struct binder_proc *proc,
                                    struct binder_thread *thread)
  {
-       struct list_head *target_list = NULL;
        struct binder_node *node = t->buffer->target_node;
        bool oneway = !!(t->flags & TF_ONE_WAY);
-       bool wakeup = true;
+       bool pending_async = false;
  
        BUG_ON(!node);
        binder_node_lock(node);
        if (oneway) {
                BUG_ON(thread);
                if (node->has_async_transaction) {
-                       target_list = &node->async_todo;
-                       wakeup = false;
+                       pending_async = true;
                } else {
-                       node->has_async_transaction = 1;
+                       node->has_async_transaction = true;
                }
        }
  
                return false;
        }
  
-       if (!thread && !target_list)
+       if (!thread && !pending_async)
                thread = binder_select_thread_ilocked(proc);
  
        if (thread)
-               target_list = &thread->todo;
-       else if (!target_list)
-               target_list = &proc->todo;
+               binder_enqueue_thread_work_ilocked(thread, &t->work);
+       else if (!pending_async)
+               binder_enqueue_work_ilocked(&t->work, &proc->todo);
        else
-               BUG_ON(target_list != &node->async_todo);
+               binder_enqueue_work_ilocked(&t->work, &node->async_todo);
  
-       binder_enqueue_work_ilocked(&t->work, target_list);
-       if (wakeup)
+       if (!pending_async)
                binder_wakeup_thread_ilocked(proc, thread, !oneway /* sync */);
  
        binder_inner_proc_unlock(proc);
@@@ -3101,10 -3155,10 +3155,10 @@@ static void binder_transaction(struct b
                }
        }
        tcomplete->type = BINDER_WORK_TRANSACTION_COMPLETE;
-       binder_enqueue_work(proc, tcomplete, &thread->todo);
        t->work.type = BINDER_WORK_TRANSACTION;
  
        if (reply) {
+               binder_enqueue_thread_work(thread, tcomplete);
                binder_inner_proc_lock(target_proc);
                if (target_thread->is_dead) {
                        binder_inner_proc_unlock(target_proc);
                }
                BUG_ON(t->buffer->async_transaction != 0);
                binder_pop_transaction_ilocked(target_thread, in_reply_to);
-               binder_enqueue_work_ilocked(&t->work, &target_thread->todo);
+               binder_enqueue_thread_work_ilocked(target_thread, &t->work);
                binder_inner_proc_unlock(target_proc);
                wake_up_interruptible_sync(&target_thread->wait);
                binder_free_transaction(in_reply_to);
        } else if (!(t->flags & TF_ONE_WAY)) {
                BUG_ON(t->buffer->async_transaction != 0);
                binder_inner_proc_lock(proc);
+               /*
+                * Defer the TRANSACTION_COMPLETE, so we don't return to
+                * userspace immediately; this allows the target process to
+                * immediately start processing this transaction, reducing
+                * latency. We will then return the TRANSACTION_COMPLETE when
+                * the target replies (or there is an error).
+                */
+               binder_enqueue_deferred_thread_work_ilocked(thread, tcomplete);
                t->need_reply = 1;
                t->from_parent = thread->transaction_stack;
                thread->transaction_stack = t;
        } else {
                BUG_ON(target_node == NULL);
                BUG_ON(t->buffer->async_transaction != 1);
+               binder_enqueue_thread_work(thread, tcomplete);
                if (!binder_proc_transaction(t, target_proc, NULL))
                        goto err_dead_proc_or_thread;
        }
@@@ -3210,15 -3273,11 +3273,11 @@@ err_invalid_target_handle
        BUG_ON(thread->return_error.cmd != BR_OK);
        if (in_reply_to) {
                thread->return_error.cmd = BR_TRANSACTION_COMPLETE;
-               binder_enqueue_work(thread->proc,
-                                   &thread->return_error.work,
-                                   &thread->todo);
+               binder_enqueue_thread_work(thread, &thread->return_error.work);
                binder_send_failed_reply(in_reply_to, return_error);
        } else {
                thread->return_error.cmd = return_error;
-               binder_enqueue_work(thread->proc,
-                                   &thread->return_error.work,
-                                   &thread->todo);
+               binder_enqueue_thread_work(thread, &thread->return_error.work);
        }
  }
  
@@@ -3424,7 -3483,7 +3483,7 @@@ static int binder_thread_write(struct b
                                w = binder_dequeue_work_head_ilocked(
                                                &buf_node->async_todo);
                                if (!w) {
-                                       buf_node->has_async_transaction = 0;
+                                       buf_node->has_async_transaction = false;
                                } else {
                                        binder_enqueue_work_ilocked(
                                                        w, &proc->todo);
                                        WARN_ON(thread->return_error.cmd !=
                                                BR_OK);
                                        thread->return_error.cmd = BR_ERROR;
-                                       binder_enqueue_work(
-                                               thread->proc,
-                                               &thread->return_error.work,
-                                               &thread->todo);
+                                       binder_enqueue_thread_work(
+                                               thread,
+                                               &thread->return_error.work);
                                        binder_debug(
                                                BINDER_DEBUG_FAILED_TRANSACTION,
                                                "%d:%d BC_REQUEST_DEATH_NOTIFICATION failed\n",
                                        if (thread->looper &
                                            (BINDER_LOOPER_STATE_REGISTERED |
                                             BINDER_LOOPER_STATE_ENTERED))
-                                               binder_enqueue_work_ilocked(
-                                                               &death->work,
-                                                               &thread->todo);
+                                               binder_enqueue_thread_work_ilocked(
+                                                               thread,
+                                                               &death->work);
                                        else {
                                                binder_enqueue_work_ilocked(
                                                                &death->work,
                                if (thread->looper &
                                        (BINDER_LOOPER_STATE_REGISTERED |
                                         BINDER_LOOPER_STATE_ENTERED))
-                                       binder_enqueue_work_ilocked(
-                                               &death->work, &thread->todo);
+                                       binder_enqueue_thread_work_ilocked(
+                                               thread, &death->work);
                                else {
                                        binder_enqueue_work_ilocked(
                                                        &death->work,
@@@ -3837,6 -3895,8 +3895,8 @@@ retry
                        break;
                }
                w = binder_dequeue_work_head_ilocked(list);
+               if (binder_worklist_empty_ilocked(&thread->todo))
+                       thread->process_todo = false;
  
                switch (w->type) {
                case BINDER_WORK_TRANSACTION: {
@@@ -4302,6 -4362,18 +4362,18 @@@ static int binder_thread_release(struc
                if (t)
                        spin_lock(&t->lock);
        }
+       /*
+        * If this thread used poll, make sure we remove the waitqueue
+        * from any epoll data structures holding it with POLLFREE.
+        * waitqueue_active() is safe to use here because we're holding
+        * the inner lock.
+        */
+       if ((thread->looper & BINDER_LOOPER_STATE_POLL) &&
+           waitqueue_active(&thread->wait)) {
+               wake_up_poll(&thread->wait, POLLHUP | POLLFREE);
+       }
        binder_inner_proc_unlock(thread->proc);
  
        if (send_reply)
        return active_transactions;
  }
  
 -static unsigned int binder_poll(struct file *filp,
 +static __poll_t binder_poll(struct file *filp,
                                struct poll_table_struct *wait)
  {
        struct binder_proc *proc = filp->private_data;
@@@ -4646,7 -4718,7 +4718,7 @@@ static int binder_mmap(struct file *fil
        return 0;
  
  err_bad_arg:
-       pr_err("binder_mmap: %d %lx-%lx %s failed %d\n",
+       pr_err("%s: %d %lx-%lx %s failed %d\n", __func__,
               proc->pid, vma->vm_start, vma->vm_end, failure_string, ret);
        return ret;
  }
@@@ -4656,7 -4728,7 +4728,7 @@@ static int binder_open(struct inode *no
        struct binder_proc *proc;
        struct binder_device *binder_dev;
  
-       binder_debug(BINDER_DEBUG_OPEN_CLOSE, "binder_open: %d:%d\n",
+       binder_debug(BINDER_DEBUG_OPEN_CLOSE, "%s: %d:%d\n", __func__,
                     current->group_leader->pid, current->pid);
  
        proc = kzalloc(sizeof(*proc), GFP_KERNEL);
                 * anyway print all contexts that a given PID has, so this
                 * is not a problem.
                 */
-               proc->debugfs_entry = debugfs_create_file(strbuf, S_IRUGO,
+               proc->debugfs_entry = debugfs_create_file(strbuf, 0444,
                        binder_debugfs_dir_entry_proc,
                        (void *)(unsigned long)proc->pid,
                        &binder_proc_fops);
@@@ -5524,7 -5596,9 +5596,9 @@@ static int __init binder_init(void
        struct binder_device *device;
        struct hlist_node *tmp;
  
-       binder_alloc_shrinker_init();
+       ret = binder_alloc_shrinker_init();
+       if (ret)
+               return ret;
  
        atomic_set(&binder_transaction_log.cur, ~0U);
        atomic_set(&binder_transaction_log_failed.cur, ~0U);
  
        if (binder_debugfs_dir_entry_root) {
                debugfs_create_file("state",
-                                   S_IRUGO,
+                                   0444,
                                    binder_debugfs_dir_entry_root,
                                    NULL,
                                    &binder_state_fops);
                debugfs_create_file("stats",
-                                   S_IRUGO,
+                                   0444,
                                    binder_debugfs_dir_entry_root,
                                    NULL,
                                    &binder_stats_fops);
                debugfs_create_file("transactions",
-                                   S_IRUGO,
+                                   0444,
                                    binder_debugfs_dir_entry_root,
                                    NULL,
                                    &binder_transactions_fops);
                debugfs_create_file("transaction_log",
-                                   S_IRUGO,
+                                   0444,
                                    binder_debugfs_dir_entry_root,
                                    &binder_transaction_log,
                                    &binder_transaction_log_fops);
                debugfs_create_file("failed_transaction_log",
-                                   S_IRUGO,
+                                   0444,
                                    binder_debugfs_dir_entry_root,
                                    &binder_transaction_log_failed,
                                    &binder_transaction_log_fops);
index 067073e4beb1ce131791b2dbb129d41d38a31288,cc162b48c6d7706070cc4ded11046acfefe31822..aff34c0c2a3e17ca21cbda19ec235b4d01b2951b
@@@ -6,6 -6,7 +6,6 @@@
  config REGMAP
        default y if (REGMAP_I2C || REGMAP_SPI || REGMAP_SPMI || REGMAP_W1 || REGMAP_AC97 || REGMAP_MMIO || REGMAP_IRQ)
        select IRQ_DOMAIN if REGMAP_IRQ
 -      select REGMAP_HWSPINLOCK if HWSPINLOCK=y
        bool
  
  config REGCACHE_COMPRESSED
@@@ -20,6 -21,10 +20,10 @@@ config REGMAP_I2
        tristate
        depends on I2C
  
+ config REGMAP_SLIMBUS
+       tristate
+       depends on SLIMBUS
  config REGMAP_SPI
        tristate
        depends on SPI
@@@ -38,6 -43,5 +42,6 @@@ config REGMAP_MMI
  config REGMAP_IRQ
        bool
  
 -config REGMAP_HWSPINLOCK
 -      bool
 +config REGMAP_SOUNDWIRE
 +      tristate
 +      depends on SOUNDWIRE_BUS
index 22d263cca39529e76843f6ceb4fe979d824928e6,63dec9222892fff95b5d1c2f366cd3d26731951b..5ed0023fabda270aa4bc4247e8a42048d9a52eb7
@@@ -8,9 -8,9 +8,10 @@@ obj-$(CONFIG_REGCACHE_COMPRESSED) += re
  obj-$(CONFIG_DEBUG_FS) += regmap-debugfs.o
  obj-$(CONFIG_REGMAP_AC97) += regmap-ac97.o
  obj-$(CONFIG_REGMAP_I2C) += regmap-i2c.o
+ obj-$(CONFIG_REGMAP_SLIMBUS) += regmap-slimbus.o
  obj-$(CONFIG_REGMAP_SPI) += regmap-spi.o
  obj-$(CONFIG_REGMAP_SPMI) += regmap-spmi.o
  obj-$(CONFIG_REGMAP_MMIO) += regmap-mmio.o
  obj-$(CONFIG_REGMAP_IRQ) += regmap-irq.o
  obj-$(CONFIG_REGMAP_W1) += regmap-w1.o
 +obj-$(CONFIG_REGMAP_SOUNDWIRE) += regmap-sdw.o
diff --combined drivers/misc/Kconfig
index 7c0fa24f9067dcc492ceb1f45629ab734f87a6b2,b20df970cbca17613ebb36200be395a697001076..6722073e339baea8863db71c217c2565212aa52a
@@@ -53,7 -53,7 +53,7 @@@ config AD525X_DPOT_SP
  
  config ATMEL_TCLIB
        bool "Atmel AT32/AT91 Timer/Counter Library"
-       depends on (AVR32 || ARCH_AT91)
+       depends on ARCH_AT91
        help
          Select this if you want a library to allocate the Timer/Counter
          blocks found on many Atmel processors.  This facilitates using
@@@ -192,7 -192,7 +192,7 @@@ config ICS932S40
  
  config ATMEL_SSC
        tristate "Device driver for Atmel SSC peripheral"
-       depends on HAS_IOMEM && (AVR32 || ARCH_AT91 || COMPILE_TEST)
+       depends on HAS_IOMEM && (ARCH_AT91 || COMPILE_TEST)
        ---help---
          This option enables device driver support for Atmel Synchronized
          Serial Communication peripheral (SSC).
@@@ -496,10 -496,6 +496,10 @@@ config PCI_ENDPOINT_TES
             Enable this configuration option to enable the host side test driver
             for PCI Endpoint.
  
 +config MISC_RTSX
 +      tristate
 +      default MISC_RTSX_PCI || MISC_RTSX_USB
 +
  source "drivers/misc/c2port/Kconfig"
  source "drivers/misc/eeprom/Kconfig"
  source "drivers/misc/cb710/Kconfig"
@@@ -512,5 -508,4 +512,5 @@@ source "drivers/misc/mic/Kconfig
  source "drivers/misc/genwqe/Kconfig"
  source "drivers/misc/echo/Kconfig"
  source "drivers/misc/cxl/Kconfig"
 +source "drivers/misc/cardreader/Kconfig"
  endmenu
diff --combined drivers/misc/hpilo.c
index 95ce3e891b1bdb6d403c1a8b452d62fc65ac1c15,cfdf0524b12eecb2419ea2efe1839419f454f1fe..35693c0a78e28cf916dacf9a80f7e628c2508b98
@@@ -1,12 -1,9 +1,9 @@@
+ // SPDX-License-Identifier: GPL-2.0
  /*
   * Driver for the HP iLO management processor.
   *
   * Copyright (C) 2008 Hewlett-Packard Development Company, L.P.
   *    David Altobelli <david.altobelli@hpe.com>
-  *
-  * This program is free software; you can redistribute it and/or modify
-  * it under the terms of the GNU General Public License version 2 as
-  * published by the Free Software Foundation.
   */
  #include <linux/kernel.h>
  #include <linux/types.h>
@@@ -514,7 -511,7 +511,7 @@@ static ssize_t ilo_write(struct file *f
        return err ? -EFAULT : len;
  }
  
 -static unsigned int ilo_poll(struct file *fp, poll_table *wait)
 +static __poll_t ilo_poll(struct file *fp, poll_table *wait)
  {
        struct ccb_data *data = fp->private_data;
        struct ccb *driver_ccb = &data->driver_ccb;
index 4120ed8f0caecf01ed310b1ede2a49a5a5382ed3,27db64ec9efe5de4e38585234e7fbcb8b33d23e7..01d1f2ba7bb82116b7c11c3b0b50f408608c2b5d
@@@ -937,13 -937,10 +937,10 @@@ static long vop_ioctl(struct file *f, u
                    dd.num_vq > MIC_MAX_VRINGS)
                        return -EINVAL;
  
-               dd_config = kzalloc(mic_desc_size(&dd), GFP_KERNEL);
-               if (!dd_config)
-                       return -ENOMEM;
-               if (copy_from_user(dd_config, argp, mic_desc_size(&dd))) {
-                       ret = -EFAULT;
-                       goto free_ret;
-               }
+               dd_config = memdup_user(argp, mic_desc_size(&dd));
+               if (IS_ERR(dd_config))
+                       return PTR_ERR(dd_config);
                /* Ensure desc has not changed between the two reads */
                if (memcmp(&dd, dd_config, sizeof(dd))) {
                        ret = -EINVAL;
@@@ -995,17 -992,12 +992,12 @@@ _unlock_ret
                ret = vop_vdev_inited(vdev);
                if (ret)
                        goto __unlock_ret;
-               buf = kzalloc(vdev->dd->config_len, GFP_KERNEL);
-               if (!buf) {
-                       ret = -ENOMEM;
+               buf = memdup_user(argp, vdev->dd->config_len);
+               if (IS_ERR(buf)) {
+                       ret = PTR_ERR(buf);
                        goto __unlock_ret;
                }
-               if (copy_from_user(buf, argp, vdev->dd->config_len)) {
-                       ret = -EFAULT;
-                       goto done;
-               }
                ret = vop_virtio_config_change(vdev, buf);
- done:
                kfree(buf);
  __unlock_ret:
                mutex_unlock(&vdev->vdev_mutex);
   * in the card->host (TX) path, when userspace is unblocked by poll it
   * must drain all available descriptors or it can stall.
   */
 -static unsigned int vop_poll(struct file *f, poll_table *wait)
 +static __poll_t vop_poll(struct file *f, poll_table *wait)
  {
        struct vop_vdev *vdev = f->private_data;
 -      int mask = 0;
 +      __poll_t mask = 0;
  
        mutex_lock(&vdev->vdev_mutex);
        if (vop_vdev_inited(vdev)) {
diff --combined drivers/mux/core.c
index 6e5cf9d9cd9927f4264e3a01394e2b84d80d7d3b,959d22aaa063c592028d37c19c50129c3a03f343..d1271c1ee23ced2c5da81826ec7fbdac02bd87c6
@@@ -1,13 -1,10 +1,10 @@@
+ // SPDX-License-Identifier: GPL-2.0
  /*
   * Multiplexer subsystem
   *
   * Copyright (C) 2017 Axentia Technologies AB
   *
   * Author: Peter Rosin <peda@axentia.se>
-  *
-  * This program is free software; you can redistribute it and/or modify
-  * it under the terms of the GNU General Public License version 2 as
-  * published by the Free Software Foundation.
   */
  
  #define pr_fmt(fmt) "mux-core: " fmt
@@@ -413,7 -410,6 +410,7 @@@ static int of_dev_node_match(struct dev
        return dev->of_node == data;
  }
  
 +/* Note this function returns a reference to the mux_chip dev. */
  static struct mux_chip *of_find_mux_chip_by_node(struct device_node *np)
  {
        struct device *dev;
@@@ -467,7 -463,6 +464,7 @@@ struct mux_control *mux_control_get(str
            (!args.args_count && (mux_chip->controllers > 1))) {
                dev_err(dev, "%pOF: wrong #mux-control-cells for %pOF\n",
                        np, args.np);
 +              put_device(&mux_chip->dev);
                return ERR_PTR(-EINVAL);
        }
  
        if (controller >= mux_chip->controllers) {
                dev_err(dev, "%pOF: bad mux controller %u specified in %pOF\n",
                        np, controller, args.np);
 +              put_device(&mux_chip->dev);
                return ERR_PTR(-EINVAL);
        }
  
 -      get_device(&mux_chip->dev);
        return &mux_chip->mux[controller];
  }
  EXPORT_SYMBOL_GPL(mux_control_get);
diff --combined include/linux/regmap.h
index 20268b7d500194d43b436f1aa83b8e3a5e42b863,b2207737a159ffbe6e30dfa981c6b6b3d233843a..6a3aeba40e9e402e44293979cc1978d30020e211
@@@ -24,13 -24,13 +24,14 @@@ struct module
  struct device;
  struct i2c_client;
  struct irq_domain;
+ struct slim_device;
  struct spi_device;
  struct spmi_device;
  struct regmap;
  struct regmap_range_cfg;
  struct regmap_field;
  struct snd_ac97;
 +struct sdw_slave;
  
  /* An enum of all the supported cache types */
  enum regcache_type {
@@@ -265,9 -265,6 +266,9 @@@ typedef void (*regmap_unlock)(void *)
   *                field is NULL but precious_table (see below) is not, the
   *                check is performed on such table (a register is precious if
   *                it belongs to one of the ranges specified by precious_table).
 + * @disable_locking: This regmap is either protected by external means or
 + *                   is guaranteed not be be accessed from multiple threads.
 + *                   Don't use any locking mechanisms.
   * @lock:       Optional lock callback (overrides regmap's default lock
   *              function, based on spinlock or mutex).
   * @unlock:     As above for unlocking.
   *                  a read.
   * @write_flag_mask: Mask to be set in the top bytes of the register when doing
   *                   a write. If both read_flag_mask and write_flag_mask are
 - *                   empty the regmap_bus default masks are used.
 + *                   empty and zero_flag_mask is not set the regmap_bus default
 + *                   masks are used.
 + * @zero_flag_mask: If set, read_flag_mask and write_flag_mask are used even
 + *                   if they are both empty.
   * @use_single_rw: If set, converts the bulk read and write operations into
   *                a series of single read and write operations. This is useful
   *                for device that does not support bulk read and write.
   *
   * @ranges: Array of configuration entries for virtual address ranges.
   * @num_ranges: Number of range configuration entries.
 + * @use_hwlock: Indicate if a hardware spinlock should be used.
   * @hwlock_id: Specify the hardware spinlock id.
   * @hwlock_mode: The hardware spinlock mode, should be HWLOCK_IRQSTATE,
   *             HWLOCK_IRQ or 0.
@@@ -341,8 -334,6 +342,8 @@@ struct regmap_config 
        bool (*readable_reg)(struct device *dev, unsigned int reg);
        bool (*volatile_reg)(struct device *dev, unsigned int reg);
        bool (*precious_reg)(struct device *dev, unsigned int reg);
 +
 +      bool disable_locking;
        regmap_lock lock;
        regmap_unlock unlock;
        void *lock_arg;
  
        unsigned long read_flag_mask;
        unsigned long write_flag_mask;
 +      bool zero_flag_mask;
  
        bool use_single_rw;
        bool can_multi_write;
        const struct regmap_range_cfg *ranges;
        unsigned int num_ranges;
  
 +      bool use_hwlock;
        unsigned int hwlock_id;
        unsigned int hwlock_mode;
  };
@@@ -511,6 -500,10 +512,10 @@@ struct regmap *__regmap_init_i2c(struc
                                 const struct regmap_config *config,
                                 struct lock_class_key *lock_key,
                                 const char *lock_name);
+ struct regmap *__regmap_init_slimbus(struct slim_device *slimbus,
+                                const struct regmap_config *config,
+                                struct lock_class_key *lock_key,
+                                const char *lock_name);
  struct regmap *__regmap_init_spi(struct spi_device *dev,
                                 const struct regmap_config *config,
                                 struct lock_class_key *lock_key,
@@@ -536,10 -529,6 +541,10 @@@ struct regmap *__regmap_init_ac97(struc
                                  const struct regmap_config *config,
                                  struct lock_class_key *lock_key,
                                  const char *lock_name);
 +struct regmap *__regmap_init_sdw(struct sdw_slave *sdw,
 +                               const struct regmap_config *config,
 +                               struct lock_class_key *lock_key,
 +                               const char *lock_name);
  
  struct regmap *__devm_regmap_init(struct device *dev,
                                  const struct regmap_bus *bus,
@@@ -577,10 -566,6 +582,10 @@@ struct regmap *__devm_regmap_init_ac97(
                                       const struct regmap_config *config,
                                       struct lock_class_key *lock_key,
                                       const char *lock_name);
 +struct regmap *__devm_regmap_init_sdw(struct sdw_slave *sdw,
 +                               const struct regmap_config *config,
 +                               struct lock_class_key *lock_key,
 +                               const char *lock_name);
  
  /*
   * Wrapper for regmap_init macros to include a unique lockdep key and name
@@@ -635,6 -620,19 +640,19 @@@ int regmap_attach_dev(struct device *de
        __regmap_lockdep_wrapper(__regmap_init_i2c, #config,            \
                                i2c, config)
  
+ /**
+  * regmap_init_slimbus() - Initialise register map
+  *
+  * @slimbus: Device that will be interacted with
+  * @config: Configuration for register map
+  *
+  * The return value will be an ERR_PTR() on error or a valid pointer to
+  * a struct regmap.
+  */
+ #define regmap_init_slimbus(slimbus, config)                          \
+       __regmap_lockdep_wrapper(__regmap_init_slimbus, #config,        \
+                               slimbus, config)
  /**
   * regmap_init_spi() - Initialise register map
   *
                                ac97, config)
  bool regmap_ac97_default_volatile(struct device *dev, unsigned int reg);
  
 +/**
 + * regmap_init_sdw() - Initialise register map
 + *
 + * @sdw: Device that will be interacted with
 + * @config: Configuration for register map
 + *
 + * The return value will be an ERR_PTR() on error or a valid pointer to
 + * a struct regmap.
 + */
 +#define regmap_init_sdw(sdw, config)                                  \
 +      __regmap_lockdep_wrapper(__regmap_init_sdw, #config,            \
 +                              sdw, config)
 +
 +
  /**
   * devm_regmap_init() - Initialise managed register map
   *
        __regmap_lockdep_wrapper(__devm_regmap_init_ac97, #config,      \
                                ac97, config)
  
 +/**
 + * devm_regmap_init_sdw() - Initialise managed register map
 + *
 + * @sdw: Device that will be interacted with
 + * @config: Configuration for register map
 + *
 + * The return value will be an ERR_PTR() on error or a valid pointer
 + * to a struct regmap. The regmap will be automatically freed by the
 + * device management code.
 + */
 +#define devm_regmap_init_sdw(sdw, config)                             \
 +      __regmap_lockdep_wrapper(__devm_regmap_init_sdw, #config,       \
 +                              sdw, config)
 +
  void regmap_exit(struct regmap *map);
  int regmap_reinit_cache(struct regmap *map,
                        const struct regmap_config *config);
diff --combined security/Kconfig
index b0cb9a5f94480d2c5aaf290b31fd15e6c5930ec2,5ea8914817f643ca11463e55043ccf9e38b52b94..3709db95027fecef40d872d4d142cdb9a9aac3cf
@@@ -56,14 -56,13 +56,14 @@@ config SECURITY_NETWOR
  
  config PAGE_TABLE_ISOLATION
        bool "Remove the kernel mapping in user mode"
 +      default y
        depends on X86_64 && !UML
        help
          This feature reduces the number of hardware side channels by
          ensuring that the majority of kernel addresses are not mapped
          into userspace.
  
 -        See Documentation/x86/pagetable-isolation.txt for more details.
 +        See Documentation/x86/pti.txt for more details.
  
  config SECURITY_INFINIBAND
        bool "Infiniband Security Hooks"
@@@ -154,6 -153,7 +154,7 @@@ config HARDENED_USERCOP
        bool "Harden memory copies between kernel and userspace"
        depends on HAVE_HARDENED_USERCOPY_ALLOCATOR
        select BUG
+       imply STRICT_DEVMEM
        help
          This option checks for obviously wrong memory regions when
          copying memory to/from the kernel (via copy_to_user() and