Merge tag 'driver-core-6.0-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git...
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 4 Aug 2022 18:31:20 +0000 (11:31 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 4 Aug 2022 18:31:20 +0000 (11:31 -0700)
Pull driver core / kernfs updates from Greg KH:
 "Here is the set of driver core and kernfs changes for 6.0-rc1.

  The "biggest" thing in here is some scalability improvements for
  kernfs for large systems. Other than that, included in here are:

   - arch topology and cache info changes that have been reviewed and
     discussed a lot.

   - potential error path cleanup fixes

   - deferred driver probe cleanups

   - firmware loader cleanups and tweaks

   - documentation updates

   - other small things

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

* tag 'driver-core-6.0-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core: (63 commits)
  docs: embargoed-hardware-issues: fix invalid AMD contact email
  firmware_loader: Replace kmap() with kmap_local_page()
  sysfs docs: ABI: Fix typo in comment
  kobject: fix Kconfig.debug "its" grammar
  kernfs: Fix typo 'the the' in comment
  docs: driver-api: firmware: add driver firmware guidelines. (v3)
  arch_topology: Fix cache attributes detection in the CPU hotplug path
  ACPI: PPTT: Leave the table mapped for the runtime usage
  cacheinfo: Use atomic allocation for percpu cache attributes
  drivers/base: fix userspace break from using bin_attributes for cpumap and cpulist
  MAINTAINERS: Change mentions of mpm to olivia
  docs: ABI: sysfs-devices-soc: Update Lee Jones' email address
  docs: ABI: sysfs-class-pwm: Update Lee Jones' email address
  Documentation/process: Add embargoed HW contact for LLVM
  Revert "kernfs: Change kernfs_notify_list to llist."
  ACPI: Remove the unused find_acpi_cpu_cache_topology()
  arch_topology: Warn that topology for nested clusters is not supported
  arch_topology: Add support for parsing sockets in /cpu-map
  arch_topology: Set cluster identifier in each core/thread from /cpu-map
  arch_topology: Limit span of cpu_clustergroup_mask()
  ...

1  2 
Documentation/ABI/testing/sysfs-devices-system-cpu
MAINTAINERS
drivers/base/core.c
drivers/base/power/domain.c
drivers/spi/spi.c
include/linux/acpi.h
lib/Kconfig.debug
net/ipv4/ipconfig.c

index df79e129d09794cf9fc8d8c0606e8ded61a40609,7856f468e4645aabf9138e6188b45d2efdfd1fd8..5bf61881f01269196fa97a4d5ec325cd330cdb1a
@@@ -67,8 -67,7 +67,7 @@@ Description:  Discover NUMA node a CPU b
                /sys/devices/system/cpu/cpu42/node2 -> ../../node/node2
  
  
- What:         /sys/devices/system/cpu/cpuX/topology/core_id
-               /sys/devices/system/cpu/cpuX/topology/core_siblings
+ What:         /sys/devices/system/cpu/cpuX/topology/core_siblings
                /sys/devices/system/cpu/cpuX/topology/core_siblings_list
                /sys/devices/system/cpu/cpuX/topology/physical_package_id
                /sys/devices/system/cpu/cpuX/topology/thread_siblings
@@@ -84,10 -83,6 +83,6 @@@ Description: CPU topology files that de
  
                Briefly, the files above are:
  
-               core_id: the CPU core ID of cpuX. Typically it is the
-               hardware platform's identifier (rather than the kernel's).
-               The actual value is architecture and platform dependent.
                core_siblings: internal kernel map of cpuX's hardware threads
                within the same physical_package_id.
  
@@@ -493,13 -488,12 +488,13 @@@ What:           /sys/devices/system/cpu/cpuX/reg
                /sys/devices/system/cpu/cpuX/regs/identification/
                /sys/devices/system/cpu/cpuX/regs/identification/midr_el1
                /sys/devices/system/cpu/cpuX/regs/identification/revidr_el1
 +              /sys/devices/system/cpu/cpuX/regs/identification/smidr_el1
  Date:         June 2016
  Contact:      Linux ARM Kernel Mailing list <linux-arm-kernel@lists.infradead.org>
  Description:  AArch64 CPU registers
  
                'identification' directory exposes the CPU ID registers for
 -              identifying model and revision of the CPU.
 +              identifying model and revision of the CPU and SMCU.
  
  What:         /sys/devices/system/cpu/aarch32_el0
  Date:         May 2021
@@@ -527,7 -521,6 +522,7 @@@ What:              /sys/devices/system/cpu/vulnerab
                /sys/devices/system/cpu/vulnerabilities/srbds
                /sys/devices/system/cpu/vulnerabilities/tsx_async_abort
                /sys/devices/system/cpu/vulnerabilities/itlb_multihit
 +              /sys/devices/system/cpu/vulnerabilities/mmio_stale_data
  Date:         January 2018
  Contact:      Linux kernel mailing list <linux-kernel@vger.kernel.org>
  Description:  Information about CPU vulnerabilities
diff --combined MAINTAINERS
index b779a0b435e309f38a8bc3447d0ce9c1248f7fdf,93cf6e8e670009f494f6348547d2ac8bf6a95441..84ad954cee262a95a26d0af48b6eea740c696cb5
@@@ -171,6 -171,7 +171,6 @@@ F: drivers/scsi/53c700
  
  6LOWPAN GENERIC (BTLE/IEEE 802.15.4)
  M:    Alexander Aring <alex.aring@gmail.com>
 -M:    Jukka Rissanen <jukka.rissanen@linux.intel.com>
  L:    linux-bluetooth@vger.kernel.org
  L:    linux-wpan@vger.kernel.org
  S:    Maintained
@@@ -241,11 -242,6 +241,11 @@@ F:       include/trace/events/9p.
  F:    include/uapi/linux/virtio_9p.h
  F:    net/9p/
  
 +A64FX DIAG DRIVER
 +M:    Hitomi Hasegawa <hasegawa-hitomi@fujitsu.com>
 +S:    Supported
 +F:    drivers/soc/fujitsu/a64fx-diag.c
 +
  A8293 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
@@@ -284,37 -280,38 +284,37 @@@ S:      Maintaine
  F:    drivers/hwmon/abituguru3.c
  
  ACCES 104-DIO-48E GPIO DRIVER
 -M:    William Breathitt Gray <vilhelm.gray@gmail.com>
 +M:    William Breathitt Gray <william.gray@linaro.org>
  L:    linux-gpio@vger.kernel.org
  S:    Maintained
  F:    drivers/gpio/gpio-104-dio-48e.c
  
  ACCES 104-IDI-48 GPIO DRIVER
 -M:    "William Breathitt Gray" <vilhelm.gray@gmail.com>
 +M:    William Breathitt Gray <william.gray@linaro.org>
  L:    linux-gpio@vger.kernel.org
  S:    Maintained
  F:    drivers/gpio/gpio-104-idi-48.c
  
  ACCES 104-IDIO-16 GPIO DRIVER
 -M:    "William Breathitt Gray" <vilhelm.gray@gmail.com>
 +M:    William Breathitt Gray <william.gray@linaro.org>
  L:    linux-gpio@vger.kernel.org
  S:    Maintained
  F:    drivers/gpio/gpio-104-idio-16.c
  
  ACCES 104-QUAD-8 DRIVER
 -M:    William Breathitt Gray <vilhelm.gray@gmail.com>
 -M:    Syed Nayyar Waris <syednwaris@gmail.com>
 +M:    William Breathitt Gray <william.gray@linaro.org>
  L:    linux-iio@vger.kernel.org
  S:    Maintained
  F:    drivers/counter/104-quad-8.c
  
  ACCES PCI-IDIO-16 GPIO DRIVER
 -M:    William Breathitt Gray <vilhelm.gray@gmail.com>
 +M:    William Breathitt Gray <william.gray@linaro.org>
  L:    linux-gpio@vger.kernel.org
  S:    Maintained
  F:    drivers/gpio/gpio-pci-idio-16.c
  
  ACCES PCIe-IDIO-24 GPIO DRIVER
 -M:    William Breathitt Gray <vilhelm.gray@gmail.com>
 +M:    William Breathitt Gray <william.gray@linaro.org>
  L:    linux-gpio@vger.kernel.org
  S:    Maintained
  F:    drivers/gpio/gpio-pcie-idio-24.c
@@@ -429,7 -426,7 +429,7 @@@ F: drivers/acpi/*thermal
  ACPI VIOT DRIVER
  M:    Jean-Philippe Brucker <jean-philippe@linaro.org>
  L:    linux-acpi@vger.kernel.org
 -L:    iommu@lists.linux-foundation.org
 +L:    iommu@lists.linux.dev
  S:    Maintained
  F:    drivers/acpi/viot.c
  F:    include/linux/acpi_viot.h
@@@ -765,14 -762,6 +765,14 @@@ T:       git git://linuxtv.org/media_tree.gi
  F:    Documentation/devicetree/bindings/media/allwinner,sun4i-a10-csi.yaml
  F:    drivers/media/platform/sunxi/sun4i-csi/
  
 +ALLWINNER A31 MIPI CSI-2 BRIDGE DRIVER
 +M:    Paul Kocialkowski <paul.kocialkowski@bootlin.com>
 +L:    linux-media@vger.kernel.org
 +S:    Maintained
 +T:    git git://linuxtv.org/media_tree.git
 +F:    Documentation/devicetree/bindings/media/allwinner,sun6i-a31-mipi-csi2.yaml
 +F:    drivers/media/platform/sunxi/sun6i-mipi-csi2/
 +
  ALLWINNER CPUFREQ DRIVER
  M:    Yangtao Li <tiny.windzz@gmail.com>
  L:    linux-pm@vger.kernel.org
@@@ -970,7 -959,7 +970,7 @@@ F: drivers/video/fbdev/geode
  AMD IOMMU (AMD-VI)
  M:    Joerg Roedel <joro@8bytes.org>
  R:    Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
 -L:    iommu@lists.linux-foundation.org
 +L:    iommu@lists.linux.dev
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git
  F:    drivers/iommu/amd/
@@@ -1049,7 -1038,6 +1049,7 @@@ F:      arch/arm64/boot/dts/amd
  
  AMD XGBE DRIVER
  M:    Tom Lendacky <thomas.lendacky@amd.com>
 +M:    "Shyam Sundar S K" <Shyam-sundar.S-k@amd.com>
  L:    netdev@vger.kernel.org
  S:    Supported
  F:    arch/arm64/boot/dts/amd/amd-seattle-xgbe*.dtsi
@@@ -1339,7 -1327,7 +1339,7 @@@ M:      Todd Kjos <tkjos@android.com
  M:    Martijn Coenen <maco@android.com>
  M:    Joel Fernandes <joel@joelfernandes.org>
  M:    Christian Brauner <christian@brauner.io>
 -M:    Hridya Valsaraju <hridya@google.com>
 +M:    Carlos Llamas <cmllamas@google.com>
  M:    Suren Baghdasaryan <surenb@google.com>
  L:    linux-kernel@vger.kernel.org
  S:    Supported
@@@ -1366,7 -1354,7 +1366,7 @@@ S:      Maintaine
  F:    sound/aoa/
  
  APEX EMBEDDED SYSTEMS STX104 IIO DRIVER
 -M:    William Breathitt Gray <vilhelm.gray@gmail.com>
 +M:    William Breathitt Gray <william.gray@linaro.org>
  L:    linux-iio@vger.kernel.org
  S:    Maintained
  F:    drivers/iio/adc/stx104.c
@@@ -1480,13 -1468,6 +1480,13 @@@ S:    Supporte
  W:    http://www.aquantia.com
  F:    drivers/net/ethernet/aquantia/atlantic/aq_ptp*
  
 +AR0521 ON SEMICONDUCTOR CAMERA SENSOR DRIVER
 +M:    Krzysztof HaƂasa <khalasa@piap.pl>
 +L:    linux-media@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/media/i2c/onnn,ar0521.yaml
 +F:    drivers/media/i2c/ar0521.c
 +
  ARASAN NAND CONTROLLER DRIVER
  M:    Miquel Raynal <miquel.raynal@bootlin.com>
  M:    Naga Sureshkumar Relli <nagasure@xilinx.com>
@@@ -1526,7 -1507,7 +1526,7 @@@ F:      drivers/clocksource/arm_arch_timer.
  ARM HDLCD DRM DRIVER
  M:    Liviu Dudau <liviu.dudau@arm.com>
  S:    Supported
 -F:    Documentation/devicetree/bindings/display/arm,hdlcd.txt
 +F:    Documentation/devicetree/bindings/display/arm,hdlcd.yaml
  F:    drivers/gpu/drm/arm/hdlcd_*
  
  ARM INTEGRATOR, VERSATILE AND REALVIEW SUPPORT
@@@ -1539,7 -1520,7 +1539,7 @@@ F:      Documentation/devicetree/bindings/ar
  F:    Documentation/devicetree/bindings/arm/arm,vexpress-juno.yaml
  F:    Documentation/devicetree/bindings/auxdisplay/arm,versatile-lcd.yaml
  F:    Documentation/devicetree/bindings/clock/arm,syscon-icst.yaml
 -F:    Documentation/devicetree/bindings/i2c/i2c-versatile.txt
 +F:    Documentation/devicetree/bindings/i2c/arm,i2c-versatile.yaml
  F:    Documentation/devicetree/bindings/interrupt-controller/arm,versatile-fpga-irq.txt
  F:    Documentation/devicetree/bindings/mtd/mtd-physmap.yaml
  F:    arch/arm/boot/dts/arm-realview-*
@@@ -1561,7 -1542,7 +1561,7 @@@ M:      Mihail Atanassov <mihail.atanassov@a
  L:    Mali DP Maintainers <malidp@foss.arm.com>
  S:    Supported
  T:    git git://anongit.freedesktop.org/drm/drm-misc
 -F:    Documentation/devicetree/bindings/display/arm,komeda.txt
 +F:    Documentation/devicetree/bindings/display/arm,komeda.yaml
  F:    Documentation/gpu/komeda-kms.rst
  F:    drivers/gpu/drm/arm/display/include/
  F:    drivers/gpu/drm/arm/display/komeda/
@@@ -1583,7 -1564,7 +1583,7 @@@ M:      Brian Starkey <brian.starkey@arm.com
  L:    Mali DP Maintainers <malidp@foss.arm.com>
  S:    Supported
  T:    git git://anongit.freedesktop.org/drm/drm-misc
 -F:    Documentation/devicetree/bindings/display/arm,malidp.txt
 +F:    Documentation/devicetree/bindings/display/arm,malidp.yaml
  F:    Documentation/gpu/afbc.rst
  F:    drivers/gpu/drm/arm/
  
@@@ -1912,7 -1893,6 +1912,7 @@@ L:      linux-aspeed@lists.ozlabs.org (moder
  S:    Supported
  Q:    https://patchwork.ozlabs.org/project/linux-aspeed/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/joel/aspeed.git
 +F:    Documentation/devicetree/bindings/arm/aspeed/
  F:    arch/arm/boot/dts/aspeed-*
  F:    arch/arm/mach-aspeed/
  N:    aspeed
@@@ -2001,9 -1981,11 +2001,9 @@@ L:     linux-arm-kernel@lists.infradead.or
  S:    Maintained
  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/coresight-cpu-debug.txt
 -F:    Documentation/devicetree/bindings/arm/coresight-cti.yaml
 -F:    Documentation/devicetree/bindings/arm/coresight.txt
 -F:    Documentation/devicetree/bindings/arm/ete.yaml
 -F:    Documentation/devicetree/bindings/arm/trbe.yaml
 +F:    Documentation/devicetree/bindings/arm/arm,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/*
  F:    drivers/hwtracing/coresight/*
  F:    include/dt-bindings/arm/coresight-cti-dt.h
@@@ -2027,7 -2009,7 +2027,7 @@@ L:      linux-arm-kernel@lists.infradead.or
  S:    Maintained
  T:    git git://github.com/ulli-kroll/linux.git
  F:    Documentation/devicetree/bindings/arm/gemini.yaml
 -F:    Documentation/devicetree/bindings/net/cortina,gemini-ethernet.txt
 +F:    Documentation/devicetree/bindings/net/cortina,gemini-ethernet.yaml
  F:    Documentation/devicetree/bindings/pinctrl/cortina,gemini-pinctrl.txt
  F:    Documentation/devicetree/bindings/rtc/faraday,ftrtc010.yaml
  F:    arch/arm/boot/dts/gemini*
@@@ -2158,13 -2140,11 +2158,13 @@@ M:   Jean-Marie Verdun <verdun@hpe.com
  M:    Nick Hawkins <nick.hawkins@hpe.com>
  S:    Maintained
  F:    Documentation/devicetree/bindings/arm/hpe,gxp.yaml
 +F:    Documentation/devicetree/bindings/spi/hpe,gxp-spi.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/spi/spi-gxp.c
  F:    drivers/watchdog/gxp-wdt.c
  
  ARM/IGEP MACHINE SUPPORT
@@@ -2436,7 -2416,7 +2436,7 @@@ T:      git git://git.kernel.org/pub/scm/lin
  F:    Documentation/devicetree/bindings/arm/ste-*
  F:    Documentation/devicetree/bindings/arm/ux500.yaml
  F:    Documentation/devicetree/bindings/arm/ux500/
 -F:    Documentation/devicetree/bindings/i2c/i2c-nomadik.txt
 +F:    Documentation/devicetree/bindings/i2c/st,nomadik-i2c.yaml
  F:    arch/arm/boot/dts/ste-*
  F:    arch/arm/mach-nomadik/
  F:    arch/arm/mach-ux500/
@@@ -2468,11 -2448,9 +2468,11 @@@ F:    Documentation/devicetree/bindings/*/
  F:    Documentation/devicetree/bindings/arm/npcm/*
  F:    arch/arm/boot/dts/nuvoton-npcm*
  F:    arch/arm/mach-npcm/
 +F:    arch/arm64/boot/dts/nuvoton/
  F:    drivers/*/*npcm*
  F:    drivers/*/*/*npcm*
  F:    include/dt-bindings/clock/nuvoton,npcm7xx-clock.h
 +F:    include/dt-bindings/clock/nuvoton,npcm845-clk.h
  
  ARM/NUVOTON WPCM450 ARCHITECTURE
  M:    Jonathan NeuschĂ€fer <j.neuschaefer@gmx.net>
@@@ -2489,7 -2467,6 +2489,7 @@@ ARM/NXP S32G ARCHITECTUR
  M:    Chester Lin <clin@suse.com>
  R:    Andreas FĂ€rber <afaerber@suse.de>
  R:    Matthias Brugger <mbrugger@suse.com>
 +R:    NXP S32 Linux Team <s32@nxp.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  F:    arch/arm64/boot/dts/freescale/s32g*.dts*
@@@ -2519,8 -2496,10 +2519,8 @@@ F:     drivers/power/reset/oxnas-restart.
  N:    oxnas
  
  ARM/PALM TREO SUPPORT
 -M:    Tomas Cech <sleep_walker@suse.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -S:    Maintained
 -W:    http://hackndev.com
 +S:    Orphan
  F:    arch/arm/mach-pxa/palmtreo.*
  
  ARM/PALMTX,PALMT5,PALMLD,PALMTE2,PALMTC SUPPORT
