]> Git Repo - J-linux.git/commitdiff
Merge tag 'thermal-v5.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/thermal...
authorLinus Torvalds <[email protected]>
Fri, 7 Aug 2020 01:10:55 +0000 (18:10 -0700)
committerLinus Torvalds <[email protected]>
Fri, 7 Aug 2020 01:10:55 +0000 (18:10 -0700)
Pull thermal updates from Daniel Lezcano:

 - Add support to enable/disable the thermal zones resulting on core
   code and drivers cleanup (Andrzej Pietrasiewicz)

 - Add generic netlink support for userspace notifications: events,
   temperature and discovery commands (Daniel Lezcano)

 - Fix redundant initialization for a ret variable (Colin Ian King)

 - Remove the clock cooling code as it is used nowhere (Amit Kucheria)

 - Add the rcar_gen3_thermal's r8a774e1 support (Marian-Cristian
   Rotariu)

 - Replace all references to thermal.txt in the documentation to the
   corresponding yaml files (Amit Kucheria)

 - Add maintainer entry for the IPA (Lukasz Luba)

 - Add support for MSM8939 for the tsens (Shawn Guo)

 - Update power allocator and devfreq cooling to SPDX licensing (Lukasz
   Luba)

 - Add Cannon Lake Low Power PCH support (Sumeet Pawnikar)

 - Add tsensor support for V2 mediatek thermal system (Henry Yen)

 - Fix thermal zone lookup by ID for the core code (Thierry Reding)

* tag 'thermal-v5.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/thermal/linux: (40 commits)
  thermal: intel: intel_pch_thermal: Add Cannon Lake Low Power PCH support
  thermal: mediatek: Add tsensor support for V2 thermal system
  thermal: mediatek: Prepare to add support for other platforms
  thermal: Update power allocator and devfreq cooling to SPDX licensing
  MAINTAINERS: update entry to thermal governors file name prefixing
  thermal: core: Add thermal zone enable/disable notification
  thermal: qcom: tsens-v0_1: Add support for MSM8939
  dt-bindings: tsens: qcom: Document MSM8939 compatible
  thermal: core: Fix thermal zone lookup by ID
  thermal: int340x: processor_thermal: fix: update Jasper Lake PCI id
  thermal: imx8mm: Support module autoloading
  thermal: ti-soc-thermal: Fix reversed condition in ti_thermal_expose_sensor()
  MAINTAINERS: Add maintenance information for IPA
  thermal: rcar_gen3_thermal: Do not shadow thcode variable
  dt-bindings: thermal: Get rid of thermal.txt and replace references
  thermal: core: Move initialization after core initcall
  thermal: netlink: Improve the initcall ordering
  net: genetlink: Move initialization to core_initcall
  thermal: rcar_gen3_thermal: Add r8a774e1 support
  thermal/drivers/clock_cooling: Remove clock_cooling code
  ...

1  2 
Documentation/devicetree/bindings/arm/freescale/fsl,scu.txt
Documentation/devicetree/bindings/thermal/qcom-tsens.yaml
MAINTAINERS
drivers/platform/x86/acerhdf.c
drivers/thermal/imx_thermal.c
drivers/thermal/intel/int340x_thermal/int3400_thermal.c
drivers/thermal/mtk_thermal.c
drivers/thermal/qcom/tsens.c
drivers/thermal/rcar_gen3_thermal.c
drivers/thermal/sprd_thermal.c
net/netlink/genetlink.c

index 10b8459e49f8c22a4ff12c2485b00030dc72df64,baab5c83c56a01731f8240f9fc050e933142049e..6064d98b103144e07e8a4d02853bc3fba5d9b02d
@@@ -47,7 -47,7 +47,7 @@@ Required properties
                          &lsio_mu1 1 2
                          &lsio_mu1 1 3
                          &lsio_mu1 3 3>;
 -              See Documentation/devicetree/bindings/mailbox/fsl,mu.txt
 +              See Documentation/devicetree/bindings/mailbox/fsl,mu.yaml
                for detailed mailbox binding.
  
  Note: Each mu which supports general interrupt should have an alias correctly
@@@ -176,7 -176,7 +176,7 @@@ Required properties
                                  "fsl,imx8qxp-sc-thermal"
                                followed by "fsl,imx-sc-thermal";
  
- - #thermal-sensor-cells:      See Documentation/devicetree/bindings/thermal/thermal.txt
+ - #thermal-sensor-cells:      See Documentation/devicetree/bindings/thermal/thermal-sensor.yaml
                                for a description.
  
  Example (imx8qxp):
index adac01c9d9cd3bcd0cd1c147ebf6a0d8a45ba47d,8100fce2c89235565033bff9a70254b5026ca9b3..95462e071ab4791297e6e824063b61391d919af4
@@@ -8,7 -8,7 +8,7 @@@ $schema: http://devicetree.org/meta-sch
  title: QCOM SoC Temperature Sensor (TSENS)
  
  maintainers:
 -  - Amit Kucheria <amit.kucheria@linaro.org>
 +  - Amit Kucheria <amitk@kernel.org>
  
  description: |
    QCOM SoCs have TSENS IP to allow temperature measurement. There are currently
@@@ -23,6 -23,7 +23,7 @@@ properties
          items:
            - enum:
                - qcom,msm8916-tsens
+               - qcom,msm8939-tsens
                - qcom,msm8974-tsens
            - const: qcom,tsens-v0_1
  
@@@ -40,8 -41,6 +41,8 @@@
                - qcom,msm8998-tsens
                - qcom,sc7180-tsens
                - qcom,sdm845-tsens
 +              - qcom,sm8150-tsens
 +              - qcom,sm8250-tsens
            - const: qcom,tsens-v2
  
    reg:
diff --combined MAINTAINERS
index 5511d95b939349d382f5ec62d8ad1c91420fe3f1,ad4fdda70d4e596ec5a9a8b391e54e239574a4e7..a45fe1a6251ea83296be259c54b92ffc2730f00e
@@@ -147,7 -147,7 +147,7 @@@ Maintainers Lis
  M:    Steffen Klassert <[email protected]>
  L:    [email protected]
  S:    Odd Fixes
 -F:    Documentation/networking/device_drivers/3com/vortex.rst
 +F:    Documentation/networking/device_drivers/ethernet/3com/vortex.rst
  F:    drivers/net/ethernet/3com/3c59x.c
  
  3CR990 NETWORK DRIVER
@@@ -782,7 -782,7 +782,7 @@@ F: include/dt-bindings/reset/altr,rst-m
  F:    include/linux/mfd/altera-a10sr.h
  
  ALTERA TRIPLE SPEED ETHERNET DRIVER
 -M:    Thor Thayer <thor.thayer@linux.intel.com>
 +M:    Joyce Ooi <joyce.ooi@intel.com>
  L:    [email protected]
  S:    Maintained
  F:    drivers/net/ethernet/altera/
@@@ -816,7 -816,7 +816,7 @@@ R: Saeed Bishara <[email protected]
  R:    Zorik Machulsky <[email protected]>
  L:    [email protected]
  S:    Supported
 -F:    Documentation/networking/device_drivers/amazon/ena.rst
 +F:    Documentation/networking/device_drivers/ethernet/amazon/ena.rst
  F:    drivers/net/ethernet/amazon/
  
  AMAZON RDMA EFA DRIVER
@@@ -830,20 -830,11 +830,20 @@@ F:      include/uapi/rdma/efa-abi.
  
  AMD CRYPTOGRAPHIC COPROCESSOR (CCP) DRIVER
  M:    Tom Lendacky <[email protected]>
 +M:    John Allen <[email protected]>
  L:    [email protected]
  S:    Supported
  F:    drivers/crypto/ccp/
  F:    include/linux/ccp.h
  
 +AMD CRYPTOGRAPHIC COPROCESSOR (CCP) DRIVER - SEV SUPPORT
 +M:    Brijesh Singh <[email protected]>
 +M:    Tom Lendacky <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +F:    drivers/crypto/ccp/sev*
 +F:    include/uapi/linux/psp-sev.h
 +
  AMD DISPLAY CORE
  M:    Harry Wentland <[email protected]>
  M:    Leo Li <[email protected]>
@@@ -1082,7 -1073,6 +1082,7 @@@ L:      [email protected]
  S:    Supported
  W:    http://ez.analog.com/community/linux-device-drivers
  F:    drivers/media/i2c/adv7180.c
 +F:    Documentation/devicetree/bindings/media/i2c/adv7180.yaml
  
  ANALOG DEVICES INC ADV748X DRIVER
  M:    Kieran Bingham <[email protected]>
@@@ -1180,8 -1170,6 +1180,8 @@@ M:      Todd Kjos <[email protected]
  M:    Martijn Coenen <[email protected]>
  M:    Joel Fernandes <[email protected]>
  M:    Christian Brauner <[email protected]>
 +M:    Hridya Valsaraju <[email protected]>
 +M:    Suren Baghdasaryan <[email protected]>
  L:    [email protected]
  S:    Supported
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git
@@@ -1307,7 -1295,7 +1307,7 @@@ L:      [email protected]
  S:    Supported
  W:    https://www.marvell.com/
  Q:    http://patchwork.ozlabs.org/project/netdev/list/
 -F:    Documentation/networking/device_drivers/aquantia/atlantic.rst
 +F:    Documentation/networking/device_drivers/ethernet/aquantia/atlantic.rst
  F:    drivers/net/ethernet/aquantia/atlantic/
  
  AQUANTIA ETHERNET DRIVER PTP SUBSYSTEM
@@@ -1437,7 -1425,7 +1437,7 @@@ F:      arch/arm*/include/asm/perf_event.
  F:    arch/arm*/kernel/hw_breakpoint.c
  F:    arch/arm*/kernel/perf_*
  F:    arch/arm/oprofile/common.c
 -F:    drivers/perf/*
 +F:    drivers/perf/
  F:    include/linux/perf/arm_pmu.h
  
  ARM PORT
@@@ -1460,6 -1448,11 +1460,6 @@@ S:     Odd Fixe
  F:    drivers/amba/
  F:    include/linux/amba/bus.h
  
 -ARM PRIMECELL CLCD PL110 DRIVER
 -M:    Russell King <[email protected]>
 -S:    Odd Fixes
 -F:    drivers/video/fbdev/amba-clcd.*
 -
  ARM PRIMECELL KMI PL050 DRIVER
  M:    Russell King <[email protected]>
  S:    Odd Fixes
@@@ -1604,9 -1597,6 +1604,9 @@@ F:      sound/soc/meson
  
  ARM/Amlogic Meson SoC support
  M:    Kevin Hilman <[email protected]>
 +R:    Neil Armstrong <[email protected]>
 +R:    Jerome Brunet <[email protected]>
 +R:    Martin Blumenstingl <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  L:    [email protected]
  S:    Maintained
@@@ -1627,7 -1617,7 +1627,7 @@@ L:      [email protected]
  S:    Maintained
  F:    arch/arm/boot/dts/alpine*
  F:    arch/arm/mach-alpine/
 -F:    arch/arm64/boot/dts/al/
 +F:    arch/arm64/boot/dts/amazon/
  F:    drivers/*/*alpine*
  
  ARM/ARTPEC MACHINE SUPPORT
@@@ -1964,14 -1954,6 +1964,14 @@@ F:    drivers/irqchip/irq-ixp4xx.
  F:    include/linux/irqchip/irq-ixp4xx.h
  F:    include/linux/platform_data/timer-ixp4xx.h
  
 +ARM/INTEL KEEMBAY ARCHITECTURE
 +M:    Paul J. Murphy <[email protected]>
 +M:    Daniele Alessandrelli <[email protected]>
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/arm/intel,keembay.yaml
 +F:    arch/arm64/boot/dts/intel/keembay-evm.dts
 +F:    arch/arm64/boot/dts/intel/keembay-soc.dtsi
 +
  ARM/INTEL RESEARCH IMOTE/STARGATE 2 MACHINE SUPPORT
  M:    Jonathan Cameron <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
