]> Git Repo - J-linux.git/commitdiff
Merge tag 'char-misc-6.3-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh...
authorLinus Torvalds <[email protected]>
Fri, 24 Feb 2023 20:47:33 +0000 (12:47 -0800)
committerLinus Torvalds <[email protected]>
Fri, 24 Feb 2023 20:47:33 +0000 (12:47 -0800)
Pull char/misc and other driver subsystem updates from Greg KH:
 "Here is the large set of driver changes for char/misc drivers and
  other smaller driver subsystems that flow through this git tree.

  Included in here are:

   - New IIO drivers and features and improvments in that subsystem

   - New hwtracing drivers and additions to that subsystem

   - lots of interconnect changes and new drivers as that subsystem
     seems under very active development recently. This required also
     merging in the icc subsystem changes through this tree.

   - FPGA driver updates

   - counter subsystem and driver updates

   - MHI driver updates

   - nvmem driver updates

   - documentation updates

   - Other smaller driver updates and fixes, full details in the
     shortlog

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

* tag 'char-misc-6.3-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc: (223 commits)
  scripts/tags.sh: fix incompatibility with PCRE2
  firmware: coreboot: Remove GOOGLE_COREBOOT_TABLE_ACPI/OF Kconfig entries
  mei: lower the log level for non-fatal failed messages
  mei: bus: disallow driver match while dismantling device
  misc: vmw_balloon: fix memory leak with using debugfs_lookup()
  nvmem: stm32: fix OPTEE dependency
  dt-bindings: nvmem: qfprom: add IPQ8074 compatible
  nvmem: qcom-spmi-sdam: register at device init time
  nvmem: rave-sp-eeprm: fix kernel-doc bad line warning
  nvmem: stm32: detect bsec pta presence for STM32MP15x
  nvmem: stm32: add OP-TEE support for STM32MP13x
  nvmem: core: use nvmem_add_one_cell() in nvmem_add_cells_from_of()
  nvmem: core: add nvmem_add_one_cell()
  nvmem: core: drop the removal of the cells in nvmem_add_cells()
  nvmem: core: move struct nvmem_cell_info to nvmem-provider.h
  nvmem: core: add an index parameter to the cell
  of: property: add #nvmem-cell-cells property
  of: property: make #.*-cells optional for simple props
  of: base: add of_parse_phandle_with_optional_args()
  net: add helper eth_addr_add()
  ...

15 files changed:
1  2 
MAINTAINERS
drivers/android/binder.c
drivers/android/binderfs.c
drivers/char/pcmcia/synclink_cs.c
drivers/crypto/hisilicon/qm.c
drivers/fpga/dfl.c
drivers/fpga/dfl.h
drivers/iio/adc/Kconfig
drivers/ipack/devices/ipoctal.c
drivers/misc/Kconfig
drivers/misc/Makefile
drivers/misc/uacce/uacce.c
include/linux/hisi_acc_qm.h
kernel/events/core.c
scripts/tags.sh

diff --combined MAINTAINERS
index 8bdfe2a131358b63dc4e050f94dc6f98254fd0c9,69d1e8ad52c576e9c5ba2c3e1625a45c419dd986..7e8258e321c1f0da35a082b7c8c515be5b21f348
@@@ -361,8 -361,6 +361,8 @@@ T: git git://git.kernel.org/pub/scm/lin
  F:    Documentation/ABI/testing/configfs-acpi
  F:    Documentation/ABI/testing/sysfs-bus-acpi
  F:    Documentation/firmware-guide/acpi/
 +F:    arch/x86/kernel/acpi/
 +F:    arch/x86/pci/acpi.c
  F:    drivers/acpi/
  F:    drivers/pci/*/*acpi*
  F:    drivers/pci/*acpi*
@@@ -1853,6 -1851,21 +1853,6 @@@ F:     include/dt-bindings/reset/actions,
  F:    include/linux/soc/actions/
  N:    owl
  
 -ARM/ADS SPHERE MACHINE SUPPORT
 -M:    Lennert Buytenhek <[email protected]>
 -L:    [email protected] (moderated for non-subscribers)
 -S:    Maintained
 -
 -ARM/AFEB9260 MACHINE SUPPORT
 -M:    Sergey Lapin <[email protected]>
 -L:    [email protected] (moderated for non-subscribers)
 -S:    Maintained
 -
 -ARM/AJECO 1ARM MACHINE SUPPORT
 -M:    Lennert Buytenhek <[email protected]>
 -L:    [email protected] (moderated for non-subscribers)
 -S:    Maintained
 -
  ARM/Allwinner SoC Clock Support
  M:    Emilio López <[email protected]>
  S:    Maintained
@@@ -1873,7 -1886,7 +1873,7 @@@ F:      drivers/pinctrl/sunxi
  F:    drivers/soc/sunxi/
  N:    allwinner
  N:    sun[x456789]i
 -N:    sun50i
 +N:    sun[25]0i
  
  ARM/Amlogic Meson SoC CLOCK FRAMEWORK
  M:    Neil Armstrong <[email protected]>
@@@ -2043,6 -2056,11 +2043,6 @@@ F:     arch/arm/boot/dts/ecx-*.dts
  F:    arch/arm/boot/dts/highbank.dts
  F:    arch/arm/mach-highbank/
  
 -ARM/CAVIUM NETWORKS CNS3XXX MACHINE SUPPORT
 -M:    Krzysztof Halasa <[email protected]>
 -S:    Maintained
 -F:    arch/arm/mach-cns3xxx/
 -
  ARM/CAVIUM THUNDER NETWORK DRIVER
  M:    Sunil Goutham <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
@@@ -2071,8 -2089,10 +2071,10 @@@ M:    Hartley Sweeten <hsweeten@visionengr
  M:    Alexander Sverdlin <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
+ F:    Documentation/devicetree/bindings/iio/adc/cirrus,ep9301-adc.yaml
 +F:    arch/arm/boot/compressed/misc-ep93xx.h
  F:    arch/arm/mach-ep93xx/
 -F:    arch/arm/mach-ep93xx/include/mach/
+ F:    drivers/iio/adc/ep93xx_adc.c
  
  ARM/CLKDEV SUPPORT
  M:    Russell King <[email protected]>
@@@ -2088,6 -2108,11 +2090,6 @@@ S:     Maintaine
  F:    arch/arm/boot/dts/cx92755*
  N:    digicolor
  
 -ARM/CONTEC MICRO9 MACHINE SUPPORT
 -M:    Hubert Feurstein <[email protected]>
 -S:    Maintained
 -F:    arch/arm/mach-ep93xx/micro9.c
 -
  ARM/CORESIGHT FRAMEWORK AND DRIVERS
  M:    Mathieu Poirier <[email protected]>
  M:    Suzuki K Poulose <[email protected]>
@@@ -2099,6 -2124,7 +2101,7 @@@ S:      Maintaine
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/coresight/linux.git
  F:    Documentation/ABI/testing/sysfs-bus-coresight-devices-*
  F:    Documentation/devicetree/bindings/arm/arm,coresight-*.yaml
+ F:    Documentation/devicetree/bindings/arm/qcom,coresight-*.yaml
  F:    Documentation/devicetree/bindings/arm/arm,embedded-trace-extension.yaml
  F:    Documentation/devicetree/bindings/arm/arm,trace-buffer-extension.yaml
  F:    Documentation/trace/coresight/*
@@@ -2114,6 -2140,10 +2117,6 @@@ F:     tools/perf/arch/arm/util/pmu.
  F:    tools/perf/util/cs-etm-decoder/*
  F:    tools/perf/util/cs-etm.*
  
 -ARM/CORGI MACHINE SUPPORT
 -M:    Richard Purdie <[email protected]>
 -S:    Maintained
 -
  ARM/CORTINA SYSTEMS GEMINI ARM ARCHITECTURE
  M:    Hans Ulli Kroll <[email protected]>
  M:    Linus Walleij <[email protected]>
@@@ -2153,6 -2183,12 +2156,6 @@@ F:     include/dt-bindings/bus/moxtet.
  F:    include/linux/armada-37xx-rwtm-mailbox.h
  F:    include/linux/moxtet.h
  
 -ARM/EZX SMARTPHONES (A780, A910, A1200, E680, ROKR E2 and ROKR E6)
 -M:    Robert Jarzmik <[email protected]>
 -L:    [email protected] (moderated for non-subscribers)
 -S:    Maintained
 -F:    arch/arm/mach-pxa/ezx.c
 -
  ARM/FARADAY FA526 PORT
  M:    Hans Ulli Kroll <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
@@@ -2205,11 -2241,25 +2208,11 @@@ T:   git git://git.kernel.org/pub/scm/lin
  F:    arch/arm/boot/dts/vf*
  F:    arch/arm/mach-imx/*vf610*
  
 -ARM/GLOMATION GESBC9312SX MACHINE SUPPORT
 -M:    Lennert Buytenhek <[email protected]>
 -L:    [email protected] (moderated for non-subscribers)
 -S:    Maintained
 -
  ARM/GUMSTIX MACHINE SUPPORT
  M:    Steve Sakoman <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
  
 -ARM/H4700 (HP IPAQ HX4700) MACHINE SUPPORT
 -M:    Philipp Zabel <[email protected]>
 -M:    Paul Parsons <[email protected]>
 -L:    [email protected] (moderated for non-subscribers)
 -S:    Maintained
 -F:    arch/arm/mach-pxa/hx4700.c
 -F:    arch/arm/mach-pxa/include/mach/hx4700.h
 -F:    sound/soc/pxa/hx4700.c
 -
  ARM/HISILICON SOC SUPPORT
  M:    Wei Xu <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
@@@ -2234,16 -2284,13 +2237,16 @@@ ARM/HPE GXP ARCHITECTUR
  M:    Jean-Marie Verdun <[email protected]>
  M:    Nick Hawkins <[email protected]>
  S:    Maintained
 +F:    Documentation/hwmon/gxp-fan-ctrl.rst
  F:    Documentation/devicetree/bindings/arm/hpe,gxp.yaml
 +F:    Documentation/devicetree/bindings/hwmon/hpe,gxp-fan-ctrl.yaml
  F:    Documentation/devicetree/bindings/spi/hpe,gxp-spifi.yaml
  F:    Documentation/devicetree/bindings/timer/hpe,gxp-timer.yaml
  F:    arch/arm/boot/dts/hpe-bmc*
  F:    arch/arm/boot/dts/hpe-gxp*
  F:    arch/arm/mach-hpe/
  F:    drivers/clocksource/timer-gxp.c
 +F:    drivers/hwmon/gxp-fan-ctrl.c
  F:    drivers/spi/spi-gxp.c
  F:    drivers/watchdog/gxp-wdt.c
  
  S:    Maintained
  F:    arch/arm/boot/dts/omap3-igep*
  
 -ARM/INCOME PXA270 SUPPORT
 -M:    Marek Vasut <[email protected]>
 -L:    [email protected] (moderated for non-subscribers)
 -S:    Maintained
 -F:    arch/arm/mach-pxa/colibri-pxa270-income.c
 -
 -ARM/INTEL IOP32X ARM ARCHITECTURE
 -M:    Lennert Buytenhek <[email protected]>
 -L:    [email protected] (moderated for non-subscribers)
 -S:    Maintained
 -
 -ARM/INTEL IQ81342EX MACHINE SUPPORT
 -M:    Lennert Buytenhek <[email protected]>
 -L:    [email protected] (moderated for non-subscribers)
 -S:    Maintained
 -
 -ARM/INTEL IXDP2850 MACHINE SUPPORT
 -M:    Lennert Buytenhek <[email protected]>
 -L:    [email protected] (moderated for non-subscribers)
 -S:    Maintained
 -
  ARM/INTEL IXP4XX ARM ARCHITECTURE
  M:    Linus Walleij <[email protected]>
  M:    Imre Kaloz <[email protected]>
@@@ -2287,12 -2355,22 +2290,12 @@@ M:   Lennert Buytenhek <kernel@wantstofly
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
  
 -ARM/IP FABRICS DOUBLE ESPRESSO MACHINE SUPPORT
 -M:    Lennert Buytenhek <[email protected]>
 -L:    [email protected] (moderated for non-subscribers)
 -S:    Maintained
 -
  ARM/LG1K ARCHITECTURE
  M:    Chanho Min <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
  F:    arch/arm64/boot/dts/lg/
  
 -ARM/LOGICPD PXA270 MACHINE SUPPORT
 -M:    Lennert Buytenhek <[email protected]>
 -L:    [email protected] (moderated for non-subscribers)
 -S:    Maintained
 -
  ARM/LPC18XX ARCHITECTURE
  M:    Vladimir Zapolskiy <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
@@@ -2319,6 -2397,10 +2322,6 @@@ F:     drivers/usb/host/ohci-nxp.
  F:    drivers/watchdog/pnx4008_wdt.c
  N:    lpc32xx
  
 -ARM/MAGICIAN MACHINE SUPPORT
 -M:    Philipp Zabel <[email protected]>
 -S:    Maintained
 -
  ARM/Marvell Dove/MV78xx0/Orion SOC support
  M:    Andrew Lunn <[email protected]>
  M:    Sebastian Hesselbarth <[email protected]>
@@@ -2450,6 -2532,12 +2453,6 @@@ F:     arch/arm/boot/dts/milbeaut
  F:    arch/arm/mach-milbeaut/
  N:    milbeaut
  
 -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]>
  M:    Romain Perier <[email protected]>
@@@ -2470,6 -2558,10 +2473,6 @@@ F:     drivers/watchdog/msc313e_wdt.
  F:    include/dt-bindings/clock/mstar-*
  F:    include/dt-bindings/gpio/msc313-gpio.h
  
 -ARM/NEC MOBILEPRO 900/c MACHINE SUPPORT
 -M:    Michael Petchkovsky <[email protected]>
 -S:    Maintained
 -
  ARM/NOMADIK/Ux500 ARCHITECTURES
  M:    Linus Walleij <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
@@@ -2525,7 -2617,6 +2528,7 @@@ S:      Maintaine
  W:    https://github.com/neuschaefer/wpcm450/wiki
  F:    Documentation/devicetree/bindings/*/*wpcm*
  F:    arch/arm/boot/dts/nuvoton-wpcm450*
 +F:    arch/arm/configs/wpcm450_defconfig
  F:    arch/arm/mach-npcm/wpcm450.c
  F:    drivers/*/*/*wpcm*
  F:    drivers/*/*wpcm*
  S:    Maintained
  F:    arch/arm64/boot/dts/freescale/s32g*.dts*
  
 -ARM/OPENMOKO NEO FREERUNNER (GTA02) MACHINE SUPPORT
 -L:    [email protected] (subscribers-only)
 -S:    Orphan
 -W:    http://wiki.openmoko.org/wiki/Neo_FreeRunner
 -F:    arch/arm/mach-s3c/gta02.h
 -F:    arch/arm/mach-s3c/mach-gta02.c
 -
  ARM/Orion SoC/Technologic Systems TS-78xx platform support
  M:    Alexander Clouter <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
@@@ -2556,6 -2654,43 +2559,6 @@@ F:     arch/arm/mach-oxnas
  F:    drivers/power/reset/oxnas-restart.c
  N:    oxnas
  
 -ARM/PALM TREO SUPPORT
 -L:    [email protected] (moderated for non-subscribers)
 -S:    Orphan
 -F:    arch/arm/mach-pxa/palmtreo.*
 -
 -ARM/PALMTX,PALMT5,PALMLD,PALMTE2,PALMTC SUPPORT
 -M:    Marek Vasut <[email protected]>
 -L:    [email protected] (moderated for non-subscribers)
 -S:    Maintained
 -W:    http://hackndev.com
 -F:    arch/arm/mach-pxa/include/mach/palmld.h
 -F:    arch/arm/mach-pxa/include/mach/palmtc.h
 -F:    arch/arm/mach-pxa/include/mach/palmtx.h
 -F:    arch/arm/mach-pxa/palmld.c
 -F:    arch/arm/mach-pxa/palmt5.*
 -F:    arch/arm/mach-pxa/palmtc.c
 -F:    arch/arm/mach-pxa/palmte2.*
 -F:    arch/arm/mach-pxa/palmtx.c
 -
 -ARM/PALMZ72 SUPPORT
 -M:    Sergey Lapin <[email protected]>
 -L:    [email protected] (moderated for non-subscribers)
 -S:    Maintained
 -W:    http://hackndev.com
 -F:    arch/arm/mach-pxa/palmz72.*
 -
 -ARM/PLEB SUPPORT
 -M:    Peter Chubb <[email protected]>
 -S:    Maintained
 -W:    http://www.disy.cse.unsw.edu.au/Hardware/PLEB
 -
 -ARM/PT DIGITAL BOARD PORT
 -M:    Stefan Eletzhofer <[email protected]>
 -L:    [email protected] (moderated for non-subscribers)
 -S:    Maintained
 -W:    http://www.armlinux.org.uk/
 -
  ARM/QUALCOMM SUPPORT
  M:    Andy Gross <[email protected]>
  M:    Bjorn Andersson <[email protected]>
@@@ -2599,6 -2734,11 +2602,6 @@@ F:     include/dt-bindings/*/qcom
  F:    include/linux/*/qcom*
  F:    include/linux/soc/qcom/
  
 -ARM/RADISYS ENP2611 MACHINE SUPPORT
 -M:    Lennert Buytenhek <[email protected]>
 -L:    [email protected] (moderated for non-subscribers)
 -S:    Maintained
 -
  ARM/RDA MICRO ARCHITECTURE
  M:    Manivannan Sadhasivam <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
@@@ -2674,7 -2814,7 +2677,7 @@@ F:      Documentation/devicetree/bindings/i2
  F:    Documentation/devicetree/bindings/mmc/rockchip-dw-mshc.yaml
  F:    Documentation/devicetree/bindings/spi/spi-rockchip.yaml
  F:    arch/arm/boot/dts/rk3*
 -F:    arch/arm/boot/dts/rv1108*
 +F:    arch/arm/boot/dts/rv11*
  F:    arch/arm/mach-rockchip/
  F:    drivers/*/*/*rockchip*
  F:    drivers/*/*rockchip*
@@@ -2719,6 -2859,7 +2722,6 @@@ F:      include/linux/platform_data/*s3c
  F:    include/linux/serial_s3c.h
  F:    include/linux/soc/samsung/
  N:    exynos
 -N:    s3c2410
  N:    s3c64xx
  N:    s5pv210
  
@@@ -2791,7 -2932,6 +2794,7 @@@ M:      Patrice Chotard <patrice.chotard@fos
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
  W:    http://www.stlinux.com
 +F:    Documentation/devicetree/bindings/spi/st,ssc-spi.yaml
  F:    Documentation/devicetree/bindings/i2c/i2c-st.txt
  F:    arch/arm/boot/dts/sti*
  F:    arch/arm/mach-sti/
@@@ -2877,7 -3017,7 +2880,7 @@@ M:      [email protected]
  L:    [email protected] (moderated for non-subscribers)
  L:    [email protected]
  S:    Maintained
 -F:    arch/arm64/boot/dts/tesla*
 +F:    arch/arm64/boot/dts/tesla/
  
  ARM/TETON BGA MACHINE SUPPORT
  M:    "Mark F. Brown" <[email protected]>
@@@ -2930,6 -3070,16 +2933,6 @@@ F:     arch/arm64/boot/dts/ti/Makefil
  F:    arch/arm64/boot/dts/ti/k3-*
  F:    include/dt-bindings/pinctrl/k3.h
  
 -ARM/THECUS N2100 MACHINE SUPPORT
 -M:    Lennert Buytenhek <[email protected]>
 -L:    [email protected] (moderated for non-subscribers)
 -S:    Maintained
 -
 -ARM/TOSA MACHINE SUPPORT
 -M:    Dmitry Eremin-Solenikov <[email protected]>
 -M:    Dirk Opfer <[email protected]>
 -S:    Maintained
 -
  ARM/TOSHIBA VISCONTI ARCHITECTURE
  M:    Nobuhiro Iwamatsu <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
@@@ -2986,7 -3136,7 +2989,7 @@@ S:      Maintaine
  F:    */*/*/vexpress*
  F:    */*/vexpress*
  F:    arch/arm/boot/dts/vexpress*
 -F:    arch/arm/mach-vexpress/
 +F:    arch/arm/mach-versatile/
  F:    arch/arm64/boot/dts/arm/
  F:    drivers/clk/versatile/clk-vexpress-osc.c
  F:    drivers/clocksource/timer-versatile.c