@@@ -2558,7 -2537,6 +2558,7 @@@ W:      http://www.armlinux.org.uk
  ARM/QUALCOMM SUPPORT
  M:    Andy Gross <agross@kernel.org>
  M:    Bjorn Andersson <bjorn.andersson@linaro.org>
 +R:    Konrad Dybcio <konrad.dybcio@somainline.org>
  L:    linux-arm-msm@vger.kernel.org
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux.git
@@@ -2637,8 -2615,6 +2637,8 @@@ Q:      http://patchwork.kernel.org/project/
  C:    irc://irc.libera.chat/renesas-soc
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel.git next
  F:    Documentation/devicetree/bindings/arm/renesas.yaml
 +F:    Documentation/devicetree/bindings/hwinfo/renesas,prr.yaml
 +F:    Documentation/devicetree/bindings/soc/renesas/
  F:    arch/arm64/boot/dts/renesas/
  F:    drivers/soc/renesas/
  F:    include/linux/soc/renesas/
@@@ -2738,7 -2714,6 +2738,7 @@@ M:      Sylwester Nawrocki <s.nawrocki@samsu
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  L:    linux-media@vger.kernel.org
  S:    Maintained
 +F:    Documentation/devicetree/bindings/media/samsung,s5pv210-jpeg.yaml
  F:    drivers/media/platform/samsung/s5p-jpeg/
  
  ARM/SAMSUNG S5P SERIES Multi Format Codec (MFC) SUPPORT
@@@ -2758,7 -2733,6 +2758,7 @@@ Q:      http://patchwork.kernel.org/project/
  C:    irc://irc.libera.chat/renesas-soc
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel.git next
  F:    Documentation/devicetree/bindings/arm/renesas.yaml
 +F:    Documentation/devicetree/bindings/soc/renesas/
  F:    arch/arm/boot/dts/emev2*
  F:    arch/arm/boot/dts/gr-peach*
  F:    arch/arm/boot/dts/iwg20d-q7*
@@@ -2848,23 -2822,6 +2848,23 @@@ F:    drivers/clocksource/armv7m_systick.
  N:    stm32
  N:    stm
  
 +ARM/SUNPLUS SP7021 SOC SUPPORT
 +M:    Qin Jian <qinjian@cqplus1.com>
 +L:    linux-arm-kernel@lists.infradead.org (moderated for mon-subscribers)
 +S:    Maintained
 +W:    https://sunplus-tibbo.atlassian.net/wiki/spaces/doc/overview
 +F:    Documentation/devicetree/bindings/arm/sunplus,sp7021.yaml
 +F:    Documentation/devicetree/bindings/clock/sunplus,sp7021-clkc.yaml
 +F:    Documentation/devicetree/bindings/interrupt-controller/sunplus,sp7021-intc.yaml
 +F:    Documentation/devicetree/bindings/reset/sunplus,reset.yaml
 +F:    arch/arm/boot/dts/sunplus-sp7021*.dts*
 +F:    arch/arm/configs/sp7021_*defconfig
 +F:    arch/arm/mach-sunplus/
 +F:    drivers/irqchip/irq-sp7021-intc.c
 +F:    drivers/reset/reset-sunplus.c
 +F:    include/dt-bindings/clock/sunplus,sp7021-clkc.h
 +F:    include/dt-bindings/reset/sunplus,sp7021-reset.h
 +
  ARM/Synaptics SoC support
  M:    Jisheng Zhang <jszhang@kernel.org>
  M:    Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
@@@ -3657,18 -3614,16 +3657,18 @@@ S:   Maintaine
  F:    Documentation/devicetree/bindings/iio/accel/bosch,bma400.yaml
  F:    drivers/iio/accel/bma400*
  
 -BPF (Safe dynamic programs and tools)
 +BPF [GENERAL] (Safe Dynamic Programs and Tools)
  M:    Alexei Starovoitov <ast@kernel.org>
  M:    Daniel Borkmann <daniel@iogearbox.net>
  M:    Andrii Nakryiko <andrii@kernel.org>
 -R:    Martin KaFai Lau <kafai@fb.com>
 -R:    Song Liu <songliubraving@fb.com>
 +R:    Martin KaFai Lau <martin.lau@linux.dev>
 +R:    Song Liu <song@kernel.org>
  R:    Yonghong Song <yhs@fb.com>
  R:    John Fastabend <john.fastabend@gmail.com>
  R:    KP Singh <kpsingh@kernel.org>
 -L:    netdev@vger.kernel.org
 +R:    Stanislav Fomichev <sdf@google.com>
 +R:    Hao Luo <haoluo@google.com>
 +R:    Jiri Olsa <jolsa@kernel.org>
  L:    bpf@vger.kernel.org
  S:    Supported
  W:    https://bpf.io/
@@@ -3700,17 -3655,21 +3700,17 @@@ F:   scripts/pahole-version.s
  F:    tools/bpf/
  F:    tools/lib/bpf/
  F:    tools/testing/selftests/bpf/
 -N:    bpf
 -K:    bpf
  
  BPF JIT for ARM
  M:    Shubham Bansal <illusionist.neo@gmail.com>
 -L:    netdev@vger.kernel.org
  L:    bpf@vger.kernel.org
 -S:    Maintained
 +S:    Odd Fixes
  F:    arch/arm/net/
  
  BPF JIT for ARM64
  M:    Daniel Borkmann <daniel@iogearbox.net>
  M:    Alexei Starovoitov <ast@kernel.org>
  M:    Zi Shen Lim <zlim.lnx@gmail.com>
 -L:    netdev@vger.kernel.org
  L:    bpf@vger.kernel.org
  S:    Supported
  F:    arch/arm64/net/
  BPF JIT for MIPS (32-BIT AND 64-BIT)
  M:    Johan Almbladh <johan.almbladh@anyfinetworks.com>
  M:    Paul Burton <paulburton@kernel.org>
 -L:    netdev@vger.kernel.org
  L:    bpf@vger.kernel.org
  S:    Maintained
  F:    arch/mips/net/
  
  BPF JIT for NFP NICs
  M:    Jakub Kicinski <kuba@kernel.org>
 -L:    netdev@vger.kernel.org
  L:    bpf@vger.kernel.org
 -S:    Supported
 +S:    Odd Fixes
  F:    drivers/net/ethernet/netronome/nfp/bpf/
  
  BPF JIT for POWERPC (32-BIT AND 64-BIT)
  M:    Naveen N. Rao <naveen.n.rao@linux.ibm.com>
 -L:    netdev@vger.kernel.org
 +M:    Michael Ellerman <mpe@ellerman.id.au>
  L:    bpf@vger.kernel.org
 -S:    Maintained
 +S:    Supported
  F:    arch/powerpc/net/
  
  BPF JIT for RISC-V (32-bit)
  M:    Luke Nelson <luke.r.nels@gmail.com>
  M:    Xi Wang <xi.wang@gmail.com>
 -L:    netdev@vger.kernel.org
  L:    bpf@vger.kernel.org
  S:    Maintained
  F:    arch/riscv/net/
@@@ -3745,6 -3707,7 +3745,6 @@@ X:      arch/riscv/net/bpf_jit_comp64.
  
  BPF JIT for RISC-V (64-bit)
  M:    Björn Töpel <bjorn@kernel.org>
 -L:    netdev@vger.kernel.org
  L:    bpf@vger.kernel.org
  S:    Maintained
  F:    arch/riscv/net/
@@@ -3754,80 -3717,36 +3754,80 @@@ BPF JIT for S39
  M:    Ilya Leoshkevich <iii@linux.ibm.com>
  M:    Heiko Carstens <hca@linux.ibm.com>
  M:    Vasily Gorbik <gor@linux.ibm.com>
 -L:    netdev@vger.kernel.org
  L:    bpf@vger.kernel.org
 -S:    Maintained
 +S:    Supported
  F:    arch/s390/net/
  X:    arch/s390/net/pnet.c
  
  BPF JIT for SPARC (32-BIT AND 64-BIT)
  M:    David S. Miller <davem@davemloft.net>
 -L:    netdev@vger.kernel.org
  L:    bpf@vger.kernel.org
 -S:    Maintained
 +S:    Odd Fixes
  F:    arch/sparc/net/
  
  BPF JIT for X86 32-BIT
  M:    Wang YanQing <udknight@gmail.com>
 -L:    netdev@vger.kernel.org
  L:    bpf@vger.kernel.org
 -S:    Maintained
 +S:    Odd Fixes
  F:    arch/x86/net/bpf_jit_comp32.c
  
  BPF JIT for X86 64-BIT
  M:    Alexei Starovoitov <ast@kernel.org>
  M:    Daniel Borkmann <daniel@iogearbox.net>
 -L:    netdev@vger.kernel.org
  L:    bpf@vger.kernel.org
  S:    Supported
  F:    arch/x86/net/
  X:    arch/x86/net/bpf_jit_comp32.c
  
 -BPF LSM (Security Audit and Enforcement using BPF)
 +BPF [CORE]
 +M:    Alexei Starovoitov <ast@kernel.org>
 +M:    Daniel Borkmann <daniel@iogearbox.net>
 +R:    John Fastabend <john.fastabend@gmail.com>
 +L:    bpf@vger.kernel.org
 +S:    Maintained
 +F:    kernel/bpf/verifier.c
 +F:    kernel/bpf/tnum.c
 +F:    kernel/bpf/core.c
 +F:    kernel/bpf/syscall.c
 +F:    kernel/bpf/dispatcher.c
 +F:    kernel/bpf/trampoline.c
 +F:    include/linux/bpf*
 +F:    include/linux/filter.h
 +
 +BPF [BTF]
 +M:    Martin KaFai Lau <martin.lau@linux.dev>
 +L:    bpf@vger.kernel.org
 +S:    Maintained
 +F:    kernel/bpf/btf.c
 +F:    include/linux/btf*
 +
 +BPF [TRACING]
 +M:    Song Liu <song@kernel.org>
 +R:    Jiri Olsa <jolsa@kernel.org>
 +L:    bpf@vger.kernel.org
 +S:    Maintained
 +F:    kernel/trace/bpf_trace.c
 +F:    kernel/bpf/stackmap.c
 +
 +BPF [NETWORKING] (tc BPF, sock_addr)
 +M:    Martin KaFai Lau <martin.lau@linux.dev>
 +M:    Daniel Borkmann <daniel@iogearbox.net>
 +R:    John Fastabend <john.fastabend@gmail.com>
 +L:    bpf@vger.kernel.org
 +L:    netdev@vger.kernel.org
 +S:    Maintained
 +F:    net/core/filter.c
 +F:    net/sched/act_bpf.c
 +F:    net/sched/cls_bpf.c
 +
 +BPF [NETWORKING] (struct_ops, reuseport)
 +M:    Martin KaFai Lau <martin.lau@linux.dev>
 +L:    bpf@vger.kernel.org
 +L:    netdev@vger.kernel.org
 +S:    Maintained
 +F:    kernel/bpf/bpf_struct*
 +
 +BPF [SECURITY & LSM] (Security Audit and Enforcement using BPF)
  M:    KP Singh <kpsingh@kernel.org>
  R:    Florent Revest <revest@chromium.org>
  R:    Brendan Jackman <jackmanb@chromium.org>
