Merge tag 'char-misc-4.19-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregk...
authorLinus Torvalds <torvalds@linux-foundation.org>
Sat, 18 Aug 2018 18:04:51 +0000 (11:04 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 18 Aug 2018 18:04:51 +0000 (11:04 -0700)
Pull char/misc driver updates from Greg KH:
 "Here is the bit set of char/misc drivers for 4.19-rc1

  There is a lot here, much more than normal, seems like everyone is
  writing new driver subsystems these days... Anyway, major things here
  are:

   - new FSI driver subsystem, yet-another-powerpc low-level hardware
     bus

   - gnss, finally an in-kernel GPS subsystem to try to tame all of the
     crazy out-of-tree drivers that have been floating around for years,
     combined with some really hacky userspace implementations. This is
     only for GNSS receivers, but you have to start somewhere, and this
     is great to see.

  Other than that, there are new slimbus drivers, new coresight drivers,
  new fpga drivers, and loads of DT bindings for all of these and
  existing drivers.

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

* tag 'char-misc-4.19-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc: (255 commits)
  android: binder: Rate-limit debug and userspace triggered err msgs
  fsi: sbefifo: Bump max command length
  fsi: scom: Fix NULL dereference
  misc: mic: SCIF Fix scif_get_new_port() error handling
  misc: cxl: changed asterisk position
  genwqe: card_base: Use true and false for boolean values
  misc: eeprom: assignment outside the if statement
  uio: potential double frees if __uio_register_device() fails
  eeprom: idt_89hpesx: clean up an error pointer vs NULL inconsistency
  misc: ti-st: Fix memory leak in the error path of probe()
  android: binder: Show extra_buffers_size in trace
  firmware: vpd: Fix section enabled flag on vpd_section_destroy
  platform: goldfish: Retire pdev_bus
  goldfish: Use dedicated macros instead of manual bit shifting
  goldfish: Add missing includes to goldfish.h
  mux: adgs1408: new driver for Analog Devices ADGS1408/1409 mux
  dt-bindings: mux: add adi,adgs1408
  Drivers: hv: vmbus: Cleanup synic memory free path
  Drivers: hv: vmbus: Remove use of slow_virt_to_phys()
  Drivers: hv: vmbus: Reset the channel callback in vmbus_onoffer_rescind()
  ...

22 files changed:
1  2 
Documentation/devicetree/bindings/vendor-prefixes.txt
Documentation/ioctl/ioctl-number.txt
MAINTAINERS
arch/x86/include/asm/mshyperv.h
drivers/Makefile
drivers/char/mem.c
drivers/crypto/stm32/stm32_crc32.c
drivers/crypto/ux500/hash/hash_core.c
drivers/media/platform/rcar-fcp.c
drivers/net/hyperv/netvsc_drv.c
drivers/perf/arm-ccn.c
drivers/pinctrl/intel/pinctrl-merrifield.c
drivers/pinctrl/uniphier/pinctrl-uniphier-ld11.c
drivers/pinctrl/uniphier/pinctrl-uniphier-ld20.c
drivers/pinctrl/uniphier/pinctrl-uniphier-ld4.c
drivers/pinctrl/uniphier/pinctrl-uniphier-ld6b.c
drivers/pinctrl/uniphier/pinctrl-uniphier-pro4.c
drivers/pinctrl/uniphier/pinctrl-uniphier-pro5.c
drivers/pinctrl/uniphier/pinctrl-uniphier-pxs2.c
drivers/pinctrl/uniphier/pinctrl-uniphier-pxs3.c
drivers/pinctrl/uniphier/pinctrl-uniphier-sld8.c
include/linux/device.h

index f32b79814dd75f93fea2cb25ca794df207b4bbdb,c1a15cccb404ef96d248574bc3e59ad018509d56..2f3620547249696e65e68999468487418cb34088
@@@ -8,7 -8,6 +8,7 @@@ abracon  Abracon Corporatio
  actions       Actions Semiconductor Co., Ltd.
  active-semi   Active-Semi International Inc
  ad    Avionic Design GmbH
 +adafruit      Adafruit Industries, LLC
  adapteva      Adapteva, Inc.
  adaptrum      Adaptrum, Inc.
  adh   AD Holdings Plc.
@@@ -42,7 -41,6 +42,7 @@@ arrow Arrow Electronic
  artesyn       Artesyn Embedded Technologies Inc.
  asahi-kasei   Asahi Kasei Corp.
  aspeed        ASPEED Technology Inc.
 +asus  AsusTek Computer Inc.
  atlas Atlas Scientific LLC
  atmel Atmel Corporation
  auo   AU Optronics Corporation
@@@ -55,7 -53,6 +55,7 @@@ axentia       Axentia Technologies A
  axis  Axis Communications AB
  bananapi BIPAI KEJI LIMITED
  bhf   Beckhoff Automation GmbH & Co. KG
 +bitmain       Bitmain Technologies
  boe   BOE Technology Group Co., Ltd.
  bosch Bosch Sensortec GmbH
  boundary      Boundary Devices Inc.
@@@ -88,7 -85,6 +88,7 @@@ cubietech     Cubietech, Ltd
  cypress       Cypress Semiconductor Corporation
  cznic CZ.NIC, z.s.p.o.
  dallas        Maxim Integrated Products (formerly Dallas Semiconductor)
 +dataimage     DataImage, Inc.
  davicom       DAVICOM Semiconductor, Inc.
  delta Delta Electronics, Inc.
  denx  Denx Software Engineering
@@@ -97,7 -93,6 +97,7 @@@ dh    DH electronics Gmb
  digi  Digi International Inc.
  digilent      Diglent, Inc.
  dioo  Dioo Microcircuit Co., Ltd
 +dlc   DLC Display Co., Ltd.
  dlg   Dialog Semiconductor
  dlink D-Link Corporation
  dmo   Data Modul AG
@@@ -129,6 -124,7 +129,7 @@@ excito     Excit
  ezchip        EZchip Semiconductor
  fairphone     Fairphone B.V.
  faraday       Faraday Technology Corporation
+ fastrax       Fastrax Oy
  fcs   Fairchild Semiconductor
  firefly       Firefly
  focaltech     FocalTech Systems Co.,Ltd
@@@ -193,7 -189,6 +194,7 @@@ keymile    Keymile Gmb
  khadas        Khadas
  kiebackpeter    Kieback & Peter GmbH
  kinetic Kinetic Technologies
 +kingdisplay   King & Display Technology Co., Ltd.
  kingnovel     Kingnovel Technology Co., Ltd.
  koe   Kaohsiung Opto-Electronics Inc.
  kosagi        Sutajio Ko-Usagi PTE Ltd.
@@@ -209,6 -204,7 +210,7 @@@ licheepi   Lichee P
  linaro        Linaro Limited
  linksys       Belkin International, Inc. (Linksys)
  linux Linux-specific binding
+ linx  Linx Technologies
  lltc  Linear Technology Corporation
  logicpd       Logic PD, Inc.
  lsi   LSI Corp. (LSI Logic)
@@@ -390,6 -386,7 +392,7 @@@ tronsmart  Tronsmar
  truly Truly Semiconductors Limited
  tsd   Theobroma Systems Design und Consulting GmbH
  tyan  Tyan Computer Corporation
+ u-blox        u-blox
  ucrobotics    uCRobotics
  ubnt  Ubiquiti Networks
  udoo  Udoo
@@@ -401,7 -398,6 +404,7 @@@ v3 V3 Semiconducto
  variscite     Variscite Ltd.
  via   VIA Technologies, Inc.
  virtio        Virtual I/O Device Specification, developed by the OASIS consortium
 +vitesse       Vitesse Semiconductor Corporation
  vivante       Vivante Corporation
  vocore VoCore Studio
  voipac        Voipac Technologies s.r.o.
@@@ -419,7 -415,6 +422,7 @@@ xes        Extreme Engineering Solutions (X-ES
  xillybus      Xillybus Ltd.
  xlnx  Xilinx
  xunlong       Shenzhen Xunlong Software CO.,Limited
 +ysoft Y Soft Corporation a.s.
  zarlink       Zarlink Semiconductor
  zeitec        ZEITEC Semiconductor Co., LTD.
  zidoo Shenzhen Zidoo Technology Co., Ltd.
index d6ed527985cf362e63f6f21ca0acae927e22ccb6,db9afea24299eb2c65620d1b1138c028bc2186cd..13a7c999c04ab761f81b0e84663b8f38e7bec622
@@@ -166,7 -166,6 +166,7 @@@ Code  Seq#(hex)    Include File            Comment
  'P'   all     linux/soundcard.h       conflict!
  'P'   60-6F   sound/sscape_ioctl.h    conflict!
  'P'   00-0F   drivers/usb/class/usblp.c       conflict!
 +'P'   01-09   drivers/misc/pci_endpoint_test.c        conflict!
  'Q'   all     linux/soundcard.h
  'R'   00-1F   linux/random.h          conflict!
  'R'   01      linux/rfkill.h          conflict!
  'v'   00-1F   linux/ext2_fs.h         conflict!
  'v'   00-1F   linux/fs.h              conflict!
  'v'   00-0F   linux/sonypi.h          conflict!
 +'v'   00-0F   media/v4l2-subdev.h     conflict!
  'v'   C0-FF   linux/meye.h            conflict!
  'w'   all                             CERN SCI driver
  'y'   00-1F                           packet based user level communications
  0xB3  00      linux/mmc/ioctl.h
  0xB4  00-0F   linux/gpio.h            <mailto:linux-gpio@vger.kernel.org>
  0xB5  00-0F   uapi/linux/rpmsg.h      <mailto:linux-remoteproc@vger.kernel.org>
+ 0xB6  all     linux/fpga-dfl.h
  0xC0  00-0F   linux/usb/iowarrior.h
  0xCA  00-0F   uapi/misc/cxl.h
  0xCA  10-2F   uapi/misc/ocxl.h
diff --combined MAINTAINERS
index cf3e02bcbee37643bd4d65f100d88ce1932103ff,3464b94bf56af281e9a8402af7da57cb34f5d9a2..d09d133a6fc13373196ea9c5cf230308abf3dd3d
@@@ -199,13 -199,12 +199,13 @@@ F:      drivers/net/ethernet/8390
  
  9P FILE SYSTEM
  M:    Eric Van Hensbergen <ericvh@gmail.com>
 -M:    Ron Minnich <rminnich@sandia.gov>
  M:    Latchesar Ionkov <lucho@ionkov.net>
 +M:    Dominique Martinet <asmadeus@codewreck.org>
  L:    v9fs-developer@lists.sourceforge.net
  W:    http://swik.net/v9fs
  Q:    http://patchwork.kernel.org/project/v9fs-devel/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs.git
 +T:    git git://github.com/martinetd/linux.git
  S:    Maintained
  F:    Documentation/filesystems/9p.txt
  F:    fs/9p/
@@@ -368,12 -367,6 +368,12 @@@ L:       linux-acpi@vger.kernel.or
  S:    Maintained
  F:    drivers/acpi/arm64
  
 +ACPI I2C MULTI INSTANTIATE DRIVER
 +M:    Hans de Goede <hdegoede@redhat.com>
 +L:    platform-driver-x86@vger.kernel.org
 +S:    Maintained
 +F:    drivers/platform/x86/i2c-multi-instantiate.c
 +
  ACPI PMIC DRIVERS
  M:    "Rafael J. Wysocki" <rjw@rjwysocki.net>
  M:    Len Brown <lenb@kernel.org>
@@@ -735,14 -728,6 +735,14 @@@ S:       Supporte
  F:    drivers/crypto/ccp/
  F:    include/linux/ccp.h
  
 +AMD DISPLAY CORE
 +M:    Harry Wentland <harry.wentland@amd.com>
 +M:    Leo Li <sunpeng.li@amd.com>
 +L:    amd-gfx@lists.freedesktop.org
 +T:    git git://people.freedesktop.org/~agd5f/linux
 +S:    Supported
 +F:    drivers/gpu/drm/amd/display/
 +
  AMD FAM15H PROCESSOR POWER MONITORING DRIVER
  M:    Huang Rui <ray.huang@amd.com>
  L:    linux-hwmon@vger.kernel.org
@@@ -792,14 -777,6 +792,14 @@@ F:       drivers/gpu/drm/amd/include/vi_struc
  F:    drivers/gpu/drm/amd/include/v9_structs.h
  F:    include/uapi/linux/kfd_ioctl.h
  
 +AMD POWERPLAY
 +M:    Rex Zhu <rex.zhu@amd.com>
 +M:    Evan Quan <evan.quan@amd.com>
 +L:    amd-gfx@lists.freedesktop.org
 +S:    Supported
 +F:    drivers/gpu/drm/amd/powerplay/
 +T:    git git://people.freedesktop.org/~agd5f/linux
 +
  AMD SEATTLE DEVICE TREE SUPPORT
  M:    Brijesh Singh <brijeshkumar.singh@amd.com>
  M:    Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
@@@ -814,6 -791,11 +814,6 @@@ S:        Supporte
  F:    drivers/net/ethernet/amd/xgbe/
  F:    arch/arm64/boot/dts/amd/amd-seattle-xgbe*.dtsi
  
 -AMS (Apple Motion Sensor) DRIVER
 -M:    Michael Hanselmann <linux-kernel@hansmi.ch>
 -S:    Supported
 -F:    drivers/macintosh/ams/
 -
  ANALOG DEVICES INC AD5686 DRIVER
  M:    Stefan Popa <stefan.popa@analog.com>
  L:    linux-pm@vger.kernel.org
@@@ -822,20 -804,18 +822,26 @@@ S:      Supporte
  F:    drivers/iio/dac/ad5686*
  F:    drivers/iio/dac/ad5696*
  
 +ANALOG DEVICES INC AD5758 DRIVER
 +M:    Stefan Popa <stefan.popa@analog.com>
 +L:    linux-iio@vger.kernel.org
 +W:    http://ez.analog.com/community/linux-device-drivers
 +S:    Supported
 +F:    drivers/iio/dac/ad5758.c
 +F:    Documentation/devicetree/bindings/iio/dac/ad5758.txt
 +
  ANALOG DEVICES INC AD9389B DRIVER
  M:    Hans Verkuil <hans.verkuil@cisco.com>
  L:    linux-media@vger.kernel.org
  S:    Maintained
  F:    drivers/media/i2c/ad9389b*
  
+ ANALOG DEVICES INC ADGS1408 DRIVER
+ M:    Mircea Caprioru <mircea.caprioru@analog.com>
+ S:    Supported
+ F:    drivers/mux/adgs1408.c
+ F:    Documentation/devicetree/bindings/mux/adgs1408.txt
  ANALOG DEVICES INC ADV7180 DRIVER
  M:    Lars-Peter Clausen <lars@metafoo.de>
  L:    linux-media@vger.kernel.org
@@@ -1673,8 -1653,7 +1679,8 @@@ M:      Chunfeng Yun <chunfeng.yun@mediatek.
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  L:    linux-mediatek@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
 -F:    drivers/phy/mediatek/phy-mtk-tphy.c
 +F:    drivers/phy/mediatek/
 +F:    Documentation/devicetree/bindings/phy/phy-mtk-*
  
  ARM/MICREL KS8695 ARCHITECTURE
  M:    Greg Ungerer <gerg@uclinux.org>
@@@ -2291,7 -2270,6 +2297,7 @@@ L:      linux-arm-kernel@lists.infradead.or
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git
  S:    Maintained
  F:    arch/arm64/
 +X:    arch/arm64/boot/dts/
  F:    Documentation/arm64/
  
  AS3645A LED FLASH CONTROLLER DRIVER
@@@ -2300,14 -2278,6 +2306,14 @@@ L:    linux-leds@vger.kernel.or
  S:    Maintained
  F:    drivers/leds/leds-as3645a.c
  
 +ASAHI KASEI AK7375 LENS VOICE COIL DRIVER
 +M:    Tianshu Qiu <tian.shu.qiu@intel.com>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +S:    Maintained
 +F:    drivers/media/i2c/ak7375.c
 +F:    Documentation/devicetree/bindings/media/i2c/ak7375.txt
 +
  ASAHI KASEI AK8974 DRIVER
  M:    Linus Walleij <linus.walleij@linaro.org>
  L:    linux-iio@vger.kernel.org
@@@ -2559,7 -2529,7 +2565,7 @@@ S:      Supporte
  F:    drivers/scsi/esas2r
  
  ATUSB IEEE 802.15.4 RADIO DRIVER
 -M:    Stefan Schmidt <stefan@osg.samsung.com>
 +M:    Stefan Schmidt <stefan@datenfreihafen.org>
  L:    linux-wpan@vger.kernel.org
  S:    Maintained
  F:    drivers/net/ieee802154/atusb.c
@@@ -2583,13 -2553,6 +2589,13 @@@ S:    Maintaine
  F:    drivers/auxdisplay/
  F:    include/linux/cfag12864b.h
  
 +AVIA HX711 ANALOG DIGITAL CONVERTER IIO DRIVER
 +M:    Andreas Klinger <ak@it-klinger.de>
 +L:    linux-iio@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/iio/adc/avia-hx711.txt
 +F:    drivers/iio/adc/hx711.c
 +
  AX.25 NETWORK LAYER
  M:    Ralf Baechle <ralf@linux-mips.org>
  L:    linux-hams@vger.kernel.org
@@@ -3553,14 -3516,10 +3559,14 @@@ F:   drivers/net/ethernet/cisco/enic
  
  CISCO VIC LOW LATENCY NIC DRIVER
  M:    Christian Benvenuti <benve@cisco.com>
 -M:    Dave Goodell <dgoodell@cisco.com>
  S:    Supported
  F:    drivers/infiniband/hw/usnic/
  
 +CLANG-FORMAT FILE
 +M:    Miguel Ojeda <miguel.ojeda.sandonis@gmail.com>
 +S:    Maintained
 +F:    .clang-format
 +
  CLEANCACHE API
  M:    Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
  L:    linux-kernel@vger.kernel.org
@@@ -4447,12 -4406,6 +4453,12 @@@ X:    Documentation/sp
  X:    Documentation/media
  T:    git git://git.lwn.net/linux.git docs-next
  
 +DOCUMENTATION/ITALIAN
 +M:    Federico Vaga <federico.vaga@vaga.pv.it>
 +L:    linux-doc@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/translations/it_IT
 +
  DONGWOON DW9714 LENS VOICE COIL DRIVER
  M:    Sakari Ailus <sakari.ailus@linux.intel.com>
  L:    linux-media@vger.kernel.org
@@@ -4460,13 -4413,6 +4466,13 @@@ T:    git git://linuxtv.org/media_tree.gi
  S:    Maintained
  F:    drivers/media/i2c/dw9714.c
  
 +DONGWOON DW9807 LENS VOICE COIL DRIVER
 +M:    Sakari Ailus <sakari.ailus@linux.intel.com>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +S:    Maintained
 +F:    drivers/media/i2c/dw9807.c
 +
  DOUBLETALK DRIVER
  M:    "James R. Van Zandt" <jrv@vanzandt.mv.com>
  L:    blinux-list@redhat.com
@@@ -4487,8 -4433,7 +4493,8 @@@ S:      Maintaine
  F:    drivers/staging/fsl-dpaa2/ethernet
  
  DPAA2 ETHERNET SWITCH DRIVER
 -M:    Razvan Stefanescu <razvan.stefanescu@nxp.com>
 +M:    Ioana Radulescu <ruxandra.radulescu@nxp.com>
 +M:    Ioana Ciornei <ioana.ciornei@nxp.com>
  L:    linux-kernel@vger.kernel.org
  S:    Maintained
  F:    drivers/staging/fsl-dpaa2/ethsw
@@@ -4945,8 -4890,7 +4951,8 @@@ F:      Documentation/gpu/xen-front.rs
  
  DRM TTM SUBSYSTEM
  M:    Christian Koenig <christian.koenig@amd.com>
 -M:    Roger He <Hongbo.He@amd.com>
 +M:    Huang Rui <ray.huang@amd.com>
 +M:    Junwei Zhang <Jerry.Zhang@amd.com>
  T:    git git://people.freedesktop.org/~agd5f/linux
  S:    Maintained
  L:    dri-devel@lists.freedesktop.org
@@@ -5118,18 -5062,6 +5124,18 @@@ T:    git git://linuxtv.org/anttip/media_t
  S:    Maintained
  F:    drivers/media/tuners/e4000*
  
 +EARTH_PT1 MEDIA DRIVER
 +M:    Akihiro Tsukada <tskd08@gmail.com>
 +L:    linux-media@vger.kernel.org
 +S:    Odd Fixes
 +F:    drivers/media/pci/pt1/
 +
 +EARTH_PT3 MEDIA DRIVER
 +M:    Akihiro Tsukada <tskd08@gmail.com>
 +L:    linux-media@vger.kernel.org
 +S:    Odd Fixes
 +F:    drivers/media/pci/pt3/
 +
  EC100 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
@@@ -5518,7 -5450,6 +5524,7 @@@ F:      drivers/iommu/exynos-iommu.
  
  EZchip NPS platform support
  M:    Vineet Gupta <vgupta@synopsys.com>
 +M:    Ofer Levi <oferle@mellanox.com>
  S:    Supported
  F:    arch/arc/plat-eznps
  F:    arch/arc/boot/dts/eznps.dts
@@@ -5714,6 -5645,14 +5720,14 @@@ F:    drivers/fpga
  F:    include/linux/fpga/
  W:    http://www.rocketboards.org
  
+ FPGA DFL DRIVERS
+ M:    Wu Hao <hao.wu@intel.com>
+ L:    linux-fpga@vger.kernel.org
+ S:    Maintained
+ F:    Documentation/fpga/dfl.txt
+ F:    include/uapi/linux/fpga-dfl.h
+ F:    drivers/fpga/dfl*
  FPU EMULATOR
  M:    Bill Metzenthen <billm@melbpc.org.au>
  W:    http://floatingpoint.sourceforge.net/emulator/index.html
@@@ -5865,6 -5804,7 +5879,6 @@@ F:      include/linux/fsl
  
  FREESCALE SOC FS_ENET DRIVER
  M:    Pantelis Antoniou <pantelis.antoniou@gmail.com>
 -M:    Vitaly Bordug <vbordug@ru.mvista.com>
  L:    linuxppc-dev@lists.ozlabs.org
  L:    netdev@vger.kernel.org
  S:    Maintained
@@@ -5996,13 -5936,6 +6010,13 @@@ F:    scripts/gcc-plugin.s
  F:    scripts/Makefile.gcc-plugins
  F:    Documentation/gcc-plugins.txt
  
 +GASKET DRIVER FRAMEWORK
 +M:    Rob Springer <rspringer@google.com>
 +M:    John Joseph <jnjoseph@google.com>
 +M:    Ben Chan <benchan@chromium.org>
 +S:    Maintained
 +F:    drivers/staging/gasket/
 +
  GCOV BASED KERNEL PROFILING
  M:    Peter Oberparleiter <oberpar@linux.ibm.com>
  S:    Maintained
@@@ -6011,7 -5944,7 +6025,7 @@@ F:      Documentation/dev-tools/gcov.rs
  
  GDB KERNEL DEBUGGING HELPER SCRIPTS
  M:    Jan Kiszka <jan.kiszka@siemens.com>
 -M:    Kieran Bingham <kieran@bingham.xyz>
 +M:    Kieran Bingham <kbingham@kernel.org>
  S:    Supported
  F:    scripts/gdb/
  
@@@ -6087,12 -6020,6 +6101,12 @@@ F:    drivers/base/power/domain*.
  F:    include/linux/pm_domain.h
  F:    Documentation/devicetree/bindings/power/power_domain.txt
  
 +GENERIC RESISTIVE TOUCHSCREEN ADC DRIVER
 +M:    Eugen Hristev <eugen.hristev@microchip.com>
 +L:    linux-input@vger.kernel.org
 +S:    Maintained
 +F:    drivers/input/touchscreen/resistive-adc-touch.c
 +
  GENERIC UIO DRIVER FOR PCI DEVICES
  M:    "Michael S. Tsirkin" <mst@redhat.com>
  L:    kvm@vger.kernel.org
@@@ -6130,6 -6057,14 +6144,14 @@@ F:    Documentation/isdn/README.gigase
  F:    drivers/isdn/gigaset/
  F:    include/uapi/linux/gigaset_dev.h
  
+ GNSS SUBSYSTEM
+ M:    Johan Hovold <johan@kernel.org>
+ S:    Maintained
+ F:    Documentation/ABI/testing/sysfs-class-gnss
+ F:    Documentation/devicetree/bindings/gnss/
+ F:    drivers/gnss/
+ F:    include/linux/gnss.h
  GO7007 MPEG CODEC
  M:    Hans Verkuil <hans.verkuil@cisco.com>
  L:    linux-media@vger.kernel.org
@@@ -6228,7 -6163,7 +6250,7 @@@ F:      drivers/staging/greybus/bootrom.
  F:    drivers/staging/greybus/firmware.h
  F:    drivers/staging/greybus/fw-core.c
  F:    drivers/staging/greybus/fw-download.c
 -F:    drivers/staging/greybus/fw-managament.c
 +F:    drivers/staging/greybus/fw-management.c
  F:    drivers/staging/greybus/greybus_authentication.h
  F:    drivers/staging/greybus/greybus_firmware.h
  F:    drivers/staging/greybus/hid.c
@@@ -6237,10 -6172,12 +6259,10 @@@ F:   drivers/staging/greybus/spi.
  F:    drivers/staging/greybus/spilib.c
  F:    drivers/staging/greybus/spilib.h
  
 -GREYBUS LOOPBACK/TIME PROTOCOLS DRIVERS
 +GREYBUS LOOPBACK DRIVER
  M:    Bryan O'Donoghue <pure.logic@nexus-software.ie>
  S:    Maintained
  F:    drivers/staging/greybus/loopback.c
 -F:    drivers/staging/greybus/timesync.c
 -F:    drivers/staging/greybus/timesync_platform.c
  
  GREYBUS PLATFORM DRIVERS
  M:    Vaibhav Hiremath <hvaibhav.linux@gmail.com>
@@@ -6994,7 -6931,7 +7016,7 @@@ F:      drivers/clk/clk-versaclock5.
  
  IEEE 802.15.4 SUBSYSTEM
  M:    Alexander Aring <alex.aring@gmail.com>
 -M:    Stefan Schmidt <stefan@osg.samsung.com>
 +M:    Stefan Schmidt <stefan@datenfreihafen.org>
  L:    linux-wpan@vger.kernel.org
  W:    http://wpan.cakelab.org/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/sschmidt/wpan.git
@@@ -7113,7 -7050,7 +7135,7 @@@ M:      Guenter Roeck <linux@roeck-us.net
  L:    linux-hwmon@vger.kernel.org
  S:    Maintained
  F:    Documentation/hwmon/ina209
 -F:    Documentation/devicetree/bindings/i2c/ina209.txt
 +F:    Documentation/devicetree/bindings/hwmon/ina2xx.txt
  F:    drivers/hwmon/ina209.c
  
  INA2XX HARDWARE MONITOR DRIVER
@@@ -7181,7 -7118,6 +7203,7 @@@ F:      include/uapi/linux/input.
  F:    include/uapi/linux/input-event-codes.h
  F:    include/linux/input/
  F:    Documentation/devicetree/bindings/input/
 +F:    Documentation/devicetree/bindings/serio/
  F:    Documentation/input/
  
  INPUT MULTITOUCH (MT) PROTOCOL
@@@ -7331,9 -7267,6 +7353,9 @@@ F:      drivers/dma/iop-adma.
  INTEL IPU3 CSI-2 CIO2 DRIVER
  M:    Yong Zhi <yong.zhi@intel.com>
  M:    Sakari Ailus <sakari.ailus@linux.intel.com>
 +M:    Bingbu Cao <bingbu.cao@intel.com>
 +R:    Tian Shu Qiu <tian.shu.qiu@intel.com>
 +R:    Jian Xu Zheng <jian.xu.zheng@intel.com>
  L:    linux-media@vger.kernel.org
  S:    Maintained
  F:    drivers/media/pci/intel/ipu3/
@@@ -7439,7 -7372,7 +7461,7 @@@ M:      Megha Dey <megha.dey@linux.intel.com
  R:    Tim Chen <tim.c.chen@linux.intel.com>
  L:    linux-crypto@vger.kernel.org
  S:    Supported
 -F:    arch/x86/crypto/sha*-mb
 +F:    arch/x86/crypto/sha*-mb/
  F:    crypto/mcryptd.c
  
  INTEL TELEMETRY DRIVER
@@@ -7651,8 -7584,9 +7673,8 @@@ S:      Maintaine
  F:    drivers/firmware/iscsi_ibft*
  
  ISCSI EXTENSIONS FOR RDMA (ISER) INITIATOR
 -M:    Or Gerlitz <ogerlitz@mellanox.com>
  M:    Sagi Grimberg <sagi@grimberg.me>
 -M:    Roi Dayan <roid@mellanox.com>
 +M:    Max Gurtovoy <maxg@mellanox.com>
  L:    linux-rdma@vger.kernel.org
  S:    Supported
  W:    http://www.openfabrics.org
@@@ -8073,7 -8007,7 +8095,7 @@@ F:      lib/test_kmod.
  F:    tools/testing/selftests/kmod/
  
  KPROBES
 -M:    Ananth N Mavinakayanahalli <ananth@linux.vnet.ibm.com>
 +M:    Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
  M:    Anil S Keshavamurthy <anil.s.keshavamurthy@intel.com>
  M:    "David S. Miller" <davem@davemloft.net>
  M:    Masami Hiramatsu <mhiramat@kernel.org>
@@@ -8404,18 -8338,17 +8426,18 @@@ M:   Jade Alglave <j.alglave@ucl.ac.uk
  M:    Luc Maranget <luc.maranget@inria.fr>
  M:    "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
  R:    Akira Yokosawa <akiyks@gmail.com>
 +R:    Daniel Lustig <dlustig@nvidia.com>
  L:    linux-kernel@vger.kernel.org
 +L:    linux-arch@vger.kernel.org
  S:    Supported
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
  F:    tools/memory-model/
 +F:    Documentation/atomic_bitops.txt
 +F:    Documentation/atomic_t.txt
 +F:    Documentation/core-api/atomic_ops.rst
 +F:    Documentation/core-api/refcount-vs-atomic.rst
  F:    Documentation/memory-barriers.txt
  
 -LINUX SECURITY MODULE (LSM) FRAMEWORK
 -M:    Chris Wright <chrisw@sous-sol.org>
 -L:    linux-security-module@vger.kernel.org
 -S:    Supported
 -
  LIS3LV02D ACCELEROMETER DRIVER
  M:    Eric Piel <eric.piel@tremplin-utc.net>
  S:    Maintained
@@@ -8718,7 -8651,7 +8740,7 @@@ MARVELL MWIFIEX WIRELESS DRIVE
  M:    Amitkumar Karwar <amitkarwar@gmail.com>
  M:    Nishant Sarmukadam <nishants@marvell.com>
  M:    Ganapathi Bhat <gbhat@marvell.com>
 -M:    Xinming Hu <huxm@marvell.com>
 +M:    Xinming Hu <huxinming820@gmail.com>
  L:    linux-wireless@vger.kernel.org
  S:    Maintained
  F:    drivers/net/wireless/marvell/mwifiex/
@@@ -9045,14 -8978,6 +9067,14 @@@ T:    git git://linuxtv.org/media_tree.gi
  S:    Maintained
  F:    drivers/media/dvb-frontends/stv6111*
  
 +MEDIA DRIVERS FOR STM32 - DCMI
 +M:    Hugues Fruchet <hugues.fruchet@st.com>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +S:    Supported
 +F:    Documentation/devicetree/bindings/media/st,stm32-dcmi.txt
 +F:    drivers/media/platform/stm32/stm32-dcmi.c
 +
  MEDIA DRIVERS FOR NVIDIA TEGRA - VDE
  M:    Dmitry Osipenko <digetx@gmail.com>
  L:    linux-media@vger.kernel.org
@@@ -9084,14 -9009,6 +9106,14 @@@ F:    include/uapi/linux/meye.
  F:    include/uapi/linux/ivtv*
  F:    include/uapi/linux/uvcvideo.h
  
 +MEDIATEK BLUETOOTH DRIVER
 +M:    Sean Wang <sean.wang@mediatek.com>
 +L:    linux-bluetooth@vger.kernel.org
 +L:    linux-mediatek@lists.infradead.org (moderated for non-subscribers)
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/net/mediatek-bluetooth.txt
 +F:    drivers/bluetooth/btmtkuart.c
 +
  MEDIATEK CIR DRIVER
  M:    Sean Wang <sean.wang@mediatek.com>
  S:    Maintained
@@@ -9180,7 -9097,7 +9202,7 @@@ S:      Maintaine
  F:    drivers/usb/mtu3/
  
  MEGACHIPS STDPXXXX-GE-B850V3-FW LVDS/DP++ BRIDGES
 -M:    Peter Senna Tschudin <peter.senna@collabora.com>
 +M:    Peter Senna Tschudin <peter.senna@gmail.com>
  M:    Martin Donnelly <martin.donnelly@ge.com>
  M:    Martyn Welch <martyn.welch@collabora.co.uk>
  S:    Maintained
@@@ -9264,7 -9181,6 +9286,7 @@@ S:      Supporte
  W:    http://www.mellanox.com
  Q:    http://patchwork.ozlabs.org/project/netdev/list/
  F:    drivers/net/ethernet/mellanox/mlxsw/
 +F:    tools/testing/selftests/drivers/net/mlxsw/
  
  MELLANOX FIRMWARE FLASH LIBRARY (mlxfw)
  M:    mlxsw@mellanox.com
@@@ -9452,6 -9368,7 +9474,6 @@@ F:      drivers/media/platform/atmel/atmel-i
  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
@@@ -9743,14 -9660,6 +9765,14 @@@ F:    Documentation/devicetree/bindings/me
  F:    drivers/media/i2c/mt9v032.c
  F:    include/media/i2c/mt9v032.h
  
 +MT9V111 APTINA CAMERA SENSOR
 +M:    Jacopo Mondi <jacopo@jmondi.org>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/media/i2c/aptina,mt9v111.txt
 +F:    drivers/media/i2c/mt9v111.c
 +
  MULTIFUNCTION DEVICES (MFD)
  M:    Lee Jones <lee.jones@linaro.org>
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd.git
@@@ -9795,12 -9704,6 +9817,12 @@@ L:    linux-usb@vger.kernel.or
  S:    Maintained
  F:    drivers/usb/musb/
  
 +MXL301RF MEDIA DRIVER
 +M:    Akihiro Tsukada <tskd08@gmail.com>
 +L:    linux-media@vger.kernel.org
 +S:    Odd Fixes
 +F:    drivers/media/tuners/mxl301rf*
 +
  MXL5007T MEDIA DRIVER
  M:    Michael Krufky <mkrufky@linuxtv.org>
  L:    linux-media@vger.kernel.org
@@@ -9869,6 -9772,12 +9891,6 @@@ F:     drivers/scsi/mac_scsi.
  F:    drivers/scsi/sun3_scsi.*
  F:    drivers/scsi/sun3_scsi_vme.c
  
 -NCR DUAL 700 SCSI DRIVER (MICROCHANNEL)
 -M:    "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>
 -L:    linux-scsi@vger.kernel.org
 -S:    Maintained
 -F:    drivers/scsi/NCR_D700.*
 -
  NCSI LIBRARY:
  M:    Samuel Mendoza-Jonas <sam@mendozajonas.com>
  S:    Maintained
@@@ -10577,14 -10486,6 +10599,14 @@@ T: git git://linuxtv.org/media_tree.gi
  S:    Maintained
  F:    drivers/media/i2c/ov13858.c
  
 +OMNIVISION OV2680 SENSOR DRIVER
 +M:    Rui Miguel Silva <rmfrfs@gmail.com>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +S:    Maintained
 +F:    drivers/media/i2c/ov2680.c
 +F:    Documentation/devicetree/bindings/media/i2c/ov2680.txt
 +
  OMNIVISION OV2685 SENSOR DRIVER
  M:    Shunqian Zheng <zhengsq@rock-chips.com>
  L:    linux-media@vger.kernel.org
@@@ -11378,7 -11279,7 +11400,7 @@@ F:   Documentation/devicetree/bindings/pi
  
  PIN CONTROLLER - INTEL
  M:    Mika Westerberg <mika.westerberg@linux.intel.com>
 -M:    Heikki Krogerus <heikki.krogerus@linux.intel.com>
 +M:    Andy Shevchenko <andriy.shevchenko@linux.intel.com>
  S:    Maintained
  F:    drivers/pinctrl/intel/
  
@@@ -11888,18 -11789,6 +11910,18 @@@ L: netdev@vger.kernel.or
  S:    Supported
  F:    drivers/net/ethernet/qlogic/qlge/
  
 +QM1D1B0004 MEDIA DRIVER
 +M:    Akihiro Tsukada <tskd08@gmail.com>
 +L:    linux-media@vger.kernel.org
 +S:    Odd Fixes
 +F:    drivers/media/tuners/qm1d1b0004*
 +
 +QM1D1C0042 MEDIA DRIVER
 +M:    Akihiro Tsukada <tskd08@gmail.com>
 +L:    linux-media@vger.kernel.org
 +S:    Odd Fixes
 +F:    drivers/media/tuners/qm1d1c0042*
 +
  QNX4 FILESYSTEM
  M:    Anders Larsen <al@alarsen.net>
  W:    http://www.alarsen.net/linux/qnx4fs/
@@@ -11948,7 -11837,7 +11970,7 @@@ L:   linux-media@vger.kernel.or
  S:    Maintained
  F:    Documentation/devicetree/bindings/media/qcom,camss.txt
  F:    Documentation/media/v4l-drivers/qcom_camss.rst
 -F:    drivers/media/platform/qcom/camss-8x16/
 +F:    drivers/media/platform/qcom/camss/
  
  QUALCOMM CPUFREQ DRIVER MSM8996/APQ8096
  M:  Ilia Lin <ilia.lin@gmail.com>
@@@ -12171,9 -12060,9 +12193,9 @@@ T:   git git://git.kernel.org/pub/scm/lin
  F:    Documentation/RCU/
  X:    Documentation/RCU/torture.txt
  F:    include/linux/rcu*
 -X:    include/linux/srcu.h
 +X:    include/linux/srcu*.h
  F:    kernel/rcu/
 -X:    kernel/torture.c
 +X:    kernel/rcu/srcu*.c
  
  REAL TIME CLOCK (RTC) SUBSYSTEM
  M:    Alessandro Zummo <a.zummo@towertech.it>
@@@ -12198,13 -12087,6 +12220,13 @@@ S: Maintaine
  F:    sound/soc/codecs/rt*
  F:    include/sound/rt*.h
  
 +REALTEK RTL83xx SMI DSA ROUTER CHIPS
 +M:    Linus Walleij <linus.walleij@linaro.org>
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/net/dsa/realtek-smi.txt
 +F:    drivers/net/dsa/realtek-smi*
 +F:    drivers/net/dsa/rtl83*
 +
  REGISTER MAP ABSTRACTION
  M:    Mark Brown <broonie@kernel.org>
  L:    linux-kernel@vger.kernel.org
@@@ -12312,8 -12194,6 +12334,8 @@@ S:   Maintaine
  F:    Documentation/rfkill.txt
  F:    Documentation/ABI/stable/sysfs-class-rfkill
  F:    net/rfkill/
 +F:    include/linux/rfkill.h
 +F:    include/uapi/linux/rfkill.h
  
  RHASHTABLE
  M:    Thomas Graf <tgraf@suug.ch>
@@@ -12321,9 -12201,7 +12343,9 @@@ M:   Herbert Xu <herbert@gondor.apana.org
  L:    netdev@vger.kernel.org
  S:    Maintained
  F:    lib/rhashtable.c
 +F:    lib/test_rhashtable.c
  F:    include/linux/rhashtable.h
 +F:    include/linux/rhashtable-types.h
  
  RICOH R5C592 MEMORYSTICK DRIVER
  M:    Maxim Levitsky <maximlevitsky@gmail.com>
@@@ -12545,6 -12423,7 +12567,6 @@@ F:   drivers/pci/hotplug/s390_pci_hpc.
  
  S390 VFIO-CCW DRIVER
  M:    Cornelia Huck <cohuck@redhat.com>
 -M:    Dong Jia Shi <bjsdjshi@linux.ibm.com>
  M:    Halil Pasic <pasic@linux.ibm.com>
  L:    linux-s390@vger.kernel.org
  L:    kvm@vger.kernel.org
@@@ -12781,21 -12660,15 +12803,21 @@@ S:        Maintaine
  F:    drivers/scsi/sr*
  
  SCSI RDMA PROTOCOL (SRP) INITIATOR
 -M:    Bart Van Assche <bart.vanassche@sandisk.com>
 +M:    Bart Van Assche <bvanassche@acm.org>
  L:    linux-rdma@vger.kernel.org
  S:    Supported
 -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/dad/srp-initiator.git
  F:    drivers/infiniband/ulp/srp/
  F:    include/scsi/srp.h
  
 +SCSI RDMA PROTOCOL (SRP) TARGET
 +M:    Bart Van Assche <bvanassche@acm.org>
 +L:    linux-rdma@vger.kernel.org
 +L:    target-devel@vger.kernel.org
 +S:    Supported
 +Q:    http://patchwork.kernel.org/project/linux-rdma/list/
 +F:    drivers/infiniband/ulp/srpt/
 +
  SCSI SG DRIVER
  M:    Doug Gilbert <dgilbert@interlog.com>
  L:    linux-scsi@vger.kernel.org
@@@ -12935,7 -12808,6 +12957,7 @@@ T:   git git://git.kernel.org/pub/scm/lin
  W:    http://kernsec.org/
  S:    Supported
  F:    security/
 +X:    security/selinux/
  
  SELINUX SECURITY MODULE
  M:    Paul Moore <paul@paul-moore.com>
@@@ -13012,14 -12884,6 +13034,14 @@@ W: http://www.ibm.com/developerworks/li
  S:    Supported
  F:    net/smc/
  
 +SHARP RJ54N1CB0C SENSOR DRIVER
 +M:    Jacopo Mondi <jacopo@jmondi.org>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +S:    Odd fixes
 +F:    drivers/media/i2c/rj54n1cb0c.c
 +F:    include/media/i2c/rj54n1cb0c.h
 +
  SH_VEU V4L2 MEM2MEM DRIVER
  L:    linux-media@vger.kernel.org
  S:    Orphan
@@@ -13235,8 -13099,8 +13257,8 @@@ L:   linux-kernel@vger.kernel.or
  W:    http://www.rdrop.com/users/paulmck/RCU/
  S:    Supported
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
 -F:    include/linux/srcu.h
 -F:    kernel/rcu/srcu.c
 +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>
@@@ -13646,13 -13510,6 +13668,13 @@@ M: H Hartley Sweeten <hsweeten@visionen
  S:    Odd Fixes
  F:    drivers/staging/comedi/
  
 +STAGING - EROFS FILE SYSTEM
 +M:    Gao Xiang <gaoxiang25@huawei.com>
 +M:    Chao Yu <yuchao0@huawei.com>
 +L:    linux-erofs@lists.ozlabs.org
 +S:    Maintained
 +F:    drivers/staging/erofs/
 +
  STAGING - FLARION FT1000 DRIVERS
  M:    Marek Belisko <marek.belisko@gmail.com>
  S:    Odd Fixes
@@@ -13739,13 -13596,6 +13761,13 @@@ L: linux-block@vger.kernel.or
  S:    Maintained
  F:    drivers/block/skd*[ch]
  
 +STI AUDIO (ASoC) DRIVERS
 +M:    Arnaud Pouliquen <arnaud.pouliquen@st.com>
 +L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/sound/st,sti-asoc-card.txt
 +F:    sound/soc/sti/
 +
  STI CEC DRIVER
  M:    Benjamin Gaignard <benjamin.gaignard@linaro.org>
  S:    Maintained
@@@ -13759,14 -13609,6 +13781,14 @@@ T: git git://linuxtv.org/media_tree.gi
  S:    Maintained
  F:    drivers/media/usb/stk1160/
  
 +STM32 AUDIO (ASoC) DRIVERS
 +M:    Olivier Moysan <olivier.moysan@st.com>
 +M:    Arnaud Pouliquen <arnaud.pouliquen@st.com>
 +L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/sound/st,stm32-*.txt
 +F:    sound/soc/stm/
 +
  STM32 TIMER/LPTIMER DRIVERS
  M:    Fabrice Gasnier <fabrice.gasnier@st.com>
  S:    Maintained
@@@ -14043,12 -13885,6 +14065,12 @@@ F: include/uapi/linux/tc_act
  F:    include/uapi/linux/tc_ematch/
  F:    net/sched/
  
 +TC90522 MEDIA DRIVER
 +M:    Akihiro Tsukada <tskd08@gmail.com>
 +L:    linux-media@vger.kernel.org
 +S:    Odd Fixes
 +F:    drivers/media/dvb-frontends/tc90522*
 +
  TCP LOW PRIORITY MODULE
  M:    "Wong Hoi Sing, Edison" <hswong3i@gmail.com>
  M:    "Hung Hing Lun, Mike" <hlhung3i@gmail.com>
@@@ -14243,13 -14079,6 +14265,13 @@@ M: Laxman Dewangan <ldewangan@nvidia.co
  S:    Supported
  F:    drivers/input/keyboard/tegra-kbc.c
  
 +TEGRA NAND DRIVER
 +M:    Stefan Agner <stefan@agner.ch>
 +M:    Lucas Stach <dev@lynxeye.de>
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/mtd/nvidia-tegra20-nand.txt
 +F:    drivers/mtd/nand/raw/tegra_nand.c
 +
  TEGRA PWM DRIVER
  M:    Thierry Reding <thierry.reding@gmail.com>
  S:    Supported
@@@ -14630,7 -14459,6 +14652,7 @@@ T:   git git://git.kernel.org/pub/scm/lin
  F:    Documentation/RCU/torture.txt
  F:    kernel/torture.c
  F:    kernel/rcu/rcutorture.c
 +F:    kernel/rcu/rcuperf.c
  F:    kernel/locking/locktorture.c
  
  TOSHIBA ACPI EXTRAS DRIVER
@@@ -15152,7 -14980,7 +15174,7 @@@ L:   linux-usb@vger.kernel.or
  S:    Maintained
  F:    drivers/usb/typec/mux/pi3usb30532.c
  
 -USB TYPEC SUBSYSTEM
 +USB TYPEC CLASS
  M:    Heikki Krogerus <heikki.krogerus@linux.intel.com>
  L:    linux-usb@vger.kernel.org
  S:    Maintained
@@@ -15161,15 -14989,6 +15183,15 @@@ F: Documentation/driver-api/usb/typec.r
  F:    drivers/usb/typec/
  F:    include/linux/usb/typec.h
  
 +USB TYPEC BUS FOR ALTERNATE MODES
 +M:    Heikki Krogerus <heikki.krogerus@linux.intel.com>
 +L:    linux-usb@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/ABI/testing/sysfs-bus-typec
 +F:    Documentation/driver-api/usb/typec_bus.rst
 +F:    drivers/usb/typec/altmodes/
 +F:    include/linux/usb/typec_altmode.h
 +
  USB UHCI DRIVER
  M:    Alan Stern <stern@rowland.harvard.edu>
  L:    linux-usb@vger.kernel.org
@@@ -15200,7 -15019,6 +15222,7 @@@ L:   linux-usb@vger.kernel.or
  S:    Maintained
  F:    drivers/usb/gadget/function/*uvc*
  F:    drivers/usb/gadget/legacy/webcam.c
 +F:    include/uapi/linux/usb/g_uvc.h
  
  USB WIRELESS RNDIS DRIVER (rndis_wlan)
  M:    Jussi Kivilinna <jussi.kivilinna@iki.fi>
@@@ -15348,14 -15166,6 +15370,14 @@@ L: netdev@vger.kernel.or
  S:    Maintained
  F:    drivers/net/ethernet/via/via-velocity.*
  
 +VICODEC VIRTUAL CODEC DRIVER
 +M:    Hans Verkuil <hans.verkuil@cisco.com>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +W:    https://linuxtv.org
 +S:    Maintained
 +F:    drivers/media/platform/vicodec/*
 +
  VIDEO MULTIPLEXER DRIVER
  M:    Philipp Zabel <p.zabel@pengutronix.de>
  L:    linux-media@vger.kernel.org
@@@ -15523,7 -15333,7 +15545,7 @@@ F:   include/linux/vme
  
  VMWARE BALLOON DRIVER
  M:    Xavier Deguillard <xdeguillard@vmware.com>
- M:    Philip Moltmann <moltmann@vmware.com>
+ M:    Nadav Amit <namit@vmware.com>
  M:    "VMware, Inc." <pv-drivers@vmware.com>
  L:    linux-kernel@vger.kernel.org
  S:    Maintained
@@@ -15615,6 -15425,7 +15637,7 @@@ F:   drivers/mmc/host/vub300.
  W1 DALLAS'S 1-WIRE BUS
  M:    Evgeniy Polyakov <zbr@ioremap.net>
  S:    Maintained
+ F:    Documentation/devicetree/bindings/w1/
  F:    Documentation/w1/
  F:    drivers/w1/
  F:    include/linux/w1.h
index 19886fef1dfc2c5c747ef4798048318c7214bd43,4d82ad347b75c033ec7ab5004516f6aee56328d3..e1771a1987ddf8be2820b352855b1c96240b0993
@@@ -76,8 -76,10 +76,10 @@@ static inline void vmbus_signal_eom(str
        }
  }
  
- #define hv_init_timer(timer, tick) wrmsrl(timer, tick)
- #define hv_init_timer_config(config, val) wrmsrl(config, val)
+ #define hv_init_timer(timer, tick) \
+       wrmsrl(HV_X64_MSR_STIMER0_COUNT + (2*timer), tick)
+ #define hv_init_timer_config(timer, val) \
+       wrmsrl(HV_X64_MSR_STIMER0_CONFIG + (2*timer), val)
  
  #define hv_get_simp(val) rdmsrl(HV_X64_MSR_SIMP, val)
  #define hv_set_simp(val) wrmsrl(HV_X64_MSR_SIMP, val)
  
  #define hv_get_vp_index(index) rdmsrl(HV_X64_MSR_VP_INDEX, index)
  
- #define hv_get_synint_state(int_num, val) rdmsrl(int_num, val)
- #define hv_set_synint_state(int_num, val) wrmsrl(int_num, val)
+ #define hv_get_synint_state(int_num, val) \
+       rdmsrl(HV_X64_MSR_SINT0 + int_num, val)
+ #define hv_set_synint_state(int_num, val) \
+       wrmsrl(HV_X64_MSR_SINT0 + int_num, val)
+ #define hv_get_crash_ctl(val) \
+       rdmsrl(HV_X64_MSR_CRASH_CTL, val)
  
  void hyperv_callback_vector(void);
  void hyperv_reenlightenment_vector(void);
@@@ -194,40 -201,6 +201,40 @@@ static inline u64 hv_do_fast_hypercall8
                return hv_status;
  }
  
 +/* Fast hypercall with 16 bytes of input */
 +static inline u64 hv_do_fast_hypercall16(u16 code, u64 input1, u64 input2)
 +{
 +      u64 hv_status, control = (u64)code | HV_HYPERCALL_FAST_BIT;
 +
 +#ifdef CONFIG_X86_64
 +      {
 +              __asm__ __volatile__("mov %4, %%r8\n"
 +                                   CALL_NOSPEC
 +                                   : "=a" (hv_status), ASM_CALL_CONSTRAINT,
 +                                     "+c" (control), "+d" (input1)
 +                                   : "r" (input2),
 +                                     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);
 +              u32 input2_hi = upper_32_bits(input2);
 +              u32 input2_lo = lower_32_bits(input2);
 +
 +              __asm__ __volatile__ (CALL_NOSPEC
 +                                    : "=A"(hv_status),
 +                                      "+c"(input1_lo), ASM_CALL_CONSTRAINT
 +                                    : "A" (control), "b" (input1_hi),
 +                                      "D"(input2_hi), "S"(input2_lo),
 +                                      THUNK_TARGET(hv_hypercall_pg)
 +                                    : "cc");
 +      }
 +#endif
 +              return hv_status;
 +}
 +
  /*
   * Rep hypercalls. Callers of this functions are supposed to ensure that
   * rep_count and varhead_size comply with Hyper-V hypercall definition.
@@@ -332,6 -305,7 +339,7 @@@ static inline int cpumask_to_vpset(stru
  void __init hyperv_init(void);
  void hyperv_setup_mmu_ops(void);
  void hyperv_report_panic(struct pt_regs *regs, long err);
+ void hyperv_report_panic_msg(phys_addr_t pa, size_t size);
  bool hv_is_hyperv_initialized(void);
  void hyperv_cleanup(void);
  
diff --combined drivers/Makefile
index a6abd7a856c63dc756274f7fc5b779dbfa09891f,cc9a7c5f7d2c217fc28026cf1aae3c1a3a80584f..578f469f72fbb223d903151c68c5b9cd057675ea
@@@ -76,7 -76,7 +76,7 @@@ obj-$(CONFIG_DMA_SHARED_BUFFER) += dma-
  obj-$(CONFIG_NUBUS)           += nubus/
  obj-y                         += macintosh/
  obj-$(CONFIG_IDE)             += ide/
 -obj-$(CONFIG_SCSI)            += scsi/
 +obj-y                         += scsi/
  obj-y                         += nvme/
  obj-$(CONFIG_ATA)             += ata/
  obj-$(CONFIG_TARGET_CORE)     += target/
@@@ -185,3 -185,4 +185,4 @@@ obj-$(CONFIG_TEE)          += tee
  obj-$(CONFIG_MULTIPLEXER)     += mux/
  obj-$(CONFIG_UNISYS_VISORBUS) += visorbus/
  obj-$(CONFIG_SIOX)            += siox/
+ obj-$(CONFIG_GNSS)            += gnss/
diff --combined drivers/char/mem.c
index df66a9dd0aae3c5ef27a4b92410d347eb8f82a3a,4b00d6adcccf144ece5e5bbf0d272c47125b0258..7b4e4de778e45f7900732a243f6d53f783089d32
@@@ -708,7 -708,6 +708,7 @@@ static int mmap_zero(struct file *file
  #endif
        if (vma->vm_flags & VM_SHARED)
                return shmem_zero_setup(vma);
 +      vma_set_anonymous(vma);
        return 0;
  }
  
@@@ -766,6 -765,7 +766,7 @@@ static loff_t memory_lseek(struct file 
        switch (orig) {
        case SEEK_CUR:
                offset += file->f_pos;
+               /* fall through */
        case SEEK_SET:
                /* to avoid userland mistaking f_pos=-9 as -EBADF=-9 */
                if ((unsigned long long)offset >= -MAX_ERRNO) {
index 5f3242a246fceda670a7416a3fd82bdeddeb4905,a4a21fcf1e1711ad560ff3c274f3e65ccb7a2bfa..29d2095d9dfda8eccb40eafb097fdaf7baeb7b35
@@@ -6,10 -6,9 +6,11 @@@
  
  #include <linux/bitrev.h>
  #include <linux/clk.h>
 +#include <linux/crc32poly.h>
  #include <linux/module.h>
+ #include <linux/mod_devicetable.h>
  #include <linux/platform_device.h>
 +#include <linux/pm_runtime.h>
  
  #include <crypto/internal/hash.h>
  
@@@ -30,7 -29,9 +31,7 @@@
  #define CRC_CR_REVERSE          (BIT(7) | BIT(6) | BIT(5))
  #define CRC_INIT_DEFAULT        0xFFFFFFFF
  
 -/* Polynomial reversed */
 -#define POLY_CRC32              0xEDB88320
 -#define POLY_CRC32C             0x82F63B78
 +#define CRC_AUTOSUSPEND_DELAY 50
  
  struct stm32_crc {
        struct list_head list;
@@@ -66,7 -67,7 +67,7 @@@ static int stm32_crc32_cra_init(struct 
        struct stm32_crc_ctx *mctx = crypto_tfm_ctx(tfm);
  
        mctx->key = CRC_INIT_DEFAULT;
 -      mctx->poly = POLY_CRC32;
 +      mctx->poly = CRC32_POLY_LE;
        return 0;
  }
  
@@@ -75,7 -76,7 +76,7 @@@ static int stm32_crc32c_cra_init(struc
        struct stm32_crc_ctx *mctx = crypto_tfm_ctx(tfm);
  
        mctx->key = CRC_INIT_DEFAULT;
 -      mctx->poly = POLY_CRC32C;
 +      mctx->poly = CRC32C_POLY_LE;
        return 0;
  }
  
@@@ -106,8 -107,6 +107,8 @@@ static int stm32_crc_init(struct shash_
        }
        spin_unlock_bh(&crc_list.lock);
  
 +      pm_runtime_get_sync(ctx->crc->dev);
 +
        /* Reset, set key, poly and configure in bit reverse mode */
        writel_relaxed(bitrev32(mctx->key), ctx->crc->regs + CRC_INIT);
        writel_relaxed(bitrev32(mctx->poly), ctx->crc->regs + CRC_POL);
        ctx->partial = readl_relaxed(ctx->crc->regs + CRC_DR);
        ctx->crc->nb_pending_bytes = 0;
  
 +      pm_runtime_mark_last_busy(ctx->crc->dev);
 +      pm_runtime_put_autosuspend(ctx->crc->dev);
 +
        return 0;
  }
  
@@@ -131,8 -127,6 +132,8 @@@ static int stm32_crc_update(struct shas
        u32 *d32;
        unsigned int i;
  
 +      pm_runtime_get_sync(crc->dev);
 +
        if (unlikely(crc->nb_pending_bytes)) {
                while (crc->nb_pending_bytes != sizeof(u32) && length) {
                        /* Fill in pending data */
        /* Store partial result */
        ctx->partial = readl_relaxed(crc->regs + CRC_DR);
  
 +      pm_runtime_mark_last_busy(crc->dev);
 +      pm_runtime_put_autosuspend(crc->dev);
 +
        /* Check for pending data (non 32 bits) */
        length &= 3;
        if (likely(!length))
@@@ -184,7 -175,7 +185,7 @@@ static int stm32_crc_final(struct shash
        struct stm32_crc_ctx *mctx = crypto_shash_ctx(desc->tfm);
  
        /* Send computed CRC */
 -      put_unaligned_le32(mctx->poly == POLY_CRC32C ?
 +      put_unaligned_le32(mctx->poly == CRC32C_POLY_LE ?
                           ~ctx->partial : ctx->partial, out);
  
        return 0;
@@@ -282,13 -273,6 +283,13 @@@ static int stm32_crc_probe(struct platf
                return ret;
        }
  
 +      pm_runtime_set_autosuspend_delay(dev, CRC_AUTOSUSPEND_DELAY);
 +      pm_runtime_use_autosuspend(dev);
 +
 +      pm_runtime_get_noresume(dev);
 +      pm_runtime_set_active(dev);
 +      pm_runtime_enable(dev);
 +
        platform_set_drvdata(pdev, crc);
  
        spin_lock(&crc_list.lock);
  
        dev_info(dev, "Initialized\n");
  
 +      pm_runtime_put_sync(dev);
 +
        return 0;
  }
  
  static int stm32_crc_remove(struct platform_device *pdev)
  {
        struct stm32_crc *crc = platform_get_drvdata(pdev);
 +      int ret = pm_runtime_get_sync(crc->dev);
 +
 +      if (ret < 0)
 +              return ret;
  
        spin_lock(&crc_list.lock);
        list_del(&crc->list);
  
        crypto_unregister_shashes(algs, ARRAY_SIZE(algs));
  
 +      pm_runtime_disable(crc->dev);
 +      pm_runtime_put_noidle(crc->dev);
 +
 +      clk_disable_unprepare(crc->clk);
 +
 +      return 0;
 +}
 +
 +#ifdef CONFIG_PM
 +static int stm32_crc_runtime_suspend(struct device *dev)
 +{
 +      struct stm32_crc *crc = dev_get_drvdata(dev);
 +
        clk_disable_unprepare(crc->clk);
  
        return 0;
  }
  
 +static int stm32_crc_runtime_resume(struct device *dev)
 +{
 +      struct stm32_crc *crc = dev_get_drvdata(dev);
 +      int ret;
 +
 +      ret = clk_prepare_enable(crc->clk);
 +      if (ret) {
 +              dev_err(crc->dev, "Failed to prepare_enable clock\n");
 +              return ret;
 +      }
 +
 +      return 0;
 +}
 +#endif
 +
 +static const struct dev_pm_ops stm32_crc_pm_ops = {
 +      SET_SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend,
 +                              pm_runtime_force_resume)
 +      SET_RUNTIME_PM_OPS(stm32_crc_runtime_suspend,
 +                         stm32_crc_runtime_resume, NULL)
 +};
 +
  static const struct of_device_id stm32_dt_ids[] = {
        { .compatible = "st,stm32f7-crc", },
        {},
@@@ -374,7 -317,6 +375,7 @@@ static struct platform_driver stm32_crc
        .remove = stm32_crc_remove,
        .driver = {
                .name           = DRIVER_NAME,
 +              .pm             = &stm32_crc_pm_ops,
                .of_match_table = stm32_dt_ids,
        },
  };
index daf4fed0df8ca6c3ef320700a4b54f8683471b84,b141b74a084e4ad0360efeece96a193a5a650474..633321a8dd034390b7d809aaeef792e8d971a21b
@@@ -21,6 -21,7 +21,7 @@@
  #include <linux/klist.h>
  #include <linux/kernel.h>
  #include <linux/module.h>
+ #include <linux/mod_devicetable.h>
  #include <linux/platform_device.h>
  #include <linux/crypto.h>
  
@@@ -1524,7 -1525,8 +1525,7 @@@ static struct hash_algo_template hash_a
                        .halg.base = {
                                .cra_name = "sha1",
                                .cra_driver_name = "sha1-ux500",
 -                              .cra_flags = (CRYPTO_ALG_TYPE_AHASH |
 -                                            CRYPTO_ALG_ASYNC),
 +                              .cra_flags = CRYPTO_ALG_ASYNC,
                                .cra_blocksize = SHA1_BLOCK_SIZE,
                                .cra_ctxsize = sizeof(struct hash_ctx),
                                .cra_init = hash_cra_init,
                        .halg.base = {
                                .cra_name = "sha256",
                                .cra_driver_name = "sha256-ux500",
 -                              .cra_flags = (CRYPTO_ALG_TYPE_AHASH |
 -                                            CRYPTO_ALG_ASYNC),
 +                              .cra_flags = CRYPTO_ALG_ASYNC,
                                .cra_blocksize = SHA256_BLOCK_SIZE,
                                .cra_ctxsize = sizeof(struct hash_ctx),
 -                              .cra_type = &crypto_ahash_type,
                                .cra_init = hash_cra_init,
                                .cra_module = THIS_MODULE,
                        }
                        .halg.base = {
                                .cra_name = "hmac(sha1)",
                                .cra_driver_name = "hmac-sha1-ux500",
 -                              .cra_flags = (CRYPTO_ALG_TYPE_AHASH |
 -                                            CRYPTO_ALG_ASYNC),
 +                              .cra_flags = CRYPTO_ALG_ASYNC,
                                .cra_blocksize = SHA1_BLOCK_SIZE,
                                .cra_ctxsize = sizeof(struct hash_ctx),
 -                              .cra_type = &crypto_ahash_type,
                                .cra_init = hash_cra_init,
                                .cra_module = THIS_MODULE,
                        }
                        .halg.base = {
                                .cra_name = "hmac(sha256)",
                                .cra_driver_name = "hmac-sha256-ux500",
 -                              .cra_flags = (CRYPTO_ALG_TYPE_AHASH |
 -                                            CRYPTO_ALG_ASYNC),
 +                              .cra_flags = CRYPTO_ALG_ASYNC,
                                .cra_blocksize = SHA256_BLOCK_SIZE,
                                .cra_ctxsize = sizeof(struct hash_ctx),
 -                              .cra_type = &crypto_ahash_type,
                                .cra_init = hash_cra_init,
                                .cra_module = THIS_MODULE,
                        }
index b47af8eb145ac1b0407dde0dba3cb81463ad4efb,3ad9d0dc6fa7cb14c0c8b9e511d6512add18106a..43c78620c9d8a3c04a12468a13124ea780a4b5db
@@@ -1,15 -1,20 +1,16 @@@
 +// SPDX-License-Identifier: GPL-2.0+
  /*
   * rcar-fcp.c  --  R-Car Frame Compression Processor Driver
   *
   * Copyright (C) 2016 Renesas Electronics Corporation
   *
   * Contact: Laurent Pinchart (laurent.pinchart@ideasonboard.com)
 - *
 - * This program is free software; you can redistribute it and/or modify
 - * it under the terms of the GNU General Public License as published by
 - * the Free Software Foundation; either version 2 of the License, or
 - * (at your option) any later version.
   */
  
  #include <linux/device.h>
  #include <linux/list.h>
  #include <linux/module.h>
+ #include <linux/mod_devicetable.h>
  #include <linux/mutex.h>
  #include <linux/platform_device.h>
  #include <linux/pm_runtime.h>
index 20275d1e6f9a969bed77561e516277bef5d3289b,3ede20afb9e5f9fe4314b1ba02e776d64ee095c0..507f68190cb1b4cbf88b8a441a040f8aacafd1d4
@@@ -329,7 -329,7 +329,7 @@@ static u16 netvsc_pick_tx(struct net_de
  }
  
  static u16 netvsc_select_queue(struct net_device *ndev, struct sk_buff *skb,
 -                             void *accel_priv,
 +                             struct net_device *sb_dev,
                               select_queue_fallback_t fallback)
  {
        struct net_device_context *ndc = netdev_priv(ndev);
  
                if (vf_ops->ndo_select_queue)
                        txq = vf_ops->ndo_select_queue(vf_netdev, skb,
 -                                                     accel_priv, fallback);
 +                                                     sb_dev, fallback);
                else
 -                      txq = fallback(vf_netdev, skb);
 +                      txq = fallback(vf_netdev, skb, NULL);
  
                /* Record the queue selected by VF so that it can be
                 * used for common case where VF has more queues than
@@@ -1118,64 -1118,6 +1118,64 @@@ static void netvsc_get_vf_stats(struct 
        }
  }
  
 +static void netvsc_get_pcpu_stats(struct net_device *net,
 +                                struct netvsc_ethtool_pcpu_stats *pcpu_tot)
 +{
 +      struct net_device_context *ndev_ctx = netdev_priv(net);
 +      struct netvsc_device *nvdev = rcu_dereference_rtnl(ndev_ctx->nvdev);
 +      int i;
 +
 +      /* fetch percpu stats of vf */
 +      for_each_possible_cpu(i) {
 +              const struct netvsc_vf_pcpu_stats *stats =
 +                      per_cpu_ptr(ndev_ctx->vf_stats, i);
 +              struct netvsc_ethtool_pcpu_stats *this_tot = &pcpu_tot[i];
 +              unsigned int start;
 +
 +              do {
 +                      start = u64_stats_fetch_begin_irq(&stats->syncp);
 +                      this_tot->vf_rx_packets = stats->rx_packets;
 +                      this_tot->vf_tx_packets = stats->tx_packets;
 +                      this_tot->vf_rx_bytes = stats->rx_bytes;
 +                      this_tot->vf_tx_bytes = stats->tx_bytes;
 +              } while (u64_stats_fetch_retry_irq(&stats->syncp, start));
 +              this_tot->rx_packets = this_tot->vf_rx_packets;
 +              this_tot->tx_packets = this_tot->vf_tx_packets;
 +              this_tot->rx_bytes   = this_tot->vf_rx_bytes;
 +              this_tot->tx_bytes   = this_tot->vf_tx_bytes;
 +      }
 +
 +      /* fetch percpu stats of netvsc */
 +      for (i = 0; i < nvdev->num_chn; i++) {
 +              const struct netvsc_channel *nvchan = &nvdev->chan_table[i];
 +              const struct netvsc_stats *stats;
 +              struct netvsc_ethtool_pcpu_stats *this_tot =
 +                      &pcpu_tot[nvchan->channel->target_cpu];
 +              u64 packets, bytes;
 +              unsigned int start;
 +
 +              stats = &nvchan->tx_stats;
 +              do {
 +                      start = u64_stats_fetch_begin_irq(&stats->syncp);
 +                      packets = stats->packets;
 +                      bytes = stats->bytes;
 +              } while (u64_stats_fetch_retry_irq(&stats->syncp, start));
 +
 +              this_tot->tx_bytes      += bytes;
 +              this_tot->tx_packets    += packets;
 +
 +              stats = &nvchan->rx_stats;
 +              do {
 +                      start = u64_stats_fetch_begin_irq(&stats->syncp);
 +                      packets = stats->packets;
 +                      bytes = stats->bytes;
 +              } while (u64_stats_fetch_retry_irq(&stats->syncp, start));
 +
 +              this_tot->rx_bytes      += bytes;
 +              this_tot->rx_packets    += packets;
 +      }
 +}
 +
  static void netvsc_get_stats64(struct net_device *net,
                               struct rtnl_link_stats64 *t)
  {
@@@ -1273,23 -1215,6 +1273,23 @@@ static const struct 
        { "rx_no_memory", offsetof(struct netvsc_ethtool_stats, rx_no_memory) },
        { "stop_queue", offsetof(struct netvsc_ethtool_stats, stop_queue) },
        { "wake_queue", offsetof(struct netvsc_ethtool_stats, wake_queue) },
 +}, pcpu_stats[] = {
 +      { "cpu%u_rx_packets",
 +              offsetof(struct netvsc_ethtool_pcpu_stats, rx_packets) },
 +      { "cpu%u_rx_bytes",
 +              offsetof(struct netvsc_ethtool_pcpu_stats, rx_bytes) },
 +      { "cpu%u_tx_packets",
 +              offsetof(struct netvsc_ethtool_pcpu_stats, tx_packets) },
 +      { "cpu%u_tx_bytes",
 +              offsetof(struct netvsc_ethtool_pcpu_stats, tx_bytes) },
 +      { "cpu%u_vf_rx_packets",
 +              offsetof(struct netvsc_ethtool_pcpu_stats, vf_rx_packets) },
 +      { "cpu%u_vf_rx_bytes",
 +              offsetof(struct netvsc_ethtool_pcpu_stats, vf_rx_bytes) },
 +      { "cpu%u_vf_tx_packets",
 +              offsetof(struct netvsc_ethtool_pcpu_stats, vf_tx_packets) },
 +      { "cpu%u_vf_tx_bytes",
 +              offsetof(struct netvsc_ethtool_pcpu_stats, vf_tx_bytes) },
  }, vf_stats[] = {
        { "vf_rx_packets", offsetof(struct netvsc_vf_pcpu_stats, rx_packets) },
        { "vf_rx_bytes",   offsetof(struct netvsc_vf_pcpu_stats, rx_bytes) },
  #define NETVSC_GLOBAL_STATS_LEN       ARRAY_SIZE(netvsc_stats)
  #define NETVSC_VF_STATS_LEN   ARRAY_SIZE(vf_stats)
  
 +/* statistics per queue (rx/tx packets/bytes) */
 +#define NETVSC_PCPU_STATS_LEN (num_present_cpus() * ARRAY_SIZE(pcpu_stats))
 +
  /* 4 statistics per queue (rx/tx packets/bytes) */
  #define NETVSC_QUEUE_STATS_LEN(dev) ((dev)->num_chn * 4)
  
@@@ -1319,8 -1241,7 +1319,8 @@@ static int netvsc_get_sset_count(struc
        case ETH_SS_STATS:
                return NETVSC_GLOBAL_STATS_LEN
                        + NETVSC_VF_STATS_LEN
 -                      + NETVSC_QUEUE_STATS_LEN(nvdev);
 +                      + NETVSC_QUEUE_STATS_LEN(nvdev)
 +                      + NETVSC_PCPU_STATS_LEN;
        default:
                return -EINVAL;
        }
@@@ -1334,10 -1255,9 +1334,10 @@@ static void netvsc_get_ethtool_stats(st
        const void *nds = &ndc->eth_stats;
        const struct netvsc_stats *qstats;
        struct netvsc_vf_pcpu_stats sum;
 +      struct netvsc_ethtool_pcpu_stats *pcpu_sum;
        unsigned int start;
        u64 packets, bytes;
 -      int i, j;
 +      int i, j, cpu;
  
        if (!nvdev)
                return;
                data[i++] = packets;
                data[i++] = bytes;
        }
 +
 +      pcpu_sum = kvmalloc_array(num_possible_cpus(),
 +                                sizeof(struct netvsc_ethtool_pcpu_stats),
 +                                GFP_KERNEL);
 +      netvsc_get_pcpu_stats(dev, pcpu_sum);
 +      for_each_present_cpu(cpu) {
 +              struct netvsc_ethtool_pcpu_stats *this_sum = &pcpu_sum[cpu];
 +
 +              for (j = 0; j < ARRAY_SIZE(pcpu_stats); j++)
 +                      data[i++] = *(u64 *)((void *)this_sum
 +                                           + pcpu_stats[j].offset);
 +      }
 +      kvfree(pcpu_sum);
  }
  
  static void netvsc_get_strings(struct net_device *dev, u32 stringset, u8 *data)
        struct net_device_context *ndc = netdev_priv(dev);
        struct netvsc_device *nvdev = rtnl_dereference(ndc->nvdev);
        u8 *p = data;
 -      int i;
 +      int i, cpu;
  
        if (!nvdev)
                return;
                        p += ETH_GSTRING_LEN;
                }
  
 +              for_each_present_cpu(cpu) {
 +                      for (i = 0; i < ARRAY_SIZE(pcpu_stats); i++) {
 +                              sprintf(p, pcpu_stats[i].name, cpu);
 +                              p += ETH_GSTRING_LEN;
 +                      }
 +              }
 +
                break;
        }
  }
@@@ -2303,6 -2203,9 +2303,9 @@@ static struct  hv_driver netvsc_drv = 
        .id_table = id_table,
        .probe = netvsc_probe,
        .remove = netvsc_remove,
+       .driver = {
+               .probe_type = PROBE_PREFER_ASYNCHRONOUS,
+       },
  };
  
  /*
diff --combined drivers/perf/arm-ccn.c
index 4b15c36f46311c44386b711d7ec31afe37127ac3,860f5bd8dce8f762b2ffc5ecab1a6ec03425b30a..7dd850e02f192e43fbb9ad3ab6868975d4170abe
@@@ -17,6 -17,7 +17,7 @@@
  #include <linux/interrupt.h>
  #include <linux/io.h>
  #include <linux/module.h>
+ #include <linux/mod_devicetable.h>
  #include <linux/perf_event.h>
  #include <linux/platform_device.h>
  #include <linux/slab.h>
@@@ -1485,9 -1486,17 +1486,9 @@@ static int arm_ccn_probe(struct platfor
        platform_set_drvdata(pdev, ccn);
  
        res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 -      if (!res)
 -              return -EINVAL;
 -
 -      if (!devm_request_mem_region(ccn->dev, res->start,
 -                      resource_size(res), pdev->name))
 -              return -EBUSY;
 -
 -      ccn->base = devm_ioremap(ccn->dev, res->start,
 -                              resource_size(res));
 -      if (!ccn->base)
 -              return -EFAULT;
 +      ccn->base = devm_ioremap_resource(ccn->dev, res);
 +      if (IS_ERR(ccn->base))
 +              return PTR_ERR(ccn->base);
  
        res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
        if (!res)
index 4a916be44f4fb9b7f1d24d7a062eed8f4d4ae11e,acea41073dfdb7d5172d7bca3d5ef6342229a424..4fa69f988c7b780b95f4aaaf6cd64a617938507e
@@@ -1,15 -1,19 +1,16 @@@
 +// SPDX-License-Identifier: GPL-2.0
  /*
   * Intel Merrifield SoC pinctrl driver
   *
   * Copyright (C) 2016, Intel Corporation
   * Author: Andy Shevchenko <andriy.shevchenko@linux.intel.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/bitops.h>
  #include <linux/err.h>
  #include <linux/io.h>
  #include <linux/module.h>
+ #include <linux/mod_devicetable.h>
  #include <linux/platform_device.h>
  #include <linux/pinctrl/pinconf.h>
  #include <linux/pinctrl/pinconf-generic.h>
index bce533f8542016339f4c400ab2092be4405fd685,c93752cd51c5deb3dc4529e993722190da090aa3..280dca725d6ea3c7542635b46a47638611f5e47f
@@@ -15,6 -15,7 +15,7 @@@
  
  #include <linux/kernel.h>
  #include <linux/init.h>
+ #include <linux/mod_devicetable.h>
  #include <linux/pinctrl/pinctrl.h>
  #include <linux/platform_device.h>
  
@@@ -517,10 -518,6 +518,10 @@@ static const int i2c4_muxvals[] = {1, 1
  static const unsigned nand_pins[] = {3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
                                     15, 16, 17};
  static const int nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
 +static const unsigned spi0_pins[] = {56, 57, 58, 59};
 +static const int spi0_muxvals[] = {0, 0, 0, 0};
 +static const unsigned spi1_pins[] = {169, 170, 171, 172};
 +static const int spi1_muxvals[] = {1, 1, 1, 1};
  static const unsigned system_bus_pins[] = {1, 2, 6, 7, 8, 9, 10, 11, 12, 13,
                                           14, 15, 16, 17};
  static const int system_bus_muxvals[] = {0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@@ -600,8 -597,6 +601,8 @@@ static const struct uniphier_pinctrl_gr
        UNIPHIER_PINCTRL_GROUP(i2c3),
        UNIPHIER_PINCTRL_GROUP(i2c4),
        UNIPHIER_PINCTRL_GROUP(nand),
 +      UNIPHIER_PINCTRL_GROUP(spi0),
 +      UNIPHIER_PINCTRL_GROUP(spi1),
        UNIPHIER_PINCTRL_GROUP(system_bus),
        UNIPHIER_PINCTRL_GROUP(system_bus_cs1),
        UNIPHIER_PINCTRL_GROUP(uart0),
@@@ -638,8 -633,6 +639,8 @@@ static const char * const i2c1_groups[
  static const char * const i2c3_groups[] = {"i2c3"};
  static const char * const i2c4_groups[] = {"i2c4"};
  static const char * const nand_groups[] = {"nand"};
 +static const char * const spi0_groups[] = {"spi0"};
 +static const char * const spi1_groups[] = {"spi1"};
  static const char * const system_bus_groups[] = {"system_bus",
                                                 "system_bus_cs1"};
  static const char * const uart0_groups[] = {"uart0"};
@@@ -665,8 -658,6 +666,8 @@@ static const struct uniphier_pinmux_fun
        UNIPHIER_PINMUX_FUNCTION(i2c3),
        UNIPHIER_PINMUX_FUNCTION(i2c4),
        UNIPHIER_PINMUX_FUNCTION(nand),
 +      UNIPHIER_PINMUX_FUNCTION(spi0),
 +      UNIPHIER_PINMUX_FUNCTION(spi1),
        UNIPHIER_PINMUX_FUNCTION(system_bus),
        UNIPHIER_PINMUX_FUNCTION(uart0),
        UNIPHIER_PINMUX_FUNCTION(uart1),
index 99f06fe8e1cb08bf8decece8c874b3cbc2334433,130ce248470582e8d5f52b67dc43a5c650bee395..d2d56c985c83029bddc5af85b6ea77b8d526bcd5
@@@ -15,6 -15,7 +15,7 @@@
  
  #include <linux/kernel.h>
  #include <linux/init.h>
+ #include <linux/mod_devicetable.h>
  #include <linux/pinctrl/pinctrl.h>
  #include <linux/platform_device.h>
  
@@@ -606,14 -607,6 +607,14 @@@ static const unsigned nand_pins[] = {3
  static const int nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
  static const unsigned sd_pins[] = {10, 11, 12, 13, 14, 15, 16, 17};
  static const int sd_muxvals[] = {3, 3, 3, 3, 3, 3, 3, 3};  /* No SDVOLC */
 +static const unsigned spi0_pins[] = {56, 57, 58, 59};
 +static const int spi0_muxvals[] = {0, 0, 0, 0};
 +static const unsigned spi1_pins[] = {169, 170, 171, 172};
 +static const int spi1_muxvals[] = {1, 1, 1, 1};
 +static const unsigned spi2_pins[] = {86, 87, 88, 89};
 +static const int spi2_muxvals[] = {1, 1, 1, 1};
 +static const unsigned spi3_pins[] = {74, 75, 76, 77};
 +static const int spi3_muxvals[] = {1, 1, 1, 1};
  static const unsigned system_bus_pins[] = {1, 2, 6, 7, 8, 9, 10, 11, 12, 13,
                                           14, 15, 16, 17};
  static const int system_bus_muxvals[] = {0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@@ -693,10 -686,6 +694,10 @@@ static const struct uniphier_pinctrl_gr
        UNIPHIER_PINCTRL_GROUP(i2c4),
        UNIPHIER_PINCTRL_GROUP(nand),
        UNIPHIER_PINCTRL_GROUP(sd),
 +      UNIPHIER_PINCTRL_GROUP(spi0),
 +      UNIPHIER_PINCTRL_GROUP(spi1),
 +      UNIPHIER_PINCTRL_GROUP(spi2),
 +      UNIPHIER_PINCTRL_GROUP(spi3),
        UNIPHIER_PINCTRL_GROUP(system_bus),
        UNIPHIER_PINCTRL_GROUP(system_bus_cs1),
        UNIPHIER_PINCTRL_GROUP(uart0),
@@@ -734,10 -723,6 +735,10 @@@ static const char * const i2c3_groups[
  static const char * const i2c4_groups[] = {"i2c4"};
  static const char * const nand_groups[] = {"nand"};
  static const char * const sd_groups[] = {"sd"};
 +static const char * const spi0_groups[] = {"spi0"};
 +static const char * const spi1_groups[] = {"spi1"};
 +static const char * const spi2_groups[] = {"spi2"};
 +static const char * const spi3_groups[] = {"spi3"};
  static const char * const system_bus_groups[] = {"system_bus",
                                                 "system_bus_cs1"};
  static const char * const uart0_groups[] = {"uart0"};
@@@ -767,10 -752,6 +768,10 @@@ static const struct uniphier_pinmux_fun
        UNIPHIER_PINMUX_FUNCTION(i2c4),
        UNIPHIER_PINMUX_FUNCTION(nand),
        UNIPHIER_PINMUX_FUNCTION(sd),
 +      UNIPHIER_PINMUX_FUNCTION(spi0),
 +      UNIPHIER_PINMUX_FUNCTION(spi1),
 +      UNIPHIER_PINMUX_FUNCTION(spi2),
 +      UNIPHIER_PINMUX_FUNCTION(spi3),
        UNIPHIER_PINMUX_FUNCTION(system_bus),
        UNIPHIER_PINMUX_FUNCTION(uart0),
        UNIPHIER_PINMUX_FUNCTION(uart1),
index b247011524bfbbf526fe62322e0f2714b7ee3b00,5a20121d2c932f2ee7a96c2c3c245d76b1e8e0e4..03d87ad82726785bb7c8f896cbed15cfe7e6cd94
@@@ -15,6 -15,7 +15,7 @@@
  
  #include <linux/kernel.h>
  #include <linux/init.h>
+ #include <linux/mod_devicetable.h>
  #include <linux/pinctrl/pinctrl.h>
  #include <linux/platform_device.h>
  
@@@ -576,8 -577,6 +577,8 @@@ static const unsigned nand_cs1_pins[] 
  static const int nand_cs1_muxvals[] = {0, 0};
  static const unsigned sd_pins[] = {44, 45, 46, 47, 48, 49, 50, 51, 52};
  static const int sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
 +static const unsigned spi0_pins[] = {135, 136, 137, 138};
 +static const int spi0_muxvals[] = {12, 12, 12, 12};
  static const unsigned system_bus_pins[] = {16, 17, 18, 19, 20, 165, 166, 167,
                                           168, 169, 170, 171, 172, 173};
  static const int system_bus_muxvals[] = {0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1,
@@@ -642,7 -641,6 +643,7 @@@ static const struct uniphier_pinctrl_gr
        UNIPHIER_PINCTRL_GROUP(nand),
        UNIPHIER_PINCTRL_GROUP(nand_cs1),
        UNIPHIER_PINCTRL_GROUP(sd),
 +      UNIPHIER_PINCTRL_GROUP(spi0),
        UNIPHIER_PINCTRL_GROUP(system_bus),
        UNIPHIER_PINCTRL_GROUP(system_bus_cs0),
        UNIPHIER_PINCTRL_GROUP(system_bus_cs1),
@@@ -670,7 -668,6 +671,7 @@@ static const char * const i2c2_groups[
  static const char * const i2c3_groups[] = {"i2c3"};
  static const char * const nand_groups[] = {"nand", "nand_cs1"};
  static const char * const sd_groups[] = {"sd"};
 +static const char * const spi0_groups[] = {"spi0"};
  static const char * const system_bus_groups[] = {"system_bus",
                                                 "system_bus_cs0",
                                                 "system_bus_cs1",
@@@ -694,7 -691,6 +695,7 @@@ static const struct uniphier_pinmux_fun
        UNIPHIER_PINMUX_FUNCTION(i2c3),
        UNIPHIER_PINMUX_FUNCTION(nand),
        UNIPHIER_PINMUX_FUNCTION(sd),
 +      UNIPHIER_PINMUX_FUNCTION(spi0),
        UNIPHIER_PINMUX_FUNCTION(system_bus),
        UNIPHIER_PINMUX_FUNCTION(uart0),
        UNIPHIER_PINMUX_FUNCTION(uart1),
index cb58797adaee8d2b92995987083b2685ad318b40,76c57b0d5d8887bd7b3d9e53902c04c70a603bff..31f36ea539115b246166633164095bf1b29f105d
@@@ -15,6 -15,7 +15,7 @@@
  
  #include <linux/kernel.h>
  #include <linux/init.h>
+ #include <linux/mod_devicetable.h>
  #include <linux/pinctrl/pinctrl.h>
  #include <linux/platform_device.h>
  
@@@ -769,10 -770,6 +770,10 @@@ static const unsigned nand_cs1_pins[] 
  static const int nand_cs1_muxvals[] = {0, 0};
  static const unsigned sd_pins[] = {47, 48, 49, 50, 51, 52, 53, 54, 55};
  static const int sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
 +static const unsigned spi0_pins[] = {199, 200, 201, 202};
 +static const int spi0_muxvals[] = {8, 8, 8, 8};
 +static const unsigned spi1_pins[] = {93, 94, 95, 96};
 +static const int spi1_muxvals[] = {1, 1, 1, 1};
  static const unsigned system_bus_pins[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
                                           11, 12, 13};
  static const int system_bus_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@@ -855,8 -852,6 +856,8 @@@ static const struct uniphier_pinctrl_gr
        UNIPHIER_PINCTRL_GROUP(nand),
        UNIPHIER_PINCTRL_GROUP(nand_cs1),
        UNIPHIER_PINCTRL_GROUP(sd),
 +      UNIPHIER_PINCTRL_GROUP(spi0),
 +      UNIPHIER_PINCTRL_GROUP(spi1),
        UNIPHIER_PINCTRL_GROUP(system_bus),
        UNIPHIER_PINCTRL_GROUP(system_bus_cs1),
        UNIPHIER_PINCTRL_GROUP(system_bus_cs2),
@@@ -888,8 -883,6 +889,8 @@@ static const char * const i2c2_groups[
  static const char * const i2c3_groups[] = {"i2c3"};
  static const char * const nand_groups[] = {"nand", "nand_cs1"};
  static const char * const sd_groups[] = {"sd"};
 +static const char * const spi0_groups[] = {"spi0"};
 +static const char * const spi1_groups[] = {"spi1"};
  static const char * const system_bus_groups[] = {"system_bus",
                                                 "system_bus_cs1",
                                                 "system_bus_cs2",
@@@ -915,8 -908,6 +916,8 @@@ static const struct uniphier_pinmux_fun
        UNIPHIER_PINMUX_FUNCTION(i2c3),
        UNIPHIER_PINMUX_FUNCTION(nand),
        UNIPHIER_PINMUX_FUNCTION(sd),
 +      UNIPHIER_PINMUX_FUNCTION(spi0),
 +      UNIPHIER_PINMUX_FUNCTION(spi1),
        UNIPHIER_PINMUX_FUNCTION(system_bus),
        UNIPHIER_PINMUX_FUNCTION(uart0),
        UNIPHIER_PINMUX_FUNCTION(uart1),
index 89148f81d5e06edd2b6d86fd7979dbf2f48d9943,4a00273732478d312e1f5f98120186223a98046b..60722898d5c71c79c8cef74c42a2363d8f4168f2
@@@ -15,6 -15,7 +15,7 @@@
  
  #include <linux/kernel.h>
  #include <linux/init.h>
+ #include <linux/mod_devicetable.h>
  #include <linux/pinctrl/pinctrl.h>
  #include <linux/platform_device.h>
  
@@@ -1050,10 -1051,6 +1051,10 @@@ static const int sd_muxvals[] = {0, 0, 
  static const unsigned sd1_pins[] = {319, 320, 321, 322, 323, 324, 325, 326,
                                    327};
  static const int sd1_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
 +static const unsigned spi0_pins[] = {199, 200, 201, 202};
 +static const int spi0_muxvals[] = {11, 11, 11, 11};
 +static const unsigned spi1_pins[] = {195, 196, 197, 198, 235, 238, 239};
 +static const int spi1_muxvals[] = {11, 11, 11, 11, 11, 11, 11};
  static const unsigned system_bus_pins[] = {25, 26, 27, 28, 29, 30, 31, 32, 33,
                                           34, 35, 36, 37, 38};
  static const int system_bus_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@@ -1142,8 -1139,6 +1143,8 @@@ static const struct uniphier_pinctrl_gr
        UNIPHIER_PINCTRL_GROUP(nand_cs1),
        UNIPHIER_PINCTRL_GROUP(sd),
        UNIPHIER_PINCTRL_GROUP(sd1),
 +      UNIPHIER_PINCTRL_GROUP(spi0),
 +      UNIPHIER_PINCTRL_GROUP(spi1),
        UNIPHIER_PINCTRL_GROUP(system_bus),
        UNIPHIER_PINCTRL_GROUP(system_bus_cs0),
        UNIPHIER_PINCTRL_GROUP(system_bus_cs1),
@@@ -1177,8 -1172,6 +1178,8 @@@ static const char * const i2c6_groups[
  static const char * const nand_groups[] = {"nand", "nand_cs1"};
  static const char * const sd_groups[] = {"sd"};
  static const char * const sd1_groups[] = {"sd1"};
 +static const char * const spi0_groups[] = {"spi0"};
 +static const char * const spi1_groups[] = {"spi1"};
  static const char * const system_bus_groups[] = {"system_bus",
                                                 "system_bus_cs0",
                                                 "system_bus_cs1",
@@@ -1210,8 -1203,6 +1211,8 @@@ static const struct uniphier_pinmux_fun
        UNIPHIER_PINMUX_FUNCTION(nand),
        UNIPHIER_PINMUX_FUNCTION(sd),
        UNIPHIER_PINMUX_FUNCTION(sd1),
 +      UNIPHIER_PINMUX_FUNCTION(spi0),
 +      UNIPHIER_PINMUX_FUNCTION(spi1),
        UNIPHIER_PINMUX_FUNCTION(system_bus),
        UNIPHIER_PINMUX_FUNCTION(uart0),
        UNIPHIER_PINMUX_FUNCTION(uart1),
index d77d6b37aabeb48d0b7311a1ede83b495daaf983,9a55972e9c1679973646ec7c840cdb88c4d2dd3e..ae79815301412ec1c3b226688d33d4146624ccae
@@@ -15,6 -15,7 +15,7 @@@
  
  #include <linux/kernel.h>
  #include <linux/init.h>
+ #include <linux/mod_devicetable.h>
  #include <linux/pinctrl/pinctrl.h>
  #include <linux/platform_device.h>
  
@@@ -818,12 -819,6 +819,12 @@@ static const unsigned nand_cs1_pins[] 
  static const int nand_cs1_muxvals[] = {0, 0};
  static const unsigned sd_pins[] = {250, 251, 252, 253, 254, 255, 256, 257, 258};
  static const int sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
 +static const unsigned spi0_pins[] = {120, 121, 122, 123};
 +static const int spi0_muxvals[] = {0, 0, 0, 0};
 +static const unsigned spi1_pins[] = {134, 139, 85, 86};
 +static const int spi1_muxvals[] = {1, 1, 1, 1};
 +static const unsigned spi2_pins[] = {55, 56, 57, 58, 82, 83, 84};
 +static const int spi2_muxvals[] = {0, 0, 0, 0, 1, 1, 1};
  static const unsigned system_bus_pins[] = {4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
                                           14, 15, 16, 17};
  static const int system_bus_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@@ -910,9 -905,6 +911,9 @@@ static const struct uniphier_pinctrl_gr
        UNIPHIER_PINCTRL_GROUP(i2c5c),
        UNIPHIER_PINCTRL_GROUP(i2c6),
        UNIPHIER_PINCTRL_GROUP(sd),
 +      UNIPHIER_PINCTRL_GROUP(spi0),
 +      UNIPHIER_PINCTRL_GROUP(spi1),
 +      UNIPHIER_PINCTRL_GROUP(spi2),
        UNIPHIER_PINCTRL_GROUP(system_bus),
        UNIPHIER_PINCTRL_GROUP(system_bus_cs0),
        UNIPHIER_PINCTRL_GROUP(system_bus_cs1),
@@@ -943,9 -935,6 +944,9 @@@ static const char * const i2c5_groups[
  static const char * const i2c6_groups[] = {"i2c6"};
  static const char * const nand_groups[] = {"nand", "nand_cs1"};
  static const char * const sd_groups[] = {"sd"};
 +static const char * const spi0_groups[] = {"spi0"};
 +static const char * const spi1_groups[] = {"spi1"};
 +static const char * const spi2_groups[] = {"spi2"};
  static const char * const system_bus_groups[] = {"system_bus",
                                                 "system_bus_cs0",
                                                 "system_bus_cs1",
@@@ -973,9 -962,6 +974,9 @@@ static const struct uniphier_pinmux_fun
        UNIPHIER_PINMUX_FUNCTION(i2c6),
        UNIPHIER_PINMUX_FUNCTION(nand),
        UNIPHIER_PINMUX_FUNCTION(sd),
 +      UNIPHIER_PINMUX_FUNCTION(spi0),
 +      UNIPHIER_PINMUX_FUNCTION(spi1),
 +      UNIPHIER_PINMUX_FUNCTION(spi2),
        UNIPHIER_PINMUX_FUNCTION(system_bus),
        UNIPHIER_PINMUX_FUNCTION(uart0),
        UNIPHIER_PINMUX_FUNCTION(uart1),
index 90199da87eb947f038321b190ff89903709d7d9f,544f4b465308f057fbac2374c4408ad75c6fb951..7975bd7f99c8fd3e8065f879c85326f730243cb6
@@@ -15,6 -15,7 +15,7 @@@
  
  #include <linux/kernel.h>
  #include <linux/init.h>
+ #include <linux/mod_devicetable.h>
  #include <linux/pinctrl/pinctrl.h>
  #include <linux/platform_device.h>
  
@@@ -778,10 -779,6 +779,10 @@@ static const unsigned nand_cs1_pins[] 
  static const int nand_cs1_muxvals[] = {8, 8};
  static const unsigned sd_pins[] = {47, 48, 49, 50, 51, 52, 53, 54, 55};
  static const int sd_muxvals[] = {8, 8, 8, 8, 8, 8, 8, 8, 8};
 +static const unsigned spi0_pins[] = {199, 200, 201, 202};
 +static const int spi0_muxvals[] = {8, 8, 8, 8};
 +static const unsigned spi1_pins[] = {93, 94, 95, 96};
 +static const int spi1_muxvals[] = {1, 1, 1, 1};
  static const unsigned system_bus_pins[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
                                           11, 12, 13};
  static const int system_bus_muxvals[] = {8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
@@@ -865,8 -862,6 +866,8 @@@ static const struct uniphier_pinctrl_gr
        UNIPHIER_PINCTRL_GROUP(nand),
        UNIPHIER_PINCTRL_GROUP(nand_cs1),
        UNIPHIER_PINCTRL_GROUP(sd),
 +      UNIPHIER_PINCTRL_GROUP(spi0),
 +      UNIPHIER_PINCTRL_GROUP(spi1),
        UNIPHIER_PINCTRL_GROUP(system_bus),
        UNIPHIER_PINCTRL_GROUP(system_bus_cs1),
        UNIPHIER_PINCTRL_GROUP(uart0),
@@@ -903,8 -898,6 +904,8 @@@ static const char * const i2c5_groups[
  static const char * const i2c6_groups[] = {"i2c6"};
  static const char * const nand_groups[] = {"nand", "nand_cs1"};
  static const char * const sd_groups[] = {"sd"};
 +static const char * const spi0_groups[] = {"spi0"};
 +static const char * const spi1_groups[] = {"spi1"};
  static const char * const system_bus_groups[] = {"system_bus",
                                                 "system_bus_cs1"};
  static const char * const uart0_groups[] = {"uart0", "uart0b", "uart0b_ctsrts"};
@@@ -936,8 -929,6 +937,8 @@@ static const struct uniphier_pinmux_fun
        UNIPHIER_PINMUX_FUNCTION(i2c6),
        UNIPHIER_PINMUX_FUNCTION(nand),
        UNIPHIER_PINMUX_FUNCTION(sd),
 +      UNIPHIER_PINMUX_FUNCTION(spi0),
 +      UNIPHIER_PINMUX_FUNCTION(spi1),
        UNIPHIER_PINMUX_FUNCTION(system_bus),
        UNIPHIER_PINMUX_FUNCTION(uart0),
        UNIPHIER_PINMUX_FUNCTION(uart1),
index 3b860da47733f9c7c05542c31d7192c376436cca,9a15998b4f738ab022f1831b25b28b0406573a61..b16ce283695bb9bd5d59b0119cb3014651939f44
@@@ -15,6 -15,7 +15,7 @@@
  
  #include <linux/init.h>
  #include <linux/kernel.h>
+ #include <linux/mod_devicetable.h>
  #include <linux/pinctrl/pinctrl.h>
  #include <linux/platform_device.h>
  
@@@ -808,10 -809,6 +809,10 @@@ static const unsigned int nand_pins[] 
  static const int nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
  static const unsigned int sd_pins[] = {43, 44, 45, 46, 47, 48, 49, 50, 51};
  static const int sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
 +static const unsigned spi0_pins[] = {100, 101, 102, 103};
 +static const int spi0_muxvals[] = {0, 0, 0, 0};
 +static const unsigned spi1_pins[] = {112, 113, 114, 115};
 +static const int spi1_muxvals[] = {2, 2, 2, 2};
  static const unsigned int system_bus_pins[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
                                               11, 12, 13, 14};
  static const int system_bus_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@@ -890,8 -887,6 +891,8 @@@ static const struct uniphier_pinctrl_gr
        UNIPHIER_PINCTRL_GROUP(i2c3),
        UNIPHIER_PINCTRL_GROUP(nand),
        UNIPHIER_PINCTRL_GROUP(sd),
 +      UNIPHIER_PINCTRL_GROUP(spi0),
 +      UNIPHIER_PINCTRL_GROUP(spi1),
        UNIPHIER_PINCTRL_GROUP(system_bus),
        UNIPHIER_PINCTRL_GROUP(system_bus_cs1),
        UNIPHIER_PINCTRL_GROUP(uart0),
@@@ -919,8 -914,6 +920,8 @@@ static const char * const i2c2_groups[
  static const char * const i2c3_groups[] = {"i2c3"};
  static const char * const nand_groups[] = {"nand"};
  static const char * const sd_groups[] = {"sd"};
 +static const char * const spi0_groups[] = {"spi0"};
 +static const char * const spi1_groups[] = {"spi1"};
  static const char * const system_bus_groups[] = {"system_bus",
                                                 "system_bus_cs1"};
  static const char * const uart0_groups[] = {"uart0", "uart0_ctsrts"};
@@@ -944,8 -937,6 +945,8 @@@ static const struct uniphier_pinmux_fun
        UNIPHIER_PINMUX_FUNCTION(i2c3),
        UNIPHIER_PINMUX_FUNCTION(nand),
        UNIPHIER_PINMUX_FUNCTION(sd),
 +      UNIPHIER_PINMUX_FUNCTION(spi0),
 +      UNIPHIER_PINMUX_FUNCTION(spi1),
        UNIPHIER_PINMUX_FUNCTION(system_bus),
        UNIPHIER_PINMUX_FUNCTION(uart0),
        UNIPHIER_PINMUX_FUNCTION(uart1),
index f086083368a74124776c928301804f2b1cba41ea,0402077d3b3a6cbda1d7eb3eeed9b7af8f024d4a..cb44568fcbbce37f0f0d19ec083cea963307f20b
@@@ -15,6 -15,7 +15,7 @@@
  
  #include <linux/kernel.h>
  #include <linux/init.h>
+ #include <linux/mod_devicetable.h>
  #include <linux/pinctrl/pinctrl.h>
  #include <linux/platform_device.h>
  
@@@ -504,8 -505,6 +505,8 @@@ static const unsigned nand_cs1_pins[] 
  static const int nand_cs1_muxvals[] = {0, 0};
  static const unsigned sd_pins[] = {32, 33, 34, 35, 36, 37, 38, 39, 40};
  static const int sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
 +static const unsigned spi0_pins[] = {118, 119, 120, 121};
 +static const int spi0_muxvals[] = {3, 3, 3, 3};
  static const unsigned system_bus_pins[] = {136, 137, 138, 139, 140, 141, 142,
                                           143, 144, 145, 146, 147, 148, 149};
  static const int system_bus_muxvals[] = {-1, -1, -1, -1, -1, -1, -1, -1, -1,
@@@ -572,7 -571,6 +573,7 @@@ static const struct uniphier_pinctrl_gr
        UNIPHIER_PINCTRL_GROUP(nand),
        UNIPHIER_PINCTRL_GROUP(nand_cs1),
        UNIPHIER_PINCTRL_GROUP(sd),
 +      UNIPHIER_PINCTRL_GROUP(spi0),
        UNIPHIER_PINCTRL_GROUP(system_bus),
        UNIPHIER_PINCTRL_GROUP(system_bus_cs1),
        UNIPHIER_PINCTRL_GROUP(system_bus_cs2),
@@@ -601,7 -599,6 +602,7 @@@ static const char * const i2c2_groups[
  static const char * const i2c3_groups[] = {"i2c3"};
  static const char * const nand_groups[] = {"nand", "nand_cs1"};
  static const char * const sd_groups[] = {"sd"};
 +static const char * const spi0_groups[] = {"spi0"};
  static const char * const system_bus_groups[] = {"system_bus",
                                                 "system_bus_cs1",
                                                 "system_bus_cs2",
@@@ -626,7 -623,6 +627,7 @@@ static const struct uniphier_pinmux_fun
        UNIPHIER_PINMUX_FUNCTION(i2c3),
        UNIPHIER_PINMUX_FUNCTION(nand),
        UNIPHIER_PINMUX_FUNCTION(sd),
 +      UNIPHIER_PINMUX_FUNCTION(spi0),
        UNIPHIER_PINMUX_FUNCTION(system_bus),
        UNIPHIER_PINMUX_FUNCTION(uart0),
        UNIPHIER_PINMUX_FUNCTION(uart1),
diff --combined include/linux/device.h
index 2a562f4ded071a6c7d233f62ee0e0a3615fe4b2a,6aa8d51eabe9776790619159e1ce1a0366b97b59..f6475b1820ef7fce15821bb03b62ecd4653a9120
@@@ -90,7 -90,7 +90,7 @@@ extern void bus_remove_file(struct bus_
   * @num_vf:   Called to find out how many virtual functions a device on this
   *            bus supports.
   * @dma_configure:    Called to setup DMA configuration on a device on
 -                      this bus.
 + *                    this bus.
   * @pm:               Power management operations of this bus, callback the specific
   *            device driver's pm-ops.
   * @iommu_ops:  IOMMU specific operations for this bus, used to attach IOMMU
@@@ -384,9 -384,6 +384,9 @@@ int subsys_virtual_register(struct bus_
   * @shutdown_pre: Called at shut-down time before driver shutdown.
   * @ns_type:  Callbacks so sysfs can detemine namespaces.
   * @namespace:        Namespace of the device belongs to this class.
 + * @get_ownership: Allows class to specify uid/gid of the sysfs directories
 + *            for the devices belonging to the class. Usually tied to
 + *            device's namespace.
   * @pm:               The default device power management operations of this class.
   * @p:                The private data of the driver core, no one other than the
   *            driver core can touch this.
@@@ -416,8 -413,6 +416,8 @@@ struct class 
        const struct kobj_ns_type_operations *ns_type;
        const void *(*namespace)(struct device *dev);
  
 +      void (*get_ownership)(struct device *dev, kuid_t *uid, kgid_t *gid);
 +
        const struct dev_pm_ops *pm;
  
        struct subsys_private *p;
@@@ -701,6 -696,10 +701,10 @@@ extern void devm_free_pages(struct devi
  
  void __iomem *devm_ioremap_resource(struct device *dev, struct resource *res);
  
+ void __iomem *devm_of_iomap(struct device *dev,
+                           struct device_node *node, int index,
+                           resource_size_t *size);
  /* allows to add/remove a custom action to devres stack */
  int devm_add_action(struct device *dev, void (*action)(void *), void *data);
  void devm_remove_action(struct device *dev, void (*action)(void *), void *data);
@@@ -789,16 -788,14 +793,16 @@@ enum device_link_state 
   * Device link flags.
   *
   * STATELESS: The core won't track the presence of supplier/consumer drivers.
 - * AUTOREMOVE: Remove this link automatically on consumer driver unbind.
 + * AUTOREMOVE_CONSUMER: Remove the link automatically on consumer driver unbind.
   * PM_RUNTIME: If set, the runtime PM framework will use this link.
   * RPM_ACTIVE: Run pm_runtime_get_sync() on the supplier during link creation.
 + * AUTOREMOVE_SUPPLIER: Remove the link automatically on supplier driver unbind.
   */
 -#define DL_FLAG_STATELESS     BIT(0)
 -#define DL_FLAG_AUTOREMOVE    BIT(1)
 -#define DL_FLAG_PM_RUNTIME    BIT(2)
 -#define DL_FLAG_RPM_ACTIVE    BIT(3)
 +#define DL_FLAG_STATELESS             BIT(0)
 +#define DL_FLAG_AUTOREMOVE_CONSUMER   BIT(1)
 +#define DL_FLAG_PM_RUNTIME            BIT(2)
 +#define DL_FLAG_RPM_ACTIVE            BIT(3)
 +#define DL_FLAG_AUTOREMOVE_SUPPLIER   BIT(4)
  
  /**
   * struct device_link - Device link representation.
@@@ -893,8 -890,6 +897,8 @@@ struct dev_links_info 
   * @coherent_dma_mask: Like dma_mask, but for alloc_coherent mapping as not all
   *            hardware supports 64-bit addresses for consistent allocations
   *            such descriptors.
 + * @bus_dma_mask: Mask of an upstream bridge or bus which imposes a smaller DMA
 + *            limit than the device itself supports.
   * @dma_pfn_offset: offset of DMA memory range relatively of RAM
   * @dma_parms:        A low level driver may set these to teach IOMMU code about
   *            segment limitations.
   * @offline:  Set after successful invocation of bus type's .offline().
   * @of_node_reused: Set if the device-tree node is shared with an ancestor
   *              device.
 - * @dma_32bit_limit: bridge limited to 32bit DMA even if the device itself
 - *            indicates support for a higher limit in the dma_mask field.
   *
   * At the lowest level, every device in a Linux system is represented by an
   * instance of struct device. The device structure contains the information
@@@ -974,7 -971,6 +978,7 @@@ struct device 
                                             not all hardware supports
                                             64 bit addresses for consistent
                                             allocations such descriptors. */
 +      u64             bus_dma_mask;   /* upstream dma_mask constraint */
        unsigned long   dma_pfn_offset;
  
        struct device_dma_parameters *dma_parms;
        bool                    offline_disabled:1;
        bool                    offline:1;
        bool                    of_node_reused:1;
 -      bool                    dma_32bit_limit:1;
  };
  
  static inline struct device *kobj_to_dev(struct kobject *kobj)
@@@ -1323,7 -1320,6 +1327,7 @@@ extern const char *dev_driver_string(co
  struct device_link *device_link_add(struct device *consumer,
                                    struct device *supplier, u32 flags);
  void device_link_del(struct device_link *link);
 +void device_link_remove(void *consumer, struct device *supplier);
  
  #ifdef CONFIG_PRINTK