@@@ -2999,6 -3149,13 +3002,6 @@@ S:     Maintaine
  W:    http://www.armlinux.org.uk/
  F:    arch/arm/vfp/
  
 -ARM/VOIPAC PXA270 SUPPORT
 -M:    Marek Vasut <[email protected]>
 -L:    [email protected] (moderated for non-subscribers)
 -S:    Maintained
 -F:    arch/arm/mach-pxa/include/mach/vpac270.h
 -F:    arch/arm/mach-pxa/vpac270.c
 -
  ARM/VT8500 ARM ARCHITECTURE
  L:    [email protected] (moderated for non-subscribers)
  S:    Orphan
@@@ -3016,6 -3173,13 +3019,6 @@@ F:     drivers/video/fbdev/vt8500lcdfb.
  F:    drivers/video/fbdev/wm8505fb*
  F:    drivers/video/fbdev/wmt_ge_rops.*
  
 -ARM/ZIPIT Z2 SUPPORT
 -M:    Marek Vasut <[email protected]>
 -L:    [email protected] (moderated for non-subscribers)
 -S:    Maintained
 -F:    arch/arm/mach-pxa/include/mach/z2.h
 -F:    arch/arm/mach-pxa/z2.c
 -
  ARM/ZYNQ ARCHITECTURE
  M:    Michal Simek <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
@@@ -3153,7 -3317,7 +3156,7 @@@ ASPEED CRYPTO DRIVE
  M:    Neal Liu <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
 -F:    Documentation/devicetree/bindings/crypto/aspeed,ast2500-hace.yaml
 +F:    Documentation/devicetree/bindings/crypto/aspeed,*
  F:    drivers/crypto/aspeed/
  
  ASUS NOTEBOOKS AND EEEPC ACPI/WMI EXTRAS DRIVERS
@@@ -3354,7 -3518,7 +3357,7 @@@ F:      drivers/net/ieee802154/atusb.
  AUDIT SUBSYSTEM
  M:    Paul Moore <[email protected]>
  M:    Eric Paris <[email protected]>
 -L:    [email protected] (moderated for non-subscribers)
 +L:    [email protected]
  S:    Supported
  W:    https://github.com/linux-audit
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/pcmoore/audit.git
  S:    Maintained
  F:    tools/testing/selftests/bpf/
  
 +BPF [DOCUMENTATION] (Related to Standardization)
 +R:    David Vernet <[email protected]>
 +L:    [email protected]
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/bpf/instruction-set.rst
 +
  BPF [MISC]
  L:    [email protected]
  S:    Odd Fixes
  S:    Maintained
  F:    drivers/phy/broadcom/phy-brcm-usb*
  
 +BROADCOM Broadband SoC High Speed SPI Controller DRIVER
 +M:    William Zhang <[email protected]>
 +M:    Kursad Oney <[email protected]>
 +M:    Jonas Gorski <[email protected]>
 +R:    Broadcom internal kernel review list <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/spi/brcm,bcm63xx-hsspi.yaml
 +F:    drivers/spi/spi-bcm63xx-hsspi.c
 +F:    drivers/spi/spi-bcmbca-hsspi.c
 +
  BROADCOM ETHERNET PHY DRIVERS
  M:    Florian Fainelli <[email protected]>
  R:    Broadcom internal kernel review list <[email protected]>
@@@ -4664,11 -4810,12 +4667,11 @@@ F:   net/sched/sch_etf.
  F:    net/sched/sch_taprio.c
  
  CC2520 IEEE-802.15.4 RADIO DRIVER
 -M:    Varka Bhadram <[email protected]>
 +M:    Stefan Schmidt <[email protected]>
  L:    [email protected]
 -S:    Maintained
 +S:    Odd Fixes
  F:    Documentation/devicetree/bindings/net/ieee802154/cc2520.txt
  F:    drivers/net/ieee802154/cc2520.c
 -F:    include/linux/spi/cc2520.h
  
  CCREE ARM TRUSTZONE CRYPTOCELL REE DRIVER
  M:    Gilad Ben-Yossef <[email protected]>
@@@ -4844,13 -4991,6 +4847,13 @@@ S:    Maintaine
  F:    Documentation/devicetree/bindings/sound/google,cros-ec-codec.yaml
  F:    sound/soc/codecs/cros_ec_codec.*
  
 +CHROMEOS EC UART DRIVER
 +M:    Bhanu Prakash Maiya <[email protected]>
 +R:    Benson Leung <[email protected]>
 +R:    Tzung-Bi Shih <[email protected]>
 +S:    Maintained
 +F:    drivers/platform/chrome/cros_ec_uart.c
 +
  CHROMEOS EC SUBDRIVERS
  M:    Benson Leung <[email protected]>
  R:    Guenter Roeck <[email protected]>
@@@ -4864,9 -5004,8 +4867,9 @@@ CHROMEOS EC USB TYPE-C DRIVE
  M:    Prashant Malani <[email protected]>
  L:    [email protected]
  S:    Maintained
 -F:    drivers/platform/chrome/cros_ec_typec.c
 +F:    drivers/platform/chrome/cros_ec_typec.*
  F:    drivers/platform/chrome/cros_typec_switch.c
 +F:    drivers/platform/chrome/cros_typec_vdm.*
  
  CHROMEOS EC USB PD NOTIFY DRIVER
  M:    Prashant Malani <[email protected]>
@@@ -5657,11 -5796,6 +5660,11 @@@ M:    SeongJae Park <[email protected]
  L:    [email protected]
  L:    [email protected]
  S:    Maintained
 +W:    https://damonitor.github.io
 +P:    Documentation/mm/damon/maintainer-profile.rst
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
 +T:    quilt git://git.kernel.org/pub/scm/linux/kernel/git/akpm/25-new
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/sj/linux.git damon/next
  F:    Documentation/ABI/testing/sysfs-kernel-mm-damon
  F:    Documentation/admin-guide/mm/damon/
  F:    Documentation/mm/damon/
@@@ -5799,6 -5933,7 +5802,6 @@@ F:      Documentation/ABI/testing/sysfs-plat
  F:    drivers/platform/x86/dell/dell-wmi-ddv.c
  
  DELL WMI SYSMAN DRIVER
 -M:    Divya Bharathi <[email protected]>
  M:    Prasanth Ksr <[email protected]>
  L:    [email protected]
  L:    [email protected]
@@@ -5970,7 -6105,7 +5973,7 @@@ S:      Supporte
  F:    Documentation/networking/devlink
  F:    include/net/devlink.h
  F:    include/uapi/linux/devlink.h
 -F:    net/core/devlink.c
 +F:    net/devlink/
  
  DH ELECTRONICS IMX6 DHCOM/DHCOR BOARD SUPPORT
  M:    Christoph Niedermaier <[email protected]>
@@@ -6293,7 -6428,6 +6296,7 @@@ T:      git git://git.linbit.com/linux-drbd.
  T:    git git://git.linbit.com/drbd-8.4.git
  F:    Documentation/admin-guide/blockdev/
  F:    drivers/block/drbd/
 +F:    include/linux/drbd*
  F:    lib/lru_cache.c
  
  DRIVER COMPONENT FRAMEWORK
@@@ -6422,14 -6556,6 +6425,14 @@@ S:    Maintaine
  T:    git git://anongit.freedesktop.org/drm/drm-misc
  F:    drivers/gpu/drm/tiny/gm12u320.c
  
 +DRM DRIVER FOR HIMAX HX8394 MIPI-DSI LCD panels
 +M:    Ondrej Jirman <[email protected]>
 +M:    Javier Martinez Canillas <[email protected]>
 +S:    Maintained
 +T:    git git://anongit.freedesktop.org/drm/drm-misc
 +F:    Documentation/devicetree/bindings/display/panel/himax,hx8394.yaml
 +F:    drivers/gpu/drm/panel/panel-himax-hx8394.c
 +
  DRM DRIVER FOR HX8357D PANELS
  M:    Emma Anholt <[email protected]>
  S:    Maintained
@@@ -6451,6 -6577,11 +6454,6 @@@ T:     git git://anongit.freedesktop.org/dr
  F:    Documentation/devicetree/bindings/display/ilitek,ili9486.yaml
  F:    drivers/gpu/drm/tiny/ili9486.c
  
 -DRM DRIVER FOR INTEL I810 VIDEO CARDS
 -S:    Orphan / Obsolete
 -F:    drivers/gpu/drm/i810/
 -F:    include/uapi/drm/i810_drm.h
 -
  DRM DRIVER FOR JADARD JD9365DA-H3 MIPI-DSI LCD PANELS
  M:    Jagan Teki <[email protected]>
  S:    Maintained
@@@ -6479,6 -6610,11 +6482,6 @@@ S:     Maintaine
  F:    Documentation/devicetree/bindings/display/panel/mantix,mlaf057we51-x.yaml
  F:    drivers/gpu/drm/panel/panel-mantix-mlaf057we51.c
  
 -DRM DRIVER FOR MATROX G200/G400 GRAPHICS CARDS
 -S:    Orphan / Obsolete
 -F:    drivers/gpu/drm/mga/
 -F:    include/uapi/drm/mga_drm.h
 -
  DRM DRIVER FOR MGA G200 GRAPHICS CHIPS
  M:    Dave Airlie <[email protected]>
  R:    Thomas Zimmermann <[email protected]>
@@@ -6597,6 -6733,11 +6600,6 @@@ T:     git git://anongit.freedesktop.org/dr
  F:    drivers/gpu/drm/qxl/
  F:    include/uapi/drm/qxl_drm.h
  
 -DRM DRIVER FOR RAGE 128 VIDEO CARDS
 -S:    Orphan / Obsolete
 -F:    drivers/gpu/drm/r128/
 -F:    include/uapi/drm/r128_drm.h
 -
  DRM DRIVER FOR RAYDIUM RM67191 PANELS
  M:    Robert Chiras <[email protected]>
  S:    Maintained
@@@ -6624,6 -6765,11 +6627,6 @@@ S:     Maintaine
  F:    Documentation/devicetree/bindings/display/panel/rocktech,jh057n00900.yaml
  F:    drivers/gpu/drm/panel/panel-sitronix-st7703.c
  
 -DRM DRIVER FOR SAVAGE VIDEO CARDS
 -S:    Orphan / Obsolete
 -F:    drivers/gpu/drm/savage/
 -F:    include/uapi/drm/savage_drm.h
 -
  DRM DRIVER FOR FIRMWARE FRAMEBUFFERS
  M:    Thomas Zimmermann <[email protected]>
  M:    Javier Martinez Canillas <[email protected]>
@@@ -6639,6 -6785,11 +6642,6 @@@ F:     include/drm/drm_aperture.
  F:    include/linux/aperture.h
  F:    include/video/nomodeset.h
  
 -DRM DRIVER FOR SIS VIDEO CARDS
 -S:    Orphan / Obsolete
 -F:    drivers/gpu/drm/sis/
 -F:    include/uapi/drm/sis_drm.h
 -
  DRM DRIVER FOR SITRONIX ST7586 PANELS
  M:    David Lechner <[email protected]>
  S:    Maintained
@@@ -6666,6 -6817,10 +6669,6 @@@ T:     git git://anongit.freedesktop.org/dr
  F:    Documentation/devicetree/bindings/display/ste,mcde.yaml
  F:    drivers/gpu/drm/mcde/
  
 -DRM DRIVER FOR TDFX VIDEO CARDS
 -S:    Orphan / Obsolete
 -F:    drivers/gpu/drm/tdfx/
 -
  DRM DRIVER FOR TI DLPC3433 MIPI DSI TO DMD BRIDGE
  M:    Jagan Teki <[email protected]>
  S:    Maintained
@@@ -6765,16 -6920,6 +6768,16 @@@ C:    irc://irc.oftc.net/dri-deve
  T:    git https://git.kernel.org/pub/scm/linux/kernel/git/ogabbay/accel.git
  F:    Documentation/accel/
  F:    drivers/accel/
 +F:    include/drm/drm_accel.h
 +
 +DRM ACCEL DRIVERS FOR INTEL VPU
 +M:    Jacek Lawrynowicz <[email protected]>
 +M:    Stanislaw Gruszka <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +T:    git git://anongit.freedesktop.org/drm/drm-misc
 +F:    drivers/accel/ivpu/
 +F:    include/uapi/drm/ivpu_accel.h
  
  DRM DRIVERS FOR ALLWINNER A10
  M:    Maxime Ripard <[email protected]>
@@@ -6845,7 -6990,7 +6848,7 @@@ M:      Philipp Zabel <[email protected]
  L:    [email protected]
  S:    Maintained
  F:    Documentation/devicetree/bindings/display/imx/
 -F:    drivers/gpu/drm/imx/
 +F:    drivers/gpu/drm/imx/ipuv3/
  F:    drivers/gpu/ipu-v3/
  
  DRM DRIVERS FOR FREESCALE IMX BRIDGE
@@@ -6868,10 -7013,9 +6871,10 @@@ F:    drivers/gpu/drm/gma500
  DRM DRIVERS FOR HISILICON
  M:    Xinliang Liu <[email protected]>
  M:    Tian Tao  <[email protected]>
 -R:    John Stultz <[email protected]>
  R:    Xinwei Kong <[email protected]>
 -R:    Chen Feng <[email protected]>
 +R:    Sumit Semwal <[email protected]>
 +R:    Yongqin Liu <[email protected]>
 +R:    John Stultz <[email protected]>
  L:    [email protected]
  S:    Maintained
  T:    git git://anongit.freedesktop.org/drm/drm-misc
@@@ -6912,7 -7056,7 +6915,7 @@@ M:      Thierry Reding <thierry.reding@gmail
  L:    [email protected]
  L:    [email protected]
  S:    Supported
 -T:    git git://anongit.freedesktop.org/tegra/linux.git
 +T:    git https://gitlab.freedesktop.org/drm/tegra.git
  F:    Documentation/devicetree/bindings/display/tegra/nvidia,tegra20-host1x.yaml
  F:    Documentation/devicetree/bindings/gpu/host1x/
  F:    drivers/gpu/drm/tegra/
@@@ -7606,7 -7750,6 +7609,7 @@@ R:      Jeffle Xu <[email protected]
  L:    [email protected]
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs.git
 +F:    Documentation/ABI/testing/sysfs-fs-erofs
  F:    Documentation/filesystems/erofs.rst
  F:    fs/erofs/
  F:    include/trace/events/erofs.h
@@@ -8062,7 -8205,7 +8065,7 @@@ F:      drivers/fpga/microchip-spi.
  FPU EMULATOR
  M:    Bill Metzenthen <[email protected]>
  S:    Maintained
 -W:    http://floatingpoint.sourceforge.net/emulator/index.html
 +W:    https://floatingpoint.billm.au/
  F:    arch/x86/math-emu/
  
  FRAMEBUFFER CORE
@@@ -8910,15 -9053,13 +8913,15 @@@ F:   block/partitions/efi.
  
  HABANALABS PCI DRIVER
  M:    Oded Gabbay <[email protected]>
 +L:    [email protected]
  S:    Supported
 +C:    irc://irc.oftc.net/dri-devel
  T:    git https://git.kernel.org/pub/scm/linux/kernel/git/ogabbay/linux.git
  F:    Documentation/ABI/testing/debugfs-driver-habanalabs
  F:    Documentation/ABI/testing/sysfs-driver-habanalabs
 -F:    drivers/misc/habanalabs/
 +F:    drivers/accel/habanalabs/
  F:    include/trace/events/habanalabs.h
 -F:    include/uapi/misc/habanalabs.h
 +F:    include/uapi/drm/habanalabs_accel.h
  
  HACKRF MEDIA DRIVER
  M:    Antti Palosaari <[email protected]>
@@@ -9069,12 -9210,9 +9072,12 @@@ M:    Benjamin Tissoires <benjamin.tissoir
  L:    [email protected]
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/hid/hid.git
 +F:    Documentation/hid/
  F:    drivers/hid/
  F:    include/linux/hid*
  F:    include/uapi/linux/hid*
 +F:    samples/hid/
 +F:    tools/testing/selftests/hid/
  
  HID LOGITECH DRIVERS
  R:    Filipe Laíns <[email protected]>
  S:    Maintained
  F:    drivers/hid/hid-logitech-*
  
 +HID++ LOGITECH DRIVERS
 +R:    Filipe Laíns <[email protected]>
 +R:    Bastien Nocera <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/hid/hid-logitech-hidpp.c
 +
  HID PLAYSTATION DRIVER
  M:    Roderick Colenbrander <[email protected]>
  L:    [email protected]
@@@ -9254,11 -9385,15 +9257,15 @@@ F:   drivers/perf/hisilicon/hns3_pmu.
  
  HISILICON PTT DRIVER
  M:    Yicong Yang <[email protected]>
+ M:    Jonathan Cameron <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    Documentation/ABI/testing/sysfs-devices-hisi_ptt
  F:    Documentation/trace/hisi-ptt.rst
  F:    drivers/hwtracing/ptt/