@@@ -3838,64 -3757,6 +3838,64 @@@ F:    include/linux/bpf_lsm.
  F:    kernel/bpf/bpf_lsm.c
  F:    security/bpf/
  
 +BPF [STORAGE & CGROUPS]
 +M:    Martin KaFai Lau <martin.lau@linux.dev>
 +L:    bpf@vger.kernel.org
 +S:    Maintained
 +F:    kernel/bpf/cgroup.c
 +F:    kernel/bpf/*storage.c
 +F:    kernel/bpf/bpf_lru*
 +
 +BPF [RINGBUF]
 +M:    Andrii Nakryiko <andrii@kernel.org>
 +L:    bpf@vger.kernel.org
 +S:    Maintained
 +F:    kernel/bpf/ringbuf.c
 +
 +BPF [ITERATOR]
 +M:    Yonghong Song <yhs@fb.com>
 +L:    bpf@vger.kernel.org
 +S:    Maintained
 +F:    kernel/bpf/*iter.c
 +
 +BPF [L7 FRAMEWORK] (sockmap)
 +M:    John Fastabend <john.fastabend@gmail.com>
 +M:    Jakub Sitnicki <jakub@cloudflare.com>
 +L:    netdev@vger.kernel.org
 +L:    bpf@vger.kernel.org
 +S:    Maintained
 +F:    include/linux/skmsg.h
 +F:    net/core/skmsg.c
 +F:    net/core/sock_map.c
 +F:    net/ipv4/tcp_bpf.c
 +F:    net/ipv4/udp_bpf.c
 +F:    net/unix/unix_bpf.c
 +
 +BPF [LIBRARY] (libbpf)
 +M:    Andrii Nakryiko <andrii@kernel.org>
 +L:    bpf@vger.kernel.org
 +S:    Maintained
 +F:    tools/lib/bpf/
 +
 +BPF [TOOLING] (bpftool)
 +M:    Quentin Monnet <quentin@isovalent.com>
 +L:    bpf@vger.kernel.org
 +S:    Maintained
 +F:    kernel/bpf/disasm.*
 +F:    tools/bpf/bpftool/
 +
 +BPF [SELFTESTS] (Test Runners & Infrastructure)
 +M:    Andrii Nakryiko <andrii@kernel.org>
 +R:    Mykola Lysenko <mykolal@fb.com>
 +L:    bpf@vger.kernel.org
 +S:    Maintained
 +F:    tools/testing/selftests/bpf/
 +
 +BPF [MISC]
 +L:    bpf@vger.kernel.org
 +S:    Odd Fixes
 +K:    (?:\b|_)bpf(?:\b|_)
 +
  BROADCOM B44 10/100 ETHERNET DRIVER
  M:    Michael Chan <michael.chan@broadcom.com>
  L:    netdev@vger.kernel.org
@@@ -3917,36 -3778,23 +3917,36 @@@ BROADCOM BCMBCA ARM ARCHITECTUR
  M:    William Zhang <william.zhang@broadcom.com>
  M:    Anand Gore <anand.gore@broadcom.com>
  M:    Kursad Oney <kursad.oney@broadcom.com>
 +M:    Florian Fainelli <f.fainelli@gmail.com>
  R:    Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  T:    git git://github.com/broadcom/stblinux.git
  F:    Documentation/devicetree/bindings/arm/bcm/brcm,bcmbca.yaml
 -F:    arch/arm/boot/dts/bcm47622.dtsi
 -F:    arch/arm/boot/dts/bcm947622.dts
 +F:    arch/arm64/boot/dts/broadcom/bcmbca/*
  N:    bcmbca
  N:    bcm[9]?47622
 +N:    bcm[9]?4912
 +N:    bcm[9]?63138
 +N:    bcm[9]?63146
 +N:    bcm[9]?63148
 +N:    bcm[9]?63158
 +N:    bcm[9]?63178
 +N:    bcm[9]?6756
 +N:    bcm[9]?6813
 +N:    bcm[9]?6846
 +N:    bcm[9]?6855
 +N:    bcm[9]?6856
 +N:    bcm[9]?6858
 +N:    bcm[9]?6878
  
  BROADCOM BCM2711/BCM2835 ARM ARCHITECTURE
 -M:    Nicolas Saenz Julienne <nsaenz@kernel.org>
 +M:    Florian Fainelli <f.fainelli@gmail.com>
  R:    Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
  L:    linux-rpi-kernel@lists.infradead.org (moderated for non-subscribers)
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/nsaenz/linux-rpi.git
 +T:    git git://github.com/broadcom/stblinux.git
  F:    Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml
  F:    drivers/pci/controller/pcie-brcmstb.c
  F:    drivers/staging/vc04_services
@@@ -4014,6 -3862,14 +4014,6 @@@ S:     Maintaine
  F:    arch/arm/boot/dts/bcm47189*
  F:    arch/arm/boot/dts/bcm53573*
  
 -BROADCOM BCM63XX ARM ARCHITECTURE
 -M:    Florian Fainelli <f.fainelli@gmail.com>
 -R:    Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
 -L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -S:    Maintained
 -T:    git git://github.com/broadcom/stblinux.git
 -N:    bcm63xx
 -
  BROADCOM BCM63XX/BCM33XX UDC DRIVER
  M:    Kevin Cernekee <cernekee@gmail.com>
  L:    linux-usb@vger.kernel.org
@@@ -4420,7 -4276,7 +4420,7 @@@ L:      linux-pm@vger.kernel.or
  L:    linux-samsung-soc@vger.kernel.org
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/chanwoo/linux.git
 -F:    Documentation/devicetree/bindings/devfreq/exynos-bus.txt
 +F:    Documentation/devicetree/bindings/interconnect/samsung,exynos-bus.yaml
  F:    drivers/devfreq/exynos-bus.c
  
  BUSLOGIC SCSI DRIVER
@@@ -5010,7 -4866,7 +5010,7 @@@ R:      Nick Desaulniers <ndesaulniers@googl
  L:    llvm@lists.linux.dev
  S:    Supported
  B:    https://github.com/ClangBuiltLinux/linux/issues
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git for-next/clang/features
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git for-next/hardening
  F:    include/linux/cfi.h
  F:    kernel/cfi.c
  
@@@ -5096,7 -4952,6 +5096,7 @@@ Q:      http://patchwork.kernel.org/project/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux.git
  F:    Documentation/devicetree/bindings/clock/
  F:    drivers/clk/
 +F:    include/dt-bindings/clock/
  F:    include/linux/clk-pr*
  F:    include/linux/clk/
  F:    include/linux/of_clk.h
@@@ -5147,7 -5002,7 +5147,7 @@@ COMPUTE EXPRESS LINK (CXL
  M:    Alison Schofield <alison.schofield@intel.com>
  M:    Vishal Verma <vishal.l.verma@intel.com>
  M:    Ira Weiny <ira.weiny@intel.com>
 -M:    Ben Widawsky <ben.widawsky@intel.com>
 +M:    Ben Widawsky <bwidawsk@kernel.org>
  M:    Dan Williams <dan.j.williams@intel.com>
  L:    linux-cxl@vger.kernel.org
  S:    Maintained
@@@ -5177,7 -5032,6 +5177,7 @@@ F:      include/linux/console
  
  CONTEXT TRACKING
  M:    Frederic Weisbecker <frederic@kernel.org>
 +M:    "Paul E. McKenney" <paulmck@kernel.org>
  S:    Maintained
  F:    kernel/context_tracking.c
  F:    include/linux/context_tracking*
@@@ -5253,10 -5107,10 +5253,10 @@@ F:   Documentation/hwmon/corsair-psu.rs
  F:    drivers/hwmon/corsair-psu.c
  
  COUNTER SUBSYSTEM
 -M:    William Breathitt Gray <vilhelm.gray@gmail.com>
 +M:    William Breathitt Gray <william.gray@linaro.org>
  L:    linux-iio@vger.kernel.org
  S:    Maintained
 -T:    git git@gitlab.com:vilhelmgray/counter.git
 +T:    git https://git.linaro.org/people/william.gray/counter.git
  F:    Documentation/ABI/testing/sysfs-bus-counter
  F:    Documentation/driver-api/generic-counter.rst
  F:    drivers/counter/
@@@ -5903,7 -5757,6 +5903,7 @@@ L:      linux-pm@vger.kernel.or
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/chanwoo/linux.git
  F:    Documentation/devicetree/bindings/devfreq/
 +F:    Documentation/devicetree/bindings/interconnect/mediatek,cci.yaml
  F:    drivers/devfreq/
  F:    include/linux/devfreq.h
  F:    include/trace/events/devfreq.h
@@@ -6016,7 -5869,7 +6016,7 @@@ F:      include/sound/da[79]*.
  F:    sound/soc/codecs/da[79]*.[ch]
  
  DIAMOND SYSTEMS GPIO-MM GPIO DRIVER
 -M:    William Breathitt Gray <vilhelm.gray@gmail.com>
 +M:    William Breathitt Gray <william.gray@linaro.org>
  L:    linux-gpio@vger.kernel.org
  S:    Maintained
  F:    drivers/gpio/gpio-gpio-mm.c
@@@ -6101,7 -5954,7 +6101,7 @@@ DMA MAPPING HELPER
  M:    Christoph Hellwig <hch@lst.de>
  M:    Marek Szyprowski <m.szyprowski@samsung.com>
  R:    Robin Murphy <robin.murphy@arm.com>
 -L:    iommu@lists.linux-foundation.org
 +L:    iommu@lists.linux.dev
  S:    Supported
  W:    http://git.infradead.org/users/hch/dma-mapping.git
  T:    git git://git.infradead.org/users/hch/dma-mapping.git
@@@ -6113,7 -5966,7 +6113,7 @@@ F:      kernel/dma
  
  DMA MAPPING BENCHMARK
  M:    Xiang Chen <chenxiang66@hisilicon.com>
 -L:    iommu@lists.linux-foundation.org
 +L:    iommu@lists.linux.dev
  F:    kernel/dma/map_benchmark.c
  F:    tools/testing/selftests/dma/
  
@@@ -6225,7 -6078,7 +6225,7 @@@ M:      Sakari Ailus <sakari.ailus@linux.int
  L:    linux-media@vger.kernel.org
  S:    Maintained
  T:    git git://linuxtv.org/media_tree.git
 -F:    Documentation/devicetree/bindings/media/i2c/dongwoon,dw9807-vcm.txt
 +F:    Documentation/devicetree/bindings/media/i2c/dongwoon,dw9807-vcm.yaml
  F:    drivers/media/i2c/dw9807-vcm.c
  
  DOUBLETALK DRIVER
@@@ -6366,13 -6219,6 +6366,13 @@@ S:    Maintaine
  F:    Documentation/devicetree/bindings/display/bridge/chipone,icn6211.yaml
  F:    drivers/gpu/drm/bridge/chipone-icn6211.c
  
 +DRM DRIVER FOR EBBG FT8719 PANEL
 +M:    Joel Selvaraj <jo@jsfamily.in>
 +S:    Maintained
 +T:    git git://anongit.freedesktop.org/drm/drm-misc
 +F:    Documentation/devicetree/bindings/display/panel/ebbg,ft8719.yaml
 +F:    drivers/gpu/drm/panel/panel-ebbg-ft8719.c
 +
  DRM DRIVER FOR FARADAY TVE200 TV ENCODER
  M:    Linus Walleij <linus.walleij@linaro.org>
  S:    Maintained
@@@ -6431,12 -6277,6 +6431,12 @@@ S:    Orphan / Obsolet
  F:    drivers/gpu/drm/i810/
  F:    include/uapi/drm/i810_drm.h
  
 +DRM DRIVER FOR LOGICVC DISPLAY CONTROLLER
 +M:    Paul Kocialkowski <paul.kocialkowski@bootlin.com>
 +S:    Supported
 +T:    git git://anongit.freedesktop.org/drm/drm-misc
 +F:    drivers/gpu/drm/logicvc/
 +
  DRM DRIVER FOR LVDS PANELS
  M:    Laurent Pinchart <laurent.pinchart@ideasonboard.com>
  L:    dri-devel@lists.freedesktop.org
@@@ -6613,17 -6453,12 +6613,17 @@@ S:   Orphan / Obsolet
  F:    drivers/gpu/drm/savage/
  F:    include/uapi/drm/savage_drm.h
  
 -DRM DRIVER FOR SIMPLE FRAMEBUFFERS
 +DRM DRIVER FOR FIRMWARE FRAMEBUFFERS
  M:    Thomas Zimmermann <tzimmermann@suse.de>
 +M:    Javier Martinez Canillas <javierm@redhat.com>
  L:    dri-devel@lists.freedesktop.org
  S:    Maintained
  T:    git git://anongit.freedesktop.org/drm/drm-misc
 +F:    drivers/gpu/drm/drm_aperture.c
  F:    drivers/gpu/drm/tiny/simpledrm.c
 +F:    drivers/video/aperture.c
 +F:    include/drm/drm_aperture.h
 +F:    include/linux/aperture.h
  
  DRM DRIVER FOR SIS VIDEO CARDS
  S:    Orphan / Obsolete
@@@ -6661,12 -6496,6 +6661,12 @@@ DRM DRIVER FOR TDFX VIDEO CARD
  S:    Orphan / Obsolete
  F:    drivers/gpu/drm/tdfx/
  
 +DRM DRIVER FOR TI DLPC3433 MIPI DSI TO DMD BRIDGE
 +M:    Jagan Teki <jagan@amarulasolutions.com>
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/display/bridge/ti,dlpc3433.yaml
 +F:    drivers/gpu/drm/bridge/ti-dlpc3433.c
 +
  DRM DRIVER FOR TI SN65DSI86 BRIDGE CHIP
  R:    Douglas Anderson <dianders@chromium.org>
  F:    Documentation/devicetree/bindings/display/bridge/ti,sn65dsi86.yaml
@@@ -6796,6 -6625,7 +6796,6 @@@ F:      drivers/gpu/drm/bridge
  
  DRM DRIVERS FOR EXYNOS
  M:    Inki Dae <inki.dae@samsung.com>
 -M:    Joonyoung Shim <jy0922.shim@samsung.com>
  M:    Seung-Woo Kim <sw0312.kim@samsung.com>
  M:    Kyungmin Park <kyungmin.park@samsung.com>
  L:    dri-devel@lists.freedesktop.org
@@@ -6824,16 -6654,6 +6824,16 @@@ F:    Documentation/devicetree/bindings/di
  F:    drivers/gpu/drm/imx/
  F:    drivers/gpu/ipu-v3/
  
 +DRM DRIVERS FOR FREESCALE IMX BRIDGE
 +M:    Liu Ying <victor.liu@nxp.com>
 +L:    dri-devel@lists.freedesktop.org
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/display/bridge/fsl,imx8qxp-ldb.yaml
 +F:    Documentation/devicetree/bindings/display/bridge/fsl,imx8qxp-pixel-combiner.yaml
 +F:    Documentation/devicetree/bindings/display/bridge/fsl,imx8qxp-pixel-link.yaml
 +F:    Documentation/devicetree/bindings/display/bridge/fsl,imx8qxp-pxl2dpi.yaml
 +F:    drivers/gpu/drm/bridge/imx/
 +
  DRM DRIVERS FOR GMA500 (Poulsbo, Moorestown and derivative chipsets)
  M:    Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
  L:    dri-devel@lists.freedesktop.org
@@@ -6878,7 -6698,6 +6878,7 @@@ L:      linux-mediatek@lists.infradead.org (
  S:    Supported
  F:    Documentation/devicetree/bindings/display/mediatek/
  F:    drivers/gpu/drm/mediatek/
 +F:    drivers/phy/mediatek/phy-mtk-dp.c
  F:    drivers/phy/mediatek/phy-mtk-hdmi*
  F:    drivers/phy/mediatek/phy-mtk-mipi*
  
@@@ -6888,7 -6707,7 +6888,7 @@@ L:      dri-devel@lists.freedesktop.or
  L:    linux-tegra@vger.kernel.org
  S:    Supported
  T:    git git://anongit.freedesktop.org/tegra/linux.git
 -F:    Documentation/devicetree/bindings/display/tegra/nvidia,tegra20-host1x.txt
 +F:    Documentation/devicetree/bindings/display/tegra/nvidia,tegra20-host1x.yaml
  F:    Documentation/devicetree/bindings/gpu/host1x/
  F:    drivers/gpu/drm/tegra/
  F:    drivers/gpu/host1x/
@@@ -6965,7 -6784,6 +6965,7 @@@ F:      drivers/gpu/drm/omapdrm
  
  DRM DRIVERS FOR V3D
  M:    Emma Anholt <emma@anholt.net>
 +M:    Melissa Wen <mwen@igalia.com>
  S:    Supported
  T:    git git://anongit.freedesktop.org/drm/drm-misc
  F:    Documentation/devicetree/bindings/gpu/brcm,bcm-v3d.yaml
@@@ -7477,13 -7295,6 +7477,13 @@@ L:    netdev@vger.kernel.or
  S:    Maintained
  F:    drivers/net/ethernet/ibm/ehea/
  
 +ELM327 CAN NETWORK DRIVER
 +M:    Max Staudt <max@enpas.org>
 +L:    linux-can@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/networking/device_drivers/can/can327.rst
 +F:    drivers/net/can/can327.c
 +
  EM28XX VIDEO4LINUX DRIVER
  M:    Mauro Carvalho Chehab <mchehab@kernel.org>
  L:    linux-media@vger.kernel.org
@@@ -7494,7 -7305,7 +7494,7 @@@ F:      Documentation/admin-guide/media/em28
  F:    drivers/media/usb/em28xx/
  
  EMBEDDED LINUX
- M:    Matt Mackall <mpm@selenic.com>
+ M:    Olivia Mackall <olivia@selenic.com>
  M:    David Woodhouse <dwmw2@infradead.org>
  L:    linux-embedded@vger.kernel.org
  S:    Maintained
@@@ -7576,8 -7387,6 +7576,8 @@@ F:      include/video/s1d13xxxfb.
  EROFS FILE SYSTEM
  M:    Gao Xiang <xiang@kernel.org>
  M:    Chao Yu <chao@kernel.org>
 +R:    Yue Hu <huyue2@coolpad.com>
 +R:    Jeffle Xu <jefflexu@linux.alibaba.com>
  L:    linux-erofs@lists.ozlabs.org
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs.git
@@@ -7591,13 -7400,6 +7591,13 @@@ S:    Maintaine
  F:    include/linux/errseq.h
  F:    lib/errseq.c
  
 +ESD CAN/USB DRIVERS
 +M:    Frank Jungclaus <frank.jungclaus@esd.eu>
 +R:    socketcan@esd.eu
 +L:    linux-can@vger.kernel.org
 +S:    Maintained
 +F:    drivers/net/can/usb/esd_usb.c
 +
  ET131X NETWORK DRIVER
  M:    Mark Einon <mark.einon@gmail.com>
  S:    Odd Fixes
@@@ -7748,7 -7550,7 +7748,7 @@@ F:      drivers/gpu/drm/exynos/exynos_dp
  
  EXYNOS SYSMMU (IOMMU) driver
  M:    Marek Szyprowski <m.szyprowski@samsung.com>
 -L:    iommu@lists.linux-foundation.org
 +L:    iommu@lists.linux.dev
  S:    Maintained
  F:    drivers/iommu/exynos-iommu.c
  
@@@ -7845,7 -7647,6 +7845,7 @@@ F:      include/uapi/scsi/fc
  
  FILE LOCKING (flock() and fcntl()/lockf())
  M:    Jeff Layton <jlayton@kernel.org>
 +M:    Chuck Lever <chuck.lever@oracle.com>
  L:    linux-fsdevel@vger.kernel.org
  S:    Maintained
  F:    fs/fcntl.c
@@@ -7873,6 -7674,9 +7873,6 @@@ F:      include/linux/fs.
  F:    include/linux/fs_types.h
  F:    include/uapi/linux/fs.h
  F:    include/uapi/linux/openat2.h
 -X:    fs/io-wq.c
 -X:    fs/io-wq.h
 -X:    fs/io_uring.c
  
  FINTEK F75375S HARDWARE MONITOR AND FAN CONTROLLER DRIVER
  M:    Riku Voipio <riku.voipio@iki.fi>
@@@ -7971,7 -7775,6 +7971,7 @@@ FORTIFY_SOURC
  M:    Kees Cook <keescook@chromium.org>
  L:    linux-hardening@vger.kernel.org
  S:    Supported
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git for-next/hardening
  F:    include/linux/fortify-string.h
  F:    lib/test_fortify/*
  F:    scripts/test_fortify.sh
@@@ -8004,21 -7807,6 +8004,21 @@@ F:    Documentation/fpga
  F:    drivers/fpga/
  F:    include/linux/fpga/
  
 +INTEL MAX10 BMC SECURE UPDATES
 +M:    Russ Weight <russell.h.weight@intel.com>
 +L:    linux-fpga@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/ABI/testing/sysfs-driver-intel-m10-bmc-sec-update
 +F:    drivers/fpga/intel-m10-bmc-sec-update.c
 +
 +MICROCHIP POLARFIRE FPGA DRIVERS
 +M:    Conor Dooley <conor.dooley@microchip.com>
 +R:    Ivan Bornyakov <i.bornyakov@metrotek.ru>
 +L:    linux-fpga@vger.kernel.org
 +S:    Supported
 +F:    Documentation/devicetree/bindings/fpga/microchip,mpf-spi-fpga-mgr.yaml
 +F:    drivers/fpga/microchip-spi.c
 +
  FPU EMULATOR
  M:    Bill Metzenthen <billm@melbpc.org.au>
  S:    Maintained
@@@ -8429,7 -8217,6 +8429,7 @@@ GCC PLUGIN
  M:    Kees Cook <keescook@chromium.org>
  L:    linux-hardening@vger.kernel.org
  S:    Maintained
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git for-next/hardening
  F:    Documentation/kbuild/gcc-plugins.rst
  F:    scripts/Makefile.gcc-plugins
  F:    scripts/gcc-plugins/
@@@ -8521,7 -8308,6 +8521,7 @@@ Q:      https://patchwork.kernel.org/project
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/phy/linux-phy.git
  F:    Documentation/devicetree/bindings/phy/
  F:    drivers/phy/
 +F:    include/dt-bindings/phy/
  F:    include/linux/phy/
  
  GENERIC PINCTRL I2C DEMULTIPLEXER DRIVER
@@@ -8685,7 -8471,6 +8685,7 @@@ F:      Documentation/devicetree/bindings/gp
  F:    Documentation/driver-api/gpio/
  F:    drivers/gpio/
  F:    include/asm-generic/gpio.h
 +F:    include/dt-bindings/gpio/
  F:    include/linux/gpio.h
  F:    include/linux/gpio/
  F:    include/linux/of_gpio.h
@@@ -8875,7 -8660,6 +8875,7 @@@ L:      linux-media@vger.kernel.or
  L:    linux-rockchip@lists.infradead.org
  S:    Maintained
  F:    Documentation/devicetree/bindings/media/nxp,imx8mq-vpu.yaml
 +F:    Documentation/devicetree/bindings/media/rockchip,rk3568-vepu.yaml
  F:    Documentation/devicetree/bindings/media/rockchip-vpu.yaml
  F:    drivers/staging/media/hantro/
  
@@@ -8902,7 -8686,7 +8902,7 @@@ F:      include/trace/events/hwmon*.
  K:    (devm_)?hwmon_device_(un)?register(|_with_groups|_with_info)
  
  HARDWARE RANDOM NUMBER GENERATOR CORE
- M:    Matt Mackall <mpm@selenic.com>
+ M:    Olivia Mackall <olivia@selenic.com>
  M:    Herbert Xu <herbert@gondor.apana.org.au>
  L:    linux-crypto@vger.kernel.org
  S:    Odd fixes
@@@ -9152,31 -8936,16 +9152,31 @@@ F:   Documentation/admin-guide/perf/hisi-
  F:    Documentation/admin-guide/perf/hisi-pmu.rst
  F:    drivers/perf/hisilicon
  
 -HISILICON QM AND ZIP Controller DRIVER
 +HISILICON HNS3 PMU DRIVER
 +M:    Guangbin Huang <huangguangbin2@huawei.com>
 +S:    Supported
 +F:    Documentation/admin-guide/perf/hns3-pmu.rst
 +F:    drivers/perf/hisilicon/hns3_pmu.c
 +
 +HISILICON QM DRIVER
 +M:    Weili Qian <qianweili@huawei.com>
  M:    Zhou Wang <wangzhou1@hisilicon.com>
  L:    linux-crypto@vger.kernel.org
  S:    Maintained
 -F:    Documentation/ABI/testing/debugfs-hisi-zip
 +F:    drivers/crypto/hisilicon/Kconfig
 +F:    drivers/crypto/hisilicon/Makefile
  F:    drivers/crypto/hisilicon/qm.c
  F:    drivers/crypto/hisilicon/sgl.c
 -F:    drivers/crypto/hisilicon/zip/
  F:    include/linux/hisi_acc_qm.h
  
 +HISILICON ZIP Controller DRIVER
 +M:    Yang Shen <shenyang39@huawei.com>
 +M:    Zhou Wang <wangzhou1@hisilicon.com>
 +L:    linux-crypto@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/ABI/testing/debugfs-hisi-zip
 +F:    drivers/crypto/hisilicon/zip/
 +
  HISILICON ROCE DRIVER
  M:    Wenpeng Liang <liangwenpeng@huawei.com>
  M:    Weihang Li <liweihang@huawei.com>
@@@ -9312,7 -9081,7 +9312,7 @@@ HTE SUBSYSTE
  M:    Dipen Patel <dipenp@nvidia.com>
  S:    Maintained
  F:    Documentation/devicetree/bindings/timestamp/
 -F:    Documentation/hte/
 +F:    Documentation/driver-api/hte/
  F:    drivers/hte/
  F:    include/linux/hte.h
  
@@@ -9355,7 -9124,6 +9355,7 @@@ F:      drivers/media/platform/st/sti/hv
  
  HWPOISON MEMORY FAILURE HANDLING
  M:    Naoya Horiguchi <naoya.horiguchi@nec.com>
 +R:    Miaohe Lin <linmiaohe@huawei.com>
  L:    linux-mm@kvack.org
  S:    Maintained
  F:    mm/hwpoison-inject.c
@@@ -9404,7 -9172,6 +9404,7 @@@ S:      Supporte
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/hyperv/linux.git
  F:    Documentation/ABI/stable/sysfs-bus-vmbus
  F:    Documentation/ABI/testing/debugfs-hyperv
 +F:    Documentation/virt/hyperv
  F:    Documentation/networking/device_drivers/ethernet/microsoft/netvsc.rst
  F:    arch/arm64/hyperv
  F:    arch/arm64/include/asm/hyperv-tlfs.h
@@@ -9501,7 -9268,6 +9501,7 @@@ T:      git git://git.kernel.org/pub/scm/lin
  F:    Documentation/devicetree/bindings/i2c/i2c.txt
  F:    Documentation/i2c/
  F:    drivers/i2c/*
 +F:    include/dt-bindings/i2c/i2c.h
  F:    include/linux/i2c-dev.h
  F:    include/linux/i2c-smbus.h
  F:    include/linux/i2c.h
@@@ -9517,7 -9283,6 +9517,7 @@@ T:      git git://git.kernel.org/pub/scm/lin
  F:    Documentation/devicetree/bindings/i2c/
  F:    drivers/i2c/algos/
  F:    drivers/i2c/busses/
 +F:    include/dt-bindings/i2c/
  
  I2C-TAOS-EVM DRIVER
  M:    Jean Delvare <jdelvare@suse.com>
@@@ -9750,7 -9515,6 +9750,7 @@@ F:      drivers/input/misc/ideapad_slidebar.
  
  IDMAPPED MOUNTS
  M:    Christian Brauner <brauner@kernel.org>
 +M:    Seth Forshee <sforshee@kernel.org>
  L:    linux-fsdevel@vger.kernel.org
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/brauner/linux.git
@@@ -9843,7 -9607,6 +9843,7 @@@ F:      Documentation/ABI/testing/sysfs-bus-
  F:    Documentation/devicetree/bindings/iio/
  F:    drivers/iio/
  F:    drivers/staging/iio/
 +F:    include/dt-bindings/iio/
  F:    include/linux/iio/
  F:    tools/iio/
  
@@@ -10040,10 -9803,7 +10040,10 @@@ INTEL ASoC DRIVER
  M:    Cezary Rojewski <cezary.rojewski@intel.com>
  M:    Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
  M:    Liam Girdwood <liam.r.girdwood@linux.intel.com>
 -M:    Jie Yang <yang.jie@linux.intel.com>
 +M:    Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
 +M:    Bard Liao <yung-chuan.liao@linux.intel.com>
 +M:    Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
 +M:    Kai Vehmanen <kai.vehmanen@linux.intel.com>
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
  S:    Supported
  F:    sound/soc/intel/
@@@ -10206,7 -9966,7 +10206,7 @@@ F:    drivers/hid/intel-ish-hid
  INTEL IOMMU (VT-d)
  M:    David Woodhouse <dwmw2@infradead.org>
  M:    Lu Baolu <baolu.lu@linux.intel.com>
 -L:    iommu@lists.linux-foundation.org
 +L:    iommu@lists.linux.dev
  S:    Supported
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git
  F:    drivers/iommu/intel/
@@@ -10585,7 -10345,7 +10585,7 @@@ F:   include/linux/iomap.
  IOMMU DRIVERS
  M:    Joerg Roedel <joro@8bytes.org>
  M:    Will Deacon <will@kernel.org>
 -L:    iommu@lists.linux-foundation.org
 +L:    iommu@lists.linux.dev
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git
  F:    Documentation/devicetree/bindings/iommu/
@@@ -10610,7 -10370,9 +10610,7 @@@ L:   io-uring@vger.kernel.or
  S:    Maintained
  T:    git git://git.kernel.dk/linux-block
  T:    git git://git.kernel.dk/liburing
 -F:    fs/io-wq.c
 -F:    fs/io-wq.h
 -F:    fs/io_uring.c
 +F:    io_uring/
  F:    include/linux/io_uring.h
  F:    include/uapi/linux/io_uring.h
  F:    tools/io_uring/
@@@ -10679,7 -10441,7 +10679,7 @@@ F:   Documentation/devicetree/bindings/in
  F:    drivers/irqchip/
  
  ISA
 -M:    William Breathitt Gray <vilhelm.gray@gmail.com>
 +M:    William Breathitt Gray <william.gray@linaro.org>
  S:    Maintained
  F:    Documentation/driver-api/isa.rst
  F:    drivers/base/isa.c
@@@ -10970,17 -10732,6 +10970,17 @@@ F: scripts/mk
  F:    scripts/mod/
  F:    scripts/package/
  
 +KERNEL HARDENING (not covered by other areas)
 +M:    Kees Cook <keescook@chromium.org>
 +L:    linux-hardening@vger.kernel.org
 +S:    Supported
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git for-next/hardening
 +F:    include/linux/overflow.h
 +F:    include/linux/randomize_kstack.h
 +F:    mm/usercopy.c
 +K:    \b(add|choose)_random_kstack_offset\b
 +K:    \b__check_(object_size|heap_object)\b
 +
  KERNEL JANITORS
  L:    kernel-janitors@vger.kernel.org
  S:    Odd Fixes
@@@ -10988,7 -10739,6 +10988,7 @@@ W:   http://kernelnewbies.org/KernelJanit
  
  KERNEL NFSD, SUNRPC, AND LOCKD SERVERS
  M:    Chuck Lever <chuck.lever@oracle.com>
 +M:    Jeff Layton <jlayton@kernel.org>
  L:    linux-nfs@vger.kernel.org
  S:    Supported
  W:    http://nfs.sourceforge.net/
@@@ -11071,7 -10821,6 +11071,7 @@@ M:   Marc Zyngier <maz@kernel.org
  R:    James Morse <james.morse@arm.com>
  R:    Alexandru Elisei <alexandru.elisei@arm.com>
  R:    Suzuki K Poulose <suzuki.poulose@arm.com>
 +R:    Oliver Upton <oliver.upton@linux.dev>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  L:    kvmarm@lists.cs.columbia.edu (moderated for non-subscribers)
  S:    Maintained
@@@ -11114,6 -10863,7 +11114,6 @@@ F:   arch/riscv/include/asm/kvm
  F:    arch/riscv/include/uapi/asm/kvm*
  F:    arch/riscv/kvm/
  F:    tools/testing/selftests/kvm/*/riscv/
 -F:    tools/testing/selftests/kvm/riscv/
  
  KERNEL VIRTUAL MACHINE for s390 (KVM/s390)
  M:    Christian Borntraeger <borntraeger@linux.ibm.com>