@@@ -2129,32 -2111,12 +2129,32 @@@ X:   drivers/net/wireless/atmel
  N:    at91
  N:    atmel
  
 +ARM/Microchip Sparx5 SoC support
 +M:    Lars Povlsen <[email protected]>
 +M:    Steen Hegelund <[email protected]>
 +M:    Microchip Linux Driver Support <[email protected]>
 +L:    [email protected] (moderated for non-subscribers)
 +S:    Supported
 +F:    arch/arm64/boot/dts/microchip/
 +N:    sparx5
 +
  ARM/MIOA701 MACHINE SUPPORT
  M:    Robert Jarzmik <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
  F:    arch/arm/mach-pxa/mioa701.c
  
 +ARM/MStar/Sigmastar Armv7 SoC support
 +M:    Daniel Palmer <[email protected]>
 +L:    [email protected] (moderated for non-subscribers)
 +S:    Maintained
 +W:    http://linux-chenxing.org/
 +F:    Documentation/devicetree/bindings/arm/mstar/*
 +F:    arch/arm/boot/dts/infinity*.dtsi
 +F:    arch/arm/boot/dts/mercury*.dtsi
 +F:    arch/arm/boot/dts/mstar-v7.dtsi
 +F:    arch/arm/mach-mstar/
 +
  ARM/NEC MOBILEPRO 900/c MACHINE SUPPORT
  M:    Michael Petchkovsky <[email protected]>
  S:    Maintained
@@@ -2309,7 -2271,7 +2309,7 @@@ F:      drivers/pci/controller/dwc/pcie-qcom
  F:    drivers/phy/qualcomm/
  F:    drivers/power/*/msm*
  F:    drivers/reset/reset-qcom-*
 -F:    drivers/scsi/ufs/ufs-qcom.*
 +F:    drivers/scsi/ufs/ufs-qcom*
  F:    drivers/spi/spi-geni-qcom.c
  F:    drivers/spi/spi-qcom-qspi.c
  F:    drivers/spi/spi-qup.c
@@@ -2865,7 -2827,7 +2865,7 @@@ ASYMMETRIC KEY
  M:    David Howells <[email protected]>
  L:    [email protected]
  S:    Maintained
 -F:    Documentation/crypto/asymmetric-keys.txt
 +F:    Documentation/crypto/asymmetric-keys.rst
  F:    crypto/asymmetric_keys/
  F:    include/crypto/pkcs7.h
  F:    include/crypto/public_key.h