+ F:    tools/perf/arch/arm64/util/hisi-ptt.c
+ F:    tools/perf/util/hisi-ptt*
+ F:    tools/perf/util/hisi-ptt-decoder/*
  
  HISILICON QM DRIVER
  M:    Weili Qian <[email protected]>
@@@ -9345,7 -9480,7 +9352,7 @@@ F:      Documentation/mm/hmm.rs
  F:    include/linux/hmm*
  F:    lib/test_hmm*
  F:    mm/hmm*
 -F:    tools/testing/selftests/vm/*hmm*
 +F:    tools/testing/selftests/mm/*hmm*
  
  HOST AP DRIVER
  M:    Jouni Malinen <[email protected]>
@@@ -9868,7 -10003,7 +9875,7 @@@ S:     Maintaine
  T:    git://git.kernel.org/pub/scm/linux/kernel/git/vfs/idmapping.git
  F:    Documentation/filesystems/idmappings.rst
  F:    tools/testing/selftests/mount_setattr/
 -F:    include/linux/mnt_idmapping.h
 +F:    include/linux/mnt_idmapping.*
  
  IDT VersaClock 5 CLOCK DRIVER
  M:    Luca Ceresoli <[email protected]>
@@@ -9879,7 -10014,6 +9886,7 @@@ F:     drivers/clk/clk-versaclock5.
  IEEE 802.15.4 SUBSYSTEM
  M:    Alexander Aring <[email protected]>
  M:    Stefan Schmidt <[email protected]>
 +M:    Miquel Raynal <[email protected]>
  L:    [email protected]
  S:    Maintained
  W:    https://linux-wpan.org/
  S:    Maintained
  F:    drivers/iio/pressure/dps310.c
  
 +INFINEON PEB2466 ASoC CODEC
 +M:    Herve Codina <[email protected]>
 +L:    [email protected] (moderated for non-subscribers)
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/sound/infineon,peb2466.yaml
 +F:    sound/soc/codecs/peb2466.c
 +
  INFINIBAND SUBSYSTEM
  M:    Jason Gunthorpe <[email protected]>
  M:    Leon Romanovsky <[email protected]>
@@@ -10454,6 -10581,7 +10461,7 @@@ F:   drivers/watchdog/mei_wdt.
  F:    include/linux/mei_aux.h
  F:    include/linux/mei_cl_bus.h
  F:    include/uapi/linux/mei.h
+ F:    include/uapi/linux/uuid.h
  F:    samples/mei/*
  
  INTEL MAX 10 BMC MFD DRIVER
@@@ -10570,13 -10698,6 +10578,13 @@@ S: Maintaine
  F:    arch/x86/include/asm/intel_telemetry.h
  F:    drivers/platform/x86/intel/telemetry/
  
 +INTEL TPMI DRIVER
 +M:    Srinivas Pandruvada <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/platform/x86/intel/tpmi.c
 +F:    include/linux/intel_tpmi.h
 +
  INTEL UNCORE FREQUENCY CONTROL
  M:    Srinivas Pandruvada <[email protected]>
  L:    [email protected]
@@@ -10814,13 -10935,6 +10822,13 @@@ M: David Sterba <[email protected]
  S:    Odd Fixes
  F:    drivers/tty/ipwireless/
  
 +IRON DEVICE AUDIO CODEC DRIVERS
 +M:    Kiseok Jo <[email protected]>
 +L:    [email protected] (moderated for non-subscribers)
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/sound/irondevice,*
 +F:    sound/soc/codecs/sma*
 +
  IRQ DOMAINS (IRQ NUMBER MAPPING LIBRARY)
  M:    Marc Zyngier <[email protected]>
  S:    Maintained
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git irq/core
  F:    kernel/irq/
 +F:    include/linux/group_cpus.h
 +F:    lib/group_cpus.c
  
  IRQCHIP DRIVERS
  M:    Thomas Gleixner <[email protected]>
@@@ -11577,12 -11689,6 +11585,12 @@@ M: John Hawley <[email protected]
  S:    Maintained
  F:    tools/testing/ktest
  
 +KTZ8866 BACKLIGHT DRIVER
 +M:    Jianhua Lu <[email protected]>
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/leds/backlight/kinetic,ktz8866.yaml
 +F:    drivers/video/backlight/ktz8866.c
 +
  L3MDEV
  M:    David Ahern <[email protected]>
  L:    [email protected]
@@@ -11595,7 -11701,7 +11603,7 @@@ M:   Mickaël Salaün <[email protected]
  L:    [email protected]
  S:    Supported
  W:    https://landlock.io
 -T:    git https://github.com/landlock-lsm/linux.git
 +T:    git https://git.kernel.org/pub/scm/linux/kernel/git/mic/linux.git
  F:    Documentation/security/landlock.rst
  F:    Documentation/userspace-api/landlock.rst
  F:    include/uapi/linux/landlock.h
@@@ -12724,9 -12830,9 +12732,9 @@@ F:   drivers/iio/potentiometer/mcp4018.
  F:    drivers/iio/potentiometer/mcp4531.c
  
  MCR20A IEEE-802.15.4 RADIO DRIVER
 -M:    Xue Liu <[email protected]>
 +M:    Stefan Schmidt <[email protected]>
  L:    [email protected]
 -S:    Maintained
 +S:    Odd Fixes
  W:    https://github.com/xueliu/mcr20a-linux
  F:    Documentation/devicetree/bindings/net/ieee802154/mcr20a.txt
  F:    drivers/net/ieee802154/mcr20a.c
@@@ -13383,7 -13489,7 +13391,7 @@@ M:   Andrew Morton <akpm@linux-foundation
  L:    [email protected]
  S:    Maintained
  W:    http://www.linux-mm.org
 -T:    git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
  T:    quilt git://git.kernel.org/pub/scm/linux/kernel/git/akpm/25-new
  F:    include/linux/gfp.h
  F:    include/linux/gfp_types.h
@@@ -13392,8 -13498,7 +13400,8 @@@ F:   include/linux/mm.
  F:    include/linux/mmzone.h
  F:    include/linux/pagewalk.h
  F:    mm/
 -F:    tools/testing/selftests/vm/
 +F:    tools/mm/
 +F:    tools/testing/selftests/mm/
  
  VMALLOC
  M:    Andrew Morton <[email protected]>
@@@ -13402,7 -13507,7 +13410,7 @@@ R:   Christoph Hellwig <[email protected]
  L:    [email protected]
  S:    Maintained
  W:    http://www.linux-mm.org
 -T:    git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
  F:    include/linux/vmalloc.h
  F:    mm/vmalloc.c
  
@@@ -13528,6 -13633,19 +13536,19 @@@ W: http://www.monstr.eu/fdt
  T:    git git://git.monstr.eu/linux-2.6-microblaze.git
  F:    arch/microblaze/
  
+ MICROBLAZE TMR MANAGER
+ M:    Appana Durga Kedareswara rao <[email protected]>
+ S:    Supported
+ F:    Documentation/ABI/testing/sysfs-driver-xilinx-tmr-manager
+ F:    Documentation/devicetree/bindings/misc/xlnx,tmr-manager.yaml
+ F:    drivers/misc/xilinx_tmr_manager.c
+ MICROBLAZE TMR INJECT
+ M:    Appana Durga Kedareswara rao <[email protected]>
+ S:    Supported
+ F:    Documentation/devicetree/bindings/misc/xlnx,tmr-inject.yaml
+ F:    drivers/misc/xilinx_tmr_inject.c
  MICROCHIP AT91 DMA DRIVERS
  M:    Ludovic Desroches <[email protected]>
  M:    Tudor Ambarus <[email protected]>
@@@ -13620,7 -13738,6 +13641,7 @@@ S:   Maintaine
  F:    Documentation/devicetree/bindings/net/dsa/microchip,ksz.yaml
  F:    Documentation/devicetree/bindings/net/dsa/microchip,lan937x.yaml
  F:    drivers/net/dsa/microchip/*
 +F:    include/linux/dsa/ksz_common.h
  F:    include/linux/platform_data/microchip-ksz.h
  F:    net/dsa/tag_ksz.c
  
  S:    Maintained
  F:    drivers/i2c/busses/i2c-mchp-pci1xxxx.c
  
 +MICROCHIP PCIe UART DRIVER
 +M:    Kumaravel Thiagarajan <[email protected]>
 +M:    Tharun Kumar P <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/tty/serial/8250/8250_pci1xxxx.c
 +
  MICROCHIP PWM DRIVER
  M:    Claudiu Beznea <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
@@@ -14060,7 -14170,6 +14081,7 @@@ M:   Saravanan Sekar <[email protected]
  S:    Maintained
  F:    Documentation/devicetree/bindings/mfd/mps,mp2629.yaml
  F:    Documentation/devicetree/bindings/regulator/mps,mp*.yaml
 +F:    drivers/hwmon/pmbus/mpq7932.c
  F:    drivers/iio/adc/mp2629_adc.c
  F:    drivers/mfd/mp2629.c
  F:    drivers/power/supply/mp2629_charger.c
@@@ -14069,16 -14178,6 +14090,16 @@@ F: drivers/regulator/mpq7920.
  F:    drivers/regulator/mpq7920.h
  F:    include/linux/mfd/mp2629.h
  
 +MOST(R) TECHNOLOGY DRIVER
 +M:    Parthiban Veerasooran <[email protected]>
 +M:    Christian Gromm <[email protected]>
 +S:    Maintained
 +F:    Documentation/ABI/testing/configfs-most
 +F:    Documentation/ABI/testing/sysfs-bus-most
 +F:    drivers/most/
 +F:    drivers/staging/most/
 +F:    include/linux/most.h
 +
  MOTION EYE VAIO PICTUREBOOK CAMERA DRIVER
  S:    Orphan
  W:    http://popies.net/meye/
@@@ -14091,7 -14190,6 +14112,7 @@@ M:   Peter Geis <[email protected]
  M:    Frank <[email protected]>
  L:    [email protected]
  S:    Maintained
 +F:    Documentation/devicetree/bindings/net/motorcomm,yt8xxx.yaml
  F:    drivers/net/phy/motorcomm.c
  
  MOXA SMARTIO/INDUSTIO/INTELLIO SERIAL CARD
@@@ -14108,9 -14206,9 +14129,9 @@@ T:   git git://linuxtv.org/media_tree.gi
  F:    drivers/media/radio/radio-mr800.c
  
  MRF24J40 IEEE 802.15.4 RADIO DRIVER
 -M:    Alan Ott <[email protected]>
 +M:    Stefan Schmidt <[email protected]>
  L:    [email protected]
 -S:    Maintained
 +S:    Odd Fixes
  F:    Documentation/devicetree/bindings/net/ieee802154/mrf24j40.txt
  F:    drivers/net/ieee802154/mrf24j40.c
  
@@@ -14210,7 -14308,7 +14231,7 @@@ F:   drivers/media/i2c/mt9v111.
  
  MULTIFUNCTION DEVICES (MFD)
  M:    Lee Jones <[email protected]>
 -S:    Supported
 +S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd.git
  F:    Documentation/devicetree/bindings/mfd/
  F:    drivers/mfd/
@@@ -14472,8 -14570,6 +14493,8 @@@ M:   Florian Fainelli <[email protected]
  M:    Vladimir Oltean <[email protected]>
  S:    Maintained
  F:    Documentation/devicetree/bindings/net/dsa/
 +F:    Documentation/devicetree/bindings/net/ethernet-switch-port.yaml
 +F:    Documentation/devicetree/bindings/net/ethernet-switch.yaml
  F:    drivers/net/dsa/
  F:    include/linux/dsa/
  F:    include/linux/platform_data/dsa.h
@@@ -14492,10 -14588,8 +14513,10 @@@ Q: https://patchwork.kernel.org/project
  B:    mailto:[email protected]
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git
 +F:    Documentation/core-api/netlink.rst
  F:    Documentation/networking/
  F:    Documentation/process/maintainer-netdev.rst
 +F:    Documentation/userspace-api/netlink/
  F:    include/linux/in.h
  F:    include/linux/net.h
  F:    include/linux/netdevice.h
@@@ -14507,7 -14601,6 +14528,7 @@@ F:   include/uapi/linux/netdevice.
  F:    lib/net_utils.c
  F:    lib/random32.c
  F:    net/
 +F:    tools/net/
  F:    tools/testing/selftests/net/
  
  NETWORKING [IPSEC]
@@@ -14953,14 -15046,16 +14974,16 @@@ S:        Maintaine
  F:    Documentation/devicetree/bindings/iio/adc/nxp,imx8qxp-adc.yaml
  F:    drivers/iio/adc/imx8qxp-adc.c
  
- NXP i.MX 7D/6SX/6UL AND VF610 ADC DRIVER
+ NXP i.MX 7D/6SX/6UL/93 AND VF610 ADC DRIVER
  M:    Haibo Chen <[email protected]>
  L:    [email protected]
  L:    [email protected]
  S:    Maintained
  F:    Documentation/devicetree/bindings/iio/adc/fsl,imx7d-adc.yaml
  F:    Documentation/devicetree/bindings/iio/adc/fsl,vf610-adc.yaml
+ F:    Documentation/devicetree/bindings/iio/adc/nxp,imx93-adc.yaml
  F:    drivers/iio/adc/imx7d_adc.c
+ F:    drivers/iio/adc/imx93_adc.c
  F:    drivers/iio/adc/vf610_adc.c
  
  NXP PF8100/PF8121A/PF8200 PMIC REGULATOR DEVICE DRIVER
@@@ -15085,7 -15180,6 +15108,7 @@@ M:   Colin Foster <colin.foster@in-advant
  S:    Supported
  F:    Documentation/devicetree/bindings/mfd/mscc,ocelot.yaml
  F:    drivers/mfd/ocelot*
 +F:    drivers/net/dsa/ocelot/ocelot_ext.c
  F:    include/linux/mfd/ocelot.h
  
  OCXL (Open Coherent Accelerator Processor Interface OpenCAPI) DRIVER
@@@ -15249,6 -15343,7 +15272,6 @@@ Q:   http://patchwork.kernel.org/project/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap.git
  F:    arch/arm/configs/omap1_defconfig
  F:    arch/arm/mach-omap1/
 -F:    arch/arm/plat-omap/
  F:    drivers/i2c/busses/i2c-omap.c
  F:    include/linux/platform_data/ams-delta-fiq.h
  F:    include/linux/platform_data/i2c-omap.h
@@@ -15263,6 -15358,7 +15286,6 @@@ Q:   http://patchwork.kernel.org/project/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap.git
  F:    arch/arm/configs/omap2plus_defconfig
  F:    arch/arm/mach-omap2/
 -F:    arch/arm/plat-omap/
  F:    drivers/bus/ti-sysc.c
  F:    drivers/i2c/busses/i2c-omap.c
  F:    drivers/irqchip/irq-omap-intc.c
@@@ -15506,7 -15602,6 +15529,7 @@@ F:   drivers/mtd/nand/onenand
  F:    include/linux/mtd/onenand*.h
  
  ONEXPLAYER FAN DRIVER
 +M:    Derek John Clark <[email protected]>
  M:    Joaquín Ignacio Aramendía <[email protected]>
  L:    [email protected]
  S:    Maintained
  S:    Maintained
  F:    arch/mips/boot/dts/ralink/omega2p.dts
  
 +ONSEMI ETHERNET PHY DRIVERS
 +M:    Piergiorgio Beruto <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +W:    http://www.onsemi.com
 +F:    drivers/net/phy/ncn*
 +
  OP-TEE DRIVER
  M:    Jens Wiklander <[email protected]>
  L:    [email protected]
@@@ -15791,6 -15879,13 +15814,6 @@@ F:  arch/*/include/asm/paravirt*.
  F:    arch/*/kernel/paravirt*
  F:    include/linux/hypervisor.h
  
 -PARIDE DRIVERS FOR PARALLEL PORT IDE DEVICES
 -M:    Tim Waugh <[email protected]>
 -L:    [email protected] (subscribers-only)
 -S:    Maintained
 -F:    Documentation/admin-guide/blockdev/paride.rst
 -F:    drivers/block/paride/
 -
  PARISC ARCHITECTURE
  M:    "James E.J. Bottomley" <[email protected]>
  M:    Helge Deller <[email protected]>
@@@ -16048,7 -16143,7 +16071,7 @@@ F:   drivers/pci/controller/pci-v3-semi.
  
  PCI ENDPOINT SUBSYSTEM
  M:    Lorenzo Pieralisi <[email protected]>
 -R:    Krzysztof Wilczyński <[email protected]>
 +M:    Krzysztof Wilczyński <[email protected]>
  R:    Manivannan Sadhasivam <[email protected]>
  R:    Kishon Vijay Abraham I <[email protected]>
  L:    [email protected]
@@@ -16056,7 -16151,7 +16079,7 @@@ S:   Supporte
  Q:    https://patchwork.kernel.org/project/linux-pci/list/
  B:    https://bugzilla.kernel.org
  C:    irc://irc.oftc.net/linux-pci
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/lpieralisi/pci.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/pci/pci.git
  F:    Documentation/PCI/endpoint/*
  F:    Documentation/misc-devices/pci-endpoint-test.rst
  F:    drivers/misc/pci_endpoint_test.c
@@@ -16091,7 -16186,7 +16114,7 @@@ S:   Supporte
  Q:    https://patchwork.kernel.org/project/linux-pci/list/
  B:    https://bugzilla.kernel.org
  C:    irc://irc.oftc.net/linux-pci
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/pci/pci.git
  F:    Documentation/driver-api/pci/p2pdma.rst
  F:    drivers/pci/p2pdma.c
  F:    include/linux/pci-p2pdma.h
@@@ -16113,14 -16208,14 +16136,14 @@@ F:        drivers/pci/controller/pci-xgene-msi
  
  PCI NATIVE HOST BRIDGE AND ENDPOINT DRIVERS
  M:    Lorenzo Pieralisi <[email protected]>
 +M:    Krzysztof Wilczyński <[email protected]>
  R:    Rob Herring <[email protected]>
 -R:    Krzysztof Wilczyński <[email protected]>
  L:    [email protected]
  S:    Supported
  Q:    https://patchwork.kernel.org/project/linux-pci/list/
  B:    https://bugzilla.kernel.org
  C:    irc://irc.oftc.net/linux-pci
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/lpieralisi/pci.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/pci/pci.git
  F:    Documentation/devicetree/bindings/pci/
  F:    drivers/pci/controller/
  F:    drivers/pci/pci-bridge-emul.c
@@@ -16133,7 -16228,7 +16156,7 @@@ S:   Supporte
  Q:    https://patchwork.kernel.org/project/linux-pci/list/
  B:    https://bugzilla.kernel.org
  C:    irc://irc.oftc.net/linux-pci
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/pci/pci.git
  F:    Documentation/PCI/
  F:    Documentation/devicetree/bindings/pci/
  F:    arch/x86/kernel/early-quirks.c
@@@ -16352,7 -16447,6 +16375,7 @@@ R:   Mark Rutland <[email protected]
  R:    Alexander Shishkin <[email protected]>
  R:    Jiri Olsa <[email protected]>
  R:    Namhyung Kim <[email protected]>
 +R:    Ian Rogers <[email protected]>
  L:    [email protected]
  L:    [email protected]
  S:    Supported
@@@ -16564,13 -16658,6 +16587,13 @@@ S: Maintaine
  F:    Documentation/devicetree/bindings/iio/chemical/plantower,pms7003.yaml
  F:    drivers/iio/chemical/pms7003.c
  
 +PLCA RECONCILIATION SUBLAYER (IEEE802.3 Clause 148)
 +M:    Piergiorgio Beruto <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/net/phy/mdio-open-alliance.h
 +F:    net/ethtool/plca.c
 +
  PLDMFW LIBRARY
  M:    Jacob Keller <[email protected]>
  S:    Maintained
@@@ -17168,13 -17255,6 +17191,13 @@@ T: git git://git.kernel.org/pub/scm/lin
  F:    Documentation/devicetree/bindings/net/wireless/qcom,ath11k.yaml
  F:    drivers/net/wireless/ath/ath11k/
  
 +QUALCOMM ATH12K WIRELESS DRIVER
 +M:    Kalle Valo <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git
 +F:    drivers/net/wireless/ath/ath12k/
 +
  QUALCOMM ATHEROS ATH9K WIRELESS DRIVER
  M:    Toke Høiland-Jørgensen <[email protected]>
  L:    [email protected]
@@@ -17746,13 -17826,6 +17769,13 @@@ F: Documentation/devicetree/bindings/ne
  F:    drivers/net/ethernet/renesas/
  F:    include/linux/sh_eth.h
  
 +RENESAS IDT821034 ASoC CODEC
 +M:    Herve Codina <[email protected]>
 +L:    [email protected] (moderated for non-subscribers)
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/sound/renesas,idt821034.yaml
 +F:    sound/soc/codecs/idt821034.c
 +
  RENESAS R-CAR GYROADC DRIVER
  M:    Marek Vasut <[email protected]>
  L:    [email protected]
@@@ -17828,14 -17901,6 +17851,14 @@@ S: Maintaine
  F:    Documentation/devicetree/bindings/rtc/renesas,rzn1-rtc.yaml
  F:    drivers/rtc/rtc-rzn1.c
  
 +RENESAS RZ/N1 USBF CONTROLLER DRIVER
 +M:    Herve Codina <[email protected]>
 +L:    [email protected]
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/usb/renesas,rzn1-usbf.yaml
 +F:    drivers/usb/gadget/udc/renesas_usbf.c
 +
  RENESAS R-CAR GEN3 & RZ/N1 NAND CONTROLLER DRIVER
  M:    Miquel Raynal <[email protected]>
  L:    [email protected]
  S:    Supported
  W:    https://github.com/Rust-for-Linux/linux
  B:    https://github.com/Rust-for-Linux/linux/issues
 +C:    zulip://rust-for-linux.zulipchat.com
  T:    git https://github.com/Rust-for-Linux/linux.git rust-next
  F:    Documentation/rust/
  F:    rust/
@@@ -18232,7 -18296,6 +18255,7 @@@ F:   Documentation/driver-api/s390-driver
  F:    Documentation/s390/
  F:    arch/s390/
  F:    drivers/s390/
 +F:    drivers/watchdog/diag288_wdt.c
  
  S390 COMMON I/O LAYER
  M:    Vineeth Vijayan <[email protected]>
@@@ -18293,13 -18356,6 +18316,13 @@@ F: arch/s390/pci
  F:    drivers/pci/hotplug/s390_pci_hpc.c
  F:    Documentation/s390/pci.rst
  
 +S390 SCM DRIVER
 +M:    Vineeth Vijayan <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +F:    drivers/s390/block/scm*
 +F:    drivers/s390/cio/scm.c
 +
  S390 VFIO AP DRIVER
  M:    Tony Krowiak <[email protected]>
  M:    Halil Pasic <[email protected]>
  S:    Supported
  F:    drivers/s390/scsi/zfcp_*
  
 -S3C ADC BATTERY DRIVER
 -M:    Krzysztof Kozlowski <[email protected]>
 -L:    [email protected]
 -S:    Odd Fixes
 -F:    drivers/power/supply/s3c_adc_battery.c
 -F:    include/linux/s3c_adc_battery.h
 -
 -S3C24XX SD/MMC Driver
 -M:    Ben Dooks <[email protected]>
 -L:    [email protected] (moderated for non-subscribers)
 -S:    Supported
 -F:    drivers/mmc/host/s3cmci.*
 -
  SAA6588 RDS RECEIVER DRIVER
  M:    Hans Verkuil <[email protected]>
  L:    [email protected]
@@@ -18495,9 -18564,11 +18518,9 @@@ F:  Documentation/devicetree/bindings/cl
  F:    Documentation/devicetree/bindings/clock/samsung,s3c*
  F:    drivers/clk/samsung/
  F:    include/dt-bindings/clock/exynos*.h
 -F:    include/dt-bindings/clock/s3c*.h
  F:    include/dt-bindings/clock/s5p*.h
  F:    include/dt-bindings/clock/samsung,*.h
  F:    include/linux/clk/samsung.h
 -F:    include/linux/platform_data/clk-s3c2410.h
  
  SAMSUNG SPI DRIVERS
  M:    Krzysztof Kozlowski <[email protected]>
@@@ -18508,6 -18579,7 +18531,6 @@@ S:   Maintaine
  F:    Documentation/devicetree/bindings/spi/samsung,spi*.yaml
  F:    drivers/spi/spi-s3c*
  F:    include/linux/platform_data/spi-s3c64xx.h
 -F:    include/linux/spi/s3c24xx-fiq.h
  
  SAMSUNG SXGBE DRIVERS
  M:    Byungho An <[email protected]>
@@@ -18866,7 -18938,6 +18889,7 @@@ M:   Edward Cree <[email protected]
  M:    Martin Habets <[email protected]>
  L:    [email protected]
  S:    Supported
 +F:    Documentation/networking/devlink/sfc.rst
  F:    drivers/net/ethernet/sfc/
  
  SFF/SFP/SFP+ MODULE SUPPORT
@@@ -19078,6 -19149,14 +19101,6 @@@ M:  Simtec Linux Team <[email protected]
  S:    Supported
  W:    http://www.simtec.co.uk/products/EB110ATX/
  
 -SIMTEC EB2410ITX (BAST)
 -M:    Simtec Linux Team <[email protected]>
 -S:    Supported
 -W:    http://www.simtec.co.uk/products/EB2410ITX/
 -F:    arch/arm/mach-s3c/bast-ide.c
 -F:    arch/arm/mach-s3c/bast-irq.c
 -F:    arch/arm/mach-s3c/mach-bast.c
 -
  SIOX
  M:    Thorsten Scherer <[email protected]>
  M:    Uwe Kleine-König <[email protected]>
@@@ -19862,15 -19941,13 +19885,15 @@@ F:        Documentation/devicetree/bindings/cl
  F:    drivers/clk/starfive/clk-starfive-jh7100*
  F:    include/dt-bindings/clock/starfive-jh7100*.h
  
 -STARFIVE JH7100 PINCTRL DRIVER
 +STARFIVE JH71X0 PINCTRL DRIVERS
  M:    Emil Renner Berthing <[email protected]>
 +M:    Jianlong Huang <[email protected]>
  L:    [email protected]
  S:    Maintained
 -F:    Documentation/devicetree/bindings/pinctrl/starfive,jh7100-pinctrl.yaml
 -F:    drivers/pinctrl/starfive/
 +F:    Documentation/devicetree/bindings/pinctrl/starfive,jh71*.yaml
 +F:    drivers/pinctrl/starfive/pinctrl-starfive-jh71*
  F:    include/dt-bindings/pinctrl/pinctrl-starfive-jh7100.h
 +F:    include/dt-bindings/pinctrl/starfive,jh7110-pinctrl.h
  
  STARFIVE JH7100 RESET CONTROLLER DRIVER
  M:    Emil Renner Berthing <[email protected]>
@@@ -19879,12 -19956,6 +19902,12 @@@ F: Documentation/devicetree/bindings/re
  F:    drivers/reset/reset-starfive-jh7100.c
  F:    include/dt-bindings/reset/starfive-jh7100.h
  
 +STARFIVE TRNG DRIVER
 +M:    Jia Jie Ho <[email protected]>
 +S:    Supported
 +F:    Documentation/devicetree/bindings/rng/starfive*
 +F:    drivers/char/hw_random/jh7110-trng.c
 +
  STATIC BRANCH/CALL
  M:    Peter Zijlstra <[email protected]>
  M:    Josh Poimboeuf <[email protected]>
@@@ -20042,7 -20113,6 +20065,7 @@@ F:   drivers/watchdog/sunplus_wdt.
  SUPERH
  M:    Yoshinori Sato <[email protected]>
  M:    Rich Felker <[email protected]>
 +M:    John Paul Adrian Glaubitz <[email protected]>
  L:    [email protected]
  S:    Maintained
  Q:    http://patchwork.kernel.org/project/linux-sh/list/
  S:    Supported
  B:    https://bugzilla.kernel.org
  F:    Documentation/power/
 -F:    arch/x86/kernel/acpi/
 +F:    arch/x86/kernel/acpi/sleep*
 +F:    arch/x86/kernel/acpi/wakeup*
  F:    drivers/base/power/
  F:    include/linux/freezer.h
  F:    include/linux/pm.h
@@@ -20276,7 -20345,8 +20299,7 @@@ S:   Maintaine
  F:    drivers/platform/x86/system76_acpi.c
  
  SYSV FILESYSTEM
 -M:    Christoph Hellwig <[email protected]>
 -S:    Maintained
 +S:    Orphan
  F:    Documentation/filesystems/sysv-fs.rst
  F:    fs/sysv/
  F:    include/linux/sysv_fs.h
@@@ -20667,7 -20737,6 +20690,7 @@@ S:   Supporte
  Q:    https://patchwork.kernel.org/project/linux-pm/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git thermal
  F:    Documentation/ABI/testing/sysfs-class-thermal
 +F:    Documentation/admin-guide/thermal/
  F:    Documentation/devicetree/bindings/thermal/
  F:    Documentation/driver-api/thermal/
  F:    drivers/thermal/
@@@ -20749,13 -20818,20 +20772,20 @@@ M:        Mika Westerberg <mika.westerberg@lin
  M:    Yehezkel Bernat <[email protected]>
  L:    [email protected]
  S:    Maintained
 -F:    drivers/net/thunderbolt.c
 +F:    drivers/net/thunderbolt/
  
  THUNDERX GPIO DRIVER
  M:    Robert Richter <[email protected]>
  S:    Odd Fixes
  F:    drivers/gpio/gpio-thunderx.c
  
+ TI ADS7924 ADC DRIVER
+ M:    Hugo Villeneuve <[email protected]>
+ L:    [email protected]
+ S:    Supported
+ F:    Documentation/devicetree/bindings/iio/adc/ti,ads7924.yaml
+ F:    drivers/iio/adc/ti-ads7924.c
  TI AM437X VPFE DRIVER
  M:    "Lad, Prabhakar" <[email protected]>
  L:    [email protected]
@@@ -20824,6 -20900,7 +20854,6 @@@ W:   https://linuxtv.or
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/mhadli/v4l-dvb-davinci_devices.git
  F:    drivers/media/platform/ti/davinci/
 -F:    drivers/staging/media/deprecated/vpfe_capture/
  F:    include/media/davinci/
  
  TI ENHANCED CAPTURE (eCAP) DRIVER
@@@ -20875,6 -20952,14 +20905,14 @@@ S: Maintaine
  F:    sound/soc/codecs/isabelle*
  F:    sound/soc/codecs/lm49453*
  
+ TI LMP92064 ADC DRIVER
+ M:    Leonard Göhrs <[email protected]>
+ R:    [email protected]
+ L:    [email protected]
+ S:    Maintained
+ F:    Documentation/devicetree/bindings/iio/adc/ti,lmp92064.yaml
+ F:    drivers/iio/adc/ti-lmp92064.c
  TI PCM3060 ASoC CODEC DRIVER
  M:    Kirill Marinushkin <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  S:    Odd Fixes
  F:    sound/soc/codecs/tas571x*
  
+ TI TMAG5273 MAGNETOMETER DRIVER
+ M:    Gerald Loacker <[email protected]>
+ L:    [email protected]
+ S:    Maintained
+ F:    Documentation/devicetree/bindings/iio/magnetometer/ti,tmag5273.yaml
+ F:    drivers/iio/magnetometer/tmag5273.c
  TI TRF7970A NFC DRIVER
  M:    Mark Greer <[email protected]>
  L:    [email protected]
  S:    Supported
  F:    drivers/ufs/host/*dwc*
  
 +UNIVERSAL FLASH STORAGE HOST CONTROLLER DRIVER EXYNOS HOOKS
 +M:    Alim Akhtar <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/ufs/host/ufs-exynos*
 +
  UNIVERSAL FLASH STORAGE HOST CONTROLLER DRIVER MEDIATEK HOOKS
  M:    Stanley Chu <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    drivers/ufs/host/ufs-mediatek*
  
 +UNIVERSAL FLASH STORAGE HOST CONTROLLER DRIVER QUALCOMM HOOKS
 +M:    Manivannan Sadhasivam <[email protected]>
 +L:    [email protected]
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/ufs/qcom,ufs.yaml
 +F:    drivers/ufs/host/ufs-qcom*
 +
  UNIVERSAL FLASH STORAGE HOST CONTROLLER DRIVER RENESAS HOOKS
  M:    Yoshihiro Shimoda <[email protected]>
  L:    [email protected]
@@@ -21785,11 -21863,12 +21830,10 @@@ W:        http://en.wikipedia.org/wiki/Util-li
  T:    git git://git.kernel.org/pub/scm/utils/util-linux/util-linux.git
  
  UUID HELPERS
 -M:    Christoph Hellwig <[email protected]>
  R:    Andy Shevchenko <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://git.infradead.org/users/hch/uuid.git
  F:    include/linux/uuid.h
- F:    include/uapi/linux/uuid.h
  F:    lib/test_uuid.c
  F:    lib/uuid.c
  
@@@ -22616,7 -22695,6 +22660,7 @@@ S:   Maintaine
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86.git
  F:    drivers/platform/olpc/
  F:    drivers/platform/x86/
 +F:    include/linux/platform_data/x86/
  
  X86 PLATFORM DRIVERS - ARCH
  R:    Darren Hart <[email protected]>
@@@ -22902,13 -22980,6 +22946,13 @@@ F: Documentation/devicetree/bindings/dm
  F:    drivers/dma/xilinx/xilinx_dpdma.c
  F:    include/dt-bindings/dma/xlnx-zynqmp-dpdma.h
  
 +XILINX ZYNQMP OCM EDAC DRIVER
 +M:    Shubhrajyoti Datta <[email protected]>
 +M:    Sai Krishna Potthuri <[email protected]>
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/memory-controllers/xlnx,zynqmp-ocmc-1.0.yaml
 +F:    drivers/edac/zynqmp_edac.c
 +
  XILINX ZYNQMP PSGTR PHY DRIVER
  M:    Anurag Kumar Vulisha <[email protected]>
  M:    Laurent Pinchart <[email protected]>
diff --combined drivers/android/binder.c
index cb08982b9666df56eafeff51ffff3bba568cfbbd,ca3034afd1dc0716305220290ac29d53f4b3f18c..fb56bfc45096d4a8a645dc30f7441b77c6c20c33
@@@ -277,11 -277,11 +277,11 @@@ _binder_proc_lock(struct binder_proc *p
  
  /**
   * binder_proc_unlock() - Release spinlock for given binder_proc
-  * @proc:         struct binder_proc to acquire
+  * @proc:                struct binder_proc to acquire
   *
   * Release lock acquired via binder_proc_lock()
   */