@@@ -11138,51 -10888,28 +11138,51 @@@ F:        tools/testing/selftests/kvm/*/s390x
  F:    tools/testing/selftests/kvm/s390x/
  
  KERNEL VIRTUAL MACHINE FOR X86 (KVM/x86)
 +M:    Sean Christopherson <seanjc@google.com>
  M:    Paolo Bonzini <pbonzini@redhat.com>
 -R:    Sean Christopherson <seanjc@google.com>
 -R:    Vitaly Kuznetsov <vkuznets@redhat.com>
 -R:    Wanpeng Li <wanpengli@tencent.com>
 -R:    Jim Mattson <jmattson@google.com>
 -R:    Joerg Roedel <joro@8bytes.org>
  L:    kvm@vger.kernel.org
  S:    Supported
 -W:    http://www.linux-kvm.org
  T:    git git://git.kernel.org/pub/scm/virt/kvm/kvm.git
  F:    arch/x86/include/asm/kvm*
 -F:    arch/x86/include/asm/pvclock-abi.h
  F:    arch/x86/include/asm/svm.h
  F:    arch/x86/include/asm/vmx*.h
  F:    arch/x86/include/uapi/asm/kvm*
  F:    arch/x86/include/uapi/asm/svm.h
  F:    arch/x86/include/uapi/asm/vmx.h
 -F:    arch/x86/kernel/kvm.c
 -F:    arch/x86/kernel/kvmclock.c
  F:    arch/x86/kvm/
  F:    arch/x86/kvm/*/
  
 +KVM PARAVIRT (KVM/paravirt)
 +M:    Paolo Bonzini <pbonzini@redhat.com>
 +R:    Wanpeng Li <wanpengli@tencent.com>
 +R:    Vitaly Kuznetsov <vkuznets@redhat.com>
 +L:    kvm@vger.kernel.org
 +S:    Supported
 +T:    git git://git.kernel.org/pub/scm/virt/kvm/kvm.git
 +F:    arch/x86/kernel/kvm.c
 +F:    arch/x86/kernel/kvmclock.c
 +F:    arch/x86/include/asm/pvclock-abi.h
 +F:    include/linux/kvm_para.h
 +F:    include/uapi/linux/kvm_para.h
 +F:    include/uapi/asm-generic/kvm_para.h
 +F:    include/asm-generic/kvm_para.h
 +F:    arch/um/include/asm/kvm_para.h
 +F:    arch/x86/include/asm/kvm_para.h
 +F:    arch/x86/include/uapi/asm/kvm_para.h
 +
 +KVM X86 HYPER-V (KVM/hyper-v)
 +M:    Vitaly Kuznetsov <vkuznets@redhat.com>
 +M:    Sean Christopherson <seanjc@google.com>
 +M:    Paolo Bonzini <pbonzini@redhat.com>
 +L:    kvm@vger.kernel.org
 +S:    Supported
 +T:    git git://git.kernel.org/pub/scm/virt/kvm/kvm.git
 +F:    arch/x86/kvm/hyperv.*
 +F:    arch/x86/kvm/kvm_onhyperv.*
 +F:    arch/x86/kvm/svm/hyperv.*
 +F:    arch/x86/kvm/svm/svm_onhyperv.*
 +F:    arch/x86/kvm/vmx/evmcs.*
 +
  KERNFS
  M:    Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  M:    Tejun Heo <tj@kernel.org>
@@@ -11361,6 -11088,20 +11361,6 @@@ S:  Maintaine
  F:    include/net/l3mdev.h
  F:    net/l3mdev
  
 -L7 BPF FRAMEWORK
 -M:    John Fastabend <john.fastabend@gmail.com>
 -M:    Daniel Borkmann <daniel@iogearbox.net>
 -M:    Jakub Sitnicki <jakub@cloudflare.com>
 -L:    netdev@vger.kernel.org
 -L:    bpf@vger.kernel.org
 -S:    Maintained
 -F:    include/linux/skmsg.h
 -F:    net/core/skmsg.c
 -F:    net/core/sock_map.c
 -F:    net/ipv4/tcp_bpf.c
 -F:    net/ipv4/udp_bpf.c
 -F:    net/unix/unix_bpf.c
 -
  LANDLOCK SECURITY MODULE
  M:    MickaĂ«l SalaĂŒn <mic@digikod.net>
  L:    linux-security-module@vger.kernel.org
@@@ -11516,7 -11257,6 +11516,7 @@@ M:   Damien Le Moal <damien.lemoal@openso
  L:    linux-ide@vger.kernel.org
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/dlemoal/libata.git
 +F:    Documentation/ABI/testing/sysfs-ata
  F:    Documentation/devicetree/bindings/ata/
  F:    drivers/ata/
  F:    include/linux/ata.h
@@@ -11791,7 -11531,7 +11791,7 @@@ F:   drivers/media/usb/dvb-usb-v2/lmedm04
  LOADPIN SECURITY MODULE
  M:    Kees Cook <keescook@chromium.org>
  S:    Supported
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git lsm/loadpin
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git for-next/hardening
  F:    Documentation/admin-guide/LSM/LoadPin.rst
  F:    security/loadpin/
  
@@@ -11840,7 -11580,6 +11840,7 @@@ F:   drivers/gpu/drm/bridge/lontium-lt891
  LOONGARCH
  M:    Huacai Chen <chenhuacai@kernel.org>
  R:    WANG Xuerui <kernel@xen0n.name>
 +L:    loongarch@lists.linux.dev
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson.git
  F:    arch/loongarch/
@@@ -12455,7 -12194,7 +12455,7 @@@ F:   drivers/net/ieee802154/mcr20a.
  F:    drivers/net/ieee802154/mcr20a.h
  
  MEASUREMENT COMPUTING CIO-DAC IIO DRIVER
 -M:    William Breathitt Gray <vilhelm.gray@gmail.com>
 +M:    William Breathitt Gray <william.gray@linaro.org>
  L:    linux-iio@vger.kernel.org
  S:    Maintained
  F:    drivers/iio/dac/cio-dac.c
@@@ -12696,7 -12435,6 +12696,7 @@@ F:   Documentation/driver-api/media
  F:    Documentation/userspace-api/media/
  F:    drivers/media/
  F:    drivers/staging/media/
 +F:    include/dt-bindings/media/
  F:    include/linux/platform_data/media/
  F:    include/media/
  F:    include/uapi/linux/dvb/
@@@ -12754,7 -12492,7 +12754,7 @@@ F:   drivers/i2c/busses/i2c-mt65xx.
  
  MEDIATEK IOMMU DRIVER
  M:    Yong Wu <yong.wu@mediatek.com>
 -L:    iommu@lists.linux-foundation.org
 +L:    iommu@lists.linux.dev
  L:    linux-mediatek@lists.infradead.org (moderated for non-subscribers)
  S:    Supported
  F:    Documentation/devicetree/bindings/iommu/mediatek*
@@@ -12779,7 -12517,6 +12779,7 @@@ F:   drivers/media/platform/mediatek/vpu
  MEDIATEK MEDIA DRIVER
  M:    Tiffany Lin <tiffany.lin@mediatek.com>
  M:    Andrew-CT Chen <andrew-ct.chen@mediatek.com>
 +M:    Yunfei Dong <yunfei.dong@mediatek.com>
  S:    Supported
  F:    Documentation/devicetree/bindings/media/mediatek,vcodec*.yaml
  F:    Documentation/devicetree/bindings/media/mediatek-vpu.txt
@@@ -12959,6 -12696,7 +12959,6 @@@ L:   netdev@vger.kernel.or
  S:    Supported
  W:    http://www.mellanox.com
  Q:    https://patchwork.kernel.org/project/netdevbpf/list/
 -F:    drivers/net/ethernet/mellanox/mlx5/core/accel/*
  F:    drivers/net/ethernet/mellanox/mlx5/core/en_accel/*
  F:    drivers/net/ethernet/mellanox/mlx5/core/fpga/*
  F:    include/linux/mlx5/mlx5_ifc_fpga.h
@@@ -13098,8 -12836,9 +13098,8 @@@ M:   Andrew Morton <akpm@linux-foundation
  L:    linux-mm@kvack.org
  S:    Maintained
  W:    http://www.linux-mm.org
 -T:    quilt https://ozlabs.org/~akpm/mmotm/
 -T:    quilt https://ozlabs.org/~akpm/mmots/
 -T:    git git://github.com/hnaz/linux-mm.git
 +T:    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/memory_hotplug.h
  F:    include/linux/mm.h
@@@ -13109,18 -12848,6 +13109,18 @@@ F: include/linux/vmalloc.
  F:    mm/
  F:    tools/testing/selftests/vm/
  
 +MEMORY HOT(UN)PLUG
 +M:    David Hildenbrand <david@redhat.com>
 +M:    Oscar Salvador <osalvador@suse.de>
 +L:    linux-mm@kvack.org
 +S:    Maintained
 +F:    Documentation/admin-guide/mm/memory-hotplug.rst
 +F:    Documentation/core-api/memory-hotplug.rst
 +F:    drivers/base/memory.c
 +F:    include/linux/memory_hotplug.h
 +F:    mm/memory_hotplug.c
 +F:    tools/testing/selftests/memory-hotplug/
 +
  MEMORY TECHNOLOGY DEVICES (MTD)
  M:    Miquel Raynal <miquel.raynal@bootlin.com>
  M:    Richard Weinberger <richard@nod.at>
@@@ -13314,7 -13041,6 +13314,7 @@@ M:   UNGLinuxDriver@microchip.co
  L:    netdev@vger.kernel.org
  S:    Maintained
  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/platform_data/microchip-ksz.h
  F:    net/dsa/tag_ksz.c
@@@ -13374,14 -13100,6 +13374,14 @@@ S: Supporte
  F:    Documentation/devicetree/bindings/mtd/atmel-nand.txt
  F:    drivers/mtd/nand/raw/atmel/*
  
 +MICROCHIP OTPC DRIVER
 +M:    Claudiu Beznea <claudiu.beznea@microchip.com>
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +S:    Supported
 +F:    Documentation/devicetree/bindings/nvmem/microchip,sama7g5-otpc.yaml
 +F:    drivers/nvmem/microchip-otpc.c
 +F:    include/dt-bindings/nvmem/microchip,sama7g5-otpc.h
 +
  MICROCHIP PWM DRIVER
  M:    Claudiu Beznea <claudiu.beznea@microchip.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@@ -13986,11 -13704,12 +13986,11 @@@ L:        netdev@vger.kernel.or
  S:    Maintained
  F:    net/sched/sch_netem.c
  
 -NETERION 10GbE DRIVERS (s2io/vxge)
 +NETERION 10GbE DRIVERS (s2io)
  M:    Jon Mason <jdmason@kudzu.us>
  L:    netdev@vger.kernel.org
  S:    Supported
  F:    Documentation/networking/device_drivers/ethernet/neterion/s2io.rst
 -F:    Documentation/networking/device_drivers/ethernet/neterion/vxge.rst
  F:    drivers/net/ethernet/neterion/
  
  NETFILTER
@@@ -14073,7 -13792,6 +14073,7 @@@ T:   git git://git.kernel.org/pub/scm/lin
  F:    Documentation/devicetree/bindings/net/
  F:    drivers/connector/
  F:    drivers/net/
 +F:    include/dt-bindings/net/
  F:    include/linux/etherdevice.h
  F:    include/linux/fcdevice.h
  F:    include/linux/fddidevice.h
@@@ -14225,6 -13943,7 +14225,6 @@@ F:   net/ipv6/tcp*.
  NETWORKING [TLS]
  M:    Boris Pismenny <borisp@nvidia.com>
  M:    John Fastabend <john.fastabend@gmail.com>
 -M:    Daniel Borkmann <daniel@iogearbox.net>
  M:    Jakub Kicinski <kuba@kernel.org>
  L:    netdev@vger.kernel.org
  S:    Maintained
@@@ -14515,8 -14234,7 +14515,8 @@@ S:   Maintaine
  F:    drivers/net/phy/nxp-c45-tja11xx.c
  
  NXP FSPI DRIVER
 -M:    Ashish Kumar <ashish.kumar@nxp.com>
 +M:    Han Xu <han.xu@nxp.com>
 +M:    Haibo Chen <haibo.chen@nxp.com>
  R:    Yogesh Gaur <yogeshgaur.83@gmail.com>
  L:    linux-spi@vger.kernel.org
  S:    Maintained
@@@ -14534,7 -14252,7 +14534,7 @@@ F:   drivers/iio/gyro/fxas21002c_i2c.
  F:    drivers/iio/gyro/fxas21002c_spi.c
  
  NXP i.MX CLOCK DRIVERS
 -M:    Abel Vesa <abel.vesa@nxp.com>
 +M:    Abel Vesa <abelvesa@kernel.org>
  L:    linux-clk@vger.kernel.org
  L:    linux-imx@nxp.com
  S:    Maintained
@@@ -14622,8 -14340,9 +14622,8 @@@ F:   Documentation/devicetree/bindings/so
  F:    sound/soc/codecs/tfa989x.c
  
  NXP-NCI NFC DRIVER
 -R:    Charles Gorand <charles.gorand@effinnov.com>
  L:    linux-nfc@lists.01.org (subscribers-only)
 -S:    Supported
 +S:    Orphan
  F:    Documentation/devicetree/bindings/net/nfc/nxp,nci.yaml
  F:    drivers/nfc/nxp-nci
  
@@@ -14991,7 -14710,6 +14991,7 @@@ M:   Daniel Scally <djrscally@gmail.com
  L:    linux-media@vger.kernel.org
  S:    Maintained
  T:    git git://linuxtv.org/media_tree.git
 +F:    Documentation/devicetree/bindings/media/i2c/ovti,ov5693.yaml
  F:    drivers/media/i2c/ov5693.c
  
  OMNIVISION OV5695 SENSOR DRIVER
@@@ -15142,7 -14860,6 +15142,7 @@@ F:   include/dt-bindings
  
  OPENCOMPUTE PTP CLOCK DRIVER
  M:    Jonathan Lemon <jonathan.lemon@gmail.com>
 +M:    Vadim Fedorenko <vadfed@fb.com>
  L:    netdev@vger.kernel.org
  S:    Maintained
  F:    drivers/ptp/ptp_ocp.c
@@@ -15152,7 -14869,7 +15152,7 @@@ M:   Peter Korsgaard <peter@korsgaard.com
  M:    Andrew Lunn <andrew@lunn.ch>
  L:    linux-i2c@vger.kernel.org
  S:    Maintained
 -F:    Documentation/devicetree/bindings/i2c/i2c-ocores.txt
 +F:    Documentation/devicetree/bindings/i2c/opencores,i2c-ocores.yaml
  F:    Documentation/i2c/busses/i2c-ocores.rst
  F:    drivers/i2c/busses/i2c-ocores.c
  F:    include/linux/platform_data/i2c-ocores.h
@@@ -16003,7 -15720,7 +16003,7 @@@ PIN CONTROLLER - FREESCAL
  M:    Dong Aisheng <aisheng.dong@nxp.com>
  M:    Fabio Estevam <festevam@gmail.com>
  M:    Shawn Guo <shawnguo@kernel.org>
 -M:    Stefan Agner <stefan@agner.ch>
 +M:    Jacky Bai <ping.bai@nxp.com>
  R:    Pengutronix Kernel Team <kernel@pengutronix.de>
  L:    linux-gpio@vger.kernel.org
  S:    Maintained
@@@ -16013,7 -15730,7 +16013,7 @@@ F:   drivers/pinctrl/freescale
  PIN CONTROLLER - INTEL
  M:    Mika Westerberg <mika.westerberg@linux.intel.com>
  M:    Andy Shevchenko <andy@kernel.org>
 -S:    Maintained
 +S:    Supported
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/pinctrl/intel.git
  F:    drivers/pinctrl/intel/
  
@@@ -16107,14 -15824,6 +16107,14 @@@ S: Maintaine
  F:    Documentation/devicetree/bindings/iio/chemical/plantower,pms7003.yaml
  F:    drivers/iio/chemical/pms7003.c
  
 +PLATFORM FEATURE INFRASTRUCTURE
 +M:    Juergen Gross <jgross@suse.com>
 +S:    Maintained
 +F:    arch/*/include/asm/platform-feature.h
 +F:    include/asm-generic/platform-feature.h
 +F:    include/linux/platform-feature.h
 +F:    kernel/platform-feature.c
 +
  PLDMFW LIBRARY
  M:    Jacob Keller <jacob.e.keller@intel.com>
  S:    Maintained