@@@ -2875,7 -2837,7 +2875,7 @@@ ASYNCHRONOUS TRANSFERS/TRANSFORMS (IOAT
  R:    Dan Williams <[email protected]>
  S:    Odd fixes
  W:    http://sourceforge.net/projects/xscaleiop
 -F:    Documentation/crypto/async-tx-api.txt
 +F:    Documentation/crypto/async-tx-api.rst
  F:    crypto/async_tx/
  F:    drivers/dma/
  F:    include/linux/async_tx.h
@@@ -2919,7 -2881,7 +2919,7 @@@ S:      Supporte
  F:    drivers/net/wireless/ath/*
  
  ATHEROS ATH5K WIRELESS DRIVER
 -M:    Jiri Slaby <jirislaby@gmail.com>
 +M:    Jiri Slaby <jirislaby@kernel.org>
  M:    Nick Kossifidis <[email protected]>
  M:    Luis Chamberlain <[email protected]>
  L:    [email protected]
@@@ -2967,7 -2929,6 +2967,7 @@@ F:      include/uapi/linux/atm
  
  ATMEL MACB ETHERNET DRIVER
  M:    Nicolas Ferre <[email protected]>
 +M:    Claudiu Beznea <[email protected]>
  S:    Supported
  F:    drivers/net/ethernet/cadence/
  
@@@ -3345,7 -3306,7 +3345,7 @@@ X:      arch/riscv/net/bpf_jit_comp32.
  
  BPF JIT for S390
  M:    Ilya Leoshkevich <[email protected]>
 -M:    Heiko Carstens <heiko.carstens@de.ibm.com>
 +M:    Heiko Carstens <hca@linux.ibm.com>
  M:    Vasily Gorbik <[email protected]>
  L:    [email protected]
  L:    [email protected]
@@@ -3621,7 -3582,6 +3621,7 @@@ M:      Selvin Xavier <selvin.xavier@broadco
  M:    Devesh Sharma <[email protected]>
  M:    Somnath Kotur <[email protected]>
  M:    Sriharsha Basavapatna <[email protected]>
 +M:    Naresh Kumar PBS <[email protected]>
  L:    [email protected]
  S:    Supported
  W:    http://www.broadcom.com
@@@ -3986,7 -3946,7 +3986,7 @@@ L:      [email protected]
  S:    Supported
  F:    drivers/char/hw_random/cctrng.c
  F:    drivers/char/hw_random/cctrng.h
 -F:    Documentation/devicetree/bindings/rng/arm-cctrng.txt
 +F:    Documentation/devicetree/bindings/rng/arm-cctrng.yaml
  W:    https://developer.arm.com/products/system-ip/trustzone-cryptocell/cryptocell-700-family
  
  CEC FRAMEWORK
  S:    Maintained
  F:    drivers/connector/
  
 +CONSOLE SUBSYSTEM
 +M:    Greg Kroah-Hartman <[email protected]>
 +S:    Supported
 +F:    drivers/video/console/
 +F:    include/linux/console*
 +
  CONTROL GROUP (CGROUP)
  M:    Tejun Heo <[email protected]>
  M:    Li Zefan <[email protected]>
@@@ -4446,12 -4400,6 +4446,12 @@@ S:    Maintaine
  F:    Documentation/hwmon/coretemp.rst
  F:    drivers/hwmon/coretemp.c
  
 +CORSAIR-CPRO HARDWARE MONITOR DRIVER
 +M:    Marius Zachmann <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/hwmon/corsair-cpro.c
 +
  COSA/SRP SYNC SERIAL DRIVER
  M:    Jan "Yenya" Kasprzak <[email protected]>
  S:    Maintained
@@@ -4805,7 -4753,7 +4805,7 @@@ F:      net/ax25/sysctl_net_ax25.
  DAVICOM FAST ETHERNET (DMFE) NETWORK DRIVER
  L:    [email protected]
  S:    Orphan
 -F:    Documentation/networking/device_drivers/dec/dmfe.rst
 +F:    Documentation/networking/device_drivers/ethernet/dec/dmfe.rst
  F:    drivers/net/ethernet/dec/tulip/dmfe.c
  
  DC390/AM53C974 SCSI driver
@@@ -5073,6 -5021,7 +5073,6 @@@ F:      drivers/mfd/da91??-*.
  F:    drivers/pinctrl/pinctrl-da90??.c
  F:    drivers/power/supply/da9052-battery.c
  F:    drivers/power/supply/da91??-*.c
 -F:    drivers/regulator/da903x.c
  F:    drivers/regulator/da9???-regulator.[ch]
  F:    drivers/regulator/slg51000-regulator.[ch]
  F:    drivers/rtc/rtc-da90??.c
@@@ -5145,7 -5094,6 +5145,7 @@@ F:      fs/dlm
  
  DMA BUFFER SHARING FRAMEWORK
  M:    Sumit Semwal <[email protected]>
 +M:    Christian König <[email protected]>
  L:    [email protected]
  L:    [email protected]
  L:    [email protected] (moderated for non-subscribers)
@@@ -5163,7 -5111,7 +5163,7 @@@ M:      Vinod Koul <[email protected]
  L:    [email protected]
  S:    Maintained
  Q:    https://patchwork.kernel.org/project/linux-dmaengine/list/
 -T:    git git://git.infradead.org/users/vkoul/slave-dma.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/vkoul/dmaengine.git
  F:    Documentation/devicetree/bindings/dma/
  F:    Documentation/driver-api/dmaengine/
  F:    drivers/dma/
@@@ -5293,8 -5241,8 +5293,8 @@@ M:      Ioana Ciornei <[email protected]
  M:    Ioana Radulescu <[email protected]>
  L:    [email protected]
  S:    Maintained
 -F:    Documentation/networking/device_drivers/freescale/dpaa2/ethernet-driver.rst
 -F:    Documentation/networking/device_drivers/freescale/dpaa2/mac-phy-support.rst
 +F:    Documentation/networking/device_drivers/ethernet/freescale/dpaa2/ethernet-driver.rst
 +F:    Documentation/networking/device_drivers/ethernet/freescale/dpaa2/mac-phy-support.rst
  F:    drivers/net/ethernet/freescale/dpaa2/Kconfig
  F:    drivers/net/ethernet/freescale/dpaa2/Makefile
  F:    drivers/net/ethernet/freescale/dpaa2/dpaa2-eth*
@@@ -5542,7 -5490,7 +5542,7 @@@ F:      include/uapi/drm/r128_drm.
  DRM DRIVER FOR RAYDIUM RM67191 PANELS
  M:    Robert Chiras <[email protected]>
  S:    Maintained
 -F:    Documentation/devicetree/bindings/display/panel/raydium,rm67191.txt
 +F:    Documentation/devicetree/bindings/display/panel/raydium,rm67191.yaml
  F:    drivers/gpu/drm/panel/panel-raydium-rm67191.c
  
  DRM DRIVER FOR ROCKTECH JH057N00900 PANELS
@@@ -5871,7 -5819,7 +5871,7 @@@ M:      Eric Anholt <[email protected]
  S:    Supported
  T:    git git://github.com/anholt/linux
  T:    git git://anongit.freedesktop.org/drm/drm-misc
 -F:    Documentation/devicetree/bindings/display/brcm,bcm-vc4.txt
 +F:    Documentation/devicetree/bindings/display/brcm,bcm2835-*.yaml
  F:    drivers/gpu/drm/vc4/
  F:    include/uapi/drm/vc4_drm.h
  
@@@ -5895,15 -5843,6 +5895,15 @@@ T:    git git://anongit.freedesktop.org/dr
  F:    Documentation/gpu/xen-front.rst
  F:    drivers/gpu/drm/xen/
  
 +DRM DRIVERS FOR XILINX
 +M:    Hyun Kwon <[email protected]>
 +M:    Laurent Pinchart <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +T:    git git://anongit.freedesktop.org/drm/drm-misc
 +F:    Documentation/devicetree/bindings/display/xlnx/
 +F:    drivers/gpu/drm/xlnx/
 +
  DRM DRIVERS FOR ZTE ZX
  M:    Shawn Guo <[email protected]>
  L:    [email protected]
@@@ -7017,7 -6956,6 +7017,7 @@@ M:      Timur Tabi <[email protected]
  M:    Nicolin Chen <[email protected]>
  M:    Xiubo Li <[email protected]>
  R:    Fabio Estevam <[email protected]>
 +R:    Shengjiu Wang <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  L:    [email protected]
  S:    Maintained
  S:    Maintained
  F:    drivers/usb/gadget/udc/fsl*
  
 +FREESCALE USB PHY DRIVER
 +M:    Ran Wang <[email protected]>
 +L:    [email protected]
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/usb/phy/phy-fsl-usb*
 +
  FREEVXFS FILESYSTEM
  M:    Christoph Hellwig <[email protected]>
  S:    Maintained
@@@ -7175,7 -7106,7 +7175,7 @@@ F:      include/linux/futex.
  F:    include/uapi/linux/futex.h
  F:    kernel/futex.c
  F:    tools/perf/bench/futex*
 -F:    Documentation/locking/*futex*
 +F:    tools/testing/selftests/futex/
  
  GATEWORKS SYSTEM CONTROLLER (GSC) DRIVER
  M:    Tim Harvey <[email protected]>
@@@ -7371,7 -7302,7 +7371,7 @@@ R:      Sagi Shahar <[email protected]
  R:    Jon Olson <[email protected]>
  L:    [email protected]
  S:    Supported
 -F:    Documentation/networking/device_drivers/google/gve.rst
 +F:    Documentation/networking/device_drivers/ethernet/google/gve.rst
  F:    drivers/net/ethernet/google
  
  GPD POCKET FAN DRIVER
@@@ -7982,7 -7913,7 +7982,7 @@@ HUAWEI ETHERNET DRIVE
  M:    Bin Luo <[email protected]>
  L:    [email protected]
  S:    Supported
 -F:    Documentation/networking/hinic.rst
 +F:    Documentation/networking/device_drivers/ethernet/huawei/hinic.rst
  F:    drivers/net/ethernet/huawei/hinic/
  
  HUGETLB FILESYSTEM
@@@ -8034,7 -7965,7 +8034,7 @@@ S:      Supporte
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/hyperv/linux.git
  F:    Documentation/ABI/stable/sysfs-bus-vmbus
  F:    Documentation/ABI/testing/debugfs-hyperv
 -F:    Documentation/networking/device_drivers/microsoft/netvsc.rst
 +F:    Documentation/networking/device_drivers/ethernet/microsoft/netvsc.rst
  F:    arch/x86/hyperv
  F:    arch/x86/include/asm/hyperv-tlfs.h
  F:    arch/x86/include/asm/mshyperv.h
  S:    Maintained
  F:    drivers/platform/x86/intel_atomisp2_pm.c
  
 +INTEL ATOMISP2 LED DRIVER
 +M:    Hans de Goede <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/platform/x86/intel_atomisp2_led.c
 +
  INTEL BROXTON PMC DRIVER
  M:    Mika Westerberg <[email protected]>
  M:    Zha Qipeng <[email protected]>
@@@ -8722,7 -8647,18 +8722,7 @@@ W:     http://e1000.sourceforge.net
  Q:    http://patchwork.ozlabs.org/project/intel-wired-lan/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-queue.git
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue.git
 -F:    Documentation/networking/device_drivers/intel/e100.rst
 -F:    Documentation/networking/device_drivers/intel/e1000.rst
 -F:    Documentation/networking/device_drivers/intel/e1000e.rst
 -F:    Documentation/networking/device_drivers/intel/fm10k.rst
 -F:    Documentation/networking/device_drivers/intel/i40e.rst
 -F:    Documentation/networking/device_drivers/intel/iavf.rst
 -F:    Documentation/networking/device_drivers/intel/ice.rst
 -F:    Documentation/networking/device_drivers/intel/igb.rst
 -F:    Documentation/networking/device_drivers/intel/igbvf.rst
 -F:    Documentation/networking/device_drivers/intel/ixgb.rst
 -F:    Documentation/networking/device_drivers/intel/ixgbe.rst
 -F:    Documentation/networking/device_drivers/intel/ixgbevf.rst
 +F:    Documentation/networking/device_drivers/ethernet/intel/
  F:    drivers/net/ethernet/intel/
  F:    drivers/net/ethernet/intel/*/
  F:    include/linux/avf/virtchnl.h
@@@ -8850,7 -8786,7 +8850,7 @@@ M:      Tomas Winkler <[email protected]
  L:    [email protected]
  S:    Supported
  F:    Documentation/driver-api/mei/*
 -F:    drivers/misc/mei/*
 +F:    drivers/misc/mei/
  F:    drivers/watchdog/mei_wdt.c
  F:    include/linux/mei_cl_bus.h
  F:    include/uapi/linux/mei.h
@@@ -8912,8 -8848,8 +8912,8 @@@ INTEL PRO/WIRELESS 2100, 2200BG, 2915AB
  M:    Stanislav Yakovlev <[email protected]>
  L:    [email protected]
  S:    Maintained
 -F:    Documentation/networking/device_drivers/intel/ipw2100.rst
 -F:    Documentation/networking/device_drivers/intel/ipw2200.rst
 +F:    Documentation/networking/device_drivers/wifi/intel/ipw2100.rst
 +F:    Documentation/networking/device_drivers/wifi/intel/ipw2200.rst
  F:    drivers/net/wireless/intel/ipw2x00/
  
  INTEL PSTATE DRIVER
@@@ -9043,14 -8979,6 +9043,14 @@@ F:    include/dt-bindings/interconnect
  F:    include/linux/interconnect-provider.h
  F:    include/linux/interconnect.h
  
 +INVENSENSE ICM-426xx IMU DRIVER
 +M:    Jean-Baptiste Maneyrol <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +W     https://invensense.tdk.com/
 +F:    Documentation/devicetree/bindings/iio/imu/invensense,icm42600.yaml
 +F:    drivers/iio/imu/inv_icm42600/
 +
  INVENSENSE MPU-3050 GYROSCOPE DRIVER
  M:    Linus Walleij <[email protected]>
  L:    [email protected]
@@@ -9377,17 -9305,6 +9377,17 @@@ F:    Documentation/kbuild/kconfig
  F:    scripts/Kconfig.include
  F:    scripts/kconfig/
  
 +KCOV
 +R:    Dmitry Vyukov <[email protected]>
 +R:    Andrey Konovalov <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/dev-tools/kcov.rst
 +F:    include/linux/kcov.h
 +F:    include/uapi/linux/kcov.h
 +F:    kernel/kcov.c
 +F:    scripts/Makefile.kcov
 +
  KCSAN
  M:    Marco Elver <[email protected]>
  R:    Dmitry Vyukov <[email protected]>
@@@ -9524,11 -9441,9 +9524,11 @@@ F:    arch/arm64/kvm
  F:    include/kvm/arm_*
  
  KERNEL VIRTUAL MACHINE FOR MIPS (KVM/mips)
 +M:    Huacai Chen <[email protected]>
 +M:    Aleksandar Markovic <[email protected]>
  L:    [email protected]
  L:    [email protected]
 -S:    Orphan
 +S:    Maintained
  F:    arch/mips/include/asm/kvm*
  F:    arch/mips/include/uapi/asm/kvm*
  F:    arch/mips/kvm/
@@@ -9682,7 -9597,7 +9682,7 @@@ M:      Anil S Keshavamurthy <anil.s.keshava
  M:    "David S. Miller" <[email protected]>
  M:    Masami Hiramatsu <[email protected]>
  S:    Maintained
 -F:    Documentation/kprobes.txt
 +F:    Documentation/trace/kprobes.rst
  F:    include/asm-generic/kprobes.h
  F:    include/linux/kprobes.h
  F:    kernel/kprobes.c
@@@ -9754,10 -9669,12 +9754,10 @@@ T:   git git://git.kernel.org/pub/scm/lin
  F:    scripts/leaking_addresses.pl
  
  LED SUBSYSTEM
 -M:    Jacek Anaszewski <[email protected]>
  M:    Pavel Machek <[email protected]>
  R:    Dan Murphy <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/j.anaszewski/linux-leds.git
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/pavel/linux-leds.git
  F:    Documentation/devicetree/bindings/leds/
  F:    drivers/leds/
@@@ -10043,7 -9960,6 +10043,7 @@@ M:    Luc Maranget <[email protected]
  M:    "Paul E. McKenney" <[email protected]>
  R:    Akira Yokosawa <[email protected]>
  R:    Daniel Lustig <[email protected]>
 +R:    Joel Fernandes <[email protected]>
  L:    [email protected]
  L:    [email protected]
  S:    Supported
@@@ -10052,7 -9968,6 +10052,7 @@@ F:    Documentation/atomic_bitops.tx
  F:    Documentation/atomic_t.txt
  F:    Documentation/core-api/atomic_ops.rst
  F:    Documentation/core-api/refcount-vs-atomic.rst
 +F:    Documentation/litmus-tests/
  F:    Documentation/memory-barriers.txt
  F:    tools/memory-model/
  
@@@ -10447,7 -10362,7 +10447,7 @@@ M:   Geetha sowjanya <[email protected]
  M:    Jerin Jacob <[email protected]>
  L:    [email protected]
  S:    Supported
 -F:    Documentation/networking/device_drivers/marvell/octeontx2.rst
 +F:    Documentation/networking/device_drivers/ethernet/marvell/octeontx2.rst
  F:    drivers/net/ethernet/marvell/octeontx2/af/
  
  MARVELL SOC MMC/SD/SDIO CONTROLLER DRIVER
  S:    Supported
  W:    http://www.mellanox.com
  Q:    http://patchwork.ozlabs.org/project/netdev/list/
 -F:    Documentation/networking/device_drivers/mellanox/
 +F:    Documentation/networking/device_drivers/ethernet/mellanox/
  F:    drivers/net/ethernet/mellanox/mlx5/core/
  F:    include/linux/mlx5/
  
@@@ -11170,23 -11085,6 +11170,23 @@@ F: Documentation/core-api/boot-time-mm.
  F:    include/linux/memblock.h
  F:    mm/memblock.c
  
 +MEMORY CONTROLLER DRIVERS
 +M:    Krzysztof Kozlowski <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux-mem-ctrl.git
 +F:    Documentation/devicetree/bindings/memory-controllers/
 +F:    drivers/memory/
 +
 +MEMORY FREQUENCY SCALING DRIVERS FOR NVIDIA TEGRA
 +M:    Dmitry Osipenko <[email protected]>
 +L:    [email protected]
 +L:    [email protected]
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/chanwoo/linux.git
 +S:    Maintained
 +F:    drivers/devfreq/tegra20-devfreq.c
 +F:    drivers/devfreq/tegra30-devfreq.c
 +
  MEMORY MANAGEMENT
  M:    Andrew Morton <[email protected]>
  L:    [email protected]
@@@ -11342,7 -11240,7 +11342,7 @@@ S:   Maintaine
  F:    drivers/crypto/atmel-ecc.*
  
  MICROCHIP I2C DRIVER
 -M:    Ludovic Desroches <ludovic.desroches@microchip.com>
 +M:    Codrin Ciubotariu <codrin.ciubotariu@microchip.com>
  L:    [email protected]
  S:    Supported
  F:    drivers/i2c/busses/i2c-at91-*.c
@@@ -11426,6 -11324,7 +11426,6 @@@ F:   Documentation/devicetree/bindings/pw
  F:    drivers/pwm/pwm-atmel.c
  
  MICROCHIP SAMA5D2-COMPATIBLE ADC DRIVER
 -M:    Ludovic Desroches <[email protected]>
  M:    Eugen Hristev <[email protected]>
  L:    [email protected]
  S:    Supported
@@@ -11434,17 -11333,17 +11434,17 @@@ F:        drivers/iio/adc/at91-sama5d2_adc.
  F:    include/dt-bindings/iio/adc/at91-sama5d2_adc.h
  
  MICROCHIP SAMA5D2-COMPATIBLE SHUTDOWN CONTROLLER
 -M:    Nicolas Ferre <nicolas.ferre@microchip.com>
 +M:    Claudiu Beznea <claudiu.beznea@microchip.com>
  S:    Supported
  F:    drivers/power/reset/at91-sama5d2_shdwc.c
  
  MICROCHIP SPI DRIVER
 -M:    Nicolas Ferre <nicolas.ferre@microchip.com>
 +M:    Tudor Ambarus <tudor.ambarus@microchip.com>
  S:    Supported
  F:    drivers/spi/spi-atmel.*
  
  MICROCHIP SSC DRIVER
 -M:    Nicolas Ferre <nicolas.ferre@microchip.com>
 +M:    Codrin Ciubotariu <codrin.ciubotariu@microchip.com>
  L:    [email protected] (moderated for non-subscribers)
  S:    Supported
  F:    drivers/misc/atmel-ssc.c
  S:    Supported
  F:    drivers/usb/gadget/udc/atmel_usba_udc.*
  
 +MICROCHIP WILC1000 WIFI DRIVER
 +M:    Ajay Singh <[email protected]>
 +M:    Claudiu Beznea <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +F:    drivers/net/wireless/microchip/wilc1000/
 +
  MICROCHIP XDMA DRIVER
  M:    Ludovic Desroches <[email protected]>
  L:    [email protected]
@@@ -11532,17 -11424,6 +11532,17 @@@ F: arch/mips/configs/generic/board-bost
  F:    drivers/clk/imgtec/clk-boston.c
  F:    include/dt-bindings/clock/boston-clock.h
  
 +MIPS CORE DRIVERS
 +M:    Thomas Bogendoerfer <[email protected]>
 +M:    Serge Semin <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +F:    drivers/bus/mips_cdmm.c
 +F:    drivers/clocksource/mips-gic-timer.c
 +F:    drivers/cpuidle/cpuidle-cps.c
 +F:    drivers/irqchip/irq-mips-cpu.c
 +F:    drivers/irqchip/irq-mips-gic.c
 +
  MIPS GENERIC PLATFORM
  M:    Paul Burton <[email protected]>
  L:    [email protected]
@@@ -11671,7 -11552,7 +11671,7 @@@ F:   drivers/media/pci/meye
  F:    include/uapi/linux/meye.h
  
  MOXA SMARTIO/INDUSTIO/INTELLIO SERIAL CARD
 -M:    Jiri Slaby <jirislaby@gmail.com>
 +M:    Jiri Slaby <jirislaby@kernel.org>
  S:    Maintained
  F:    Documentation/driver-api/serial/moxa-smartio.rst
  F:    drivers/tty/mxser.*
@@@ -11925,8 -11806,8 +11925,8 @@@ NETERION 10GbE DRIVERS (s2io/vxge
  M:    Jon Mason <[email protected]>
  L:    [email protected]
  S:    Supported
 -F:    Documentation/networking/device_drivers/neterion/s2io.rst
 -F:    Documentation/networking/device_drivers/neterion/vxge.rst
 +F:    Documentation/networking/device_drivers/ethernet/neterion/s2io.rst
 +F:    Documentation/networking/device_drivers/ethernet/neterion/vxge.rst
  F:    drivers/net/ethernet/neterion/
  
  NETFILTER
@@@ -12371,7 -12252,6 +12371,7 @@@ F:   drivers/nvme/target
  NVMEM FRAMEWORK
  M:    Srinivas Kandagatla <[email protected]>
  S:    Maintained
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/srini/nvmem.git
  F:    Documentation/ABI/stable/sysfs-bus-nvmem
  F:    Documentation/devicetree/bindings/nvmem/
  F:    drivers/nvmem/
@@@ -12817,7 -12697,6 +12817,7 @@@ OP-TEE DRIVE
  M:    Jens Wiklander <[email protected]>
  L:    [email protected]
  S:    Maintained
 +F:    Documentation/ABI/testing/sysfs-bus-optee-devices
  F:    drivers/tee/optee/
  
  OP-TEE RANDOM NUMBER GENERATOR (RNG) DRIVER
@@@ -13491,7 -13370,7 +13491,7 @@@ M:   Shannon Nelson <[email protected]
  M:    Pensando Drivers <[email protected]>
  L:    [email protected]
  S:    Supported
 -F:    Documentation/networking/device_drivers/pensando/ionic.rst
 +F:    Documentation/networking/device_drivers/ethernet/pensando/ionic.rst
  F:    drivers/net/ethernet/pensando/
  
  PER-CPU MEMORY ALLOCATOR
@@@ -13701,19 -13580,22 +13701,19 @@@ F:        drivers/block/pktcdvd.
  F:    include/linux/pktcdvd.h
  F:    include/uapi/linux/pktcdvd.h
  
 -PKUNITY SOC DRIVERS
 -M:    Guan Xuetao <[email protected]>
 -S:    Maintained
 -W:    http://mprc.pku.edu.cn/~guanxuetao/linux
 -T:    git git://github.com/gxt/linux.git
 -F:    drivers/i2c/busses/i2c-puv3.c
 -F:    drivers/input/serio/i8042-unicore32io.h
 -F:    drivers/rtc/rtc-puv3.c
 -F:    drivers/video/fbdev/fb-puv3.c
 -
  PLANTOWER PMS7003 AIR POLLUTION SENSOR DRIVER
  M:    Tomasz Duszynski <[email protected]>
  S:    Maintained
  F:    Documentation/devicetree/bindings/iio/chemical/plantower,pms7003.yaml
  F:    drivers/iio/chemical/pms7003.c
  
 +PLDMFW LIBRARY
 +M:    Jacob Keller <[email protected]>
 +S:    Maintained
 +F:    Documentation/driver-api/pldmfw/
 +F:    include/linux/pldmfw.h
 +F:    lib/pldmfw/
 +
  PLX DMA DRIVER
  M:    Logan Gunthorpe <[email protected]>
  S:    Maintained
@@@ -14171,7 -14053,7 +14171,7 @@@ QLOGIC QLA3XXX NETWORK DRIVE
  M:    [email protected]
  L:    [email protected]
  S:    Supported
 -F:    Documentation/networking/device_drivers/qlogic/LICENSE.qla3xxx
 +F:    Documentation/networking/device_drivers/ethernet/qlogic/LICENSE.qla3xxx
  F:    drivers/net/ethernet/qlogic/qla3xxx.*
  
  QLOGIC QLA4XXX iSCSI DRIVER
@@@ -14222,7 -14104,7 +14222,7 @@@ M:   Laurentiu Tudor <laurentiu.tudor@nxp
  L:    [email protected]
  S:    Maintained
  F:    Documentation/devicetree/bindings/misc/fsl,qoriq-mc.txt
 -F:    Documentation/networking/device_drivers/freescale/dpaa2/overview.rst
 +F:    Documentation/networking/device_drivers/ethernet/freescale/dpaa2/overview.rst
  F:    drivers/bus/fsl-mc/
  
  QT1010 MEDIA DRIVER
@@@ -14294,8 -14176,7 +14294,8 @@@ F:   Documentation/devicetree/bindings/ne
  F:    drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c
  
  QUALCOMM GENERIC INTERFACE I2C DRIVER
 -M:    Alok Chauhan <[email protected]>
 +M:    Akash Asthana <[email protected]>
 +M:    Mukesh Savaliya <[email protected]>
  L:    [email protected]
  L:    [email protected]
  S:    Supported
@@@ -14344,12 -14225,12 +14344,12 @@@ M:        Subash Abhinov Kasiviswanathan <suba
  M:    Sean Tranchetti <[email protected]>
  L:    [email protected]
  S:    Maintained
 -F:    Documentation/networking/device_drivers/qualcomm/rmnet.rst
 +F:    Documentation/networking/device_drivers/cellular/qualcomm/rmnet.rst
  F:    drivers/net/ethernet/qualcomm/rmnet/
  F:    include/linux/if_rmnet.h
  
  QUALCOMM TSENS THERMAL DRIVER
 -M:    Amit Kucheria <amit.kucheria@linaro.org>
 +M:    Amit Kucheria <amitk@kernel.org>
  L:    [email protected]
  L:    [email protected]
  S:    Maintained
@@@ -14556,7 -14437,7 +14556,7 @@@ T:   git git://git.kernel.org/pub/scm/lin
  F:    Documentation/RCU/
  F:    include/linux/rcu*
  F:    kernel/rcu/
 -X:    Documentation/RCU/torture.txt
 +X:    Documentation/RCU/torture.rst
  X:    include/linux/srcu*.h
  X:    kernel/rcu/srcu*.c
  
@@@ -14632,7 -14513,7 +14632,7 @@@ S:   Maintaine
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/andersson/remoteproc.git rproc-next
  F:    Documentation/ABI/testing/sysfs-class-remoteproc
  F:    Documentation/devicetree/bindings/remoteproc/
 -F:    Documentation/remoteproc.txt
 +F:    Documentation/staging/remoteproc.rst
  F:    drivers/remoteproc/
  F:    include/linux/remoteproc.h
  F:    include/linux/remoteproc/
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/andersson/remoteproc.git rpmsg-next
  F:    Documentation/ABI/testing/sysfs-bus-rpmsg
 -F:    Documentation/rpmsg.txt
 +F:    Documentation/staging/rpmsg.rst
  F:    drivers/rpmsg/
  F:    include/linux/rpmsg.h
  F:    include/linux/rpmsg/
@@@ -14693,8 -14574,8 +14693,8 @@@ RENESAS R-CAR THERMAL DRIVER
  M:    Niklas Söderlund <[email protected]>
  L:    [email protected]
  S:    Supported
 -F:    Documentation/devicetree/bindings/thermal/rcar-gen3-thermal.txt
 -F:    Documentation/devicetree/bindings/thermal/rcar-thermal.txt
 +F:    Documentation/devicetree/bindings/thermal/rcar-gen3-thermal.yaml
 +F:    Documentation/devicetree/bindings/thermal/rcar-thermal.yaml
  F:    drivers/thermal/rcar_gen3_thermal.c
  F:    drivers/thermal/rcar_thermal.c
  
@@@ -14950,7 -14831,7 +14950,7 @@@ S:   Maintaine
  F:    drivers/video/fbdev/savage/
  
  S390
 -M:    Heiko Carstens <heiko.carstens@de.ibm.com>
 +M:    Heiko Carstens <hca@linux.ibm.com>
  M:    Vasily Gorbik <[email protected]>
  M:    Christian Borntraeger <[email protected]>
  L:    [email protected]
@@@ -14981,8 -14862,7 +14981,8 @@@ F:   drivers/s390/block/dasd
  F:    include/linux/dasd_mod.h
  
  S390 IOMMU (PCI)
 -M:    Gerald Schaefer <[email protected]>
 +M:    Matthew Rosato <[email protected]>
 +M:    Gerald Schaefer <[email protected]>
  L:    [email protected]
  S:    Supported
  W:    http://www.ibm.com/developerworks/linux/linux390/
@@@ -15010,7 -14890,7 +15010,7 @@@ F:   drivers/s390/net
  
  S390 PCI SUBSYSTEM
  M:    Niklas Schnelle <[email protected]>
 -M:    Gerald Schaefer <gerald.schaefer@de.ibm.com>
 +M:    Gerald Schaefer <gerald.schaefer@linux.ibm.com>
  L:    [email protected]
  S:    Supported
  W:    http://www.ibm.com/developerworks/linux/linux390/
@@@ -15416,7 -15296,7 +15416,7 @@@ F:   drivers/mmc/host/sdhci
  F:    include/linux/mmc/sdhci*
  
  SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) MICROCHIP DRIVER
 -M:    Ludovic Desroches <ludovic.desroches@microchip.com>
 +M:    Eugen Hristev <eugen.hristev@microchip.com>
  L:    [email protected]
  S:    Supported
  F:    drivers/mmc/host/sdhci-of-at91.c
@@@ -15481,20 -15361,11 +15481,20 @@@ F:        scripts/selinux
  F:    security/selinux/
  
  SENSABLE PHANTOM
 -M:    Jiri Slaby <jirislaby@gmail.com>
 +M:    Jiri Slaby <jirislaby@kernel.org>
  S:    Maintained
  F:    drivers/misc/phantom.c
  F:    include/uapi/linux/phantom.h
  
 +SENSIRION SCD30 CARBON DIOXIDE SENSOR DRIVER
 +M:    Tomasz Duszynski <[email protected]>
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/iio/chemical/sensirion,scd30.yaml
 +F:    drivers/iio/chemical/scd30.h
 +F:    drivers/iio/chemical/scd30_core.c
 +F:    drivers/iio/chemical/scd30_i2c.c
 +F:    drivers/iio/chemical/scd30_serial.c
 +
  SENSIRION SPS30 AIR POLLUTION SENSOR DRIVER
  M:    Tomasz Duszynski <[email protected]>
  S:    Maintained
@@@ -15546,7 -15417,7 +15546,7 @@@ F:   drivers/net/phy/phylink.
  F:    drivers/net/phy/sfp*
  F:    include/linux/phylink.h
  F:    include/linux/sfp.h
 -K:    phylink
 +K:    phylink\.h|struct\s+phylink|\.phylink|>phylink_|phylink_(autoneg|clear|connect|create|destroy|disconnect|ethtool|helper|mac|mii|of|set|start|stop|test|validate)
  
  SGI GRU DRIVER
  M:    Dimitri Sivanich <[email protected]>
@@@ -16141,9 -16012,8 +16141,9 @@@ F:   sound/soc/sof
  
  SOUNDWIRE SUBSYSTEM
  M:    Vinod Koul <[email protected]>
 -M:    Sanyog Kale <sanyog.r.kale@intel.com>
 +M:    Bard Liao <yung-chuan.liao@linux.intel.com>
  R:    Pierre-Louis Bossart <[email protected]>
 +R:    Sanyog Kale <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  S:    Supported
  F:    Documentation/driver-api/soundwire/
@@@ -16194,16 -16064,6 +16194,16 @@@ Q: https://patchwork.kernel.org/project
  B:    https://bugzilla.kernel.org/enter_bug.cgi?component=Sparse&product=Tools
  F:    include/linux/compiler.h
  
 +SPEAKUP CONSOLE SPEECH DRIVER
 +M:    William Hubbs <[email protected]>
 +M:    Chris Brannon <[email protected]>
 +M:    Kirk Reiser <[email protected]>
 +M:    Samuel Thibault <[email protected]>
 +L:    [email protected]
 +S:    Odd Fixes
 +W:    http://www.linux-speakup.org/
 +F:    drivers/accessibility/speakup/
 +
  SPEAR CLOCK FRAMEWORK SUPPORT
  M:    Viresh Kumar <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
@@@ -16248,7 -16108,7 +16248,7 @@@ SPIDERNET NETWORK DRIVER for CEL
  M:    Ishizaki Kou <[email protected]>
  L:    [email protected]
  S:    Supported
 -F:    Documentation/networking/device_drivers/toshiba/spider_net.rst
 +F:    Documentation/networking/device_drivers/ethernet/toshiba/spider_net.rst
  F:    drivers/net/ethernet/toshiba/spider_net*
  
  SPMI SUBSYSTEM
@@@ -16391,11 -16251,28 +16391,11 @@@ L:        [email protected]
  S:    Maintained
  F:    drivers/staging/sm750fb/
  
 -STAGING - SPEAKUP CONSOLE SPEECH DRIVER
 -M:    William Hubbs <[email protected]>
 -M:    Chris Brannon <[email protected]>
 -M:    Kirk Reiser <[email protected]>
 -M:    Samuel Thibault <[email protected]>
 -L:    [email protected]
 -S:    Odd Fixes
 -W:    http://www.linux-speakup.org/
 -F:    drivers/staging/speakup/
 -
  STAGING - VIA VT665X DRIVERS
  M:    Forest Bond <[email protected]>
  S:    Odd Fixes
  F:    drivers/staging/vt665?/
  
 -STAGING - WILC1000 WIFI DRIVER
 -M:    Adham Abozaeid <[email protected]>
 -M:    Ajay Singh <[email protected]>
 -L:    [email protected]
 -S:    Supported
 -F:    drivers/staging/wilc1000/
 -
  STAGING SUBSYSTEM
  M:    Greg Kroah-Hartman <[email protected]>
  L:    [email protected]
@@@ -16458,7 -16335,7 +16458,7 @@@ M:   Jose Abreu <[email protected]
  L:    [email protected]
  S:    Supported
  W:    http://www.stlinux.com
 -F:    Documentation/networking/device_drivers/stmicro/
 +F:    Documentation/networking/device_drivers/ethernet/stmicro/
  F:    drivers/net/ethernet/stmicro/stmmac/
  
  SUN3/3X
@@@ -16899,7 -16776,7 +16899,7 @@@ TEE SUBSYSTE
  M:    Jens Wiklander <[email protected]>
  L:    [email protected]
  S:    Maintained
 -F:    Documentation/tee.txt
 +F:    Documentation/staging/tee.rst
  F:    drivers/tee/
  F:    include/linux/tee_drv.h
  F:    include/uapi/linux/tee.h
@@@ -17053,7 -16930,7 +17053,7 @@@ F:   drivers/media/radio/radio-raremono.
  THERMAL
  M:    Zhang Rui <[email protected]>
  M:    Daniel Lezcano <[email protected]>
 -R:    Amit Kucheria <amit[email protected]>
 +R:    Amit Kucheria <amit[email protected]>
  L:    [email protected]
  S:    Supported
  Q:    https://patchwork.kernel.org/project/linux-pm/list/
@@@ -17086,6 -16963,14 +17086,14 @@@ F: drivers/thermal/cpufreq_cooling.
  F:    drivers/thermal/cpuidle_cooling.c
  F:    include/linux/cpu_cooling.h
  
+ THERMAL/POWER_ALLOCATOR
+ M:    Lukasz Luba <[email protected]>
+ L:    [email protected]
+ S:    Maintained
+ F:    Documentation/driver-api/thermal/power_allocator.rst
+ F:    drivers/thermal/gov_power_allocator.c
+ F:    include/trace/events/thermal_power_allocator.h
  THINKPAD ACPI EXTRAS DRIVER
  M:    Henrique de Moraes Holschuh <[email protected]>
  L:    [email protected]
@@@ -17346,7 -17231,7 +17354,7 @@@ M:   Samuel Chessman <[email protected]
  L:    [email protected] (subscribers-only)
  S:    Maintained
  W:    http://sourceforge.net/projects/tlan/
 -F:    Documentation/networking/device_drivers/ti/tlan.rst
 +F:    Documentation/networking/device_drivers/ethernet/ti/tlan.rst
  F:    drivers/net/ethernet/ti/tlan.*
  
  TM6000 VIDEO4LINUX DRIVER
@@@ -17411,7 -17296,7 +17419,7 @@@ M:   Josh Triplett <[email protected]
  L:    [email protected]
  S:    Supported
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git dev
 -F:    Documentation/RCU/torture.txt
 +F:    Documentation/RCU/torture.rst
  F:    kernel/locking/locktorture.c
  F:    kernel/rcu/rcuperf.c
  F:    kernel/rcu/rcutorture.c
@@@ -17503,7 -17388,7 +17511,7 @@@ K:   ^Subject:.*(?i)trivia
  
  TTY LAYER
  M:    Greg Kroah-Hartman <[email protected]>
 -M:    Jiri Slaby <j[email protected]>
 +M:    Jiri Slaby <j[email protected]>
  S:    Supported
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty.git
  F:    Documentation/driver-api/serial/
@@@ -17636,7 -17521,7 +17644,7 @@@ F:   Documentation/admin-guide/ufs.rs
  F:    fs/ufs/
  
  UHID USERSPACE HID IO DRIVER
 -M:    David Herrmann <dh.herrmann@googlemail.com>
 +M:    David Rheinsberg <david.rheinsberg@gmail.com>
  L:    [email protected]
  S:    Maintained
  F:    drivers/hid/uhid.c
  S:    Supported
  F:    fs/unicode/
  
 -UNICORE32 ARCHITECTURE
 -M:    Guan Xuetao <[email protected]>
 -S:    Maintained
 -W:    http://mprc.pku.edu.cn/~guanxuetao/linux
 -T:    git git://github.com/gxt/linux.git
 -F:    arch/unicore32/
 -
  UNIFDEF
  M:    Tony Finch <[email protected]>
  S:    Maintained
@@@ -18588,7 -18480,7 +18596,7 @@@ S:   Maintaine
  F:    drivers/rtc/rtc-sd3078.c
  
  WIIMOTE HID DRIVER
 -M:    David Herrmann <dh.herrmann@googlemail.com>
 +M:    David Rheinsberg <david.rheinsberg@gmail.com>
  L:    [email protected]
  S:    Maintained
  F:    drivers/hid/hid-wiimote*
@@@ -18975,24 -18867,6 +18983,24 @@@ F: Documentation/devicetree/bindings/me
  F:    drivers/media/platform/xilinx/
  F:    include/uapi/linux/xilinx-v4l2-controls.h
  
 +XILINX ZYNQMP DPDMA DRIVER
 +M:    Hyun Kwon <[email protected]>
 +M:    Laurent Pinchart <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +F:    Documentation/devicetree/bindings/dma/xilinx/xlnx,zynqmp-dpdma.yaml
 +F:    drivers/dma/xilinx/xilinx_dpdma.c
 +F:    include/dt-bindings/dma/xlnx-zynqmp-dpdma.h
 +
 +XILINX ZYNQMP PSGTR PHY DRIVER
 +M:    Anurag Kumar Vulisha <[email protected]>
 +M:    Laurent Pinchart <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +T:    git https://github.com/Xilinx/linux-xlnx.git
 +F:    Documentation/devicetree/bindings/phy/xlnx,zynqmp-psgtr.yaml
 +F:    drivers/phy/xilinx/phy-zynqmp.c
 +
  XILLYBUS DRIVER
  M:    Eli Billauer <[email protected]>
  L:    [email protected]
  S:    Maintained
  W:    http://yaina.de/jreuter/
  W:    http://www.qsl.net/dl1bke/
 -F:    Documentation/networking/z8530drv.rst
 +F:    Documentation/networking/device_drivers/hamradio/z8530drv.rst
  F:    drivers/net/hamradio/*scc.c
  F:    drivers/net/hamradio/z8530.h
  
index a7a0b2e0ceb936599941b573431fb7c75970b7c1,f816a8a13039e258e80a07218e92230d5d299f85..44b6bfbd32dff8e09263a521eda7f0573c6fb1e7
@@@ -5,7 -5,7 +5,7 @@@
   *           as soon as the upper/lower threshold is reached.
   *
   * (C) 2009 - Peter Kaestle     peter (a) piie.net
 - *                              http://piie.net
 + *                              https://piie.net
   *     2009 Borislav Petkov   bp (a) alien8.de
   *
   * Inspired by and many thanks to:
@@@ -397,39 -397,24 +397,24 @@@ static inline void acerhdf_revert_to_bi
  {
        acerhdf_change_fanstate(ACERHDF_FAN_AUTO);
        kernelmode = 0;
-       if (thz_dev)
-               thz_dev->polling_delay = 0;
        pr_notice("kernel mode fan control OFF\n");
  }
  static inline void acerhdf_enable_kernelmode(void)
  {
        kernelmode = 1;
  
-       thz_dev->polling_delay = interval*1000;
-       thermal_zone_device_update(thz_dev, THERMAL_EVENT_UNSPECIFIED);
        pr_notice("kernel mode fan control ON\n");
  }
  
- static int acerhdf_get_mode(struct thermal_zone_device *thermal,
-                           enum thermal_device_mode *mode)
- {
-       if (verbose)
-               pr_notice("kernel mode fan control %d\n", kernelmode);
-       *mode = (kernelmode) ? THERMAL_DEVICE_ENABLED
-                            : THERMAL_DEVICE_DISABLED;
-       return 0;
- }
  /*
   * set operation mode;
   * enabled: the thermal layer of the kernel takes care about
   *          the temperature and the fan.
   * disabled: the BIOS takes control of the fan.
   */
- static int acerhdf_set_mode(struct thermal_zone_device *thermal,
-                           enum thermal_device_mode mode)
+ static int acerhdf_change_mode(struct thermal_zone_device *thermal,
+                              enum thermal_device_mode mode)
  {
        if (mode == THERMAL_DEVICE_DISABLED && kernelmode)
                acerhdf_revert_to_bios_mode();
@@@ -488,8 -473,7 +473,7 @@@ static struct thermal_zone_device_ops a
        .bind = acerhdf_bind,
        .unbind = acerhdf_unbind,
        .get_temp = acerhdf_get_ec_temp,
-       .get_mode = acerhdf_get_mode,
-       .set_mode = acerhdf_set_mode,
+       .change_mode = acerhdf_change_mode,
        .get_trip_type = acerhdf_get_trip_type,
        .get_trip_hyst = acerhdf_get_trip_hyst,
        .get_trip_temp = acerhdf_get_trip_temp,
@@@ -733,6 -717,8 +717,8 @@@ static void acerhdf_unregister_platform
  
  static int __init acerhdf_register_thermal(void)
  {
+       int ret;
        cl_dev = thermal_cooling_device_register("acerhdf-fan", NULL,
                                                 &acerhdf_cooling_ops);
  
        if (IS_ERR(thz_dev))
                return -EINVAL;
  
+       if (kernelmode)
+               ret = thermal_zone_device_enable(thz_dev);
+       else
+               ret = thermal_zone_device_disable(thz_dev);
+       if (ret)
+               return ret;
        if (strcmp(thz_dev->governor->name,
                                acerhdf_zone_params.governor_name)) {
                pr_err("Didn't get thermal governor %s, perhaps not compiled into thermal subsystem.\n",
index 1b84ea674edb740d140ae547f3da685266e64b68,c0efa7bc48e2ba831ae6deeae6c02999eb7d3e35..3f74ab4c1ab9f184a3e0c449a0f91951a7bd46a4
@@@ -197,7 -197,6 +197,6 @@@ struct imx_thermal_data 
        struct cpufreq_policy *policy;
        struct thermal_zone_device *tz;
        struct thermal_cooling_device *cdev;
-       enum thermal_device_mode mode;
        struct regmap *tempmon;
        u32 c1, c2; /* See formula in imx_init_calib() */
        int temp_passive;
@@@ -253,10 -252,11 +252,11 @@@ static int imx_get_temp(struct thermal_
        const struct thermal_soc_data *soc_data = data->socdata;
        struct regmap *map = data->tempmon;
        unsigned int n_meas;
-       bool wait;
+       bool wait, run_measurement;
        u32 val;
  
-       if (data->mode == THERMAL_DEVICE_ENABLED) {
+       run_measurement = !data->irq_enabled;
+       if (!run_measurement) {
                /* Check if a measurement is currently in progress */
                regmap_read(map, soc_data->temp_data, &val);
                wait = !(val & soc_data->temp_valid_mask);
  
        regmap_read(map, soc_data->temp_data, &val);
  
-       if (data->mode != THERMAL_DEVICE_ENABLED) {
+       if (run_measurement) {
                regmap_write(map, soc_data->sensor_ctrl + REG_CLR,
                             soc_data->measure_temp_mask);
                regmap_write(map, soc_data->sensor_ctrl + REG_SET,
        return 0;
  }
  
- static int imx_get_mode(struct thermal_zone_device *tz,
-                       enum thermal_device_mode *mode)
- {
-       struct imx_thermal_data *data = tz->devdata;
-       *mode = data->mode;
-       return 0;
- }
- static int imx_set_mode(struct thermal_zone_device *tz,
-                       enum thermal_device_mode mode)
+ static int imx_change_mode(struct thermal_zone_device *tz,
+                          enum thermal_device_mode mode)
  {
        struct imx_thermal_data *data = tz->devdata;
        struct regmap *map = data->tempmon;
        const struct thermal_soc_data *soc_data = data->socdata;
  
        if (mode == THERMAL_DEVICE_ENABLED) {
-               tz->polling_delay = IMX_POLLING_DELAY;
-               tz->passive_delay = IMX_PASSIVE_DELAY;
                regmap_write(map, soc_data->sensor_ctrl + REG_CLR,
                             soc_data->power_down_mask);
                regmap_write(map, soc_data->sensor_ctrl + REG_SET,
                regmap_write(map, soc_data->sensor_ctrl + REG_SET,
                             soc_data->power_down_mask);
  
-               tz->polling_delay = 0;
-               tz->passive_delay = 0;
                if (data->irq_enabled) {
                        disable_irq(data->irq);
                        data->irq_enabled = false;
                }
        }
  
-       data->mode = mode;
-       thermal_zone_device_update(tz, THERMAL_EVENT_UNSPECIFIED);
        return 0;
  }
  
@@@ -467,8 -448,7 +448,7 @@@ static struct thermal_zone_device_ops i
        .bind = imx_bind,
        .unbind = imx_unbind,
        .get_temp = imx_get_temp,
-       .get_mode = imx_get_mode,
-       .set_mode = imx_set_mode,
+       .change_mode = imx_change_mode,
        .get_trip_type = imx_get_trip_type,
        .get_trip_temp = imx_get_trip_temp,
        .get_crit_temp = imx_get_crit_temp,
@@@ -649,7 -629,7 +629,7 @@@ MODULE_DEVICE_TABLE(of, of_imx_thermal_
  static int imx_thermal_register_legacy_cooling(struct imx_thermal_data *data)
  {
        struct device_node *np;
 -      int ret;
 +      int ret = 0;
  
        data->policy = cpufreq_cpu_get(0);
        if (!data->policy) {
                if (IS_ERR(data->cdev)) {
                        ret = PTR_ERR(data->cdev);
                        cpufreq_cpu_put(data->policy);
 -                      return ret;
                }
        }
  
 -      return 0;
 +      of_node_put(np);
 +
 +      return ret;
  }
  
  static void imx_thermal_unregister_legacy_cooling(struct imx_thermal_data *data)
@@@ -832,7 -811,9 +812,9 @@@ static int imx_thermal_probe(struct pla
                     data->socdata->measure_temp_mask);
  
        data->irq_enabled = true;
-       data->mode = THERMAL_DEVICE_ENABLED;
+       ret = thermal_zone_device_enable(data->tz);
+       if (ret)
+               goto thermal_zone_unregister;
  
        ret = devm_request_threaded_irq(&pdev->dev, data->irq,
                        imx_thermal_alarm_irq, imx_thermal_alarm_irq_thread,
@@@ -874,19 -855,18 +856,18 @@@ static int imx_thermal_remove(struct pl
  static int __maybe_unused imx_thermal_suspend(struct device *dev)
  {
        struct imx_thermal_data *data = dev_get_drvdata(dev);
-       struct regmap *map = data->tempmon;
+       int ret;
  
        /*
         * Need to disable thermal sensor, otherwise, when thermal core
         * try to get temperature before thermal sensor resume, a wrong
         * temperature will be read as the thermal sensor is powered
-        * down.
+        * down. This is done in change_mode() operation called from
+        * thermal_zone_device_disable()
         */
-       regmap_write(map, data->socdata->sensor_ctrl + REG_CLR,
-                    data->socdata->measure_temp_mask);
-       regmap_write(map, data->socdata->sensor_ctrl + REG_SET,
-                    data->socdata->power_down_mask);
-       data->mode = THERMAL_DEVICE_DISABLED;
+       ret = thermal_zone_device_disable(data->tz);
+       if (ret)
+               return ret;
        clk_disable_unprepare(data->thermal_clk);
  
        return 0;
  static int __maybe_unused imx_thermal_resume(struct device *dev)
  {
        struct imx_thermal_data *data = dev_get_drvdata(dev);
-       struct regmap *map = data->tempmon;
        int ret;
  
        ret = clk_prepare_enable(data->thermal_clk);
        if (ret)
                return ret;
        /* Enabled thermal sensor after resume */
-       regmap_write(map, data->socdata->sensor_ctrl + REG_CLR,
-                    data->socdata->power_down_mask);
-       regmap_write(map, data->socdata->sensor_ctrl + REG_SET,
-                    data->socdata->measure_temp_mask);
-       data->mode = THERMAL_DEVICE_ENABLED;
+       ret = thermal_zone_device_enable(data->tz);
+       if (ret)
+               return ret;
  
        return 0;
  }
index 12448ccd27f16806f715dcd211ba0b426b47396d,d3732f62491391a3ef29291f618d06a951b81fcf..4f5859d4c780f9a25f2f424540be07ec61269e47
@@@ -48,7 -48,6 +48,6 @@@ struct int3400_thermal_priv 
        struct acpi_device *adev;
        struct platform_device *pdev;
        struct thermal_zone_device *thermal;
-       int mode;
        int art_count;
        struct art *arts;
        int trt_count;
@@@ -216,16 -215,11 +215,16 @@@ static int int3400_thermal_run_osc(acpi
        acpi_status status;
        int result = 0;
        struct acpi_osc_context context = {
 -              .uuid_str = int3400_thermal_uuids[uuid],
 +              .uuid_str = NULL,
                .rev = 1,
                .cap.length = 8,
        };
  
 +      if (uuid < 0 || uuid >= INT3400_THERMAL_MAXIMUM_UUID)
 +              return -EINVAL;
 +
 +      context.uuid_str = int3400_thermal_uuids[uuid];
 +
        buf[OSC_QUERY_DWORD] = 0;
        buf[OSC_SUPPORT_DWORD] = enable;
  
@@@ -383,42 -377,20 +382,20 @@@ static int int3400_thermal_get_temp(str
        return 0;
  }
  
- static int int3400_thermal_get_mode(struct thermal_zone_device *thermal,
-                               enum thermal_device_mode *mode)
+ static int int3400_thermal_change_mode(struct thermal_zone_device *thermal,
+                                      enum thermal_device_mode mode)
  {
        struct int3400_thermal_priv *priv = thermal->devdata;
-       if (!priv)
-               return -EINVAL;
-       *mode = priv->mode;
-       return 0;
- }
- static int int3400_thermal_set_mode(struct thermal_zone_device *thermal,
-                               enum thermal_device_mode mode)
- {
-       struct int3400_thermal_priv *priv = thermal->devdata;
-       bool enable;
        int result = 0;
  
        if (!priv)
                return -EINVAL;
  
-       if (mode == THERMAL_DEVICE_ENABLED)
-               enable = true;
-       else if (mode == THERMAL_DEVICE_DISABLED)
-               enable = false;
-       else
-               return -EINVAL;
-       if (enable != priv->mode) {
-               priv->mode = enable;
+       if (mode != thermal->mode)
                result = int3400_thermal_run_osc(priv->adev->handle,
-                                                priv->current_uuid_index,
-                                                enable);
-       }
+                                               priv->current_uuid_index,
+                                               mode == THERMAL_DEVICE_ENABLED);
  
        evaluate_odvp(priv);
  
  
  static struct thermal_zone_device_ops int3400_thermal_ops = {
        .get_temp = int3400_thermal_get_temp,
-       .get_mode = int3400_thermal_get_mode,
-       .set_mode = int3400_thermal_set_mode,
+       .change_mode = int3400_thermal_change_mode,
  };
  
  static struct thermal_zone_params int3400_thermal_params = {
index 42c9cd0e5f7754c5c7087224c9cc6227d967e3fe,88620f7e98905cefe8eb6a9e4d2f828657200104..0bd7aa564bc25cc6d9d9303c59a6d9f0f8b5986b
@@@ -38,6 -38,7 +38,7 @@@
  #define TEMP_MONIDET0         0x014
  #define TEMP_MONIDET1         0x018
  #define TEMP_MSRCTL0          0x038
+ #define TEMP_MSRCTL1          0x03c
  #define TEMP_AHBPOLL          0x040
  #define TEMP_AHBTO            0x044
  #define TEMP_ADCPNP0          0x048
   * MT2701 has 3 sensors and needs 3 VTS calibration data.
   * MT2712 has 4 sensors and needs 4 VTS calibration data.
   */
- #define CALIB_BUF0_VALID              BIT(0)
- #define CALIB_BUF1_ADC_GE(x)          (((x) >> 22) & 0x3ff)
- #define CALIB_BUF0_VTS_TS1(x)         (((x) >> 17) & 0x1ff)
- #define CALIB_BUF0_VTS_TS2(x)         (((x) >> 8) & 0x1ff)
- #define CALIB_BUF1_VTS_TS3(x)         (((x) >> 0) & 0x1ff)
- #define CALIB_BUF2_VTS_TS4(x)         (((x) >> 23) & 0x1ff)
- #define CALIB_BUF2_VTS_TS5(x)         (((x) >> 5) & 0x1ff)
- #define CALIB_BUF2_VTS_TSABB(x)               (((x) >> 14) & 0x1ff)
- #define CALIB_BUF0_DEGC_CALI(x)               (((x) >> 1) & 0x3f)
- #define CALIB_BUF0_O_SLOPE(x)         (((x) >> 26) & 0x3f)
- #define CALIB_BUF0_O_SLOPE_SIGN(x)    (((x) >> 7) & 0x1)
- #define CALIB_BUF1_ID(x)              (((x) >> 9) & 0x1)
+ #define CALIB_BUF0_VALID_V1           BIT(0)
+ #define CALIB_BUF1_ADC_GE_V1(x)               (((x) >> 22) & 0x3ff)
+ #define CALIB_BUF0_VTS_TS1_V1(x)      (((x) >> 17) & 0x1ff)
+ #define CALIB_BUF0_VTS_TS2_V1(x)      (((x) >> 8) & 0x1ff)
+ #define CALIB_BUF1_VTS_TS3_V1(x)      (((x) >> 0) & 0x1ff)
+ #define CALIB_BUF2_VTS_TS4_V1(x)      (((x) >> 23) & 0x1ff)
+ #define CALIB_BUF2_VTS_TS5_V1(x)      (((x) >> 5) & 0x1ff)
+ #define CALIB_BUF2_VTS_TSABB_V1(x)    (((x) >> 14) & 0x1ff)
+ #define CALIB_BUF0_DEGC_CALI_V1(x)    (((x) >> 1) & 0x3f)
+ #define CALIB_BUF0_O_SLOPE_V1(x)      (((x) >> 26) & 0x3f)
+ #define CALIB_BUF0_O_SLOPE_SIGN_V1(x) (((x) >> 7) & 0x1)
+ #define CALIB_BUF1_ID_V1(x)           (((x) >> 9) & 0x1)
+ /*
+  * Layout of the fuses providing the calibration data
+  * These macros could be used for MT7622.
+  */
+ #define CALIB_BUF0_ADC_OE_V2(x)               (((x) >> 22) & 0x3ff)
+ #define CALIB_BUF0_ADC_GE_V2(x)               (((x) >> 12) & 0x3ff)
+ #define CALIB_BUF0_DEGC_CALI_V2(x)    (((x) >> 6) & 0x3f)
+ #define CALIB_BUF0_O_SLOPE_V2(x)      (((x) >> 0) & 0x3f)
+ #define CALIB_BUF1_VTS_TS1_V2(x)      (((x) >> 23) & 0x1ff)
+ #define CALIB_BUF1_VTS_TS2_V2(x)      (((x) >> 14) & 0x1ff)
+ #define CALIB_BUF1_VTS_TSABB_V2(x)    (((x) >> 5) & 0x1ff)
+ #define CALIB_BUF1_VALID_V2(x)                (((x) >> 4) & 0x1)
+ #define CALIB_BUF1_O_SLOPE_SIGN_V2(x) (((x) >> 3) & 0x1)
  
  enum {
        VTS1,
        MAX_NUM_VTS,
  };
  
+ enum mtk_thermal_version {
+       MTK_THERMAL_V1 = 1,
+       MTK_THERMAL_V2,
+ };
  /* MT2701 thermal sensors */
  #define MT2701_TS1    0
  #define MT2701_TS2    1
  /* The total number of temperature sensors in the MT8183 */
  #define MT8183_NUM_SENSORS    6
  
 +/* The number of banks in the MT8183 */
 +#define MT8183_NUM_ZONES               1
 +
  /* The number of sensing points per bank */
  #define MT8183_NUM_SENSORS_PER_ZONE    6
  
@@@ -248,6 -265,7 +268,7 @@@ struct mtk_thermal_data 
        const int *controller_offset;
        bool need_switch_bank;
        struct thermal_bank_cfg bank_data[MAX_NUM_ZONES];
+       enum mtk_thermal_version version;
  };
  
  struct mtk_thermal {
  
        /* Calibration values */
        s32 adc_ge;
+       s32 adc_oe;
        s32 degc_cali;
        s32 o_slope;
+       s32 o_slope_sign;
        s32 vts[MAX_NUM_VTS];
  
        const struct mtk_thermal_data *conf;
@@@ -401,6 -421,7 +424,7 @@@ static const struct mtk_thermal_data mt
        .msr = mt8173_msr,
        .adcpnp = mt8173_adcpnp,
        .sensor_mux_values = mt8173_mux_values,
+       .version = MTK_THERMAL_V1,
  };
  
  /*
@@@ -431,6 -452,7 +455,7 @@@ static const struct mtk_thermal_data mt
        .msr = mt2701_msr,
        .adcpnp = mt2701_adcpnp,
        .sensor_mux_values = mt2701_mux_values,
+       .version = MTK_THERMAL_V1,
  };
  
  /*
@@@ -461,6 -483,7 +486,7 @@@ static const struct mtk_thermal_data mt
        .msr = mt2712_msr,
        .adcpnp = mt2712_adcpnp,
        .sensor_mux_values = mt2712_mux_values,
+       .version = MTK_THERMAL_V1,
  };
  
  /*
@@@ -485,6 -508,7 +511,7 @@@ static const struct mtk_thermal_data mt
        .msr = mt7622_msr,
        .adcpnp = mt7622_adcpnp,
        .sensor_mux_values = mt7622_mux_values,
+       .version = MTK_THERMAL_V2,
  };
  
  /*
   */
  static const struct mtk_thermal_data mt8183_thermal_data = {
        .auxadc_channel = MT8183_TEMP_AUXADC_CHANNEL,
 -      .num_banks = MT8183_NUM_SENSORS_PER_ZONE,
 +      .num_banks = MT8183_NUM_ZONES,
        .num_sensors = MT8183_NUM_SENSORS,
        .vts_index = mt8183_vts_index,
        .cali_val = MT8183_CALIBRATION,
        .msr = mt8183_msr,
        .adcpnp = mt8183_adcpnp,
        .sensor_mux_values = mt8183_mux_values,
+       .version = MTK_THERMAL_V1,
  };
  
  /**
   * This converts the raw ADC value to mcelsius using the SoC specific
   * calibration constants
   */
- static int raw_to_mcelsius(struct mtk_thermal *mt, int sensno, s32 raw)
+ static int raw_to_mcelsius_v1(struct mtk_thermal *mt, int sensno, s32 raw)
  {
        s32 tmp;
  
        return mt->degc_cali * 500 - tmp;
  }
  
+ static int raw_to_mcelsius_v2(struct mtk_thermal *mt, int sensno, s32 raw)
+ {
+       s32 format_1 = 0;
+       s32 format_2 = 0;
+       s32 g_oe = 1;
+       s32 g_gain = 1;
+       s32 g_x_roomt = 0;
+       s32 tmp = 0;
+       if (raw == 0)
+               return 0;
+       raw &= 0xfff;
+       g_gain = 10000 + (((mt->adc_ge - 512) * 10000) >> 12);
+       g_oe = mt->adc_oe - 512;
+       format_1 = mt->vts[VTS2] + 3105 - g_oe;
+       format_2 = (mt->degc_cali * 10) >> 1;
+       g_x_roomt = (((format_1 * 10000) >> 12) * 10000) / g_gain;
+       tmp = (((((raw - g_oe) * 10000) >> 12) * 10000) / g_gain) - g_x_roomt;
+       tmp = tmp * 10 * 100 / 11;
+       if (mt->o_slope_sign == 0)
+               tmp = tmp / (165 - mt->o_slope);
+       else
+               tmp = tmp / (165 + mt->o_slope);
+       return (format_2 - tmp) * 100;
+ }
  /**
   * mtk_thermal_get_bank - get bank
   * @bank:     The bank
@@@ -594,11 -649,16 +652,15 @@@ static int mtk_thermal_bank_temperature
        u32 raw;
  
        for (i = 0; i < conf->bank_data[bank->id].num_sensors; i++) {
 -              raw = readl(mt->thermal_base +
 -                          conf->msr[conf->bank_data[bank->id].sensors[i]]);
 +              raw = readl(mt->thermal_base + conf->msr[i]);
  
-               temp = raw_to_mcelsius(mt,
-                                      conf->bank_data[bank->id].sensors[i],
-                                      raw);
+               if (mt->conf->version == MTK_THERMAL_V1) {
+                       temp = raw_to_mcelsius_v1(
+                               mt, conf->bank_data[bank->id].sensors[i], raw);
+               } else {
+                       temp = raw_to_mcelsius_v2(
+                               mt, conf->bank_data[bank->id].sensors[i], raw);
+               }
  
                /*
                 * The first read of a sensor often contains very high bogus
@@@ -700,9 -760,11 +762,11 @@@ static void mtk_thermal_init_bank(struc
        writel(auxadc_phys_base + AUXADC_CON1_CLR_V,
               controller_base + TEMP_ADCMUXADDR);
  
-       /* AHB address for pnp sensor mux selection */
-       writel(apmixed_phys_base + APMIXED_SYS_TS_CON1,
-              controller_base + TEMP_PNPMUXADDR);
+       if (mt->conf->version == MTK_THERMAL_V1) {
+               /* AHB address for pnp sensor mux selection */
+               writel(apmixed_phys_base + APMIXED_SYS_TS_CON1,
+                      controller_base + TEMP_PNPMUXADDR);
+       }
  
        /* AHB value for auxadc enable */
        writel(BIT(conf->auxadc_channel), controller_base + TEMP_ADCEN);
  
        for (i = 0; i < conf->bank_data[num].num_sensors; i++)
                writel(conf->sensor_mux_values[conf->bank_data[num].sensors[i]],
 -                     mt->thermal_base +
 -                     conf->adcpnp[conf->bank_data[num].sensors[i]]);
 +                     mt->thermal_base + conf->adcpnp[i]);
  
        writel((1 << conf->bank_data[num].num_sensors) - 1,
               controller_base + TEMP_MONCTL0);
@@@ -759,6 -822,68 +823,68 @@@ static u64 of_get_phys_base(struct devi
        return of_translate_address(np, regaddr_p);
  }
  
+ static int mtk_thermal_extract_efuse_v1(struct mtk_thermal *mt, u32 *buf)
+ {
+       int i;
+       if (!(buf[0] & CALIB_BUF0_VALID_V1))
+               return -EINVAL;
+       mt->adc_ge = CALIB_BUF1_ADC_GE_V1(buf[1]);
+       for (i = 0; i < mt->conf->num_sensors; i++) {
+               switch (mt->conf->vts_index[i]) {
+               case VTS1:
+                       mt->vts[VTS1] = CALIB_BUF0_VTS_TS1_V1(buf[0]);
+                       break;
+               case VTS2:
+                       mt->vts[VTS2] = CALIB_BUF0_VTS_TS2_V1(buf[0]);
+                       break;
+               case VTS3:
+                       mt->vts[VTS3] = CALIB_BUF1_VTS_TS3_V1(buf[1]);
+                       break;
+               case VTS4:
+                       mt->vts[VTS4] = CALIB_BUF2_VTS_TS4_V1(buf[2]);
+                       break;
+               case VTS5:
+                       mt->vts[VTS5] = CALIB_BUF2_VTS_TS5_V1(buf[2]);
+                       break;
+               case VTSABB:
+                       mt->vts[VTSABB] =
+                               CALIB_BUF2_VTS_TSABB_V1(buf[2]);
+                       break;
+               default:
+                       break;
+               }
+       }
+       mt->degc_cali = CALIB_BUF0_DEGC_CALI_V1(buf[0]);
+       if (CALIB_BUF1_ID_V1(buf[1]) &
+           CALIB_BUF0_O_SLOPE_SIGN_V1(buf[0]))
+               mt->o_slope = -CALIB_BUF0_O_SLOPE_V1(buf[0]);
+       else
+               mt->o_slope = CALIB_BUF0_O_SLOPE_V1(buf[0]);
+       return 0;
+ }
+ static int mtk_thermal_extract_efuse_v2(struct mtk_thermal *mt, u32 *buf)
+ {
+       if (!CALIB_BUF1_VALID_V2(buf[1]))
+               return -EINVAL;
+       mt->adc_oe = CALIB_BUF0_ADC_OE_V2(buf[0]);
+       mt->adc_ge = CALIB_BUF0_ADC_GE_V2(buf[0]);
+       mt->degc_cali = CALIB_BUF0_DEGC_CALI_V2(buf[0]);
+       mt->o_slope = CALIB_BUF0_O_SLOPE_V2(buf[0]);
+       mt->vts[VTS1] = CALIB_BUF1_VTS_TS1_V2(buf[1]);
+       mt->vts[VTS2] = CALIB_BUF1_VTS_TS2_V2(buf[1]);
+       mt->vts[VTSABB] = CALIB_BUF1_VTS_TSABB_V2(buf[1]);
+       mt->o_slope_sign = CALIB_BUF1_O_SLOPE_SIGN_V2(buf[1]);
+       return 0;
+ }
  static int mtk_thermal_get_calibration_data(struct device *dev,
                                            struct mtk_thermal *mt)
  {
                goto out;
        }
  
-       if (buf[0] & CALIB_BUF0_VALID) {
-               mt->adc_ge = CALIB_BUF1_ADC_GE(buf[1]);
-               for (i = 0; i < mt->conf->num_sensors; i++) {
-                       switch (mt->conf->vts_index[i]) {
-                       case VTS1:
-                               mt->vts[VTS1] = CALIB_BUF0_VTS_TS1(buf[0]);
-                               break;
-                       case VTS2:
-                               mt->vts[VTS2] = CALIB_BUF0_VTS_TS2(buf[0]);
-                               break;
-                       case VTS3:
-                               mt->vts[VTS3] = CALIB_BUF1_VTS_TS3(buf[1]);
-                               break;
-                       case VTS4:
-                               mt->vts[VTS4] = CALIB_BUF2_VTS_TS4(buf[2]);
-                               break;
-                       case VTS5:
-                               mt->vts[VTS5] = CALIB_BUF2_VTS_TS5(buf[2]);
-                               break;
-                       case VTSABB:
-                               mt->vts[VTSABB] = CALIB_BUF2_VTS_TSABB(buf[2]);
-                               break;
-                       default:
-                               break;
-                       }
-               }
+       if (mt->conf->version == MTK_THERMAL_V1)
+               ret = mtk_thermal_extract_efuse_v1(mt, buf);
+       else
+               ret = mtk_thermal_extract_efuse_v2(mt, buf);
  
-               mt->degc_cali = CALIB_BUF0_DEGC_CALI(buf[0]);
-               if (CALIB_BUF1_ID(buf[1]) &
-                   CALIB_BUF0_O_SLOPE_SIGN(buf[0]))
-                       mt->o_slope = -CALIB_BUF0_O_SLOPE(buf[0]);
-               else
-                       mt->o_slope = CALIB_BUF0_O_SLOPE(buf[0]);
-       } else {
+       if (ret) {
                dev_info(dev, "Device not calibrated, using default calibration values\n");
+               ret = 0;
        }
  
  out:
@@@ -863,6 -960,28 +961,28 @@@ static const struct of_device_id mtk_th
  };
  MODULE_DEVICE_TABLE(of, mtk_thermal_of_match);
  
+ static void mtk_thermal_turn_on_buffer(void __iomem *apmixed_base)
+ {
+       int tmp;
+       tmp = readl(apmixed_base + APMIXED_SYS_TS_CON1);
+       tmp &= ~(0x37);
+       tmp |= 0x1;
+       writel(tmp, apmixed_base + APMIXED_SYS_TS_CON1);
+       udelay(200);
+ }
+ static void mtk_thermal_release_periodic_ts(struct mtk_thermal *mt,
+                                           void __iomem *auxadc_base)
+ {
+       int tmp;
+       writel(0x800, auxadc_base + AUXADC_CON1_SET_V);
+       writel(0x1, mt->thermal_base + TEMP_MONCTL0);
+       tmp = readl(mt->thermal_base + TEMP_MSRCTL1);
+       writel((tmp & (~0x10e)), mt->thermal_base + TEMP_MSRCTL1);
+ }
  static int mtk_thermal_probe(struct platform_device *pdev)
  {
        int ret, i, ctrl_id;
        struct resource *res;
        u64 auxadc_phys_base, apmixed_phys_base;
        struct thermal_zone_device *tzdev;
+       void __iomem *apmixed_base, *auxadc_base;
  
        mt = devm_kzalloc(&pdev->dev, sizeof(*mt), GFP_KERNEL);
        if (!mt)
                return -ENODEV;
        }
  
+       auxadc_base = of_iomap(auxadc, 0);
        auxadc_phys_base = of_get_phys_base(auxadc);
  
        of_node_put(auxadc);
                return -ENODEV;
        }
  
+       apmixed_base = of_iomap(apmixedsys, 0);
        apmixed_phys_base = of_get_phys_base(apmixedsys);
  
        of_node_put(apmixedsys);
                goto err_disable_clk_auxadc;
        }
  
+       if (mt->conf->version == MTK_THERMAL_V2) {
+               mtk_thermal_turn_on_buffer(apmixed_base);
+               mtk_thermal_release_periodic_ts(mt, auxadc_base);
+       }
        for (ctrl_id = 0; ctrl_id < mt->conf->num_controller ; ctrl_id++)
                for (i = 0; i < mt->conf->num_banks; i++)
                        mtk_thermal_init_bank(mt, i, apmixed_phys_base,
index 39c4462e38f622031e729059263f58b857558503,52656a24f8132ffb19fab027dfb3ed60edbbabe1..d8ce3a687b80d470ae911026074b4e27810091a5
@@@ -382,7 -382,7 +382,7 @@@ static inline u32 masked_irq(u32 hw_id
   *
   * Return: IRQ_HANDLED
   */
 -irqreturn_t tsens_critical_irq_thread(int irq, void *data)
 +static irqreturn_t tsens_critical_irq_thread(int irq, void *data)
  {
        struct tsens_priv *priv = data;
        struct tsens_irq_data d;
   *
   * Return: IRQ_HANDLED
   */
 -irqreturn_t tsens_irq_thread(int irq, void *data)
 +static irqreturn_t tsens_irq_thread(int irq, void *data)
  {
        struct tsens_priv *priv = data;
        struct tsens_irq_data d;
        return IRQ_HANDLED;
  }
  
 -int tsens_set_trips(void *_sensor, int low, int high)
 +static int tsens_set_trips(void *_sensor, int low, int high)
  {
        struct tsens_sensor *s = _sensor;
        struct tsens_priv *priv = s->priv;
        return 0;
  }
  
 -int tsens_enable_irq(struct tsens_priv *priv)
 +static int tsens_enable_irq(struct tsens_priv *priv)
  {
        int ret;
        int val = tsens_version(priv) > VER_1_X ? 7 : 1;
        return ret;
  }
  
 -void tsens_disable_irq(struct tsens_priv *priv)
 +static void tsens_disable_irq(struct tsens_priv *priv)
  {
        regmap_field_write(priv->rf[INT_EN], 0);
  }
@@@ -897,6 -897,9 +897,9 @@@ static const struct of_device_id tsens_
        {
                .compatible = "qcom,msm8916-tsens",
                .data = &data_8916,
+       }, {
+               .compatible = "qcom,msm8939-tsens",
+               .data = &data_8939,
        }, {
                .compatible = "qcom,msm8974-tsens",
                .data = &data_8974,
index c48c5e9b8f203dd106839e69e7d0f1db948a64bf,8333f92aff744c10abb1f48b785e97d0c9374c98..0dd47dca3e7712563ed007c63cacee78dd3bdc5d
@@@ -63,7 -63,7 +63,7 @@@
  #define TSC_MAX_NUM   3
  
  /* default THCODE values if FUSEs are missing */
- static const int thcode[TSC_MAX_NUM][3] = {
+ static const int thcodes[TSC_MAX_NUM][3] = {
        { 3397, 2800, 2221 },
        { 3393, 2795, 2216 },
        { 3389, 2805, 2237 },
@@@ -167,12 -167,12 +167,12 @@@ static int rcar_gen3_thermal_get_temp(v
  {
        struct rcar_gen3_thermal_tsc *tsc = devdata;
        int mcelsius, val;
 -      u32 reg;
 +      int reg;
  
        /* Read register and convert to mili Celsius */
        reg = rcar_gen3_thermal_read(tsc, REG_GEN3_TEMP) & CTEMP_MASK;
  
-       if (reg <= thcode[tsc->id][1])
+       if (reg <= thcodes[tsc->id][1])
                val = FIXPT_DIV(FIXPT_INT(reg) - tsc->coef.b1,
                                tsc->coef.a1);
        else
@@@ -314,6 -314,10 +314,10 @@@ static const struct of_device_id rcar_g
                .compatible = "renesas,r8a774b1-thermal",
                .data = &rcar_gen3_ths_tj_1,
        },
+       {
+               .compatible = "renesas,r8a774e1-thermal",
+               .data = &rcar_gen3_ths_tj_1,
+       },
        {
                .compatible = "renesas,r8a7795-thermal",
                .data = &rcar_gen3_ths_tj_1,
@@@ -430,7 -434,7 +434,7 @@@ static int rcar_gen3_thermal_probe(stru
                priv->tscs[i] = tsc;
  
                priv->thermal_init(tsc);
-               rcar_gen3_thermal_calc_coefs(tsc, ptat, thcode[i],
+               rcar_gen3_thermal_calc_coefs(tsc, ptat, thcodes[i],
                                             *rcar_gen3_ths_tj_1);
  
                zone = devm_thermal_zone_of_sensor_register(dev, i, tsc,
index 4cde70dcf655659f6a36135ddf8a2e502d2b6f90,58f995b0f804fbe400a7501f78a63570edd89a91..3682edb2f46692d0892abfe34524f75328bcfe93
@@@ -322,8 -322,10 +322,10 @@@ static void sprd_thm_toggle_sensor(stru
  {
        struct thermal_zone_device *tzd = sen->tzd;
  
-       tzd->ops->set_mode(tzd,
-               on ? THERMAL_DEVICE_ENABLED : THERMAL_DEVICE_DISABLED);
+       if (on)
+               thermal_zone_device_enable(tzd);
+       else
+               thermal_zone_device_disable(tzd);
  }
  
  static int sprd_thm_probe(struct platform_device *pdev)
  
        thm->var_data = pdata;
        thm->base = devm_platform_ioremap_resource(pdev, 0);
 -      if (!thm->base)
 -              return -ENOMEM;
 +      if (IS_ERR(thm->base))
 +              return PTR_ERR(thm->base);
  
        thm->nr_sensors = of_get_child_count(np);
        if (thm->nr_sensors == 0 || thm->nr_sensors > SPRD_THM_MAX_SENSOR) {
diff --combined net/netlink/genetlink.c
index 9395ee8a868dbedba93547cb7d948c53b21ec9cb,36b8a190982668cf8e031d3a619e2881b30191da..1eb65a7a27fdf301b97cc3f15d27fb35d3c02b93
@@@ -351,11 -351,22 +351,11 @@@ int genl_register_family(struct genl_fa
                start = end = GENL_ID_VFS_DQUOT;
        }
  
 -      if (family->maxattr && !family->parallel_ops) {
 -              family->attrbuf = kmalloc_array(family->maxattr + 1,
 -                                              sizeof(struct nlattr *),
 -                                              GFP_KERNEL);
 -              if (family->attrbuf == NULL) {
 -                      err = -ENOMEM;
 -                      goto errout_locked;
 -              }
 -      } else
 -              family->attrbuf = NULL;
 -
        family->id = idr_alloc_cyclic(&genl_fam_idr, family,
                                      start, end + 1, GFP_KERNEL);
        if (family->id < 0) {
                err = family->id;
 -              goto errout_free;
 +              goto errout_locked;
        }
  
        err = genl_validate_assign_mc_groups(family);
  
  errout_remove:
        idr_remove(&genl_fam_idr, family->id);
 -errout_free:
 -      kfree(family->attrbuf);
  errout_locked:
        genl_unlock_all();
        return err;
@@@ -406,6 -419,8 +406,6 @@@ int genl_unregister_family(const struc
                   atomic_read(&genl_sk_destructing_cnt) == 0);
        genl_unlock();
  
 -      kfree(family->attrbuf);
 -
        genl_ctrl_event(CTRL_CMD_DELFAMILY, family, NULL, 0);
  
        return 0;
@@@ -470,23 -485,30 +470,23 @@@ genl_family_rcv_msg_attrs_parse(const s
        if (!family->maxattr)
                return NULL;
  
 -      if (family->parallel_ops) {
 -              attrbuf = kmalloc_array(family->maxattr + 1,
 -                                      sizeof(struct nlattr *), GFP_KERNEL);
 -              if (!attrbuf)
 -                      return ERR_PTR(-ENOMEM);
 -      } else {
 -              attrbuf = family->attrbuf;
 -      }
 +      attrbuf = kmalloc_array(family->maxattr + 1,
 +                              sizeof(struct nlattr *), GFP_KERNEL);
 +      if (!attrbuf)
 +              return ERR_PTR(-ENOMEM);
  
        err = __nlmsg_parse(nlh, hdrlen, attrbuf, family->maxattr,
                            family->policy, validate, extack);
        if (err) {
 -              if (family->parallel_ops)
 -                      kfree(attrbuf);
 +              kfree(attrbuf);
                return ERR_PTR(err);
        }
        return attrbuf;
  }
  
 -static void genl_family_rcv_msg_attrs_free(const struct genl_family *family,
 -                                         struct nlattr **attrbuf)
 +static void genl_family_rcv_msg_attrs_free(struct nlattr **attrbuf)
  {
 -      if (family->parallel_ops)
 -              kfree(attrbuf);
 +      kfree(attrbuf);
  }
  
  struct genl_start_context {
@@@ -520,7 -542,7 +520,7 @@@ static int genl_start(struct netlink_ca
  no_attrs:
        info = genl_dumpit_info_alloc();
        if (!info) {
 -              genl_family_rcv_msg_attrs_free(ctx->family, attrs);
 +              genl_family_rcv_msg_attrs_free(attrs);
                return -ENOMEM;
        }
        info->family = ctx->family;
        }
  
        if (rc) {
 -              genl_family_rcv_msg_attrs_free(info->family, info->attrs);
 +              genl_family_rcv_msg_attrs_free(info->attrs);
                genl_dumpit_info_free(info);
                cb->data = NULL;
        }
@@@ -566,7 -588,7 +566,7 @@@ static int genl_lock_done(struct netlin
                rc = ops->done(cb);
                genl_unlock();
        }
 -      genl_family_rcv_msg_attrs_free(info->family, info->attrs);
 +      genl_family_rcv_msg_attrs_free(info->attrs);
        genl_dumpit_info_free(info);
        return rc;
  }
@@@ -579,7 -601,7 +579,7 @@@ static int genl_parallel_done(struct ne
  
        if (ops->done)
                rc = ops->done(cb);
 -      genl_family_rcv_msg_attrs_free(info->family, info->attrs);
 +      genl_family_rcv_msg_attrs_free(info->attrs);
        genl_dumpit_info_free(info);
        return rc;
  }
@@@ -672,7 -694,7 +672,7 @@@ static int genl_family_rcv_msg_doit(con
                family->post_doit(ops, skb, &info);
  
  out:
 -      genl_family_rcv_msg_attrs_free(family, attrbuf);
 +      genl_family_rcv_msg_attrs_free(attrbuf);
  
        return err;
  }
@@@ -1144,11 -1166,60 +1144,11 @@@ static struct genl_family genl_ctrl __r
        .netnsok = true,
  };
  
 -static int genl_bind(struct net *net, int group)
 -{
 -      struct genl_family *f;
 -      int err = -ENOENT;
 -      unsigned int id;
 -
 -      down_read(&cb_lock);
 -
 -      idr_for_each_entry(&genl_fam_idr, f, id) {
 -              if (group >= f->mcgrp_offset &&
 -                  group < f->mcgrp_offset + f->n_mcgrps) {
 -                      int fam_grp = group - f->mcgrp_offset;
 -
 -                      if (!f->netnsok && net != &init_net)
 -                              err = -ENOENT;
 -                      else if (f->mcast_bind)
 -                              err = f->mcast_bind(net, fam_grp);
 -                      else
 -                              err = 0;
 -                      break;
 -              }
 -      }
 -      up_read(&cb_lock);
 -
 -      return err;
 -}
 -
 -static void genl_unbind(struct net *net, int group)
 -{
 -      struct genl_family *f;
 -      unsigned int id;
 -
 -      down_read(&cb_lock);
 -
 -      idr_for_each_entry(&genl_fam_idr, f, id) {
 -              if (group >= f->mcgrp_offset &&
 -                  group < f->mcgrp_offset + f->n_mcgrps) {
 -                      int fam_grp = group - f->mcgrp_offset;
 -
 -                      if (f->mcast_unbind)
 -                              f->mcast_unbind(net, fam_grp);
 -                      break;
 -              }
 -      }
 -      up_read(&cb_lock);
 -}
 -
  static int __net_init genl_pernet_init(struct net *net)
  {
        struct netlink_kernel_cfg cfg = {
                .input          = genl_rcv,
                .flags          = NL_CFG_F_NONROOT_RECV,
 -              .bind           = genl_bind,
 -              .unbind         = genl_unbind,
        };
  
        /* we'll bump the group number right afterwards */
@@@ -1192,7 -1263,7 +1192,7 @@@ problem
        panic("GENL: Cannot register controller: %d\n", err);
  }
  
subsys_initcall(genl_init);
core_initcall(genl_init);
  
  static int genlmsg_mcast(struct sk_buff *skb, u32 portid, unsigned long group,
                         gfp_t flags)
This page took 0.203408 seconds and 4 git commands to generate.