- #define binder_proc_unlock(_proc) _binder_proc_unlock(_proc, __LINE__)
+ #define binder_proc_unlock(proc) _binder_proc_unlock(proc, __LINE__)
  static void
  _binder_proc_unlock(struct binder_proc *proc, int line)
        __releases(&proc->outer_lock)
@@@ -378,7 -378,7 +378,7 @@@ _binder_node_inner_lock(struct binder_n
  }
  
  /**
-  * binder_node_unlock() - Release node and inner locks
+  * binder_node_inner_unlock() - Release node and inner locks
   * @node:         struct binder_node to acquire
   *
   * Release lock acquired via binder_node_lock()
@@@ -1194,13 -1194,13 +1194,13 @@@ static int binder_inc_ref_olocked(struc
  }
  
  /**
-  * binder_dec_ref() - dec the ref for given handle
+  * binder_dec_ref_olocked() - dec the ref for given handle
   * @ref:      ref to be decremented
   * @strong:   if true, strong decrement, else weak
   *
   * Decrement the ref.
   *
-  * Return: true if ref is cleaned up and ready to be freed
+  * Return: %true if ref is cleaned up and ready to be freed.
   */
  static bool binder_dec_ref_olocked(struct binder_ref *ref, int strong)
  {
@@@ -2728,7 -2728,10 +2728,10 @@@ binder_find_outdated_transaction_ilocke
   *
   * Return:    0 if the transaction was successfully queued
   *            BR_DEAD_REPLY if the target process or thread is dead
-  *            BR_FROZEN_REPLY if the target process or thread is frozen
+  *            BR_FROZEN_REPLY if the target process or thread is frozen and
+  *                    the sync transaction was rejected
+  *            BR_TRANSACTION_PENDING_FROZEN if the target process is frozen
+  *            and the async transaction was successfully queued
   */
  static int binder_proc_transaction(struct binder_transaction *t,
                                    struct binder_proc *proc,
        bool oneway = !!(t->flags & TF_ONE_WAY);
        bool pending_async = false;
        struct binder_transaction *t_outdated = NULL;
+       bool frozen = false;
  
        BUG_ON(!node);
        binder_node_lock(node);
  
        binder_inner_proc_lock(proc);
        if (proc->is_frozen) {
+               frozen = true;
                proc->sync_recv |= !oneway;
                proc->async_recv |= oneway;
        }
  
-       if ((proc->is_frozen && !oneway) || proc->is_dead ||
+       if ((frozen && !oneway) || proc->is_dead ||
                        (thread && thread->is_dead)) {
                binder_inner_proc_unlock(proc);
                binder_node_unlock(node);
-               return proc->is_frozen ? BR_FROZEN_REPLY : BR_DEAD_REPLY;
+               return frozen ? BR_FROZEN_REPLY : BR_DEAD_REPLY;
        }
  
        if (!thread && !pending_async)
        } else if (!pending_async) {
                binder_enqueue_work_ilocked(&t->work, &proc->todo);
        } else {
-               if ((t->flags & TF_UPDATE_TXN) && proc->is_frozen) {
+               if ((t->flags & TF_UPDATE_TXN) && frozen) {
                        t_outdated = binder_find_outdated_transaction_ilocked(t,
                                                                              &node->async_todo);
                        if (t_outdated) {
                binder_stats_deleted(BINDER_STAT_TRANSACTION);
        }
  
+       if (oneway && frozen)
+               return BR_TRANSACTION_PENDING_FROZEN;
        return 0;
  }
  
  /**
   * binder_get_node_refs_for_txn() - Get required refs on node for txn
   * @node:         struct binder_node for which to get refs
-  * @proc        returns @node->proc if valid
-  * @error:        if no @proc then returns BR_DEAD_REPLY
+  * @procp:        returns @node->proc if valid
+  * @error:        if no @procp then returns BR_DEAD_REPLY
   *
   * User-space normally keeps the node alive when creating a transaction
   * since it has a reference to the target. The local strong ref keeps it
   * constructing the transaction, so we take that here as well.
   *
   * Return: The target_node with refs taken or NULL if no @node->proc is NULL.
-  * Also sets @proc if valid. If the @node->proc is NULL indicating that the
-  * target proc has died, @error is set to BR_DEAD_REPLY
+  * Also sets @procp if valid. If the @node->proc is NULL indicating that the
+  * target proc has died, @error is set to BR_DEAD_REPLY.
   */
  static struct binder_node *binder_get_node_refs_for_txn(
                struct binder_node *node,
@@@ -3607,9 -3615,17 +3615,17 @@@ static void binder_transaction(struct b
        } else {
                BUG_ON(target_node == NULL);
                BUG_ON(t->buffer->async_transaction != 1);
-               binder_enqueue_thread_work(thread, tcomplete);
                return_error = binder_proc_transaction(t, target_proc, NULL);
-               if (return_error)
+               /*
+                * Let the caller know when async transaction reaches a frozen
+                * process and is put in a pending queue, waiting for the target
+                * process to be unfrozen.
+                */
+               if (return_error == BR_TRANSACTION_PENDING_FROZEN)
+                       tcomplete->type = BINDER_WORK_TRANSACTION_PENDING;
+               binder_enqueue_thread_work(thread, tcomplete);
+               if (return_error &&
+                   return_error != BR_TRANSACTION_PENDING_FROZEN)
                        goto err_dead_proc_or_thread;
        }
        if (target_thread)
@@@ -4440,10 -4456,13 +4456,13 @@@ retry
                        binder_stat_br(proc, thread, cmd);
                } break;
                case BINDER_WORK_TRANSACTION_COMPLETE:
+               case BINDER_WORK_TRANSACTION_PENDING:
                case BINDER_WORK_TRANSACTION_ONEWAY_SPAM_SUSPECT: {
                        if (proc->oneway_spam_detection_enabled &&
                                   w->type == BINDER_WORK_TRANSACTION_ONEWAY_SPAM_SUSPECT)
                                cmd = BR_ONEWAY_SPAM_SUSPECT;
+                       else if (w->type == BINDER_WORK_TRANSACTION_PENDING)
+                               cmd = BR_TRANSACTION_PENDING_FROZEN;
                        else
                                cmd = BR_TRANSACTION_COMPLETE;
                        binder_inner_proc_unlock(proc);
@@@ -5006,20 -5025,14 +5025,14 @@@ static __poll_t binder_poll(struct fil
        return 0;
  }
  
- static int binder_ioctl_write_read(struct file *filp,
-                               unsigned int cmd, unsigned long arg,
+ static int binder_ioctl_write_read(struct file *filp, unsigned long arg,
                                struct binder_thread *thread)
  {
        int ret = 0;
        struct binder_proc *proc = filp->private_data;
-       unsigned int size = _IOC_SIZE(cmd);
        void __user *ubuf = (void __user *)arg;
        struct binder_write_read bwr;
  
-       if (size != sizeof(struct binder_write_read)) {
-               ret = -EINVAL;
-               goto out;
-       }
        if (copy_from_user(&bwr, ubuf, sizeof(bwr))) {
                ret = -EFAULT;
                goto out;
@@@ -5296,7 -5309,6 +5309,6 @@@ static long binder_ioctl(struct file *f
        int ret;
        struct binder_proc *proc = filp->private_data;
        struct binder_thread *thread;
-       unsigned int size = _IOC_SIZE(cmd);
        void __user *ubuf = (void __user *)arg;
  
        /*pr_info("binder_ioctl: %d:%d %x %lx\n",
  
        switch (cmd) {
        case BINDER_WRITE_READ:
-               ret = binder_ioctl_write_read(filp, cmd, arg, thread);
+               ret = binder_ioctl_write_read(filp, arg, thread);
                if (ret)
                        goto err;
                break;
        case BINDER_VERSION: {
                struct binder_version __user *ver = ubuf;
  
-               if (size != sizeof(struct binder_version)) {
-                       ret = -EINVAL;
-                       goto err;
-               }
                if (put_user(BINDER_CURRENT_PROTOCOL_VERSION,
                             &ver->protocol_version)) {
                        ret = -EINVAL;
@@@ -5572,7 -5580,8 +5580,7 @@@ static int binder_mmap(struct file *fil
                       proc->pid, vma->vm_start, vma->vm_end, "bad vm_flags", -EPERM);
                return -EPERM;
        }
 -      vma->vm_flags |= VM_DONTCOPY | VM_MIXEDMAP;
 -      vma->vm_flags &= ~VM_MAYWRITE;
 +      vm_flags_mod(vma, VM_DONTCOPY | VM_MIXEDMAP, VM_MAYWRITE);
  
        vma->vm_ops = &binder_vm_ops;
        vma->vm_private_data = proc;
@@@ -6169,6 -6178,7 +6177,7 @@@ static const char * const binder_return
        "BR_FAILED_REPLY",
        "BR_FROZEN_REPLY",
        "BR_ONEWAY_SPAM_SUSPECT",
+       "BR_TRANSACTION_PENDING_FROZEN"
  };
  
  static const char * const binder_command_strings[] = {
index 348d63d1e3d380fa795cdcf341ac221d9e570ab7,abb9c0980afb473ebb1dd6eccf6855d5fb47f211..76e7d6676657eb1dd7d29f926f746c8fef2a979d
@@@ -222,14 -222,14 +222,14 @@@ err
  }
  
  /**
-  * binderfs_ctl_ioctl - handle binder device node allocation requests
+  * binder_ctl_ioctl - handle binder device node allocation requests
   *
   * The request handler for the binder-control device. All requests operate on
   * the binderfs mount the binder-control device resides in:
   * - BINDER_CTL_ADD
   *   Allocate a new binder device.
   *
-  * Return: 0 on success, negative errno on failure
+  * Return: %0 on success, negative errno on failure.
   */
  static long binder_ctl_ioctl(struct file *file, unsigned int cmd,
                             unsigned long arg)
@@@ -352,7 -352,7 +352,7 @@@ static inline bool is_binderfs_control_
        return info->control_dentry == dentry;
  }
  
 -static int binderfs_rename(struct user_namespace *mnt_userns,
 +static int binderfs_rename(struct mnt_idmap *idmap,
                           struct inode *old_dir, struct dentry *old_dentry,
                           struct inode *new_dir, struct dentry *new_dentry,
                           unsigned int flags)
            is_binderfs_control_device(new_dentry))
                return -EPERM;
  
 -      return simple_rename(&init_user_ns, old_dir, old_dentry, new_dir,
 +      return simple_rename(idmap, old_dir, old_dentry, new_dir,
                             new_dentry, flags);
  }
  
index 1577eba6fe0e4a6870a7ef83f5e354710a2e69f0,6d04f2fab63bae8a7211221c82bfecd4b015a5f9..6ddfeb2fe98f07eb8a01e524be05cee5ccee5127
@@@ -377,8 -377,8 +377,8 @@@ static void async_mode(MGSLPC_INFO *inf
  
  static void tx_timeout(struct timer_list *t);
  
 -static int carrier_raised(struct tty_port *port);
 -static void dtr_rts(struct tty_port *port, int onoff);
 +static bool carrier_raised(struct tty_port *port);
 +static void dtr_rts(struct tty_port *port, bool active);
  
  #if SYNCLINK_GENERIC_HDLC
  #define dev_to_port(D) (dev_to_hdlc(D)->priv)
@@@ -483,7 -483,7 +483,7 @@@ static void* mgslpc_get_text_ptr(void
        return mgslpc_get_text_ptr;
  }
  
- /**
+ /*
   * line discipline callback wrappers
   *
   * The wrappers maintain line discipline references
@@@ -1309,7 -1309,7 +1309,7 @@@ static int startup(MGSLPC_INFO * info, 
        if (tty)
                clear_bit(TTY_IO_ERROR, &tty->flags);
  
 -      tty_port_set_initialized(&info->port, 1);
 +      tty_port_set_initialized(&info->port, true);
  
        return 0;
  }
@@@ -1359,7 -1359,7 +1359,7 @@@ static void shutdown(MGSLPC_INFO * info
        if (tty)
                set_bit(TTY_IO_ERROR, &tty->flags);
  
 -      tty_port_set_initialized(&info->port, 0);
 +      tty_port_set_initialized(&info->port, false);
  }
  
  static void mgslpc_program_hw(MGSLPC_INFO *info, struct tty_struct *tty)
@@@ -2430,7 -2430,7 +2430,7 @@@ static void mgslpc_hangup(struct tty_st
        tty_port_hangup(&info->port);
  }
  
 -static int carrier_raised(struct tty_port *port)
 +static bool carrier_raised(struct tty_port *port)
  {
        MGSLPC_INFO *info = container_of(port, MGSLPC_INFO, port);
        unsigned long flags;
        get_signals(info);
        spin_unlock_irqrestore(&info->lock, flags);
  
 -      if (info->serial_signals & SerialSignal_DCD)
 -              return 1;
 -      return 0;
 +      return info->serial_signals & SerialSignal_DCD;
  }
  
 -static void dtr_rts(struct tty_port *port, int onoff)
 +static void dtr_rts(struct tty_port *port, bool active)
  {
        MGSLPC_INFO *info = container_of(port, MGSLPC_INFO, port);
        unsigned long flags;
  
        spin_lock_irqsave(&info->lock, flags);
 -      if (onoff)
 +      if (active)
                info->serial_signals |= SerialSignal_RTS | SerialSignal_DTR;
        else
                info->serial_signals &= ~(SerialSignal_RTS | SerialSignal_DTR);
@@@ -3855,7 -3857,7 +3855,7 @@@ static void tx_timeout(struct timer_lis
  
  #if SYNCLINK_GENERIC_HDLC
  
- /**
+ /*
   * called by generic HDLC layer when protocol selected (PPP, frame relay, etc.)
   * set encoding and frame check sequence (FCS) options
   *
@@@ -3908,7 -3910,7 +3908,7 @@@ static int hdlcdev_attach(struct net_de
        return 0;
  }
  
- /**
+ /*
   * called by generic HDLC layer to send frame
   *
   * skb  socket buffer containing HDLC frame
@@@ -3953,7 -3955,7 +3953,7 @@@ static netdev_tx_t hdlcdev_xmit(struct 
        return NETDEV_TX_OK;
  }
  
- /**
+ /*
   * called by network layer when interface enabled
   * claim resources and initialize hardware
   *
@@@ -4016,7 -4018,7 +4016,7 @@@ static int hdlcdev_open(struct net_devi
        return 0;
  }
  
- /**
+ /*
   * called by network layer when interface is disabled
   * shutdown hardware and release resources
   *
@@@ -4047,7 -4049,7 +4047,7 @@@ static int hdlcdev_close(struct net_dev
        return 0;
  }
  
- /**
+ /*
   * called by network layer to process IOCTL call to network device
   *
   * dev  pointer to network device structure
@@@ -4150,7 -4152,7 +4150,7 @@@ static int hdlcdev_wan_ioctl(struct net
        }
  }
  
- /**
+ /*
   * called by network layer when transmit timeout is detected
   *
   * dev  pointer to network device structure
@@@ -4173,7 -4175,7 +4173,7 @@@ static void hdlcdev_tx_timeout(struct n
        netif_wake_queue(dev);
  }
  
- /**
+ /*
   * called by device driver when transmit completes
   * reenable network layer transmit if stopped
   *
@@@ -4185,7 -4187,7 +4185,7 @@@ static void hdlcdev_tx_done(MGSLPC_INF
                netif_wake_queue(info->netdev);
  }
  
- /**
+ /*
   * called by device driver when frame received
   * pass frame to network layer
   *
@@@ -4225,7 -4227,7 +4225,7 @@@ static const struct net_device_ops hdlc
        .ndo_tx_timeout = hdlcdev_tx_timeout,
  };
  
- /**
+ /*
   * called by device driver when adding device instance
   * do generic HDLC initialization
   *
@@@ -4273,7 -4275,7 +4273,7 @@@ static int hdlcdev_init(MGSLPC_INFO *in
        return 0;
  }
  
- /**
+ /*
   * called by device driver when removing device instance
   * do generic HDLC cleanup
   *
index 133d1c07b3a73969cc83eb25c82a3307c48e5905,58d023f6fba39da73b2f998ca9df6db04cbfbb83..e4c84433a88aa5003ebfbb926acbe2caa73f45dc
@@@ -95,6 -95,8 +95,6 @@@
  #define QM_VFT_CFG_RDY                        0x10006c
  #define QM_VFT_CFG_OP_WR              0x100058
  #define QM_VFT_CFG_TYPE                       0x10005c
 -#define QM_SQC_VFT                    0x0
 -#define QM_CQC_VFT                    0x1
  #define QM_VFT_CFG                    0x100060
  #define QM_VFT_CFG_OP_ENABLE          0x100054
  #define QM_PM_CTRL                    0x100148
  #define QM_SQC_VFT_BASE_SHIFT_V2      28
  #define QM_SQC_VFT_BASE_MASK_V2               GENMASK(15, 0)
  #define QM_SQC_VFT_NUM_SHIFT_V2               45
 -#define QM_SQC_VFT_NUM_MASK_v2                GENMASK(9, 0)
 +#define QM_SQC_VFT_NUM_MASK_V2                GENMASK(9, 0)
  
  #define QM_ABNORMAL_INT_SOURCE                0x100000
  #define QM_ABNORMAL_INT_MASK          0x100004
  
  /* interfunction communication */
  #define QM_IFC_READY_STATUS           0x100128
 -#define QM_IFC_C_STS_M                        0x10012C
  #define QM_IFC_INT_SET_P              0x100130
  #define QM_IFC_INT_CFG                        0x100134
  #define QM_IFC_INT_SOURCE_P           0x100138
  
  #define PCI_BAR_2                     2
  #define PCI_BAR_4                     4
 -#define QM_SQE_DATA_ALIGN_MASK                GENMASK(6, 0)
  #define QMC_ALIGN(sz)                 ALIGN(sz, 32)
  
  #define QM_DBG_READ_LEN               256
  #define QM_DRIVER_REMOVING            0
  #define QM_RST_SCHED                  1
  #define QM_QOS_PARAM_NUM              2
 -#define QM_QOS_VAL_NUM                        1
 -#define QM_QOS_BDF_PARAM_NUM          4
  #define QM_QOS_MAX_VAL                        1000
  #define QM_QOS_RATE                   100
  #define QM_QOS_EXPAND_RATE            1000
  #define QM_SHAPER_FACTOR_CBS_B_SHIFT  15
  #define QM_SHAPER_FACTOR_CBS_S_SHIFT  19
  #define QM_SHAPER_CBS_B                       1
 -#define QM_SHAPER_CBS_S                       16
  #define QM_SHAPER_VFT_OFFSET          6
 -#define WAIT_FOR_QOS_VF                       100
  #define QM_QOS_MIN_ERROR_RATE         5
 -#define QM_QOS_TYPICAL_NUM            8
  #define QM_SHAPER_MIN_CBS_S           8
  #define QM_QOS_TICK                   0x300U
  #define QM_QOS_DIVISOR_CLK            0x1f40U
  #define QM_QOS_MAX_CIR_B              200
  #define QM_QOS_MIN_CIR_B              100
  #define QM_QOS_MAX_CIR_U              6
 -#define QM_QOS_MAX_CIR_S              11
  #define QM_AUTOSUSPEND_DELAY          3000
  
  #define QM_MK_CQC_DW3_V1(hop_num, pg_sz, buf_sz, cqe_sz) \
 -      (((hop_num) << QM_CQ_HOP_NUM_SHIFT)     | \
 -      ((pg_sz) << QM_CQ_PAGE_SIZE_SHIFT)      | \
 -      ((buf_sz) << QM_CQ_BUF_SIZE_SHIFT)      | \
 +      (((hop_num) << QM_CQ_HOP_NUM_SHIFT) | \
 +      ((pg_sz) << QM_CQ_PAGE_SIZE_SHIFT) | \
 +      ((buf_sz) << QM_CQ_BUF_SIZE_SHIFT) | \
        ((cqe_sz) << QM_CQ_CQE_SIZE_SHIFT))
  
  #define QM_MK_CQC_DW3_V2(cqe_sz, cq_depth) \
        ((((u32)cq_depth) - 1) | ((cqe_sz) << QM_CQ_CQE_SIZE_SHIFT))
  
  #define QM_MK_SQC_W13(priority, orders, alg_type) \
 -      (((priority) << QM_SQ_PRIORITY_SHIFT)   | \
 -      ((orders) << QM_SQ_ORDERS_SHIFT)        | \
 +      (((priority) << QM_SQ_PRIORITY_SHIFT) | \
 +      ((orders) << QM_SQ_ORDERS_SHIFT) | \
        (((alg_type) & QM_SQ_TYPE_MASK) << QM_SQ_TYPE_SHIFT))
  
  #define QM_MK_SQC_DW3_V1(hop_num, pg_sz, buf_sz, sqe_sz) \
 -      (((hop_num) << QM_SQ_HOP_NUM_SHIFT)     | \
 -      ((pg_sz) << QM_SQ_PAGE_SIZE_SHIFT)      | \
 -      ((buf_sz) << QM_SQ_BUF_SIZE_SHIFT)      | \
 +      (((hop_num) << QM_SQ_HOP_NUM_SHIFT) | \
 +      ((pg_sz) << QM_SQ_PAGE_SIZE_SHIFT) | \
 +      ((buf_sz) << QM_SQ_BUF_SIZE_SHIFT) | \
        ((u32)ilog2(sqe_sz) << QM_SQ_SQE_SIZE_SHIFT))
  
  #define QM_MK_SQC_DW3_V2(sqe_sz, sq_depth) \
@@@ -357,6 -367,16 +357,16 @@@ struct hisi_qm_resource 
        struct list_head list;
  };
  
+ /**
+  * struct qm_hw_err - Structure describing the device errors
+  * @list: hardware error list
+  * @timestamp: timestamp when the error occurred
+  */
+ struct qm_hw_err {
+       struct list_head list;
+       unsigned long long timestamp;
+ };
  struct hisi_qm_hw_ops {
        int (*get_vft)(struct hisi_qm *qm, u32 *base, u32 *number);
        void (*qm_db)(struct hisi_qm *qm, u16 qn,
@@@ -696,7 -716,7 +706,7 @@@ static void qm_db_v2(struct hisi_qm *qm
  
        doorbell = qn | ((u64)cmd << QM_DB_CMD_SHIFT_V2) |
                   ((u64)randata << QM_DB_RAND_SHIFT_V2) |
 -                 ((u64)index << QM_DB_INDEX_SHIFT_V2)  |
 +                 ((u64)index << QM_DB_INDEX_SHIFT_V2) |
                   ((u64)priority << QM_DB_PRIORITY_SHIFT_V2);
  
        writeq(doorbell, io_base);
@@@ -895,7 -915,7 +905,7 @@@ static void qm_work_process(struct work
        }
  }
  
 -static bool do_qm_irq(struct hisi_qm *qm)
 +static bool do_qm_eq_irq(struct hisi_qm *qm)
  {
        struct qm_eqe *eqe = qm->eqe + qm->status.eq_head;
        struct hisi_qm_poll_data *poll_data;
        return false;
  }
  
 -static irqreturn_t qm_irq(int irq, void *data)
 +static irqreturn_t qm_eq_irq(int irq, void *data)
  {
        struct hisi_qm *qm = data;
        bool ret;
  
 -      ret = do_qm_irq(qm);
 +      ret = do_qm_eq_irq(qm);
        if (ret)
                return IRQ_HANDLED;
  
@@@ -1294,7 -1314,7 +1304,7 @@@ static int qm_get_vft_v2(struct hisi_q
        sqc_vft = readl(qm->io_base + QM_MB_CMD_DATA_ADDR_L) |
                  ((u64)readl(qm->io_base + QM_MB_CMD_DATA_ADDR_H) << 32);
        *base = QM_SQC_VFT_BASE_MASK_V2 & (sqc_vft >> QM_SQC_VFT_BASE_SHIFT_V2);
 -      *number = (QM_SQC_VFT_NUM_MASK_v2 &
 +      *number = (QM_SQC_VFT_NUM_MASK_V2 &
                   (sqc_vft >> QM_SQC_VFT_NUM_SHIFT_V2)) + 1;
  
        return 0;
@@@ -1882,7 -1902,8 +1892,7 @@@ static struct hisi_qp *qm_create_qp_nol
   * @qm: The qm we create a qp from.
   * @alg_type: Accelerator specific algorithm type in sqc.
   *
 - * return created qp, -EBUSY if all qps in qm allocated, -ENOMEM if allocating
 - * qp memory fails.
 + * Return created qp, negative error code if failed.
   */
  static struct hisi_qp *hisi_qm_create_qp(struct hisi_qm *qm, u8 alg_type)
  {
@@@ -2051,7 -2072,7 +2061,7 @@@ static int qm_start_qp_nolock(struct hi
   * @arg: Accelerator specific argument.
   *
   * After this function, qp can receive request from user. Return 0 if
 - * successful, Return -EBUSY if failed.
 + * successful, negative error code if failed.
   */
  int hisi_qm_start_qp(struct hisi_qp *qp, unsigned long arg)
  {
@@@ -2352,7 -2373,7 +2362,7 @@@ static int hisi_qm_uacce_mmap(struct ua
                                return -EINVAL;
                }
  
 -              vma->vm_flags |= VM_IO;
 +              vm_flags_set(vma, VM_IO);
  
                return remap_pfn_range(vma, vma->vm_start,
                                       phys_base >> PAGE_SHIFT,
@@@ -2458,6 -2479,113 +2468,113 @@@ static long hisi_qm_uacce_ioctl(struct 
        return -EINVAL;
  }
  
+ /**
+  * qm_hw_err_isolate() - Try to set the isolation status of the uacce device
+  * according to user's configuration of error threshold.
+  * @qm: the uacce device
+  */
+ static int qm_hw_err_isolate(struct hisi_qm *qm)
+ {
+       struct qm_hw_err *err, *tmp, *hw_err;
+       struct qm_err_isolate *isolate;
+       u32 count = 0;
+       isolate = &qm->isolate_data;
+ #define SECONDS_PER_HOUR      3600
+       /* All the hw errs are processed by PF driver */
+       if (qm->uacce->is_vf || isolate->is_isolate || !isolate->err_threshold)
+               return 0;
+       hw_err = kzalloc(sizeof(*hw_err), GFP_KERNEL);
+       if (!hw_err)
+               return -ENOMEM;
+       /*
+        * Time-stamp every slot AER error. Then check the AER error log when the
+        * next device AER error occurred. if the device slot AER error count exceeds
+        * the setting error threshold in one hour, the isolated state will be set
+        * to true. And the AER error logs that exceed one hour will be cleared.
+        */
+       mutex_lock(&isolate->isolate_lock);
+       hw_err->timestamp = jiffies;
+       list_for_each_entry_safe(err, tmp, &isolate->qm_hw_errs, list) {
+               if ((hw_err->timestamp - err->timestamp) / HZ >
+                   SECONDS_PER_HOUR) {
+                       list_del(&err->list);
+                       kfree(err);
+               } else {
+                       count++;
+               }
+       }
+       list_add(&hw_err->list, &isolate->qm_hw_errs);
+       mutex_unlock(&isolate->isolate_lock);
+       if (count >= isolate->err_threshold)
+               isolate->is_isolate = true;
+       return 0;
+ }
+ static void qm_hw_err_destroy(struct hisi_qm *qm)
+ {
+       struct qm_hw_err *err, *tmp;
+       mutex_lock(&qm->isolate_data.isolate_lock);
+       list_for_each_entry_safe(err, tmp, &qm->isolate_data.qm_hw_errs, list) {
+               list_del(&err->list);
+               kfree(err);
+       }
+       mutex_unlock(&qm->isolate_data.isolate_lock);
+ }
+ static enum uacce_dev_state hisi_qm_get_isolate_state(struct uacce_device *uacce)
+ {
+       struct hisi_qm *qm = uacce->priv;
+       struct hisi_qm *pf_qm;
+       if (uacce->is_vf)
+               pf_qm = pci_get_drvdata(pci_physfn(qm->pdev));
+       else
+               pf_qm = qm;
+       return pf_qm->isolate_data.is_isolate ?
+                       UACCE_DEV_ISOLATE : UACCE_DEV_NORMAL;
+ }
+ static int hisi_qm_isolate_threshold_write(struct uacce_device *uacce, u32 num)
+ {
+       struct hisi_qm *qm = uacce->priv;
+       /* Must be set by PF */
+       if (uacce->is_vf)
+               return -EPERM;
+       if (qm->isolate_data.is_isolate)
+               return -EPERM;
+       qm->isolate_data.err_threshold = num;
+       /* After the policy is updated, need to reset the hardware err list */
+       qm_hw_err_destroy(qm);
+       return 0;
+ }
+ static u32 hisi_qm_isolate_threshold_read(struct uacce_device *uacce)
+ {
+       struct hisi_qm *qm = uacce->priv;
+       struct hisi_qm *pf_qm;
+       if (uacce->is_vf) {
+               pf_qm = pci_get_drvdata(pci_physfn(qm->pdev));
+               return pf_qm->isolate_data.err_threshold;
+       }
+       return qm->isolate_data.err_threshold;
+ }
  static const struct uacce_ops uacce_qm_ops = {
        .get_available_instances = hisi_qm_get_available_instances,
        .get_queue = hisi_qm_uacce_get_queue,
        .mmap = hisi_qm_uacce_mmap,
        .ioctl = hisi_qm_uacce_ioctl,
        .is_q_updated = hisi_qm_is_q_updated,
+       .get_isolate_state = hisi_qm_get_isolate_state,
+       .isolate_err_threshold_write = hisi_qm_isolate_threshold_write,
+       .isolate_err_threshold_read = hisi_qm_isolate_threshold_read,
  };
  
+ static void qm_remove_uacce(struct hisi_qm *qm)
+ {
+       struct uacce_device *uacce = qm->uacce;
+       if (qm->use_sva) {
+               qm_hw_err_destroy(qm);
+               uacce_remove(uacce);
+               qm->uacce = NULL;
+       }
+ }
  static int qm_alloc_uacce(struct hisi_qm *qm)
  {
        struct pci_dev *pdev = qm->pdev;
                qm->use_sva = true;
        } else {
                /* only consider sva case */
-               uacce_remove(uacce);
-               qm->uacce = NULL;
+               qm_remove_uacce(qm);
                return -EINVAL;
        }
  
        uacce->qf_pg_num[UACCE_QFRT_DUS]  = dus_page_nr;
  
        qm->uacce = uacce;
+       INIT_LIST_HEAD(&qm->isolate_data.qm_hw_errs);
+       mutex_init(&qm->isolate_data.isolate_lock);
  
        return 0;
  }
@@@ -3063,6 -3206,7 +3195,6 @@@ static int qm_stop_started_qp(struct hi
        return 0;
  }
  
 -
  /**
   * qm_clear_queues() - Clear all queues memory in a qm.
   * @qm: The qm in which the queues will be cleared.
@@@ -3359,7 -3503,7 +3491,7 @@@ static int qm_vf_q_assign(struct hisi_q
                        act_q_num = q_num;
                }
  
 -              act_q_num = min_t(int, act_q_num, max_qp_num);
 +              act_q_num = min(act_q_num, max_qp_num);
                ret = hisi_qm_set_vft(qm, i, q_base, act_q_num);
                if (ret) {
                        for (j = num_vfs; j > i; j--)
@@@ -3546,7 -3690,7 +3678,7 @@@ static ssize_t qm_algqos_read(struct fi
        qos_val = ir / QM_QOS_RATE;
        ret = scnprintf(tbuf, QM_DBG_READ_LEN, "%u\n", qos_val);
  
 -      ret =  simple_read_from_buffer(buf, count, pos, tbuf, ret);
 +      ret = simple_read_from_buffer(buf, count, pos, tbuf, ret);
  
  err_get_status:
        clear_bit(QM_RESETTING, &qm->misc_ctl);
@@@ -4017,6 -4161,12 +4149,12 @@@ static int qm_controller_reset_prepare(
                return ret;
        }
  
+       if (qm->use_sva) {
+               ret = qm_hw_err_isolate(qm);
+               if (ret)
+                       pci_err(pdev, "failed to isolate hw err!\n");
+       }
        ret = qm_wait_vf_prepare_finish(qm);
        if (ret)
                pci_err(pdev, "failed to stop by vfs in soft reset!\n");
@@@ -4037,10 -4187,13 +4175,10 @@@ static void qm_dev_ecc_mbit_handle(stru
        if (!qm->err_status.is_dev_ecc_mbit &&
            qm->err_status.is_qm_ecc_mbit &&
            qm->err_ini->close_axi_master_ooo) {
 -
                qm->err_ini->close_axi_master_ooo(qm);
 -
        } else if (qm->err_status.is_dev_ecc_mbit &&
                   !qm->err_status.is_qm_ecc_mbit &&
                   !qm->err_ini->close_axi_master_ooo) {
 -
                nfe_enb = readl(qm->io_base + QM_RAS_NFE_ENABLE);
                writel(nfe_enb & QM_RAS_NFE_MBIT_DISABLE,
                       qm->io_base + QM_RAS_NFE_ENABLE);
@@@ -4321,21 -4474,25 +4459,25 @@@ static int qm_controller_reset(struct h
                qm->err_ini->show_last_dfx_regs(qm);
  
        ret = qm_soft_reset(qm);
-       if (ret) {
-               pci_err(pdev, "Controller reset failed (%d)\n", ret);
-               qm_reset_bit_clear(qm);
-               return ret;
-       }
+       if (ret)
+               goto err_reset;
  
        ret = qm_controller_reset_done(qm);
-       if (ret) {
-               qm_reset_bit_clear(qm);
-               return ret;
-       }
+       if (ret)
+               goto err_reset;
  
        pci_info(pdev, "Controller reset complete\n");
  
        return 0;
+ err_reset:
+       pci_err(pdev, "Controller reset failed (%d)\n", ret);
+       qm_reset_bit_clear(qm);
+       /* if resetting fails, isolate the device */
+       if (qm->use_sva)
+               qm->isolate_data.is_isolate = true;
+       return ret;
  }
  
  /**
@@@ -4484,6 -4641,7 +4626,6 @@@ static irqreturn_t qm_abnormal_irq(int 
        return IRQ_HANDLED;
  }
  
 -
  /**
   * hisi_qm_dev_shutdown() - Shutdown device.
   * @pdev: The device will be shutdown.
@@@ -4887,7 -5045,7 +5029,7 @@@ static int qm_register_eq_irq(struct hi
                return 0;
  
        irq_vector = val & QM_IRQ_VECTOR_MASK;
 -      ret = request_irq(pci_irq_vector(pdev, irq_vector), qm_irq, 0, qm->dev_name, qm);
 +      ret = request_irq(pci_irq_vector(pdev, irq_vector), qm_eq_irq, 0, qm->dev_name, qm);
        if (ret)
                dev_err(&pdev->dev, "failed to request eq irq, ret = %d", ret);
  
@@@ -5255,10 -5413,7 +5397,7 @@@ int hisi_qm_init(struct hisi_qm *qm
  err_free_qm_memory:
        hisi_qm_memory_uninit(qm);
  err_alloc_uacce:
-       if (qm->use_sva) {
-               uacce_remove(qm->uacce);
-               qm->uacce = NULL;
-       }
+       qm_remove_uacce(qm);
  err_irq_register:
        qm_irqs_unregister(qm);
  err_pci_init:
diff --combined drivers/fpga/dfl.c
index 0a4227bc946231a271a22029e672fa0963e1d111,9e59642dd5babd341ca4999dc27ad43615136179..b010f0a83a7858f15906fc2ada56246930a0dda7
@@@ -13,7 -13,6 +13,7 @@@
  #include <linux/dfl.h>
  #include <linux/fpga-dfl.h>
  #include <linux/module.h>
 +#include <linux/overflow.h>
  #include <linux/uaccess.h>
  
  #include "dfl.h"
@@@ -46,7 -45,7 +46,7 @@@ static const char *dfl_pdata_key_string
  };
  
  /**
-  * dfl_dev_info - dfl feature device information.
+  * struct dfl_dev_info - dfl feature device information.
   * @name: name string of the feature platform device.
   * @dfh_id: id value in Device Feature Header (DFH) register by DFL spec.
   * @id: idr id of the feature dev.
@@@ -68,7 -67,7 +68,7 @@@ static struct dfl_dev_info dfl_devs[] 
  };
  
  /**
-  * dfl_chardev_info - chardev information of dfl feature device
+  * struct dfl_chardev_info - chardev information of dfl feature device
   * @name: nmae string of the char device.
   * @devt: devt of the char device.
   */
@@@ -343,8 -342,6 +343,8 @@@ static void release_dfl_dev(struct devi
        if (ddev->mmio_res.parent)
                release_resource(&ddev->mmio_res);
  
 +      kfree(ddev->params);
 +
        ida_free(&dfl_device_ida, ddev->id);
        kfree(ddev->irqs);
        kfree(ddev);
@@@ -383,16 -380,7 +383,16 @@@ dfl_dev_add(struct dfl_feature_platform
        ddev->type = feature_dev_id_type(pdev);
        ddev->feature_id = feature->id;
        ddev->revision = feature->revision;
 +      ddev->dfh_version = feature->dfh_version;
        ddev->cdev = pdata->dfl_cdev;
 +      if (feature->param_size) {
 +              ddev->params = kmemdup(feature->params, feature->param_size, GFP_KERNEL);
 +              if (!ddev->params) {
 +                      ret = -ENOMEM;
 +                      goto put_dev;
 +              }
 +              ddev->param_size = feature->param_size;
 +      }
  
        /* add mmio resource */
        parent_res = &pdev->resource[feature->resource_index];
@@@ -720,27 -708,21 +720,27 @@@ struct build_feature_devs_info 
   * struct dfl_feature_info - sub feature info collected during feature dev build
   *
   * @fid: id of this sub feature.
 - * @revision: revision value of this sub feature.
 + * @revision: revision of this sub feature
 + * @dfh_version: version of Device Feature Header (DFH)
   * @mmio_res: mmio resource of this sub feature.
   * @ioaddr: mapped base address of mmio resource.
   * @node: node in sub_features linked list.
   * @irq_base: start of irq index in this sub feature.
   * @nr_irqs: number of irqs of this sub feature.
 + * @param_size: size DFH parameters.
 + * @params: DFH parameter data.
   */
  struct dfl_feature_info {
        u16 fid;
        u8 revision;
 +      u8 dfh_version;
        struct resource mmio_res;
        void __iomem *ioaddr;
        struct list_head node;
        unsigned int irq_base;
        unsigned int nr_irqs;
 +      unsigned int param_size;
 +      u64 params[];
  };
  
  static void dfl_fpga_cdev_add_port_dev(struct dfl_fpga_cdev *cdev,
@@@ -816,17 -798,7 +816,17 @@@ static int build_info_commit_dev(struc
                feature->dev = fdev;
                feature->id = finfo->fid;
                feature->revision = finfo->revision;
 +              feature->dfh_version = finfo->dfh_version;
  
 +              if (finfo->param_size) {
 +                      feature->params = devm_kmemdup(binfo->dev,
 +                                                     finfo->params, finfo->param_size,
 +                                                     GFP_KERNEL);
 +                      if (!feature->params)
 +                              return -ENOMEM;
 +
 +                      feature->param_size = finfo->param_size;
 +              }
                /*
                 * the FIU header feature has some fundamental functions (sriov
                 * set, port enable/disable) needed for the dfl bus device and
@@@ -963,115 -935,56 +963,115 @@@ static u16 feature_id(u64 value
        return 0;
  }
  
 +static u64 *find_param(u64 *params, resource_size_t max, int param_id)
 +{
 +      u64 *end = params + max / sizeof(u64);
 +      u64 v, next;
 +
 +      while (params < end) {
 +              v = *params;
 +              if (param_id == FIELD_GET(DFHv1_PARAM_HDR_ID, v))
 +                      return params;
 +
 +              if (FIELD_GET(DFHv1_PARAM_HDR_NEXT_EOP, v))
 +                      break;
 +
 +              next = FIELD_GET(DFHv1_PARAM_HDR_NEXT_OFFSET, v);
 +              params += next;
 +      }
 +
 +      return NULL;
 +}
 +
 +/**
 + * dfh_find_param() - find parameter block for the given parameter id
 + * @dfl_dev: dfl device
 + * @param_id: id of dfl parameter
 + * @psize: destination to store size of parameter data in bytes
 + *
 + * Return: pointer to start of parameter data, PTR_ERR otherwise.
 + */
 +void *dfh_find_param(struct dfl_device *dfl_dev, int param_id, size_t *psize)
 +{
 +      u64 *phdr = find_param(dfl_dev->params, dfl_dev->param_size, param_id);
 +
 +      if (!phdr)
 +              return ERR_PTR(-ENOENT);
 +
 +      if (psize)
 +              *psize = (FIELD_GET(DFHv1_PARAM_HDR_NEXT_OFFSET, *phdr) - 1) * sizeof(u64);
 +
 +      return phdr + 1;
 +}
 +EXPORT_SYMBOL_GPL(dfh_find_param);
 +
  static int parse_feature_irqs(struct build_feature_devs_info *binfo,
 -                            resource_size_t ofst, u16 fid,
 -                            unsigned int *irq_base, unsigned int *nr_irqs)
 +                            resource_size_t ofst, struct dfl_feature_info *finfo)
  {
        void __iomem *base = binfo->ioaddr + ofst;
        unsigned int i, ibase, inr = 0;
 +      void *params = finfo->params;
        enum dfl_id_type type;
 +      u16 fid = finfo->fid;
        int virq;
 +      u64 *p;
        u64 v;
  
 -      type = feature_dev_id_type(binfo->feature_dev);
 +      switch (finfo->dfh_version) {
 +      case 0:
 +              /*
 +               * DFHv0 only provides MMIO resource information for each feature
 +               * in the DFL header.  There is no generic interrupt information.
 +               * Instead, features with interrupt functionality provide
 +               * the information in feature specific registers.
 +               */
 +              type = feature_dev_id_type(binfo->feature_dev);
 +              if (type == PORT_ID) {
 +                      switch (fid) {
 +                      case PORT_FEATURE_ID_UINT:
 +                              v = readq(base + PORT_UINT_CAP);
 +                              ibase = FIELD_GET(PORT_UINT_CAP_FST_VECT, v);
 +                              inr = FIELD_GET(PORT_UINT_CAP_INT_NUM, v);
 +                              break;
 +                      case PORT_FEATURE_ID_ERROR:
 +                              v = readq(base + PORT_ERROR_CAP);
 +                              ibase = FIELD_GET(PORT_ERROR_CAP_INT_VECT, v);
 +                              inr = FIELD_GET(PORT_ERROR_CAP_SUPP_INT, v);
 +                              break;
 +                      }
 +              } else if (type == FME_ID) {
 +                      switch (fid) {
 +                      case FME_FEATURE_ID_GLOBAL_ERR:
 +                              v = readq(base + FME_ERROR_CAP);
 +                              ibase = FIELD_GET(FME_ERROR_CAP_INT_VECT, v);
 +                              inr = FIELD_GET(FME_ERROR_CAP_SUPP_INT, v);
 +                              break;
 +                      }
 +              }
 +              break;
  
 -      /*
 -       * Ideally DFL framework should only read info from DFL header, but
 -       * current version DFL only provides mmio resources information for
 -       * each feature in DFL Header, no field for interrupt resources.
 -       * Interrupt resource information is provided by specific mmio
 -       * registers of each private feature which supports interrupt. So in
 -       * order to parse and assign irq resources, DFL framework has to look
 -       * into specific capability registers of these private features.
 -       *
 -       * Once future DFL version supports generic interrupt resource
 -       * information in common DFL headers, the generic interrupt parsing
 -       * code will be added. But in order to be compatible to old version
 -       * DFL, the driver may still fall back to these quirks.
 -       */
 -      if (type == PORT_ID) {
 -              switch (fid) {
 -              case PORT_FEATURE_ID_UINT:
 -                      v = readq(base + PORT_UINT_CAP);
 -                      ibase = FIELD_GET(PORT_UINT_CAP_FST_VECT, v);
 -                      inr = FIELD_GET(PORT_UINT_CAP_INT_NUM, v);
 -                      break;
 -              case PORT_FEATURE_ID_ERROR:
 -                      v = readq(base + PORT_ERROR_CAP);
 -                      ibase = FIELD_GET(PORT_ERROR_CAP_INT_VECT, v);
 -                      inr = FIELD_GET(PORT_ERROR_CAP_SUPP_INT, v);
 +      case 1:
 +              /*
 +               * DFHv1 provides interrupt resource information in DFHv1
 +               * parameter blocks.
 +               */
 +              p = find_param(params, finfo->param_size, DFHv1_PARAM_ID_MSI_X);
 +              if (!p)
                        break;
 -              }
 -      } else if (type == FME_ID) {
 -              if (fid == FME_FEATURE_ID_GLOBAL_ERR) {
 -                      v = readq(base + FME_ERROR_CAP);
 -                      ibase = FIELD_GET(FME_ERROR_CAP_INT_VECT, v);
 -                      inr = FIELD_GET(FME_ERROR_CAP_SUPP_INT, v);
 -              }
 +
 +              p++;
 +              ibase = FIELD_GET(DFHv1_PARAM_MSI_X_STARTV, *p);
 +              inr = FIELD_GET(DFHv1_PARAM_MSI_X_NUMV, *p);
 +              break;
 +
 +      default:
 +              dev_warn(binfo->dev, "unexpected DFH version %d\n", finfo->dfh_version);
 +              break;
        }
  
        if (!inr) {
 -              *irq_base = 0;
 -              *nr_irqs = 0;
 +              finfo->irq_base = 0;
 +              finfo->nr_irqs = 0;
                return 0;
        }
  
                }
        }
  
 -      *irq_base = ibase;
 -      *nr_irqs = inr;
 +      finfo->irq_base = ibase;
 +      finfo->nr_irqs = inr;
  
        return 0;
  }
  
 +static int dfh_get_param_size(void __iomem *dfh_base, resource_size_t max)
 +{
 +      int size = 0;
 +      u64 v, next;
 +
 +      if (!FIELD_GET(DFHv1_CSR_SIZE_GRP_HAS_PARAMS,
 +                     readq(dfh_base + DFHv1_CSR_SIZE_GRP)))
 +              return 0;
 +
 +      while (size + DFHv1_PARAM_HDR < max) {
 +              v = readq(dfh_base + DFHv1_PARAM_HDR + size);
 +
 +              next = FIELD_GET(DFHv1_PARAM_HDR_NEXT_OFFSET, v);
 +              if (!next)
 +                      return -EINVAL;
 +
 +              size += next * sizeof(u64);
 +
 +              if (FIELD_GET(DFHv1_PARAM_HDR_NEXT_EOP, v))
 +                      return size;
 +      }
 +
 +      return -ENOENT;
 +}
 +
  /*
   * when create sub feature instances, for private features, it doesn't need
   * to provide resource size and feature id as they could be read from DFH
@@@ -1136,69 -1024,39 +1136,69 @@@ static in
  create_feature_instance(struct build_feature_devs_info *binfo,
                        resource_size_t ofst, resource_size_t size, u16 fid)
  {
 -      unsigned int irq_base, nr_irqs;
        struct dfl_feature_info *finfo;
 +      resource_size_t start, end;
 +      int dfh_psize = 0;
        u8 revision = 0;
 +      u64 v, addr_off;
 +      u8 dfh_ver = 0;
        int ret;
 -      u64 v;
  
        if (fid != FEATURE_ID_AFU) {
                v = readq(binfo->ioaddr + ofst);
                revision = FIELD_GET(DFH_REVISION, v);
 -
 +              dfh_ver = FIELD_GET(DFH_VERSION, v);
                /* read feature size and id if inputs are invalid */
                size = size ? size : feature_size(v);
                fid = fid ? fid : feature_id(v);
 +              if (dfh_ver == 1) {
 +                      dfh_psize = dfh_get_param_size(binfo->ioaddr + ofst, size);
 +                      if (dfh_psize < 0) {
 +                              dev_err(binfo->dev,
 +                                      "failed to read size of DFHv1 parameters %d\n",
 +                                      dfh_psize);
 +                              return dfh_psize;
 +                      }
 +                      dev_dbg(binfo->dev, "dfhv1_psize %d\n", dfh_psize);
 +              }
        }
  
        if (binfo->len - ofst < size)
                return -EINVAL;
  
 -      ret = parse_feature_irqs(binfo, ofst, fid, &irq_base, &nr_irqs);
 -      if (ret)
 -              return ret;
 -
 -      finfo = kzalloc(sizeof(*finfo), GFP_KERNEL);
 +      finfo = kzalloc(struct_size(finfo, params, dfh_psize / sizeof(u64)), GFP_KERNEL);
        if (!finfo)
                return -ENOMEM;
  
 +      memcpy_fromio(finfo->params, binfo->ioaddr + ofst + DFHv1_PARAM_HDR, dfh_psize);
 +      finfo->param_size = dfh_psize;
 +
        finfo->fid = fid;
        finfo->revision = revision;
 -      finfo->mmio_res.start = binfo->start + ofst;
 -      finfo->mmio_res.end = finfo->mmio_res.start + size - 1;
 +      finfo->dfh_version = dfh_ver;
 +      if (dfh_ver == 1) {
 +              v = readq(binfo->ioaddr + ofst + DFHv1_CSR_ADDR);
 +              addr_off = FIELD_GET(DFHv1_CSR_ADDR_MASK, v);
 +              if (FIELD_GET(DFHv1_CSR_ADDR_REL, v))
 +                      start = addr_off << 1;
 +              else
 +                      start = binfo->start + ofst + addr_off;
 +
 +              v = readq(binfo->ioaddr + ofst + DFHv1_CSR_SIZE_GRP);
 +              end = start + FIELD_GET(DFHv1_CSR_SIZE_GRP_SIZE, v) - 1;
 +      } else {
 +              start = binfo->start + ofst;
 +              end = start + size - 1;
 +      }
        finfo->mmio_res.flags = IORESOURCE_MEM;
 -      finfo->irq_base = irq_base;
 -      finfo->nr_irqs = nr_irqs;
 +      finfo->mmio_res.start = start;
 +      finfo->mmio_res.end = end;
 +
 +      ret = parse_feature_irqs(binfo, ofst, finfo);
 +      if (ret) {
 +              kfree(finfo);
 +              return ret;
 +      }
  
        list_add_tail(&finfo->node, &binfo->sub_features);
        binfo->feature_num++;
diff --combined drivers/fpga/dfl.h
index 20eaddce6988bd37637e49c71133d24da1d1e17f,5fc424d505c82eb3bae62026226b14d4ffa2a30b..1d724a28f00ad33b49a159d0d74e3f84dce80f24
  #define DFH_REVISION          GENMASK_ULL(15, 12)     /* Feature revision */
  #define DFH_NEXT_HDR_OFST     GENMASK_ULL(39, 16)     /* Offset to next DFH */
  #define DFH_EOL                       BIT_ULL(40)             /* End of list */
 +#define DFH_VERSION           GENMASK_ULL(59, 52)     /* DFH version */
  #define DFH_TYPE              GENMASK_ULL(63, 60)     /* Feature type */
  #define DFH_TYPE_AFU          1
  #define DFH_TYPE_PRIVATE      3
  #define DFH_TYPE_FIU          4
  
 +/*
 + * DFHv1 Register Offset definitons
 + * In DHFv1, DFH + GUID + CSR_START + CSR_SIZE_GROUP + PARAM_HDR + PARAM_DATA
 + * as common header registers
 + */
 +#define DFHv1_CSR_ADDR                0x18  /* CSR Register start address */
 +#define DFHv1_CSR_SIZE_GRP    0x20  /* Size of Reg Block and Group/tag */
 +#define DFHv1_PARAM_HDR               0x28  /* Optional First Param header */
 +
 +/*
 + * CSR Rel Bit, 1'b0 = relative (offset from feature DFH start),
 + * 1'b1 = absolute (ARM or other non-PCIe use)
 + */
 +#define DFHv1_CSR_ADDR_REL    BIT_ULL(0)
 +
 +/* CSR Header Register Bit Definitions */
 +#define DFHv1_CSR_ADDR_MASK       GENMASK_ULL(63, 1)  /* 63:1 of CSR address */
 +
 +/* CSR SIZE Goup Register Bit Definitions */
 +#define DFHv1_CSR_SIZE_GRP_INSTANCE_ID        GENMASK_ULL(15, 0)      /* Enumeration instantiated IP */
 +#define DFHv1_CSR_SIZE_GRP_GROUPING_ID        GENMASK_ULL(30, 16)     /* Group Features/interfaces */
 +#define DFHv1_CSR_SIZE_GRP_HAS_PARAMS BIT_ULL(31)             /* Presence of Parameters */
 +#define DFHv1_CSR_SIZE_GRP_SIZE               GENMASK_ULL(63, 32)     /* Size of CSR Block in bytes */
 +
 +/* PARAM Header Register Bit Definitions */
 +#define DFHv1_PARAM_HDR_ID            GENMASK_ULL(15, 0) /* Id of this Param  */
 +#define DFHv1_PARAM_HDR_VER           GENMASK_ULL(31, 16) /* Version Param */
 +#define DFHv1_PARAM_HDR_NEXT_OFFSET   GENMASK_ULL(63, 35) /* Offset of next Param */
 +#define DFHv1_PARAM_HDR_NEXT_EOP      BIT_ULL(32)
 +#define DFHv1_PARAM_DATA              0x08  /* Offset of Param data from Param header */
 +
 +#define DFHv1_PARAM_ID_MSI_X          0x1
 +#define DFHv1_PARAM_MSI_X_NUMV                GENMASK_ULL(63, 32)
 +#define DFHv1_PARAM_MSI_X_STARTV      GENMASK_ULL(31, 0)
 +
  /* Next AFU Register Bitfield */
  #define NEXT_AFU_NEXT_DFH_OFST        GENMASK_ULL(23, 0)      /* Offset to next AFU */
  
@@@ -267,7 -231,7 +267,7 @@@ struct dfl_feature_irq_ctx 
   *
   * @dev: ptr to pdev of the feature device which has the sub feature.
   * @id: sub feature id.
-  * @revision: revisition of the instance of a feature.
 - * @revision: revision value of this sub feature.
++ * @revision: revision of this sub feature.
   * @resource_index: each sub feature has one mmio resource for its registers.
   *                this index is used to find its mmio resource from the
   *                feature dev (platform device)'s resources.
   * @ops: ops of this sub feature.
   * @ddev: ptr to the dfl device of this sub feature.
   * @priv: priv data of this feature.
 + * @dfh_version: version of the DFH
 + * @param_size: size of dfh parameters
 + * @params: point to memory copy of dfh parameters
   */
  struct dfl_feature {
        struct platform_device *dev;
        const struct dfl_feature_ops *ops;
        struct dfl_device *ddev;
        void *priv;
 +      u8 dfh_version;
 +      unsigned int param_size;
 +      void *params;
  };
  
  #define FEATURE_DEV_ID_UNUSED (-1)
diff --combined drivers/iio/adc/Kconfig
index 99cd305b59d9dda15ec63daa45c0d829c1bbd3bb,4a95c843a91b039004ae504307a10be7132c2bf5..45af2302be53beab4b064ab07bcad903ff484595
@@@ -441,7 -441,8 +441,8 @@@ config ENVELOPE_DETECTO
  
  config EP93XX_ADC
        tristate "Cirrus Logic EP93XX ADC driver"
-       depends on ARCH_EP93XX
+       depends on ARCH_EP93XX || COMPILE_TEST
+       depends on HAS_IOMEM
        help
          Driver for the ADC module on the EP93XX series of SoC from Cirrus Logic.
          It's recommended to switch on CONFIG_HIGH_RES_TIMERS option, in this
  
  config EXYNOS_ADC
        tristate "Exynos ADC driver support"
 -      depends on ARCH_EXYNOS || ARCH_S3C24XX || ARCH_S3C64XX || ARCH_S5PV210 || (OF && COMPILE_TEST)
 +      depends on ARCH_EXYNOS || ARCH_S3C64XX || ARCH_S5PV210 || (OF && COMPILE_TEST)
        depends on HAS_IOMEM
        help
 -        Driver for the ADC block found in the Samsung S3C (S3C2410, S3C2416,
 -        S3C2440, S3C2443, S3C6410), S5Pv210 and Exynos SoCs.
 +        Driver for the ADC block found in the Samsung S3C6410, S5Pv210 and
 +        Exynos SoCs.
          Choose Y here only if you build for such Samsung SoC.
  
          To compile this driver as a module, choose M here: the module will be
@@@ -565,6 -566,16 +566,16 @@@ config IMX8QXP_AD
          This driver can also be built as a module. If so, the module will be
          called imx8qxp-adc.
  
+ config IMX93_ADC
+       tristate "IMX93 ADC driver"
+       depends on ARCH_MXC || COMPILE_TEST
+       depends on HAS_IOMEM
+       help
+         Say yes here to build support for IMX93 ADC.
+         This driver can also be built as a module. If so, the module will be
+         called imx93_adc.
  config LP8788_ADC
        tristate "LP8788 ADC driver"
        depends on MFD_LP8788
@@@ -1207,6 -1218,17 +1218,17 @@@ config TI_ADS101
          This driver can also be built as a module. If so, the module will be
          called ti-ads1015.
  
+ config TI_ADS7924
+       tristate "Texas Instruments ADS7924 ADC"
+       depends on I2C
+       select REGMAP_I2C
+       help
+         If you say yes here you get support for Texas Instruments ADS7924
+         4 channels, 12-bit I2C ADC chip.
+         This driver can also be built as a module. If so, the module will be
+         called ti-ads7924.
  config TI_ADS7950
        tristate "Texas Instruments ADS7950 ADC driver"
        depends on SPI && GPIOLIB
@@@ -1274,6 -1296,16 +1296,16 @@@ config TI_AM335X_AD
          To compile this driver as a module, choose M here: the module will be
          called ti_am335x_adc.
  
+ config TI_LMP92064
+       tristate "Texas Instruments LMP92064 ADC driver"
+       depends on SPI
+       help
+         Say yes here to build support for the LMP92064 Precision Current and Voltage
+         sensor.
+         This driver can also be built as a module. If so, the module will be called
+         ti-lmp92064.
  config TI_TLC4541
        tristate "Texas Instruments TLC4541 ADC driver"
        depends on SPI
index 103fce0c49e6b6c940e10c9ebc338458d7c76f7f,39f0852e5ca7bb2a5c40dfb91c3ccd2c353e8c23..a01c15812b702211a418ffc55d9bc00bf7e3447e
@@@ -253,7 -253,7 +253,7 @@@ static void ipoctal_irq_channel(struct 
  static irqreturn_t ipoctal_irq_handler(void *arg)
  {
        unsigned int i;
-       struct ipoctal *ipoctal = (struct ipoctal *) arg;
+       struct ipoctal *ipoctal = arg;
  
        /* Clear the IPack device interrupt */
        readw(ipoctal->int_space + ACK_INT_REQ0);
@@@ -647,7 -647,7 +647,7 @@@ static void ipoctal_hangup(struct tty_s
        tty_port_hangup(&channel->tty_port);
  
        ipoctal_reset_channel(channel);
 -      tty_port_set_initialized(&channel->tty_port, 0);
 +      tty_port_set_initialized(&channel->tty_port, false);
        wake_up_interruptible(&channel->tty_port.open_wait);
  }
  
@@@ -659,7 -659,7 +659,7 @@@ static void ipoctal_shutdown(struct tty
                return;
  
        ipoctal_reset_channel(channel);
 -      tty_port_set_initialized(&channel->tty_port, 0);
 +      tty_port_set_initialized(&channel->tty_port, false);
  }
  
  static void ipoctal_cleanup(struct tty_struct *tty)
diff --combined drivers/misc/Kconfig
index a615605d6d56c70a74c29c206a4641f1940ab527,6a514fb7a1f2842e75e302d1f87ee3b76e0c7b37..433aa41977852af6ca1aabeb62de68783d8dece7
@@@ -518,6 -518,26 +518,26 @@@ config VCPU_STALL_DETECTO
  
          If you do not intend to run this kernel as a guest, say N.
  
+ config TMR_MANAGER
+       tristate "Select TMR Manager"
+       depends on MICROBLAZE && MB_MANAGER
+       help
+         This option enables the driver developed for TMR Manager.
+         The Triple Modular Redundancy(TMR) manager provides support for
+         fault detection.
+         Say N here unless you know what you are doing.
+ config TMR_INJECT
+       tristate "Select TMR Inject"
+       depends on TMR_MANAGER && FAULT_INJECTION_DEBUG_FS
+       help
+         This option enables the driver developed for TMR Inject.
+         The Triple Modular Redundancy(TMR) Inject provides
+         fault injection.
+         Say N here unless you know what you are doing.
  source "drivers/misc/c2port/Kconfig"
  source "drivers/misc/eeprom/Kconfig"
  source "drivers/misc/cb710/Kconfig"
@@@ -532,6 -552,7 +552,6 @@@ source "drivers/misc/cxl/Kconfig
  source "drivers/misc/ocxl/Kconfig"
  source "drivers/misc/bcm-vk/Kconfig"
  source "drivers/misc/cardreader/Kconfig"
 -source "drivers/misc/habanalabs/Kconfig"
  source "drivers/misc/uacce/Kconfig"
  source "drivers/misc/pvpanic/Kconfig"
  source "drivers/misc/mchp_pci1xxxx/Kconfig"
diff --combined drivers/misc/Makefile
index 33f80469e5f4f955272da3db38a869c5f944f5dd,172e2076470c13687a9aa8602c2d55113b765a2b..56de43943cd512694194901dff57e5b751e852a8
@@@ -56,6 -56,7 +56,6 @@@ obj-$(CONFIG_OCXL)            += ocxl
  obj-$(CONFIG_BCM_VK)          += bcm-vk/
  obj-y                         += cardreader/
  obj-$(CONFIG_PVPANIC)         += pvpanic/
 -obj-$(CONFIG_HABANA_AI)               += habanalabs/
  obj-$(CONFIG_UACCE)           += uacce/
  obj-$(CONFIG_XILINX_SDFEC)    += xilinx_sdfec.o
  obj-$(CONFIG_HISI_HIKEY_USB)  += hisi_hikey_usb.o
@@@ -63,3 -64,5 +63,5 @@@ obj-$(CONFIG_HI6421V600_IRQ)  += hi6421v
  obj-$(CONFIG_OPEN_DICE)               += open-dice.o
  obj-$(CONFIG_GP_PCI1XXXX)     += mchp_pci1xxxx/
  obj-$(CONFIG_VCPU_STALL_DETECTOR)     += vcpu_stall_detector.o
+ obj-$(CONFIG_TMR_MANAGER)      += xilinx_tmr_manager.o
+ obj-$(CONFIG_TMR_INJECT)      += xilinx_tmr_inject.o
index b65ab440a19e8a851c5244a02a5e16bb4ff640f2,d3a217929a248e1315f8b716bb67c6d51ce253b5..07023397afc734dfa93be3a020c307bc13f1028f
@@@ -229,7 -229,7 +229,7 @@@ static int uacce_fops_mmap(struct file 
        if (!qfr)
                return -ENOMEM;
  
 -      vma->vm_flags |= VM_DONTCOPY | VM_DONTEXPAND | VM_WIPEONFORK;
 +      vm_flags_set(vma, VM_DONTCOPY | VM_DONTEXPAND | VM_WIPEONFORK);
        vma->vm_ops = &uacce_vm_ops;
        vma->vm_private_data = q;
        qfr->type = type;
@@@ -363,12 -363,52 +363,52 @@@ static ssize_t region_dus_size_show(str
                       uacce->qf_pg_num[UACCE_QFRT_DUS] << PAGE_SHIFT);
  }
  
+ static ssize_t isolate_show(struct device *dev,
+                           struct device_attribute *attr, char *buf)
+ {
+       struct uacce_device *uacce = to_uacce_device(dev);
+       return sysfs_emit(buf, "%d\n", uacce->ops->get_isolate_state(uacce));
+ }
+ static ssize_t isolate_strategy_show(struct device *dev, struct device_attribute *attr, char *buf)
+ {
+       struct uacce_device *uacce = to_uacce_device(dev);
+       u32 val;
+       val = uacce->ops->isolate_err_threshold_read(uacce);
+       return sysfs_emit(buf, "%u\n", val);
+ }
+ static ssize_t isolate_strategy_store(struct device *dev, struct device_attribute *attr,
+                                  const char *buf, size_t count)
+ {
+       struct uacce_device *uacce = to_uacce_device(dev);
+       unsigned long val;
+       int ret;
+       if (kstrtoul(buf, 0, &val) < 0)
+               return -EINVAL;
+       if (val > UACCE_MAX_ERR_THRESHOLD)
+               return -EINVAL;
+       ret = uacce->ops->isolate_err_threshold_write(uacce, val);
+       if (ret)
+               return ret;
+       return count;
+ }
  static DEVICE_ATTR_RO(api);
  static DEVICE_ATTR_RO(flags);
  static DEVICE_ATTR_RO(available_instances);
  static DEVICE_ATTR_RO(algorithms);
  static DEVICE_ATTR_RO(region_mmio_size);
  static DEVICE_ATTR_RO(region_dus_size);
+ static DEVICE_ATTR_RO(isolate);
+ static DEVICE_ATTR_RW(isolate_strategy);
  
  static struct attribute *uacce_dev_attrs[] = {
        &dev_attr_api.attr,
        &dev_attr_algorithms.attr,
        &dev_attr_region_mmio_size.attr,
        &dev_attr_region_dus_size.attr,
+       &dev_attr_isolate.attr,
+       &dev_attr_isolate_strategy.attr,
        NULL,
  };
  
@@@ -392,6 -434,14 +434,14 @@@ static umode_t uacce_dev_is_visible(str
            (!uacce->qf_pg_num[UACCE_QFRT_DUS])))
                return 0;
  
+       if (attr == &dev_attr_isolate_strategy.attr &&
+           (!uacce->ops->isolate_err_threshold_read &&
+            !uacce->ops->isolate_err_threshold_write))
+               return 0;
+       if (attr == &dev_attr_isolate.attr && !uacce->ops->get_isolate_state)
+               return 0;
        return attr->mode;
  }
  
index a59fbffa238f7fb3a8ae21769707be220cd705fb,d08bff0f87f90e1cf8be29cecf445c67ac1973a2..a7d54d4d41fdb1df9f1e179a4a6ae41ac52b0044
@@@ -122,6 -122,7 +122,6 @@@ enum qp_state 
  };
  
  enum qm_hw_ver {
 -      QM_HW_UNKNOWN = -1,
        QM_HW_V1 = 0x20,
        QM_HW_V2 = 0x21,
        QM_HW_V3 = 0x30,
@@@ -271,6 -272,20 +271,20 @@@ struct hisi_qm_poll_data 
        u16 *qp_finish_id;
  };
  
+ /**
+  * struct qm_err_isolate
+  * @isolate_lock: protects device error log
+  * @err_threshold: user config error threshold which triggers isolation
+  * @is_isolate: device isolation state
+  * @uacce_hw_errs: index into qm device error list
+  */
+ struct qm_err_isolate {
+       struct mutex isolate_lock;
+       u32 err_threshold;
+       bool is_isolate;
+       struct list_head qm_hw_errs;
+ };
  struct hisi_qm {
        enum qm_hw_ver ver;
        enum qm_fun_type fun_type;
        const struct hisi_qm_err_ini *err_ini;
        struct hisi_qm_err_info err_info;
        struct hisi_qm_err_status err_status;
 -      unsigned long misc_ctl; /* driver removing and reset sched */
 +      /* driver removing and reset sched */
 +      unsigned long misc_ctl;
        /* Device capability bit */
        unsigned long caps;
  
  
        const char *algs;
        bool use_sva;
 -      bool is_frozen;
  
        resource_size_t phys_base;
        resource_size_t db_phys_base;
        struct qm_shaper_factor *factor;
        u32 mb_qos;
        u32 type_rate;
+       struct qm_err_isolate isolate_data;
  };
  
  struct hisi_qp_status {
diff --combined kernel/events/core.c
index a5a51dfdd622617d52d26dccaf9f69f50c967ddb,d0cce1dd53b459f98dabef9be9d51ec2f08743f2..f79fd8b87f75edc22453a47dee8c9b14855e8eeb
@@@ -6568,7 -6568,7 +6568,7 @@@ aux_unlock
         * Since pinned accounting is per vm we cannot allow fork() to copy our
         * vma.
         */
 -      vma->vm_flags |= VM_DONTCOPY | VM_DONTEXPAND | VM_DONTDUMP;
 +      vm_flags_set(vma, VM_DONTCOPY | VM_DONTEXPAND | VM_DONTDUMP);
        vma->vm_ops = &perf_mmap_vmops;
  
        if (event->pmu->event_mapped)
@@@ -7041,20 -7041,13 +7041,20 @@@ out_put
        ring_buffer_put(rb);
  }
  
 -static void __perf_event_header__init_id(struct perf_event_header *header,
 -                                       struct perf_sample_data *data,
 +/*
 + * A set of common sample data types saved even for non-sample records
 + * when event->attr.sample_id_all is set.
 + */
 +#define PERF_SAMPLE_ID_ALL  (PERF_SAMPLE_TID | PERF_SAMPLE_TIME |     \
 +                           PERF_SAMPLE_ID | PERF_SAMPLE_STREAM_ID |   \
 +                           PERF_SAMPLE_CPU | PERF_SAMPLE_IDENTIFIER)
 +
 +static void __perf_event_header__init_id(struct perf_sample_data *data,
                                         struct perf_event *event,
                                         u64 sample_type)
  {
        data->type = event->attr.sample_type;
 -      header->size += event->id_header_size;
 +      data->sample_flags |= data->type & PERF_SAMPLE_ID_ALL;
  
        if (sample_type & PERF_SAMPLE_TID) {
                /* namespace issues */
@@@ -7081,10 -7074,8 +7081,10 @@@ void perf_event_header__init_id(struct 
                                struct perf_sample_data *data,
                                struct perf_event *event)
  {
 -      if (event->attr.sample_id_all)
 -              __perf_event_header__init_id(header, data, event, event->attr.sample_type);
 +      if (event->attr.sample_id_all) {
 +              header->size += event->id_header_size;
 +              __perf_event_header__init_id(data, event, event->attr.sample_type);
 +      }
  }
  
  static void __perf_event__output_id_sample(struct perf_output_handle *handle,
@@@ -7314,7 -7305,7 +7314,7 @@@ void perf_output_sample(struct perf_out
        }
  
        if (sample_type & PERF_SAMPLE_BRANCH_STACK) {
 -              if (data->sample_flags & PERF_SAMPLE_BRANCH_STACK) {
 +              if (data->br_stack) {
                        size_t size;
  
                        size = data->br_stack->nr
@@@ -7558,68 -7549,83 +7558,68 @@@ perf_callchain(struct perf_event *event
        return callchain ?: &__empty_callchain;
  }
  
 -void perf_prepare_sample(struct perf_event_header *header,
 -                       struct perf_sample_data *data,
 +static __always_inline u64 __cond_set(u64 flags, u64 s, u64 d)
 +{
 +      return d * !!(flags & s);
 +}
 +
 +void perf_prepare_sample(struct perf_sample_data *data,
                         struct perf_event *event,
                         struct pt_regs *regs)
  {
        u64 sample_type = event->attr.sample_type;
        u64 filtered_sample_type;
  
 -      header->type = PERF_RECORD_SAMPLE;
 -      header->size = sizeof(*header) + event->header_size;
 -
 -      header->misc = 0;
 -      header->misc |= perf_misc_flags(regs);
 -
        /*
 -       * Clear the sample flags that have already been done by the
 -       * PMU driver.
 +       * Add the sample flags that are dependent to others.  And clear the
 +       * sample flags that have already been done by the PMU driver.
         */
 -      filtered_sample_type = sample_type & ~data->sample_flags;
 -      __perf_event_header__init_id(header, data, event, filtered_sample_type);
 +      filtered_sample_type = sample_type;
 +      filtered_sample_type |= __cond_set(sample_type, PERF_SAMPLE_CODE_PAGE_SIZE,
 +                                         PERF_SAMPLE_IP);
 +      filtered_sample_type |= __cond_set(sample_type, PERF_SAMPLE_DATA_PAGE_SIZE |
 +                                         PERF_SAMPLE_PHYS_ADDR, PERF_SAMPLE_ADDR);
 +      filtered_sample_type |= __cond_set(sample_type, PERF_SAMPLE_STACK_USER,
 +                                         PERF_SAMPLE_REGS_USER);
 +      filtered_sample_type &= ~data->sample_flags;
  
 -      if (sample_type & (PERF_SAMPLE_IP | PERF_SAMPLE_CODE_PAGE_SIZE))
 -              data->ip = perf_instruction_pointer(regs);
 -
 -      if (sample_type & PERF_SAMPLE_CALLCHAIN) {
 -              int size = 1;
 -
 -              if (filtered_sample_type & PERF_SAMPLE_CALLCHAIN)
 -                      data->callchain = perf_callchain(event, regs);
 -
 -              size += data->callchain->nr;
 -
 -              header->size += size * sizeof(u64);
 +      if (filtered_sample_type == 0) {
 +              /* Make sure it has the correct data->type for output */
 +              data->type = event->attr.sample_type;
 +              return;
        }
  
 -      if (sample_type & PERF_SAMPLE_RAW) {
 -              struct perf_raw_record *raw = data->raw;
 -              int size;
 +      __perf_event_header__init_id(data, event, filtered_sample_type);
  
 -              if (raw && (data->sample_flags & PERF_SAMPLE_RAW)) {
 -                      struct perf_raw_frag *frag = &raw->frag;
 -                      u32 sum = 0;
 -
 -                      do {
 -                              sum += frag->size;
 -                              if (perf_raw_frag_last(frag))
 -                                      break;
 -                              frag = frag->next;
 -                      } while (1);
 +      if (filtered_sample_type & PERF_SAMPLE_IP) {
 +              data->ip = perf_instruction_pointer(regs);
 +              data->sample_flags |= PERF_SAMPLE_IP;
 +      }
  
 -                      size = round_up(sum + sizeof(u32), sizeof(u64));
 -                      raw->size = size - sizeof(u32);
 -                      frag->pad = raw->size - sum;
 -              } else {
 -                      size = sizeof(u64);
 -                      data->raw = NULL;
 -              }
 +      if (filtered_sample_type & PERF_SAMPLE_CALLCHAIN)
 +              perf_sample_save_callchain(data, event, regs);
  
 -              header->size += size;
 +      if (filtered_sample_type & PERF_SAMPLE_RAW) {
 +              data->raw = NULL;
 +              data->dyn_size += sizeof(u64);
 +              data->sample_flags |= PERF_SAMPLE_RAW;
        }
  
 -      if (sample_type & PERF_SAMPLE_BRANCH_STACK) {
 -              int size = sizeof(u64); /* nr */
 -              if (data->sample_flags & PERF_SAMPLE_BRANCH_STACK) {
 -                      if (branch_sample_hw_index(event))
 -                              size += sizeof(u64);
 -
 -                      size += data->br_stack->nr
 -                            * sizeof(struct perf_branch_entry);
 -              }
 -              header->size += size;
 +      if (filtered_sample_type & PERF_SAMPLE_BRANCH_STACK) {
 +              data->br_stack = NULL;
 +              data->dyn_size += sizeof(u64);
 +              data->sample_flags |= PERF_SAMPLE_BRANCH_STACK;
        }
  
 -      if (sample_type & (PERF_SAMPLE_REGS_USER | PERF_SAMPLE_STACK_USER))
 +      if (filtered_sample_type & PERF_SAMPLE_REGS_USER)
                perf_sample_regs_user(&data->regs_user, regs);
  
 -      if (sample_type & PERF_SAMPLE_REGS_USER) {
 +      /*
 +       * It cannot use the filtered_sample_type here as REGS_USER can be set
 +       * by STACK_USER (using __cond_set() above) and we don't want to update
 +       * the dyn_size if it's not requested by users.
 +       */
 +      if ((sample_type & ~data->sample_flags) & PERF_SAMPLE_REGS_USER) {
                /* regs dump ABI info */
                int size = sizeof(u64);
  
                        size += hweight64(mask) * sizeof(u64);
                }
  
 -              header->size += size;
 +              data->dyn_size += size;
 +              data->sample_flags |= PERF_SAMPLE_REGS_USER;
        }
  
 -      if (sample_type & PERF_SAMPLE_STACK_USER) {
 +      if (filtered_sample_type & PERF_SAMPLE_STACK_USER) {
                /*
                 * Either we need PERF_SAMPLE_STACK_USER bit to be always
                 * processed as the last one or have additional check added
                 * up the rest of the sample size.
                 */
                u16 stack_size = event->attr.sample_stack_user;
 +              u16 header_size = perf_sample_data_size(data, event);
                u16 size = sizeof(u64);
  
 -              stack_size = perf_sample_ustack_size(stack_size, header->size,
 +              stack_size = perf_sample_ustack_size(stack_size, header_size,
                                                     data->regs_user.regs);
  
                /*
                        size += sizeof(u64) + stack_size;
  
                data->stack_user_size = stack_size;
 -              header->size += size;
 +              data->dyn_size += size;
 +              data->sample_flags |= PERF_SAMPLE_STACK_USER;
        }
  
 -      if (filtered_sample_type & PERF_SAMPLE_WEIGHT_TYPE)
 +      if (filtered_sample_type & PERF_SAMPLE_WEIGHT_TYPE) {
                data->weight.full = 0;
 +              data->sample_flags |= PERF_SAMPLE_WEIGHT_TYPE;
 +      }
  
 -      if (filtered_sample_type & PERF_SAMPLE_DATA_SRC)
 +      if (filtered_sample_type & PERF_SAMPLE_DATA_SRC) {
                data->data_src.val = PERF_MEM_NA;
 +              data->sample_flags |= PERF_SAMPLE_DATA_SRC;
 +      }
  
 -      if (filtered_sample_type & PERF_SAMPLE_TRANSACTION)
 +      if (filtered_sample_type & PERF_SAMPLE_TRANSACTION) {
                data->txn = 0;
 +              data->sample_flags |= PERF_SAMPLE_TRANSACTION;
 +      }
  
 -      if (sample_type & (PERF_SAMPLE_ADDR | PERF_SAMPLE_PHYS_ADDR | PERF_SAMPLE_DATA_PAGE_SIZE)) {
 -              if (filtered_sample_type & PERF_SAMPLE_ADDR)
 -                      data->addr = 0;
 +      if (filtered_sample_type & PERF_SAMPLE_ADDR) {
 +              data->addr = 0;
 +              data->sample_flags |= PERF_SAMPLE_ADDR;
        }
  
 -      if (sample_type & PERF_SAMPLE_REGS_INTR) {
 +      if (filtered_sample_type & PERF_SAMPLE_REGS_INTR) {
                /* regs dump ABI info */
                int size = sizeof(u64);
  
                        size += hweight64(mask) * sizeof(u64);
                }
  
 -              header->size += size;
 +              data->dyn_size += size;
 +              data->sample_flags |= PERF_SAMPLE_REGS_INTR;
        }
  
 -      if (sample_type & PERF_SAMPLE_PHYS_ADDR &&
 -          filtered_sample_type & PERF_SAMPLE_PHYS_ADDR)
 +      if (filtered_sample_type & PERF_SAMPLE_PHYS_ADDR) {
                data->phys_addr = perf_virt_to_phys(data->addr);
 +              data->sample_flags |= PERF_SAMPLE_PHYS_ADDR;
 +      }
  
  #ifdef CONFIG_CGROUP_PERF
 -      if (sample_type & PERF_SAMPLE_CGROUP) {
 +      if (filtered_sample_type & PERF_SAMPLE_CGROUP) {
                struct cgroup *cgrp;
  
                /* protected by RCU */
                cgrp = task_css_check(current, perf_event_cgrp_id, 1)->cgroup;
                data->cgroup = cgroup_id(cgrp);
 +              data->sample_flags |= PERF_SAMPLE_CGROUP;
        }
  #endif
  
         * require PERF_SAMPLE_ADDR, kernel implicitly retrieve the data->addr,
         * but the value will not dump to the userspace.
         */
 -      if (sample_type & PERF_SAMPLE_DATA_PAGE_SIZE)
 +      if (filtered_sample_type & PERF_SAMPLE_DATA_PAGE_SIZE) {
                data->data_page_size = perf_get_page_size(data->addr);
 +              data->sample_flags |= PERF_SAMPLE_DATA_PAGE_SIZE;
 +      }
  
 -      if (sample_type & PERF_SAMPLE_CODE_PAGE_SIZE)
 +      if (filtered_sample_type & PERF_SAMPLE_CODE_PAGE_SIZE) {
                data->code_page_size = perf_get_page_size(data->ip);
 +              data->sample_flags |= PERF_SAMPLE_CODE_PAGE_SIZE;
 +      }
  
 -      if (sample_type & PERF_SAMPLE_AUX) {
 +      if (filtered_sample_type & PERF_SAMPLE_AUX) {
                u64 size;
 +              u16 header_size = perf_sample_data_size(data, event);
  
 -              header->size += sizeof(u64); /* size */
 +              header_size += sizeof(u64); /* size */
  
                /*
                 * Given the 16bit nature of header::size, an AUX sample can
                 * Make sure this doesn't happen by using up to U16_MAX bytes
                 * per sample in total (rounded down to 8 byte boundary).
                 */
 -              size = min_t(size_t, U16_MAX - header->size,
 +              size = min_t(size_t, U16_MAX - header_size,
                             event->attr.aux_sample_size);
                size = rounddown(size, 8);
                size = perf_prepare_sample_aux(event, data, size);
  
 -              WARN_ON_ONCE(size + header->size > U16_MAX);
 -              header->size += size;
 +              WARN_ON_ONCE(size + header_size > U16_MAX);
 +              data->dyn_size += size + sizeof(u64); /* size above */
 +              data->sample_flags |= PERF_SAMPLE_AUX;
        }
 +}
 +
 +void perf_prepare_header(struct perf_event_header *header,
 +                       struct perf_sample_data *data,
 +                       struct perf_event *event,
 +                       struct pt_regs *regs)
 +{
 +      header->type = PERF_RECORD_SAMPLE;
 +      header->size = perf_sample_data_size(data, event);
 +      header->misc = perf_misc_flags(regs);
 +
        /*
         * If you're adding more sample types here, you likely need to do
         * something about the overflowing header::size, like repurpose the
@@@ -7785,8 -7762,7 +7785,8 @@@ __perf_event_output(struct perf_event *
        /* protect the callchain buffers */
        rcu_read_lock();
  
 -      perf_prepare_sample(&header, data, event, regs);
 +      perf_prepare_sample(data, event, regs);
 +      perf_prepare_header(&header, data, event, regs);
  
        err = output_begin(&handle, data, event, header.size);
        if (err)
@@@ -9418,6 -9394,7 +9418,7 @@@ void perf_report_aux_output_id(struct p
  
        perf_output_end(&handle);
  }
+ EXPORT_SYMBOL_GPL(perf_report_aux_output_id);
  
  static int
  __perf_event_account_interrupt(struct perf_event *event, int throttle)
@@@ -10144,7 -10121,8 +10145,7 @@@ void perf_tp_event(u16 event_type, u64 
        };
  
        perf_sample_data_init(&data, 0, 0);
 -      data.raw = &raw;
 -      data.sample_flags |= PERF_SAMPLE_RAW;
 +      perf_sample_save_raw_data(&data, &raw);
  
        perf_trace_buf_update(record, event_type);
  
@@@ -10351,7 -10329,13 +10352,7 @@@ static void bpf_overflow_handler(struc
        rcu_read_lock();
        prog = READ_ONCE(event->prog);
        if (prog) {
 -              if (prog->call_get_stack &&
 -                  (event->attr.sample_type & PERF_SAMPLE_CALLCHAIN) &&
 -                  !(data->sample_flags & PERF_SAMPLE_CALLCHAIN)) {
 -                      data->callchain = perf_callchain(event, regs);
 -                      data->sample_flags |= PERF_SAMPLE_CALLCHAIN;
 -              }
 -
 +              perf_prepare_sample(data, event, regs);
                ret = bpf_prog_run(prog, &ctx);
        }
        rcu_read_unlock();
diff --combined scripts/tags.sh
index 84775f08260f30429a2484b3f0ab4bf36c638d31,6b9001853890c3ddfa67bcd263f84b10baa3d0d2..faf214bcf2336b010ae609082102ee24b8fa7024
@@@ -17,6 -17,13 +17,13 @@@ ignore="$(echo "$RCS_FIND_IGNORE" | se
  # tags and cscope files should also ignore MODVERSION *.mod.c files
  ignore="$ignore ( -name *.mod.c ) -prune -o"
  
+ # ignore arbitrary directories
+ if [ -n "${IGNORE_DIRS}" ]; then
+       for i in ${IGNORE_DIRS}; do
+               ignore="${ignore} ( -path $i ) -prune -o"
+       done
+ fi
  # Use make KBUILD_ABS_SRCTREE=1 {tags|cscope}
  # to force full paths for a non-O= build
  if [ "${srctree}" = "." -o -z "${srctree}" ]; then
@@@ -91,7 -98,7 +98,7 @@@ all_compiled_sources(
        {
                echo include/generated/autoconf.h
                find $ignore -name "*.cmd" -exec \
-                       grep -Poh '(?(?=^source_.* \K).*|(?=^  \K\S).*(?= \\))' {} \+ |
+                       sed -n -E 's/^source_.* (.*)/\1/p; s/^  (\S.*) \\/\1/p' {} \+ |
                awk '!a[$0]++'
        } | xargs realpath -esq $([ -z "$KBUILD_ABS_SRCTREE" ] && echo --relative-to=.) |
        sort -u
@@@ -264,12 -271,10 +271,12 @@@ exuberant(
        --$CTAGS_EXTRA=+fq --c-kinds=+px --fields=+iaS --langmap=c:+.h \
        "${regex[@]}"
  
 -      setup_regex exuberant kconfig
 -      all_kconfigs | xargs $1 -a                              \
 -      --langdef=kconfig --language-force=kconfig "${regex[@]}"
 -
 +      KCONFIG_ARGS=()
 +      if ! $1 --list-languages | grep -iq kconfig; then
 +              setup_regex exuberant kconfig
 +              KCONFIG_ARGS=(--langdef=kconfig --language-force=kconfig "${regex[@]}")
 +      fi
 +      all_kconfigs | xargs $1 -a "${KCONFIG_ARGS[@]}"
  }
  
  emacs()
This page took 0.308151 seconds and 4 git commands to generate.