@@@ -16479,6 -16188,7 +16479,6 @@@ F:   drivers/media/rc/pwm-ir-tx.
  PWM SUBSYSTEM
  M:    Thierry Reding <thierry.reding@gmail.com>
  R:    Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
 -M:    Lee Jones <lee.jones@linaro.org>
  L:    linux-pwm@vger.kernel.org
  S:    Maintained
  Q:    https://patchwork.ozlabs.org/project/linux-pwm/list/
@@@ -16489,7 -16199,6 +16489,7 @@@ F:   Documentation/driver-api/pwm.rs
  F:    drivers/gpio/gpio-mvebu.c
  F:    drivers/pwm/
  F:    drivers/video/backlight/pwm_bl.c
 +F:    include/dt-bindings/pwm/
  F:    include/linux/pwm.h
  F:    include/linux/pwm_backlight.h
  K:    pwm_(config|apply_state|ops)
@@@ -16535,7 -16244,7 +16535,7 @@@ F:   drivers/crypto/qat
  
  QCOM AUDIO (ASoC) DRIVERS
  M:    Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
 -M:    Banajit Goswami <bgoswami@codeaurora.org>
 +M:    Banajit Goswami <bgoswami@quicinc.com>
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
  S:    Supported
  F:    sound/soc/codecs/lpass-va-macro.c
@@@ -16762,7 -16471,7 +16762,7 @@@ F:   Documentation/devicetree/bindings/op
  F:    drivers/cpufreq/qcom-cpufreq-nvmem.c
  
  QUALCOMM CRYPTO DRIVERS
 -M:    Thara Gopinath <thara.gopinath@linaro.org>
 +M:    Thara Gopinath <thara.gopinath@gmail.com>
  L:    linux-crypto@vger.kernel.org
  L:    linux-arm-msm@vger.kernel.org
  S:    Maintained
@@@ -16814,16 -16523,9 +16814,16 @@@ S: Maintaine
  F:    Documentation/devicetree/bindings/i2c/i2c-qcom-cci.txt
  F:    drivers/i2c/busses/i2c-qcom-cci.c
  
 +QUALCOMM INTERCONNECT BWMON DRIVER
 +M:    Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
 +L:    linux-arm-msm@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/interconnect/qcom,msm8998-bwmon.yaml
 +F:    drivers/soc/qcom/icc-bwmon.c
 +
  QUALCOMM IOMMU
  M:    Rob Clark <robdclark@gmail.com>
 -L:    iommu@lists.linux-foundation.org
 +L:    iommu@lists.linux.dev
  L:    linux-arm-msm@vger.kernel.org
  S:    Maintained
  F:    drivers/iommu/arm/arm-smmu/qcom_iommu.c
@@@ -16879,7 -16581,7 +16879,7 @@@ F:   include/linux/if_rmnet.
  
  QUALCOMM TSENS THERMAL DRIVER
  M:    Amit Kucheria <amitk@kernel.org>
 -M:    Thara Gopinath <thara.gopinath@linaro.org>
 +M:    Thara Gopinath <thara.gopinath@gmail.com>
  L:    linux-pm@vger.kernel.org
  L:    linux-arm-msm@vger.kernel.org
  S:    Maintained
@@@ -17336,19 -17038,6 +17336,19 @@@ S: Supporte
  F:    Documentation/devicetree/bindings/iio/adc/renesas,rzg2l-adc.yaml
  F:    drivers/iio/adc/rzg2l_adc.c
  
 +RENESAS RZ/N1 A5PSW SWITCH DRIVER
 +M:    ClĂ©ment LĂ©ger <clement.leger@bootlin.com>
 +L:    linux-renesas-soc@vger.kernel.org
 +L:    netdev@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/net/dsa/renesas,rzn1-a5psw.yaml
 +F:    Documentation/devicetree/bindings/net/pcs/renesas,rzn1-miic.yaml
 +F:    drivers/net/dsa/rzn1_a5psw*
 +F:    drivers/net/pcs/pcs-rzn1-miic.c
 +F:    include/dt-bindings/net/pcs-rzn1-miic.h
 +F:    include/linux/pcs-rzn1-miic.h
 +F:    net/dsa/tag_rzn1_a5psw.c
 +
  RENESAS RZ/N1 RTC CONTROLLER DRIVER
  M:    Miquel Raynal <miquel.raynal@bootlin.com>
  L:    linux-rtc@vger.kernel.org
@@@ -17447,17 -17136,13 +17447,17 @@@ N:        risc
  K:    riscv
  
  RISC-V/MICROCHIP POLARFIRE SOC SUPPORT
 -M:    Lewis Hanly <lewis.hanly@microchip.com>
  M:    Conor Dooley <conor.dooley@microchip.com>
 +M:    Daire McNamara <daire.mcnamara@microchip.com>
  L:    linux-riscv@lists.infradead.org
  S:    Supported
  F:    arch/riscv/boot/dts/microchip/
 +F:    drivers/char/hw_random/mpfs-rng.c
 +F:    drivers/clk/microchip/clk-mpfs.c
  F:    drivers/mailbox/mailbox-mpfs.c
 +F:    drivers/pci/controller/pcie-microchip-host.c
  F:    drivers/soc/microchip/
 +F:    drivers/spi/spi-microchip-core.c
  F:    include/soc/microchip/mpfs.h
  
  RNBD BLOCK DRIVERS
@@@ -18153,7 -17838,7 +18153,7 @@@ M:   Kees Cook <keescook@chromium.org
  R:    Andy Lutomirski <luto@amacapital.net>
  R:    Will Drewry <wad@chromium.org>
  S:    Supported
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git seccomp
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git for-next/seccomp
  F:    Documentation/userspace-api/seccomp_filter.rst
  F:    include/linux/seccomp.h
  F:    include/uapi/linux/seccomp.h
@@@ -18224,13 -17909,12 +18224,13 @@@ S:        Supporte
  F:    Documentation/admin-guide/security-bugs.rst
  
  SECURITY SUBSYSTEM
 +M:    Paul Moore <paul@paul-moore.com>
  M:    James Morris <jmorris@namei.org>
  M:    "Serge E. Hallyn" <serge@hallyn.com>
  L:    linux-security-module@vger.kernel.org (suggested Cc:)
  S:    Supported
  W:    http://kernsec.org/
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/pcmoore/lsm.git
  F:    security/
  X:    security/selinux/
  
@@@ -18333,7 -18017,6 +18333,7 @@@ SFF/SFP/SFP+ MODULE SUPPOR
  M:    Russell King <linux@armlinux.org.uk>
  L:    netdev@vger.kernel.org
  S:    Maintained
 +F:    Documentation/devicetree/bindings/net/sff,sfp.yaml
  F:    drivers/net/phy/phylink.c
  F:    drivers/net/phy/sfp*
  F:    include/linux/mdio/mdio-i2c.h
@@@ -18355,7 -18038,6 +18355,7 @@@ F:   drivers/misc/sgi-xp
  
  SHARED MEMORY COMMUNICATIONS (SMC) SOCKETS
  M:    Karsten Graul <kgraul@linux.ibm.com>
 +M:    Wenjia Zhang <wenjia@linux.ibm.com>
  L:    linux-s390@vger.kernel.org
  S:    Supported
  W:    http://www.ibm.com/developerworks/linux/linux390/
@@@ -18620,12 -18302,6 +18620,12 @@@ T: git git://git.kernel.org/pub/scm/lin
  F:    include/linux/sl?b*.h
  F:    mm/sl?b*
  
 +SLCAN CAN NETWORK DRIVER
 +M:    Dario Binacchi <dario.binacchi@amarulasolutions.com>
 +L:    linux-can@vger.kernel.org
 +S:    Maintained
 +F:    drivers/net/can/slcan/
 +
  SLEEPABLE READ-COPY UPDATE (SRCU)
  M:    Lai Jiangshan <jiangshanlai@gmail.com>
  M:    "Paul E. McKenney" <paulmck@kernel.org>
@@@ -18994,10 -18670,8 +18994,10 @@@ F: sound/soc
  SOUND - SOUND OPEN FIRMWARE (SOF) DRIVERS
  M:    Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
  M:    Liam Girdwood <lgirdwood@gmail.com>
 +M:    Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
 +M:    Bard Liao <yung-chuan.liao@linux.intel.com>
  M:    Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
 -M:    Kai Vehmanen <kai.vehmanen@linux.intel.com>
 +R:    Kai Vehmanen <kai.vehmanen@linux.intel.com>
  M:    Daniel Baluta <daniel.baluta@nxp.com>
  L:    sound-open-firmware@alsa-project.org (moderated for non-subscribers)
  S:    Supported
@@@ -19476,7 -19150,7 +19476,7 @@@ F:   arch/x86/boot/video
  
  SWIOTLB SUBSYSTEM
  M:    Christoph Hellwig <hch@infradead.org>
 -L:    iommu@lists.linux-foundation.org
 +L:    iommu@lists.linux.dev
  S:    Supported
  W:    http://git.infradead.org/users/hch/dma-mapping.git
  T:    git git://git.infradead.org/users/hch/dma-mapping.git
@@@ -19546,7 -19220,7 +19546,7 @@@ F:   arch/arc/plat-axs10
  SYNOPSYS AXS10x RESET CONTROLLER DRIVER
  M:    Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
  S:    Supported
 -F:    Documentation/devicetree/bindings/reset/snps,axs10x-reset.txt
 +F:    Documentation/devicetree/bindings/reset/snps,axs10x-reset.yaml
  F:    drivers/reset/reset-axs10x.c
  
  SYNOPSYS CREG GPIO DRIVER
@@@ -19614,7 -19288,7 +19614,7 @@@ R:   Andy Shevchenko <andriy.shevchenko@l
  R:    Mika Westerberg <mika.westerberg@linux.intel.com>
  R:    Jan Dabros <jsd@semihalf.com>
  L:    linux-i2c@vger.kernel.org
 -S:    Maintained
 +S:    Supported
  F:    drivers/i2c/busses/i2c-designware-*
  
  SYNOPSYS DESIGNWARE MMC/SD/SDIO DRIVER
@@@ -19956,7 -19630,7 +19956,7 @@@ M:   Sowjanya Komatineni <skomatineni@nvi
  L:    linux-media@vger.kernel.org
  L:    linux-tegra@vger.kernel.org
  S:    Maintained
 -F:    Documentation/devicetree/bindings/display/tegra/nvidia,tegra20-host1x.txt
 +F:    Documentation/devicetree/bindings/display/tegra/nvidia,tegra20-host1x.yaml
  F:    drivers/staging/media/tegra-video/
  
  TEGRA XUSB PADCTL DRIVER
@@@ -20079,7 -19753,6 +20079,7 @@@ F:   Documentation/ABI/testing/sysfs-clas
  F:    Documentation/devicetree/bindings/thermal/
  F:    Documentation/driver-api/thermal/
  F:    drivers/thermal/
 +F:    include/dt-bindings/thermal/
  F:    include/linux/cpu_cooling.h
  F:    include/linux/thermal.h
  F:    include/uapi/linux/thermal.h
@@@ -20554,7 -20227,7 +20554,7 @@@ F:   tools/tracing/rtla
  
  TRADITIONAL CHINESE DOCUMENTATION
  M:    Hu Haowen <src.res@email.cn>
 -L:    linux-doc-tw-discuss@lists.sourceforge.net
 +L:    linux-doc-tw-discuss@lists.sourceforge.net (moderated for non-subscribers)
  S:    Maintained
  W:    https://github.com/srcres258/linux-doc
  T:    git git://github.com/srcres258/linux-doc.git doc-zh-tw
@@@ -20674,13 -20347,6 +20674,13 @@@ F: Documentation/filesystems/ubifs-auth
  F:    Documentation/filesystems/ubifs.rst
  F:    fs/ubifs/
  
 +UBLK USERSPACE BLOCK DRIVER
 +M:    Ming Lei <ming.lei@redhat.com>
 +L:    linux-block@vger.kernel.org
 +S:    Maintained
 +F:    drivers/block/ublk_drv.c
 +F:    include/uapi/linux/ublk_cmd.h
 +
  UCLINUX (M68KNOMMU AND COLDFIRE)
  M:    Greg Ungerer <gerg@linux-m68k.org>
  L:    linux-m68k@lists.linux-m68k.org
@@@ -21029,7 -20695,6 +21029,7 @@@ T:   git git://git.kernel.org/pub/scm/lin
  F:    Documentation/devicetree/bindings/usb/
  F:    Documentation/usb/
  F:    drivers/usb/
 +F:    include/dt-bindings/usb/
  F:    include/linux/usb.h
  F:    include/linux/usb/
  
@@@ -21384,7 -21049,6 +21384,7 @@@ M:   Jason Wang <jasowang@redhat.com
  L:    virtualization@lists.linux-foundation.org
  S:    Maintained
  F:    Documentation/ABI/testing/sysfs-bus-vdpa
 +F:    Documentation/ABI/testing/sysfs-class-vduse
  F:    Documentation/devicetree/bindings/virtio/
  F:    drivers/block/virtio_blk.c
  F:    drivers/crypto/virtio/
@@@ -21753,13 -21417,6 +21753,13 @@@ L: linux-input@vger.kernel.or
  S:    Maintained
  F:    drivers/input/tablet/wacom_serial4.c
  
 +WANGXUN ETHERNET DRIVER
 +M:    Jiawen Wu <jiawenwu@trustnetic.com>
 +L:    netdev@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/networking/device_drivers/ethernet/wangxun/txgbe.rst
 +F:    drivers/net/ethernet/wangxun/
 +
  WATCHDOG DEVICE DRIVERS
  M:    Wim Van Sebroeck <wim@linux-watchdog.org>
  M:    Guenter Roeck <linux@roeck-us.net>
@@@ -21803,13 -21460,13 +21803,13 @@@ S:        Maintaine
  F:    drivers/media/rc/winbond-cir.c
  
  WINSYSTEMS EBC-C384 WATCHDOG DRIVER
 -M:    William Breathitt Gray <vilhelm.gray@gmail.com>
 +M:    William Breathitt Gray <william.gray@linaro.org>
  L:    linux-watchdog@vger.kernel.org
  S:    Maintained
  F:    drivers/watchdog/ebc-c384_wdt.c
  
  WINSYSTEMS WS16C48 GPIO DRIVER
 -M:    William Breathitt Gray <vilhelm.gray@gmail.com>
 +M:    William Breathitt Gray <william.gray@linaro.org>
  L:    linux-gpio@vger.kernel.org
  S:    Maintained
  F:    drivers/gpio/gpio-ws16c48.c
@@@ -22076,7 -21733,8 +22076,7 @@@ F:   include/uapi/linux/if_xdp.
  F:    include/uapi/linux/xdp_diag.h
  F:    include/net/netns/xdp.h
  F:    net/xdp/
 -F:    samples/bpf/xdpsock*
 -F:    tools/lib/bpf/xsk*
 +F:    tools/testing/selftests/bpf/*xsk*
  
  XEN BLOCK SUBSYSTEM
  M:    Roger Pau MonnĂ© <roger.pau@citrix.com>
@@@ -22166,7 -21824,7 +22166,7 @@@ XEN SWIOTLB SUBSYSTE
  M:    Juergen Gross <jgross@suse.com>
  M:    Stefano Stabellini <sstabellini@kernel.org>
  L:    xen-devel@lists.xenproject.org (moderated for non-subscribers)
 -L:    iommu@lists.linux-foundation.org
 +L:    iommu@lists.linux.dev
  S:    Supported
  F:    arch/x86/xen/*swiotlb*
  F:    drivers/xen/*swiotlb*
@@@ -22316,7 -21974,7 +22316,7 @@@ F:   include/linux/yam.
  YAMA SECURITY MODULE
  M:    Kees Cook <keescook@chromium.org>
  S:    Supported
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git yama/tip
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git for-next/hardening
  F:    Documentation/admin-guide/LSM/Yama.rst
  F:    security/yama/
  
diff --combined drivers/base/core.c
index 460d6f163e41bf1c849b3b54ef9ef551b75094f3,ccdd5b4295dee6cd51958c3c649c5e854cdee83a..753e7cca0f40edc7ee39d4bf0d3d06101341d170
@@@ -54,6 -54,7 +54,7 @@@ static unsigned int defer_sync_state_co
  static DEFINE_MUTEX(fwnode_link_lock);
  static bool fw_devlink_is_permissive(void);
  static bool fw_devlink_drv_reg_done;
+ static bool fw_devlink_best_effort;
  
  /**
   * fwnode_link_add - Create a link between two fwnode_handles.
@@@ -486,18 -487,7 +487,18 @@@ static void device_link_release_fn(stru
        /* Ensure that all references to the link object have been dropped. */
        device_link_synchronize_removal();
  
 -      pm_runtime_release_supplier(link, true);
 +      pm_runtime_release_supplier(link);
 +      /*
 +       * If supplier_preactivated is set, the link has been dropped between
 +       * the pm_runtime_get_suppliers() and pm_runtime_put_suppliers() calls
 +       * in __driver_probe_device().  In that case, drop the supplier's
 +       * PM-runtime usage counter to remove the reference taken by
 +       * pm_runtime_get_suppliers().
 +       */
 +      if (link->supplier_preactivated)
 +              pm_runtime_put_noidle(link->supplier);
 +
 +      pm_request_idle(link->supplier);
  
        put_device(link->consumer);
        put_device(link->supplier);
@@@ -976,6 -966,12 +977,12 @@@ static void device_links_missing_suppli
        }
  }
  
+ static bool dev_is_best_effort(struct device *dev)
+ {
+       return (fw_devlink_best_effort && dev->can_match) ||
+               (dev->fwnode && (dev->fwnode->flags & FWNODE_FLAG_BEST_EFFORT));
+ }
  /**
   * device_links_check_suppliers - Check presence of supplier drivers.
   * @dev: Consumer device.
  int device_links_check_suppliers(struct device *dev)
  {
        struct device_link *link;
-       int ret = 0;
+       int ret = 0, fwnode_ret = 0;
        struct fwnode_handle *sup_fw;
  
        /*
                sup_fw = list_first_entry(&dev->fwnode->suppliers,
                                          struct fwnode_link,
                                          c_hook)->supplier;
-               dev_err_probe(dev, -EPROBE_DEFER, "wait for supplier %pfwP\n",
-                             sup_fw);
-               mutex_unlock(&fwnode_link_lock);
-               return -EPROBE_DEFER;
+               if (!dev_is_best_effort(dev)) {
+                       fwnode_ret = -EPROBE_DEFER;
+                       dev_err_probe(dev, -EPROBE_DEFER,
+                                   "wait for supplier %pfwP\n", sup_fw);
+               } else {
+                       fwnode_ret = -EAGAIN;
+               }
        }
        mutex_unlock(&fwnode_link_lock);
+       if (fwnode_ret == -EPROBE_DEFER)
+               return fwnode_ret;
  
        device_links_write_lock();
  
  
                if (link->status != DL_STATE_AVAILABLE &&
                    !(link->flags & DL_FLAG_SYNC_STATE_ONLY)) {
+                       if (dev_is_best_effort(dev) &&
+                           link->flags & DL_FLAG_INFERRED &&
+                           !link->supplier->can_match) {
+                               ret = -EAGAIN;
+                               continue;
+                       }
                        device_links_missing_supplier(dev);
                        dev_err_probe(dev, -EPROBE_DEFER,
                                      "supplier %s not ready\n",
        dev->links.status = DL_DEV_PROBING;
  
        device_links_write_unlock();
-       return ret;
+       return ret ? ret : fwnode_ret;
  }
  
  /**
@@@ -1300,6 -1310,18 +1321,18 @@@ void device_links_driver_bound(struct d
                         * save to drop the managed link completely.
                         */
                        device_link_drop_managed(link);
+               } else if (dev_is_best_effort(dev) &&
+                          link->flags & DL_FLAG_INFERRED &&
+                          link->status != DL_STATE_CONSUMER_PROBE &&
+                          !link->supplier->can_match) {
+                       /*
+                        * When dev_is_best_effort() is true, we ignore device
+                        * links to suppliers that don't have a driver.  If the
+                        * consumer device still managed to probe, there's no
+                        * point in maintaining a device link in a weird state
+                        * (consumer probed before supplier). So delete it.
+                        */
+                       device_link_drop_managed(link);
                } else {
                        WARN_ON(link->status != DL_STATE_CONSUMER_PROBE);
                        WRITE_ONCE(link->status, DL_STATE_ACTIVE);
@@@ -1592,7 -1614,7 +1625,7 @@@ static int __init fw_devlink_setup(cha
  }
  early_param("fw_devlink", fw_devlink_setup);
  
- static bool fw_devlink_strict;
+ static bool fw_devlink_strict = true;
  static int __init fw_devlink_strict_setup(char *arg)
  {
        return strtobool(arg, &fw_devlink_strict);
@@@ -1666,6 -1688,62 +1699,62 @@@ void fw_devlink_drivers_done(void
        device_links_write_unlock();
  }
  
+ /**
+  * wait_for_init_devices_probe - Try to probe any device needed for init
+  *
+  * Some devices might need to be probed and bound successfully before the kernel
+  * boot sequence can finish and move on to init/userspace. For example, a
+  * network interface might need to be bound to be able to mount a NFS rootfs.
+  *
+  * With fw_devlink=on by default, some of these devices might be blocked from
+  * probing because they are waiting on a optional supplier that doesn't have a
+  * driver. While fw_devlink will eventually identify such devices and unblock
+  * the probing automatically, it might be too late by the time it unblocks the
+  * probing of devices. For example, the IP4 autoconfig might timeout before
+  * fw_devlink unblocks probing of the network interface.
+  *
+  * This function is available to temporarily try and probe all devices that have
+  * a driver even if some of their suppliers haven't been added or don't have
+  * drivers.
+  *
+  * The drivers can then decide which of the suppliers are optional vs mandatory
+  * and probe the device if possible. By the time this function returns, all such
+  * "best effort" probes are guaranteed to be completed. If a device successfully
+  * probes in this mode, we delete all fw_devlink discovered dependencies of that
+  * device where the supplier hasn't yet probed successfully because they have to
+  * be optional dependencies.
+  *
+  * Any devices that didn't successfully probe go back to being treated as if
+  * this function was never called.
+  *
+  * This also means that some devices that aren't needed for init and could have
+  * waited for their optional supplier to probe (when the supplier's module is
+  * loaded later on) would end up probing prematurely with limited functionality.
+  * So call this function only when boot would fail without it.
+  */
+ void __init wait_for_init_devices_probe(void)
+ {
+       if (!fw_devlink_flags || fw_devlink_is_permissive())
+               return;
+       /*
+        * Wait for all ongoing probes to finish so that the "best effort" is
+        * only applied to devices that can't probe otherwise.
+        */
+       wait_for_device_probe();
+       pr_info("Trying to probe devices needed for running init ...\n");
+       fw_devlink_best_effort = true;
+       driver_deferred_probe_trigger();
+       /*
+        * Wait for all "best effort" probes to finish before going back to
+        * normal enforcement.
+        */
+       wait_for_device_probe();
+       fw_devlink_best_effort = false;
+ }
  static void fw_devlink_unblock_consumers(struct device *dev)
  {
        struct device_link *link;
@@@ -3843,6 -3921,26 +3932,26 @@@ struct device *device_find_child_by_nam
  }
  EXPORT_SYMBOL_GPL(device_find_child_by_name);
  
+ static int match_any(struct device *dev, void *unused)
+ {
+       return 1;
+ }
+ /**
+  * device_find_any_child - device iterator for locating a child device, if any.
+  * @parent: parent struct device
+  *
+  * This is similar to the device_find_child() function above, but it
+  * returns a reference to a child device, if any.
+  *
+  * NOTE: you will need to drop the reference with put_device() after use.
+  */
+ struct device *device_find_any_child(struct device *parent)
+ {
+       return device_find_child(parent, NULL, match_any);
+ }
+ EXPORT_SYMBOL_GPL(device_find_any_child);
  int __init devices_init(void)
  {
        devices_kset = kset_create_and_add("devices", &device_uevent_ops, NULL);
index 55a10e6d4e2a755a20ae3f830103f6dec53697a1,3e86772d5fac5d3378c2505d48056e7eaeb2da37..5a2e0232862e0a7c4a4fd8ed77073e6cace3a42c
@@@ -222,9 -222,6 +222,9 @@@ static void genpd_debug_remove(struct g
  {
        struct dentry *d;
  
 +      if (!genpd_debugfs_dir)
 +              return;
 +
        d = debugfs_lookup(genpd->name, genpd_debugfs_dir);
        debugfs_remove(d);
  }
@@@ -2733,7 -2730,7 +2733,7 @@@ static int __genpd_dev_pm_attach(struc
                mutex_unlock(&gpd_list_lock);
                dev_dbg(dev, "%s() failed to find PM domain: %ld\n",
                        __func__, PTR_ERR(pd));
-               return driver_deferred_probe_check_state(base_dev);
+               return -ENODEV;
        }
  
        dev_dbg(dev, "adding to PM domain %s\n", pd->name);
diff --combined drivers/spi/spi.c
index 1c14d682ffedd054e80b618c51a14fc5494644bf,b04be04dddfae6b9bb7c12e8473f380b5a497926..8f97a3eacdeab01d738036593faee2ac039988e2
@@@ -33,7 -33,6 +33,7 @@@
  #include <linux/idr.h>
  #include <linux/platform_data/x86/apple.h>
  #include <linux/ptp_clock_kernel.h>
 +#include <linux/percpu.h>
  
  #define CREATE_TRACE_POINTS
  #include <trace/events/spi.h>
@@@ -50,7 -49,6 +50,7 @@@ static void spidev_release(struct devic
  
        spi_controller_put(spi->controller);
        kfree(spi->driver_override);
 +      free_percpu(spi->pcpu_statistics);
        kfree(spi);
  }
  
@@@ -95,47 -93,6 +95,47 @@@ static ssize_t driver_override_show(str
  }
  static DEVICE_ATTR_RW(driver_override);
  
 +static struct spi_statistics *spi_alloc_pcpu_stats(struct device *dev)
 +{
 +      struct spi_statistics __percpu *pcpu_stats;
 +
 +      if (dev)
 +              pcpu_stats = devm_alloc_percpu(dev, struct spi_statistics);
 +      else
 +              pcpu_stats = alloc_percpu_gfp(struct spi_statistics, GFP_KERNEL);
 +
 +      if (pcpu_stats) {
 +              int cpu;
 +
 +              for_each_possible_cpu(cpu) {
 +                      struct spi_statistics *stat;
 +
 +                      stat = per_cpu_ptr(pcpu_stats, cpu);
 +                      u64_stats_init(&stat->syncp);
 +              }
 +      }
 +      return pcpu_stats;
 +}
 +
 +#define spi_pcpu_stats_totalize(ret, in, field)                               \
 +do {                                                                  \
 +      int i;                                                          \
 +      ret = 0;                                                        \
 +      for_each_possible_cpu(i) {                                      \
 +              const struct spi_statistics *pcpu_stats;                \
 +              u64 inc;                                                \
 +              unsigned int start;                                     \
 +              pcpu_stats = per_cpu_ptr(in, i);                        \
 +              do {                                                    \
 +                      start = u64_stats_fetch_begin_irq(              \
 +                                      &pcpu_stats->syncp);            \
 +                      inc = u64_stats_read(&pcpu_stats->field);       \
 +              } while (u64_stats_fetch_retry_irq(                     \
 +                                      &pcpu_stats->syncp, start));    \
 +              ret += inc;                                             \
 +      }                                                               \
 +} while (0)
 +
  #define SPI_STATISTICS_ATTRS(field, file)                             \
  static ssize_t spi_controller_##field##_show(struct device *dev,      \
                                             struct device_attribute *attr, \
  {                                                                     \
        struct spi_controller *ctlr = container_of(dev,                 \
                                         struct spi_controller, dev);   \
 -      return spi_statistics_##field##_show(&ctlr->statistics, buf);   \
 +      return spi_statistics_##field##_show(ctlr->pcpu_statistics, buf); \
  }                                                                     \
  static struct device_attribute dev_attr_spi_controller_##field = {    \
        .attr = { .name = file, .mode = 0444 },                         \
@@@ -154,46 -111,47 +154,46 @@@ static ssize_t spi_device_##field##_sho
                                        char *buf)                      \
  {                                                                     \
        struct spi_device *spi = to_spi_device(dev);                    \
 -      return spi_statistics_##field##_show(&spi->statistics, buf);    \
 +      return spi_statistics_##field##_show(spi->pcpu_statistics, buf); \
  }                                                                     \
  static struct device_attribute dev_attr_spi_device_##field = {                \
        .attr = { .name = file, .mode = 0444 },                         \
        .show = spi_device_##field##_show,                              \
  }
  
 -#define SPI_STATISTICS_SHOW_NAME(name, file, field, format_string)    \
 +#define SPI_STATISTICS_SHOW_NAME(name, file, field)                   \
  static ssize_t spi_statistics_##name##_show(struct spi_statistics *stat, \
                                            char *buf)                  \
  {                                                                     \
 -      unsigned long flags;                                            \
        ssize_t len;                                                    \
 -      spin_lock_irqsave(&stat->lock, flags);                          \
 -      len = sysfs_emit(buf, format_string "\n", stat->field);         \
 -      spin_unlock_irqrestore(&stat->lock, flags);                     \
 +      u64 val;                                                        \
 +      spi_pcpu_stats_totalize(val, stat, field);                      \
 +      len = sysfs_emit(buf, "%llu\n", val);                           \
        return len;                                                     \
  }                                                                     \
  SPI_STATISTICS_ATTRS(name, file)
  
 -#define SPI_STATISTICS_SHOW(field, format_string)                     \
 +#define SPI_STATISTICS_SHOW(field)                                    \
        SPI_STATISTICS_SHOW_NAME(field, __stringify(field),             \
 -                               field, format_string)
 +                               field)
  
 -SPI_STATISTICS_SHOW(messages, "%lu");
 -SPI_STATISTICS_SHOW(transfers, "%lu");
 -SPI_STATISTICS_SHOW(errors, "%lu");
 -SPI_STATISTICS_SHOW(timedout, "%lu");
 +SPI_STATISTICS_SHOW(messages);
 +SPI_STATISTICS_SHOW(transfers);
 +SPI_STATISTICS_SHOW(errors);
 +SPI_STATISTICS_SHOW(timedout);
  
 -SPI_STATISTICS_SHOW(spi_sync, "%lu");
 -SPI_STATISTICS_SHOW(spi_sync_immediate, "%lu");
 -SPI_STATISTICS_SHOW(spi_async, "%lu");
 +SPI_STATISTICS_SHOW(spi_sync);
 +SPI_STATISTICS_SHOW(spi_sync_immediate);
 +SPI_STATISTICS_SHOW(spi_async);
  
 -SPI_STATISTICS_SHOW(bytes, "%llu");
 -SPI_STATISTICS_SHOW(bytes_rx, "%llu");
 -SPI_STATISTICS_SHOW(bytes_tx, "%llu");
 +SPI_STATISTICS_SHOW(bytes);
 +SPI_STATISTICS_SHOW(bytes_rx);
 +SPI_STATISTICS_SHOW(bytes_tx);
  
  #define SPI_STATISTICS_TRANSFER_BYTES_HISTO(index, number)            \
        SPI_STATISTICS_SHOW_NAME(transfer_bytes_histo##index,           \
                                 "transfer_bytes_histo_" number,        \
 -                               transfer_bytes_histo[index],  "%lu")
 +                               transfer_bytes_histo[index])
  SPI_STATISTICS_TRANSFER_BYTES_HISTO(0,  "0-1");
  SPI_STATISTICS_TRANSFER_BYTES_HISTO(1,  "2-3");
  SPI_STATISTICS_TRANSFER_BYTES_HISTO(2,  "4-7");
@@@ -212,7 -170,7 +212,7 @@@ SPI_STATISTICS_TRANSFER_BYTES_HISTO(14
  SPI_STATISTICS_TRANSFER_BYTES_HISTO(15, "32768-65535");
  SPI_STATISTICS_TRANSFER_BYTES_HISTO(16, "65536+");
  
 -SPI_STATISTICS_SHOW(transfers_split_maxsize, "%lu");
 +SPI_STATISTICS_SHOW(transfers_split_maxsize);
  
  static struct attribute *spi_dev_attrs[] = {
        &dev_attr_modalias.attr,
@@@ -309,33 -267,30 +309,33 @@@ static const struct attribute_group *sp
        NULL,
  };
  
 -static void spi_statistics_add_transfer_stats(struct spi_statistics *stats,
 +static void spi_statistics_add_transfer_stats(struct spi_statistics *pcpu_stats,
                                              struct spi_transfer *xfer,
                                              struct spi_controller *ctlr)
  {
 -      unsigned long flags;
        int l2len = min(fls(xfer->len), SPI_STATISTICS_HISTO_SIZE) - 1;
 +      struct spi_statistics *stats;
  
        if (l2len < 0)
                l2len = 0;
  
 -      spin_lock_irqsave(&stats->lock, flags);
 +      get_cpu();
 +      stats = this_cpu_ptr(pcpu_stats);
 +      u64_stats_update_begin(&stats->syncp);
  
 -      stats->transfers++;
 -      stats->transfer_bytes_histo[l2len]++;
 +      u64_stats_inc(&stats->transfers);
 +      u64_stats_inc(&stats->transfer_bytes_histo[l2len]);
  
 -      stats->bytes += xfer->len;
 +      u64_stats_add(&stats->bytes, xfer->len);
        if ((xfer->tx_buf) &&
            (xfer->tx_buf != ctlr->dummy_tx))
 -              stats->bytes_tx += xfer->len;
 +              u64_stats_add(&stats->bytes_tx, xfer->len);
        if ((xfer->rx_buf) &&
            (xfer->rx_buf != ctlr->dummy_rx))
 -              stats->bytes_rx += xfer->len;
 +              u64_stats_add(&stats->bytes_rx, xfer->len);
  
 -      spin_unlock_irqrestore(&stats->lock, flags);
 +      u64_stats_update_end(&stats->syncp);
 +      put_cpu();
  }
  
  /*
@@@ -564,19 -519,14 +564,19 @@@ struct spi_device *spi_alloc_device(str
                return NULL;
        }
  
 +      spi->pcpu_statistics = spi_alloc_pcpu_stats(NULL);
 +      if (!spi->pcpu_statistics) {
 +              kfree(spi);
 +              spi_controller_put(ctlr);
 +              return NULL;
 +      }
 +
        spi->master = spi->controller = ctlr;
        spi->dev.parent = &ctlr->dev;
        spi->dev.bus = &spi_bus_type;
        spi->dev.release = spidev_release;
        spi->mode = ctlr->buswidth_override_bits;
  
 -      spin_lock_init(&spi->statistics.lock);
 -
        device_initialize(&spi->dev);
        return spi;
  }
@@@ -1275,8 -1225,8 +1275,8 @@@ static int spi_transfer_wait(struct spi
                             struct spi_message *msg,
                             struct spi_transfer *xfer)
  {
 -      struct spi_statistics *statm = &ctlr->statistics;
 -      struct spi_statistics *stats = &msg->spi->statistics;
 +      struct spi_statistics *statm = ctlr->pcpu_statistics;
 +      struct spi_statistics *stats = msg->spi->pcpu_statistics;
        u32 speed_hz = xfer->speed_hz;
        unsigned long long ms;
  
@@@ -1354,7 -1304,7 +1354,7 @@@ int spi_delay_to_ns(struct spi_delay *_
                /* Nothing to do here */
                break;
        case SPI_DELAY_UNIT_SCK:
 -              /* clock cycles need to be obtained from spi_transfer */
 +              /* Clock cycles need to be obtained from spi_transfer */
                if (!xfer)
                        return -EINVAL;
                /*
@@@ -1403,7 -1353,7 +1403,7 @@@ static void _spi_transfer_cs_change_del
        u32 unit = xfer->cs_change_delay.unit;
        int ret;
  
 -      /* return early on "fast" mode - for everything but USECS */
 +      /* Return early on "fast" mode - for everything but USECS */
        if (!delay) {
                if (unit == SPI_DELAY_UNIT_USECS)
                        _spi_transfer_delay_ns(default_delay_ns);
@@@ -1432,8 -1382,8 +1432,8 @@@ static int spi_transfer_one_message(str
        struct spi_transfer *xfer;
        bool keep_cs = false;
        int ret = 0;
 -      struct spi_statistics *statm = &ctlr->statistics;
 -      struct spi_statistics *stats = &msg->spi->statistics;
 +      struct spi_statistics *statm = ctlr->pcpu_statistics;
 +      struct spi_statistics *stats = msg->spi->pcpu_statistics;
  
        spi_set_cs(msg->spi, true, false);
  
@@@ -1549,103 -1499,6 +1549,103 @@@ static void spi_idle_runtime_pm(struct 
        }
  }
  
 +static int __spi_pump_transfer_message(struct spi_controller *ctlr,
 +              struct spi_message *msg, bool was_busy)
 +{
 +      struct spi_transfer *xfer;
 +      int ret;
 +
 +      if (!was_busy && ctlr->auto_runtime_pm) {
 +              ret = pm_runtime_get_sync(ctlr->dev.parent);
 +              if (ret < 0) {
 +                      pm_runtime_put_noidle(ctlr->dev.parent);
 +                      dev_err(&ctlr->dev, "Failed to power device: %d\n",
 +                              ret);
 +                      return ret;
 +              }
 +      }
 +
 +      if (!was_busy)
 +              trace_spi_controller_busy(ctlr);
 +
 +      if (!was_busy && ctlr->prepare_transfer_hardware) {
 +              ret = ctlr->prepare_transfer_hardware(ctlr);
 +              if (ret) {
 +                      dev_err(&ctlr->dev,
 +                              "failed to prepare transfer hardware: %d\n",
 +                              ret);
 +
 +                      if (ctlr->auto_runtime_pm)
 +                              pm_runtime_put(ctlr->dev.parent);
 +
 +                      msg->status = ret;
 +                      spi_finalize_current_message(ctlr);
 +
 +                      return ret;
 +              }
 +      }
 +
 +      trace_spi_message_start(msg);
 +
 +      if (ctlr->prepare_message) {
 +              ret = ctlr->prepare_message(ctlr, msg);
 +              if (ret) {
 +                      dev_err(&ctlr->dev, "failed to prepare message: %d\n",
 +                              ret);
 +                      msg->status = ret;
 +                      spi_finalize_current_message(ctlr);
 +                      return ret;
 +              }
 +              msg->prepared = true;
 +      }
 +
 +      ret = spi_map_msg(ctlr, msg);
 +      if (ret) {
 +              msg->status = ret;
 +              spi_finalize_current_message(ctlr);
 +              return ret;
 +      }
 +
 +      if (!ctlr->ptp_sts_supported && !ctlr->transfer_one) {
 +              list_for_each_entry(xfer, &msg->transfers, transfer_list) {
 +                      xfer->ptp_sts_word_pre = 0;
 +                      ptp_read_system_prets(xfer->ptp_sts);
 +              }
 +      }
 +
 +      /*
 +       * Drivers implementation of transfer_one_message() must arrange for
 +       * spi_finalize_current_message() to get called. Most drivers will do
 +       * this in the calling context, but some don't. For those cases, a
 +       * completion is used to guarantee that this function does not return
 +       * until spi_finalize_current_message() is done accessing
 +       * ctlr->cur_msg.
 +       * Use of the following two flags enable to opportunistically skip the
 +       * use of the completion since its use involves expensive spin locks.
 +       * In case of a race with the context that calls
 +       * spi_finalize_current_message() the completion will always be used,
 +       * due to strict ordering of these flags using barriers.
 +       */
 +      WRITE_ONCE(ctlr->cur_msg_incomplete, true);
 +      WRITE_ONCE(ctlr->cur_msg_need_completion, false);
 +      reinit_completion(&ctlr->cur_msg_completion);
 +      smp_wmb(); /* Make these available to spi_finalize_current_message() */
 +
 +      ret = ctlr->transfer_one_message(ctlr, msg);
 +      if (ret) {
 +              dev_err(&ctlr->dev,
 +                      "failed to transfer one message from queue\n");
 +              return ret;
 +      }
 +
 +      WRITE_ONCE(ctlr->cur_msg_need_completion, true);
 +      smp_mb(); /* See spi_finalize_current_message()... */
 +      if (READ_ONCE(ctlr->cur_msg_incomplete))
 +              wait_for_completion(&ctlr->cur_msg_completion);
 +
 +      return 0;
 +}
 +
  /**
   * __spi_pump_messages - function which processes spi message queue
   * @ctlr: controller to process queue for
   */
  static void __spi_pump_messages(struct spi_controller *ctlr, bool in_kthread)
  {
 -      struct spi_transfer *xfer;
        struct spi_message *msg;
        bool was_busy = false;
        unsigned long flags;
        int ret;
  
 +      /* Take the IO mutex */
 +      mutex_lock(&ctlr->io_mutex);
 +
        /* Lock queue */
        spin_lock_irqsave(&ctlr->queue_lock, flags);
  
        /* Make sure we are not already running a message */
 -      if (ctlr->cur_msg) {
 -              spin_unlock_irqrestore(&ctlr->queue_lock, flags);
 -              return;
 -      }
 -
 -      /* If another context is idling the device then defer */
 -      if (ctlr->idling) {
 -              kthread_queue_work(ctlr->kworker, &ctlr->pump_messages);
 -              spin_unlock_irqrestore(&ctlr->queue_lock, flags);
 -              return;
 -      }
 +      if (ctlr->cur_msg)
 +              goto out_unlock;
  
        /* Check if the queue is idle */
        if (list_empty(&ctlr->queue) || !ctlr->running) {
 -              if (!ctlr->busy) {
 -                      spin_unlock_irqrestore(&ctlr->queue_lock, flags);
 -                      return;
 -              }
 +              if (!ctlr->busy)
 +                      goto out_unlock;
  
                /* Defer any non-atomic teardown to the thread */
                if (!in_kthread) {
                            !ctlr->unprepare_transfer_hardware) {
                                spi_idle_runtime_pm(ctlr);
                                ctlr->busy = false;
 +                              ctlr->queue_empty = true;
                                trace_spi_controller_idle(ctlr);
                        } else {
                                kthread_queue_work(ctlr->kworker,
                                                   &ctlr->pump_messages);
                        }
 -                      spin_unlock_irqrestore(&ctlr->queue_lock, flags);
 -                      return;
 +                      goto out_unlock;
                }
  
                ctlr->busy = false;
 -              ctlr->idling = true;
                spin_unlock_irqrestore(&ctlr->queue_lock, flags);
  
                kfree(ctlr->dummy_rx);
                trace_spi_controller_idle(ctlr);
  
                spin_lock_irqsave(&ctlr->queue_lock, flags);
 -              ctlr->idling = false;
 -              spin_unlock_irqrestore(&ctlr->queue_lock, flags);
 -              return;
 +              ctlr->queue_empty = true;
 +              goto out_unlock;
        }
  
        /* Extract head of queue */
                ctlr->busy = true;
        spin_unlock_irqrestore(&ctlr->queue_lock, flags);
  
 -      mutex_lock(&ctlr->io_mutex);
 -
 -      if (!was_busy && ctlr->auto_runtime_pm) {
 -              ret = pm_runtime_resume_and_get(ctlr->dev.parent);
 -              if (ret < 0) {
 -                      dev_err(&ctlr->dev, "Failed to power device: %d\n",
 -                              ret);
 -                      mutex_unlock(&ctlr->io_mutex);
 -                      return;
 -              }
 -      }
 -
 -      if (!was_busy)
 -              trace_spi_controller_busy(ctlr);
 -
 -      if (!was_busy && ctlr->prepare_transfer_hardware) {
 -              ret = ctlr->prepare_transfer_hardware(ctlr);
 -              if (ret) {
 -                      dev_err(&ctlr->dev,
 -                              "failed to prepare transfer hardware: %d\n",
 -                              ret);
 -
 -                      if (ctlr->auto_runtime_pm)
 -                              pm_runtime_put(ctlr->dev.parent);
 -
 -                      msg->status = ret;
 -                      spi_finalize_current_message(ctlr);
 -
 -                      mutex_unlock(&ctlr->io_mutex);
 -                      return;
 -              }
 -      }
 -
 -      trace_spi_message_start(msg);
 -
 -      if (ctlr->prepare_message) {
 -              ret = ctlr->prepare_message(ctlr, msg);
 -              if (ret) {
 -                      dev_err(&ctlr->dev, "failed to prepare message: %d\n",
 -                              ret);
 -                      msg->status = ret;
 -                      spi_finalize_current_message(ctlr);
 -                      goto out;
 -              }
 -              ctlr->cur_msg_prepared = true;
 -      }
 -
 -      ret = spi_map_msg(ctlr, msg);
 -      if (ret) {
 -              msg->status = ret;
 -              spi_finalize_current_message(ctlr);
 -              goto out;
 -      }
 -
 -      if (!ctlr->ptp_sts_supported && !ctlr->transfer_one) {
 -              list_for_each_entry(xfer, &msg->transfers, transfer_list) {
 -                      xfer->ptp_sts_word_pre = 0;
 -                      ptp_read_system_prets(xfer->ptp_sts);
 -              }
 -      }
 +      ret = __spi_pump_transfer_message(ctlr, msg, was_busy);
 +      if (!ret)
 +              kthread_queue_work(ctlr->kworker, &ctlr->pump_messages);
  
 -      ret = ctlr->transfer_one_message(ctlr, msg);
 -      if (ret) {
 -              dev_err(&ctlr->dev,
 -                      "failed to transfer one message from queue: %d\n",
 -                      ret);
 -              goto out;
 -      }
 +      ctlr->cur_msg = NULL;
 +      ctlr->fallback = false;
  
 -out:
        mutex_unlock(&ctlr->io_mutex);
  
        /* Prod the scheduler in case transfer_one() was busy waiting */
        if (!ret)
                cond_resched();
 +      return;
 +
 +out_unlock:
 +      spin_unlock_irqrestore(&ctlr->queue_lock, flags);
 +      mutex_unlock(&ctlr->io_mutex);
  }
  
  /**
@@@ -1867,7 -1789,6 +1867,7 @@@ static int spi_init_queue(struct spi_co
  {
        ctlr->running = false;
        ctlr->busy = false;
 +      ctlr->queue_empty = true;
  
        ctlr->kworker = kthread_create_worker(0, dev_name(&ctlr->dev));
        if (IS_ERR(ctlr->kworker)) {
@@@ -1905,7 -1826,7 +1905,7 @@@ struct spi_message *spi_get_next_queued
        struct spi_message *next;
        unsigned long flags;
  
 -      /* get a pointer to the next message, if any */
 +      /* Get a pointer to the next message, if any */
        spin_lock_irqsave(&ctlr->queue_lock, flags);
        next = list_first_entry_or_null(&ctlr->queue, struct spi_message,
                                        queue);
@@@ -1926,9 -1847,12 +1926,9 @@@ void spi_finalize_current_message(struc
  {
        struct spi_transfer *xfer;
        struct spi_message *mesg;
 -      unsigned long flags;
        int ret;
  
 -      spin_lock_irqsave(&ctlr->queue_lock, flags);
        mesg = ctlr->cur_msg;
 -      spin_unlock_irqrestore(&ctlr->queue_lock, flags);
  
        if (!ctlr->ptp_sts_supported && !ctlr->transfer_one) {
                list_for_each_entry(xfer, &mesg->transfers, transfer_list) {
         */
        spi_res_release(ctlr, mesg);
  
 -      if (ctlr->cur_msg_prepared && ctlr->unprepare_message) {
 +      if (mesg->prepared && ctlr->unprepare_message) {
                ret = ctlr->unprepare_message(ctlr, mesg);
                if (ret) {
                        dev_err(&ctlr->dev, "failed to unprepare message: %d\n",
                }
        }
  
 -      spin_lock_irqsave(&ctlr->queue_lock, flags);
 -      ctlr->cur_msg = NULL;
 -      ctlr->cur_msg_prepared = false;
 -      ctlr->fallback = false;
 -      kthread_queue_work(ctlr->kworker, &ctlr->pump_messages);
 -      spin_unlock_irqrestore(&ctlr->queue_lock, flags);
 +      mesg->prepared = false;
 +
 +      WRITE_ONCE(ctlr->cur_msg_incomplete, false);
 +      smp_mb(); /* See __spi_pump_transfer_message()... */
 +      if (READ_ONCE(ctlr->cur_msg_need_completion))
 +              complete(&ctlr->cur_msg_completion);
  
        trace_spi_message_done(mesg);
  
@@@ -2068,7 -1992,6 +2068,7 @@@ static int __spi_queued_transfer(struc
        msg->status = -EINPROGRESS;
  
        list_add_tail(&msg->queue, &ctlr->queue);
 +      ctlr->queue_empty = false;
        if (!ctlr->busy && need_pump)
                kthread_queue_work(ctlr->kworker, &ctlr->pump_messages);
  
@@@ -2453,6 -2376,9 +2453,6 @@@ static int acpi_spi_add_resource(struc
                        if (lookup->index != -1 && lookup->n++ != lookup->index)
                                return 1;
  
 -                      if (lookup->index == -1 && !ctlr)
 -                              return -ENODEV;
 -
                        status = acpi_get_handle(NULL,
                                                 sb->resource_source.string_ptr,
                                                 &parent_handle);
  
                                ctlr = acpi_spi_find_controller_by_adev(adev);
                                if (!ctlr)
 -                                      return -ENODEV;
 +                                      return -EPROBE_DEFER;
  
                                lookup->ctlr = ctlr;
                        }
@@@ -2555,8 -2481,8 +2555,8 @@@ struct spi_device *acpi_spi_device_allo
        acpi_dev_free_resource_list(&resource_list);
  
        if (ret < 0)
 -              /* found SPI in _CRS but it points to another controller */
 -              return ERR_PTR(-ENODEV);
 +              /* Found SPI in _CRS but it points to another controller */
 +              return ERR_PTR(ret);
  
        if (!lookup.max_speed_hz &&
            ACPI_SUCCESS(acpi_get_parent(adev->handle, &parent_handle)) &&
@@@ -2687,11 -2613,6 +2687,6 @@@ int spi_slave_abort(struct spi_device *
  }
  EXPORT_SYMBOL_GPL(spi_slave_abort);
  
- static int match_true(struct device *dev, void *data)
- {
-       return 1;
- }
  static ssize_t slave_show(struct device *dev, struct device_attribute *attr,
                          char *buf)
  {
                                                   dev);
        struct device *child;
  
-       child = device_find_child(&ctlr->dev, NULL, match_true);
+       child = device_find_any_child(&ctlr->dev);
        return sprintf(buf, "%s\n",
                       child ? to_spi_device(child)->modalias : NULL);
  }
@@@ -2718,7 -2639,7 +2713,7 @@@ static ssize_t slave_store(struct devic
        if (rc != 1 || !name[0])
                return -EINVAL;
  
-       child = device_find_child(&ctlr->dev, NULL, match_true);
+       child = device_find_any_child(&ctlr->dev);
        if (child) {
                /* Remove registered slave */
                device_unregister(child);
@@@ -3011,7 -2932,7 +3006,7 @@@ int spi_register_controller(struct spi_
                return status;
  
        if (ctlr->bus_num >= 0) {
 -              /* devices with a fixed bus num must check-in with the num */
 +              /* Devices with a fixed bus num must check-in with the num */
                mutex_lock(&board_lock);
                id = idr_alloc(&spi_master_idr, ctlr, ctlr->bus_num,
                        ctlr->bus_num + 1, GFP_KERNEL);
                        return id == -ENOSPC ? -EBUSY : id;
                ctlr->bus_num = id;
        } else if (ctlr->dev.of_node) {
 -              /* allocate dynamic bus number using Linux idr */
 +              /* Allocate dynamic bus number using Linux idr */
                id = of_alias_get_id(ctlr->dev.of_node, "spi");
                if (id >= 0) {
                        ctlr->bus_num = id;
        }
        ctlr->bus_lock_flag = 0;
        init_completion(&ctlr->xfer_completion);
 +      init_completion(&ctlr->cur_msg_completion);
        if (!ctlr->max_dma_len)
                ctlr->max_dma_len = INT_MAX;
  
                goto free_bus_id;
        }
  
 -      /* setting last_cs to -1 means no chip selected */
 +      /* Setting last_cs to -1 means no chip selected */
        ctlr->last_cs = -1;
  
        status = device_add(&ctlr->dev);
                        goto free_bus_id;
                }
        }
 -      /* add statistics */
 -      spin_lock_init(&ctlr->statistics.lock);
 +      /* Add statistics */
 +      ctlr->pcpu_statistics = spi_alloc_pcpu_stats(dev);
 +      if (!ctlr->pcpu_statistics) {
 +              dev_err(dev, "Error allocating per-cpu statistics\n");
 +              status = -ENOMEM;
 +              goto destroy_queue;
 +      }
  
        mutex_lock(&board_lock);
        list_add_tail(&ctlr->list, &spi_controller_list);
        acpi_register_spi_devices(ctlr);
        return status;
  
 +destroy_queue:
 +      spi_destroy_queue(ctlr);
  free_bus_id:
        mutex_lock(&board_lock);
        idr_remove(&spi_master_idr, ctlr->bus_num);
  }
  EXPORT_SYMBOL_GPL(spi_register_controller);
  
 -static void devm_spi_unregister(void *ctlr)
 +static void devm_spi_unregister(struct device *dev, void *res)
  {
 -      spi_unregister_controller(ctlr);
 +      spi_unregister_controller(*(struct spi_controller **)res);
  }
  
  /**
  int devm_spi_register_controller(struct device *dev,
                                 struct spi_controller *ctlr)
  {
 +      struct spi_controller **ptr;
        int ret;
  
 +      ptr = devres_alloc(devm_spi_unregister, sizeof(*ptr), GFP_KERNEL);
 +      if (!ptr)
 +              return -ENOMEM;
 +
        ret = spi_register_controller(ctlr);
 -      if (ret)
 -              return ret;
 +      if (!ret) {
 +              *ptr = ctlr;
 +              devres_add(dev, ptr);
 +      } else {
 +              devres_free(ptr);
 +      }
  
 -      return devm_add_action_or_reset(dev, devm_spi_unregister, ctlr);
 +      return ret;
  }
  EXPORT_SYMBOL_GPL(devm_spi_register_controller);
  
@@@ -3215,7 -3119,7 +3210,7 @@@ void spi_unregister_controller(struct s
  
        device_del(&ctlr->dev);
  
 -      /* free bus id */
 +      /* Free bus id */
        mutex_lock(&board_lock);
        if (found == ctlr)
                idr_remove(&spi_master_idr, id);
@@@ -3274,14 -3178,14 +3269,14 @@@ static void __spi_replace_transfers_rel
        struct spi_replaced_transfers *rxfer = res;
        size_t i;
  
 -      /* call extra callback if requested */
 +      /* Call extra callback if requested */
        if (rxfer->release)
                rxfer->release(ctlr, msg, res);
  
 -      /* insert replaced transfers back into the message */
 +      /* Insert replaced transfers back into the message */
        list_splice(&rxfer->replaced_transfers, rxfer->replaced_after);
  
 -      /* remove the formerly inserted entries */
 +      /* Remove the formerly inserted entries */
        for (i = 0; i < rxfer->inserted; i++)
                list_del(&rxfer->inserted_transfers[i].transfer_list);
  }
@@@ -3314,7 -3218,7 +3309,7 @@@ static struct spi_replaced_transfers *s
        struct spi_transfer *xfer;
        size_t i;
  
 -      /* allocate the structure using spi_res */
 +      /* Allocate the structure using spi_res */
        rxfer = spi_res_alloc(msg->spi, __spi_replace_transfers_release,
                              struct_size(rxfer, inserted_transfers, insert)
                              + extradatasize,
        if (!rxfer)
                return ERR_PTR(-ENOMEM);
  
 -      /* the release code to invoke before running the generic release */
 +      /* The release code to invoke before running the generic release */
        rxfer->release = release;
  
 -      /* assign extradata */
 +      /* Assign extradata */
        if (extradatasize)
                rxfer->extradata =
                        &rxfer->inserted_transfers[insert];
  
 -      /* init the replaced_transfers list */
 +      /* Init the replaced_transfers list */
        INIT_LIST_HEAD(&rxfer->replaced_transfers);
  
        /*
         */
        rxfer->replaced_after = xfer_first->transfer_list.prev;
  
 -      /* remove the requested number of transfers */
 +      /* Remove the requested number of transfers */
        for (i = 0; i < remove; i++) {
                /*
                 * If the entry after replaced_after it is msg->transfers
                if (rxfer->replaced_after->next == &msg->transfers) {
                        dev_err(&msg->spi->dev,
                                "requested to remove more spi_transfers than are available\n");
 -                      /* insert replaced transfers back into the message */
 +                      /* Insert replaced transfers back into the message */
                        list_splice(&rxfer->replaced_transfers,
                                    rxfer->replaced_after);
  
 -                      /* free the spi_replace_transfer structure */
 +                      /* Free the spi_replace_transfer structure... */
                        spi_res_free(rxfer);
  
 -                      /* and return with an error */
 +                      /* ...and return with an error */
                        return ERR_PTR(-EINVAL);
                }
  
         * based on the first transfer to get removed.
         */
        for (i = 0; i < insert; i++) {
 -              /* we need to run in reverse order */
 +              /* We need to run in reverse order */
                xfer = &rxfer->inserted_transfers[insert - 1 - i];
  
 -              /* copy all spi_transfer data */
 +              /* Copy all spi_transfer data */
                memcpy(xfer, xfer_first, sizeof(*xfer));
  
 -              /* add to list */
 +              /* Add to list */
                list_add(&xfer->transfer_list, rxfer->replaced_after);
  
 -              /* clear cs_change and delay for all but the last */
 +              /* Clear cs_change and delay for all but the last */
                if (i) {
                        xfer->cs_change = false;
                        xfer->delay.value = 0;
                }
        }
  
 -      /* set up inserted */
 +      /* Set up inserted... */
        rxfer->inserted = insert;
  
 -      /* and register it with spi_res/spi_message */
 +      /* ...and register it with spi_res/spi_message */
        spi_res_add(msg, rxfer);
  
        return rxfer;
@@@ -3409,10 -3313,10 +3404,10 @@@ static int __spi_split_transfer_maxsize
        size_t offset;
        size_t count, i;
  
 -      /* calculate how many we have to replace */
 +      /* Calculate how many we have to replace */
        count = DIV_ROUND_UP(xfer->len, maxsize);
  
 -      /* create replacement */
 +      /* Create replacement */
        srt = spi_replace_transfers(msg, xfer, 1, count, NULL, 0, gfp);
        if (IS_ERR(srt))
                return PTR_ERR(srt);
         */
        xfers[0].len = min_t(size_t, maxsize, xfer[0].len);
  
 -      /* all the others need rx_buf/tx_buf also set */
 +      /* All the others need rx_buf/tx_buf also set */
        for (i = 1, offset = maxsize; i < count; offset += maxsize, i++) {
 -              /* update rx_buf, tx_buf and dma */
 +              /* Update rx_buf, tx_buf and dma */
                if (xfers[i].rx_buf)
                        xfers[i].rx_buf += offset;
                if (xfers[i].rx_dma)
                if (xfers[i].tx_dma)
                        xfers[i].tx_dma += offset;
  
 -              /* update length */
 +              /* Update length */
                xfers[i].len = min(maxsize, xfers[i].len - offset);
        }
  
         */
        *xferp = &xfers[count - 1];
  
 -      /* increment statistics counters */
 -      SPI_STATISTICS_INCREMENT_FIELD(&ctlr->statistics,
 +      /* Increment statistics counters */
 +      SPI_STATISTICS_INCREMENT_FIELD(ctlr->pcpu_statistics,
                                       transfers_split_maxsize);
 -      SPI_STATISTICS_INCREMENT_FIELD(&msg->spi->statistics,
 +      SPI_STATISTICS_INCREMENT_FIELD(msg->spi->pcpu_statistics,
                                       transfers_split_maxsize);
  
        return 0;
@@@ -3719,7 -3623,7 +3714,7 @@@ static int __spi_validate(struct spi_de
                        return ret;
  
                list_for_each_entry(xfer, &message->transfers, transfer_list) {
 -                      /* don't change cs_change on the last entry in the list */
 +                      /* Don't change cs_change on the last entry in the list */
                        if (list_is_last(&xfer->transfer_list, &message->transfers))
                                break;
                        xfer->cs_change = 1;
                                !(spi->mode & SPI_TX_QUAD))
                                return -EINVAL;
                }
 -              /* check transfer rx_nbits */
 +              /* Check transfer rx_nbits */
                if (xfer->rx_buf) {
                        if (spi->mode & SPI_NO_RX)
                                return -EINVAL;
@@@ -3851,8 -3755,8 +3846,8 @@@ static int __spi_async(struct spi_devic
  
        message->spi = spi;
  
 -      SPI_STATISTICS_INCREMENT_FIELD(&ctlr->statistics, spi_async);
 -      SPI_STATISTICS_INCREMENT_FIELD(&spi->statistics, spi_async);
 +      SPI_STATISTICS_INCREMENT_FIELD(ctlr->pcpu_statistics, spi_async);
 +      SPI_STATISTICS_INCREMENT_FIELD(spi->pcpu_statistics, spi_async);
  
        trace_spi_message_submit(message);
  
@@@ -3971,39 -3875,6 +3966,39 @@@ static int spi_async_locked(struct spi_
  
  }
  
 +static void __spi_transfer_message_noqueue(struct spi_controller *ctlr, struct spi_message *msg)
 +{
 +      bool was_busy;
 +      int ret;
 +
 +      mutex_lock(&ctlr->io_mutex);
 +
 +      was_busy = ctlr->busy;
 +
 +      ctlr->cur_msg = msg;
 +      ret = __spi_pump_transfer_message(ctlr, msg, was_busy);
 +      if (ret)
 +              goto out;
 +
 +      ctlr->cur_msg = NULL;
 +      ctlr->fallback = false;
 +
 +      if (!was_busy) {
 +              kfree(ctlr->dummy_rx);
 +              ctlr->dummy_rx = NULL;
 +              kfree(ctlr->dummy_tx);
 +              ctlr->dummy_tx = NULL;
 +              if (ctlr->unprepare_transfer_hardware &&
 +                  ctlr->unprepare_transfer_hardware(ctlr))
 +                      dev_err(&ctlr->dev,
 +                              "failed to unprepare transfer hardware\n");
 +              spi_idle_runtime_pm(ctlr);
 +      }
 +
 +out:
 +      mutex_unlock(&ctlr->io_mutex);
 +}
 +
  /*-------------------------------------------------------------------------*/
  
  /*
@@@ -4022,51 -3893,51 +4017,51 @@@ static int __spi_sync(struct spi_devic
        DECLARE_COMPLETION_ONSTACK(done);
        int status;
        struct spi_controller *ctlr = spi->controller;
 -      unsigned long flags;
  
        status = __spi_validate(spi, message);
        if (status != 0)
                return status;
  
 -      message->complete = spi_complete;
 -      message->context = &done;
        message->spi = spi;
  
 -      SPI_STATISTICS_INCREMENT_FIELD(&ctlr->statistics, spi_sync);
 -      SPI_STATISTICS_INCREMENT_FIELD(&spi->statistics, spi_sync);
 +      SPI_STATISTICS_INCREMENT_FIELD(ctlr->pcpu_statistics, spi_sync);
 +      SPI_STATISTICS_INCREMENT_FIELD(spi->pcpu_statistics, spi_sync);
  
        /*
 -       * If we're not using the legacy transfer method then we will
 -       * try to transfer in the calling context so special case.
 -       * This code would be less tricky if we could remove the
 -       * support for driver implemented message queues.
 +       * Checking queue_empty here only guarantees async/sync message
 +       * ordering when coming from the same context. It does not need to
 +       * guard against reentrancy from a different context. The io_mutex
 +       * will catch those cases.
         */
 -      if (ctlr->transfer == spi_queued_transfer) {
 -              spin_lock_irqsave(&ctlr->bus_lock_spinlock, flags);
 +      if (READ_ONCE(ctlr->queue_empty)) {
 +              message->actual_length = 0;
 +              message->status = -EINPROGRESS;
  
                trace_spi_message_submit(message);
  
 -              status = __spi_queued_transfer(spi, message, false);
 +              SPI_STATISTICS_INCREMENT_FIELD(ctlr->pcpu_statistics, spi_sync_immediate);
 +              SPI_STATISTICS_INCREMENT_FIELD(spi->pcpu_statistics, spi_sync_immediate);
  
 -              spin_unlock_irqrestore(&ctlr->bus_lock_spinlock, flags);
 -      } else {
 -              status = spi_async_locked(spi, message);
 +              __spi_transfer_message_noqueue(ctlr, message);
 +
 +              return message->status;
        }
  
 +      /*
 +       * There are messages in the async queue that could have originated
 +       * from the same context, so we need to preserve ordering.
 +       * Therefor we send the message to the async queue and wait until they
 +       * are completed.
 +       */
 +      message->complete = spi_complete;
 +      message->context = &done;
 +      status = spi_async_locked(spi, message);
        if (status == 0) {
 -              /* Push out the messages in the calling context if we can */
 -              if (ctlr->transfer == spi_queued_transfer) {
 -                      SPI_STATISTICS_INCREMENT_FIELD(&ctlr->statistics,
 -                                                     spi_sync_immediate);
 -                      SPI_STATISTICS_INCREMENT_FIELD(&spi->statistics,
 -                                                     spi_sync_immediate);
 -                      __spi_pump_messages(ctlr, false);
 -              }
 -
                wait_for_completion(&done);
                status = message->status;
        }
        message->context = NULL;
 +
        return status;
  }
  
@@@ -4150,7 -4021,7 +4145,7 @@@ int spi_bus_lock(struct spi_controller 
        ctlr->bus_lock_flag = 1;
        spin_unlock_irqrestore(&ctlr->bus_lock_spinlock, flags);
  
 -      /* mutex remains locked until spi_bus_unlock is called */
 +      /* Mutex remains locked until spi_bus_unlock() is called */
  
        return 0;
  }
@@@ -4179,7 -4050,7 +4174,7 @@@ int spi_bus_unlock(struct spi_controlle
  }
  EXPORT_SYMBOL_GPL(spi_bus_unlock);
  
 -/* portable code must never pass more than 32 bytes */
 +/* Portable code must never pass more than 32 bytes */
  #define       SPI_BUFSIZ      max(32, SMP_CACHE_BYTES)
  
  static u8     *buf;
@@@ -4245,7 -4116,7 +4240,7 @@@ int spi_write_then_read(struct spi_devi
        x[0].tx_buf = local_buf;
        x[1].rx_buf = local_buf + n_tx;
  
 -      /* do the i/o */
 +      /* Do the i/o */
        status = spi_sync(spi, &message);
        if (status == 0)
                memcpy(rxbuf, x[1].rx_buf, n_rx);
@@@ -4262,7 -4133,7 +4257,7 @@@ EXPORT_SYMBOL_GPL(spi_write_then_read)
  /*-------------------------------------------------------------------------*/
  
  #if IS_ENABLED(CONFIG_OF_DYNAMIC)
 -/* must call put_device() when done with returned spi_device device */
 +/* Must call put_device() when done with returned spi_device device */
  static struct spi_device *of_find_spi_device_by_node(struct device_node *node)
  {
        struct device *dev = bus_find_device_by_of_node(&spi_bus_type, node);
        return dev ? to_spi_device(dev) : NULL;
  }
  
 -/* the spi controllers are not using spi_bus, so we find it with another way */
 +/* The spi controllers are not using spi_bus, so we find it with another way */
  static struct spi_controller *of_find_spi_controller_by_node(struct device_node *node)
  {
        struct device *dev;
        if (!dev)
                return NULL;
  
 -      /* reference got in class_find_device */
 +      /* Reference got in class_find_device */
        return container_of(dev, struct spi_controller, dev);
  }
  
@@@ -4296,7 -4167,7 +4291,7 @@@ static int of_spi_notify(struct notifie
        case OF_RECONFIG_CHANGE_ADD:
                ctlr = of_find_spi_controller_by_node(rd->dn->parent);
                if (ctlr == NULL)
 -                      return NOTIFY_OK;       /* not for us */
 +                      return NOTIFY_OK;       /* Not for us */
  
                if (of_node_test_and_set_flag(rd->dn, OF_POPULATED)) {
                        put_device(&ctlr->dev);
                break;
  
        case OF_RECONFIG_CHANGE_REMOVE:
 -              /* already depopulated? */
 +              /* Already depopulated? */
                if (!of_node_check_flag(rd->dn, OF_POPULATED))
                        return NOTIFY_OK;
  
 -              /* find our device by node */
 +              /* Find our device by node */
                spi = of_find_spi_device_by_node(rd->dn);
                if (spi == NULL)
 -                      return NOTIFY_OK;       /* no? not meant for us */
 +                      return NOTIFY_OK;       /* No? not meant for us */
  
 -              /* unregister takes one ref away */
 +              /* Unregister takes one ref away */
                spi_unregister_device(spi);
  
 -              /* and put the reference of the find */
 +              /* And put the reference of the find */
                put_device(&spi->dev);
                break;
        }
diff --combined include/linux/acpi.h
index 7e7a33b6c8d78a63cae1cbaa0d48735c5f329a6f,7b96a8bff6d29e98893b789f08f1b6ebf5e8c479..f6d4539c3895d8a0b19fcbffcb17eaa43e2ab9a0
@@@ -105,7 -105,6 +105,7 @@@ enum acpi_irq_model_id 
        ACPI_IRQ_MODEL_IOSAPIC,
        ACPI_IRQ_MODEL_PLATFORM,
        ACPI_IRQ_MODEL_GIC,
 +      ACPI_IRQ_MODEL_LPIC,
        ACPI_IRQ_MODEL_COUNT
  };
  
@@@ -357,8 -356,7 +357,8 @@@ int acpi_gsi_to_irq (u32 gsi, unsigned 
  int acpi_isa_irq_to_gsi (unsigned isa_irq, u32 *gsi);
  
  void acpi_set_irq_model(enum acpi_irq_model_id model,
 -                      struct fwnode_handle *fwnode);
 +                      struct fwnode_handle *(*)(u32));
 +void acpi_set_gsi_to_irq_fallback(u32 (*)(u32));
  
  struct irq_domain *acpi_irq_create_hierarchy(unsigned int flags,
                                             unsigned int size,
@@@ -586,7 -584,7 +586,7 @@@ acpi_status acpi_run_osc(acpi_handle ha
  extern bool osc_sb_apei_support_acked;
  extern bool osc_pc_lpi_support_confirmed;
  extern bool osc_sb_native_usb4_support_confirmed;
 -extern bool osc_sb_cppc_not_supported;
 +extern bool osc_sb_cppc2_support_acked;
  extern bool osc_cpc_flexible_adr_space_confirmed;
  
  /* USB4 Capabilities */
@@@ -1431,7 -1429,6 +1431,6 @@@ int find_acpi_cpu_topology(unsigned in
  int find_acpi_cpu_topology_cluster(unsigned int cpu);
  int find_acpi_cpu_topology_package(unsigned int cpu);
  int find_acpi_cpu_topology_hetero_id(unsigned int cpu);
- int find_acpi_cpu_cache_topology(unsigned int cpu, int level);
  #else
  static inline int acpi_pptt_cpu_is_thread(unsigned int cpu)
  {
@@@ -1453,10 -1450,6 +1452,6 @@@ static inline int find_acpi_cpu_topolog
  {
        return -EINVAL;
  }
- static inline int find_acpi_cpu_cache_topology(unsigned int cpu, int level)
- {
-       return -EINVAL;
- }
  #endif
  
  #ifdef CONFIG_ACPI_PCC
diff --combined lib/Kconfig.debug
index 79a71eb96111f921759afe42a79844b4efbeb4f9,abb1b287b8f1212cd08543050f24cff59ef52235..35cd8287642aeec64a7fdac94e4802a988feb482
@@@ -498,7 -498,7 +498,7 @@@ config STACK_VALIDATIO
          runtime stack traces are more reliable.
  
          For more information, see
 -        tools/objtool/Documentation/stack-validation.txt.
 +        tools/objtool/Documentation/objtool.txt.
  
  config NOINSTR_VALIDATION
        bool
@@@ -1560,7 -1560,7 +1560,7 @@@ config DEBUG_KOBJECT_RELEAS
        help
          kobjects are reference counted objects.  This means that their
          last reference count put is not predictable, and the kobject can
-         live on past the point at which a driver decides to drop it's
+         live on past the point at which a driver decides to drop its
          initial reference to the kobject gained on allocation.  An
          example of this would be a struct device which has just been
          unregistered.
diff --combined net/ipv4/ipconfig.c
index f53a0f2453aff1480227900fd6b071f3e62e3df8,2342debd706603b8ad499eba0de0662bbb67d81c..e90bc0aa85c77070d67e5d64271a0721cb95dae8
@@@ -1434,6 -1434,7 +1434,7 @@@ __be32 __init root_nfs_parse_addr(char 
  static int __init wait_for_devices(void)
  {
        int i;
+       bool try_init_devs = true;
  
        for (i = 0; i < DEVICE_WAIT_MAX; i++) {
                struct net_device *dev;
                rtnl_unlock();
                if (found)
                        return 0;
+               if (try_init_devs &&
+                   (ROOT_DEV == Root_NFS || ROOT_DEV == Root_CIFS)) {
+                       try_init_devs = false;
+                       wait_for_init_devices_probe();
+               }
                ssleep(1);
        }
        return -ENODEV;
@@@ -1759,15 -1765,15 +1765,15 @@@ static int __init ip_auto_config_setup(
                        case 4:
                                if ((dp = strchr(ip, '.'))) {
                                        *dp++ = '\0';
 -                                      strlcpy(utsname()->domainname, dp,
 +                                      strscpy(utsname()->domainname, dp,
                                                sizeof(utsname()->domainname));
                                }
 -                              strlcpy(utsname()->nodename, ip,
 +                              strscpy(utsname()->nodename, ip,
                                        sizeof(utsname()->nodename));
                                ic_host_name_set = 1;
                                break;
                        case 5:
 -                              strlcpy(user_dev_name, ip, sizeof(user_dev_name));
 +                              strscpy(user_dev_name, ip, sizeof(user_dev_name));
                                break;
                        case 6:
                                if (ic_proto_name(ip) == 0 &&
@@@ -1814,7 -1820,7 +1820,7 @@@ __setup("nfsaddrs=", nfsaddrs_config_se
  
  static int __init vendor_class_identifier_setup(char *addrs)
  {
 -      if (strlcpy(vendor_class_identifier, addrs,
 +      if (strscpy(vendor_class_identifier, addrs,
                    sizeof(vendor_class_identifier))
            >= sizeof(vendor_class_identifier))
                pr_warn("DHCP: vendorclass too long, truncated to \"%s\"\n",