The following commit has been merged in the master branch:
commit feb06d2690bb826fd33798a99ce5cff8d07b38f9
Merge: c2f2b01b74be8b40a2173372bcd770723f87e7b2 
615a6e7d83f958e7ef3bc818e818f7c6433b4c2a
Author: Linus Torvalds <[email protected]>
Date:   Tue Dec 9 06:10:17 2025 +0900

    Merge tag 'hyperv-next-signed-20251207' of 
git://git.kernel.org/pub/scm/linux/kernel/git/hyperv/linux
    
    Pull hyperv updates from Wei Liu:
    
     - Enhancements to Linux as the root partition for Microsoft Hypervisor:
         - Support a new mode called L1VH, which allows Linux to drive the
           hypervisor running the Azure Host directly
         - Support for MSHV crash dump collection
         - Allow Linux's memory management subsystem to better manage guest
           memory regions
         - Fix issues that prevented a clean shutdown of the whole system on
           bare metal and nested configurations
         - ARM64 support for the MSHV driver
         - Various other bug fixes and cleanups
    
     - Add support for Confidential VMBus for Linux guest on Hyper-V
    
     - Secure AVIC support for Linux guests on Hyper-V
    
     - Add the mshv_vtl driver to allow Linux to run as the secure kernel in
       a higher virtual trust level for Hyper-V
    
    * tag 'hyperv-next-signed-20251207' of 
git://git.kernel.org/pub/scm/linux/kernel/git/hyperv/linux: (58 commits)
      mshv: Cleanly shutdown root partition with MSHV
      mshv: Use reboot notifier to configure sleep state
      mshv: Add definitions for MSHV sleep state configuration
      mshv: Add support for movable memory regions
      mshv: Add refcount and locking to mem regions
      mshv: Fix huge page handling in memory region traversal
      mshv: Move region management to mshv_regions.c
      mshv: Centralize guest memory region destruction
      mshv: Refactor and rename memory region handling functions
      mshv: adjust interrupt control structure for ARM64
      Drivers: hv: use kmalloc_array() instead of kmalloc()
      mshv: Add ioctl for self targeted passthrough hvcalls
      Drivers: hv: Introduce mshv_vtl driver
      Drivers: hv: Export some symbols for mshv_vtl
      static_call: allow using STATIC_CALL_TRAMP_STR() from assembly
      mshv: Extend create partition ioctl to support cpu features
      mshv: Allow mappings that overlap in uaddr
      mshv: Fix create memory region overlap check
      mshv: add WQ_PERCPU to alloc_workqueue users
      Drivers: hv: Use kmalloc_array() instead of kmalloc()
      ...

diff --combined MAINTAINERS
index d701a4d5b00ee,da844816d2a01..9f886de7e4ab7
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@@ -388,7 -388,7 +388,7 @@@ B: https://bugzilla.kernel.or
  F:    drivers/acpi/*thermal*
  
  ACPI VIOT DRIVER
 -M:    Jean-Philippe Brucker <[email protected]>
 +M:    Jean-Philippe Brucker <[email protected]>
  L:    [email protected]
  L:    [email protected]
  S:    Maintained
@@@ -440,18 -440,6 +440,18 @@@ W:       http://wiki.analog.com/AD539
  W:    https://ez.analog.com/linux-software-drivers
  F:    drivers/regulator/ad5398.c
  
 +AD5446        ANALOG DEVICES INC AD5446 DAC DRIVER
 +M:    Michael Hennerich <[email protected]>
 +M:    Nuno Sá <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +W:    https://ez.analog.com/linux-software-drivers
 +F:    Documentation/devicetree/bindings/iio/dac/adi,ad5446.yaml
 +F:    drivers/iio/dac/ad5446-i2c.c
 +F:    drivers/iio/dac/ad5446-spi.c
 +F:    drivers/iio/dac/ad5446.c
 +F:    drivers/iio/dac/ad5446.h
 +
  AD714X CAPACITANCE TOUCH SENSOR DRIVER (AD7142/3/7/8/7A)
  M:    Michael Hennerich <[email protected]>
  S:    Supported
@@@ -927,7 -915,6 +927,7 @@@ F: drivers/staging/media/sunxi/cedrus
  ALPHA PORT
  M:    Richard Henderson <[email protected]>
  M:    Matt Turner <[email protected]>
 +M:    Magnus Lindholm <[email protected]>
  L:    [email protected]
  S:    Odd Fixes
  F:    arch/alpha/
@@@ -986,7 -973,7 +986,7 @@@ F: drivers/edac/al_mc_edac.
  AMAZON ANNAPURNA LABS THERMAL MMIO DRIVER
  M:    Talel Shenhar <[email protected]>
  S:    Maintained
 -F:    Documentation/devicetree/bindings/thermal/amazon,al-thermal.txt
 +F:    Documentation/devicetree/bindings/thermal/amazon,al-thermal.yaml
  F:    drivers/thermal/thermal_mmio.c
  
  AMAZON ETHERNET DRIVERS
@@@ -1093,7 -1080,7 +1093,7 @@@ M:      Austin Zheng <[email protected]
  M:    Jun Lei <[email protected]>
  S:    Supported
  F:    drivers/gpu/drm/amd/display/dc/dml/
 -F:    drivers/gpu/drm/amd/display/dc/dml2/
 +F:    drivers/gpu/drm/amd/display/dc/dml2_0/
  
  AMD FAM15H PROCESSOR POWER MONITORING DRIVER
  M:    Huang Rui <[email protected]>
@@@ -1770,7 -1757,6 +1770,7 @@@ S:      Supporte
  W:    http://wiki.analog.com/
  W:    https://ez.analog.com/linux-software-drivers
  F:    Documentation/devicetree/bindings/sound/adi,*
 +F:    Documentation/devicetree/bindings/sound/trivial-codec.yaml
  F:    sound/soc/codecs/ad1*
  F:    sound/soc/codecs/ad7*
  F:    sound/soc/codecs/adau*
@@@ -1821,9 -1807,11 +1821,9 @@@ ANDROID DRIVER
  M:    Greg Kroah-Hartman <[email protected]>
  M:    Arve Hjønnevåg <[email protected]>
  M:    Todd Kjos <[email protected]>
 -M:    Martijn Coenen <[email protected]>
 -M:    Joel Fernandes <[email protected]>
  M:    Christian Brauner <[email protected]>
  M:    Carlos Llamas <[email protected]>
 -M:    Suren Baghdasaryan <[email protected]>
 +M:    Alice Ryhl <[email protected]>
  L:    [email protected]
  S:    Supported
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git
@@@ -2009,10 -1997,6 +2009,10 @@@ F:    include/uapi/linux/if_arcnet.
  
  ARM AND ARM64 SoC SUB-ARCHITECTURES (COMMON PARTS)
  M:    Arnd Bergmann <[email protected]>
 +M:    Krzysztof Kozlowski <[email protected]>
 +M:    Alexandre Belloni <[email protected]>
 +M:    Linus Walleij <[email protected]>
 +R:    Drew Fustini <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  L:    [email protected]
  S:    Maintained
@@@ -2033,15 -2017,6 +2033,15 @@@ F:    arch/arm64/include/asm/arch_timer.
  F:    drivers/clocksource/arm_arch_timer.c
  F:    drivers/clocksource/arm_arch_timer_mmio.c
  
 +ARM ETHOS-U NPU DRIVER
 +M:    Rob Herring (Arm) <[email protected]>
 +M:    Tomeu Vizoso <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +T:    git https://gitlab.freedesktop.org/drm/misc/kernel.git
 +F:    drivers/accel/ethosu/
 +F:    include/uapi/drm/ethosu_accel.h
 +
  ARM GENERIC INTERRUPT CONTROLLER DRIVERS
  M:    Marc Zyngier <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
@@@ -2117,8 -2092,7 +2117,8 @@@ F:      drivers/gpu/drm/arm/display/komeda
  ARM MALI PANFROST DRM DRIVER
  M:    Boris Brezillon <[email protected]>
  M:    Rob Herring <[email protected]>
 -R:    Steven Price <[email protected]>
 +M:    Steven Price <[email protected]>
 +M:    Adrián Larumbe <[email protected]>
  L:    [email protected]
  S:    Supported
  T:    git https://gitlab.freedesktop.org/drm/misc/kernel.git
@@@ -2127,20 -2101,6 +2127,20 @@@ F:    drivers/gpu/drm/ci/xfails/panfrost
  F:    drivers/gpu/drm/panfrost/
  F:    include/uapi/drm/panfrost_drm.h
  
 +ARM MALI-C55 ISP DRIVER
 +M:    Daniel Scally <[email protected]>
 +M:    Jacopo Mondi <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +T:    git git://linuxtv.org/media_tree.git
 +F:    Documentation/admin-guide/media/mali-c55-graph.dot
 +F:    Documentation/admin-guide/media/mali-c55.rst
 +F:    Documentation/devicetree/bindings/media/arm,mali-c55.yaml
 +F:    Documentation/userspace-api/media/drivers/mali-c55.rst
 +F:    Documentation/userspace-api/media/v4l/metafmt-arm-mali-c55.rst
 +F:    drivers/media/platform/arm/mali-c55/
 +F:    include/uapi/linux/media/arm/mali-c55-config.h
 +
  ARM MALI PANTHOR DRM DRIVER
  M:    Boris Brezillon <[email protected]>
  M:    Steven Price <[email protected]>
@@@ -2279,7 -2239,7 +2279,7 @@@ F:      drivers/iommu/arm
  F:    drivers/iommu/io-pgtable-arm*
  
  ARM SMMU SVA SUPPORT
 -R:    Jean-Philippe Brucker <[email protected]>
 +R:    Jean-Philippe Brucker <[email protected]>
  F:    drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c
  
  ARM SUB-ARCHITECTURES
@@@ -2304,7 -2264,7 +2304,7 @@@ F:      Documentation/devicetree/bindings/in
  F:    Documentation/devicetree/bindings/mmc/owl-mmc.yaml
  F:    Documentation/devicetree/bindings/net/actions,owl-emac.yaml
  F:    Documentation/devicetree/bindings/pinctrl/actions,*
 -F:    Documentation/devicetree/bindings/power/actions,owl-sps.txt
 +F:    Documentation/devicetree/bindings/power/actions,s500-sps.yaml
  F:    Documentation/devicetree/bindings/timer/actions,owl-timer.yaml
  F:    arch/arm/boot/dts/actions/
  F:    arch/arm/mach-actions/
@@@ -2338,7 -2298,7 +2338,7 @@@ S:      Maintaine
  F:    drivers/clk/sunxi/
  
  ARM/Allwinner sunXi SoC support
 -M:    Chen-Yu Tsai <[email protected]>
 +M:    Chen-Yu Tsai <[email protected]>
  M:    Jernej Skrabec <[email protected]>
  M:    Samuel Holland <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
@@@ -2432,9 -2392,9 +2432,9 @@@ M:      Martin Povišer <[email protected]
  L:    [email protected]
  L:    [email protected]
  S:    Maintained
 -F:    Documentation/devicetree/bindings/sound/adi,ssm3515.yaml
 -F:    Documentation/devicetree/bindings/sound/cirrus,cs42l84.yaml
  F:    Documentation/devicetree/bindings/sound/apple,*
 +F:    Documentation/devicetree/bindings/sound/cirrus,cs42l84.yaml
 +F:    Documentation/devicetree/bindings/sound/trivial-codec.yaml
  F:    sound/soc/apple/*
  F:    sound/soc/codecs/cs42l83-i2c.c
  F:    sound/soc/codecs/cs42l84.*
@@@ -2477,16 -2437,13 +2477,16 @@@ F:   Documentation/devicetree/bindings/po
  F:    Documentation/devicetree/bindings/pwm/apple,s5l-fpwm.yaml
  F:    Documentation/devicetree/bindings/spi/apple,spi.yaml
  F:    Documentation/devicetree/bindings/spmi/apple,spmi.yaml
 +F:    Documentation/devicetree/bindings/usb/apple,dwc3.yaml
  F:    Documentation/devicetree/bindings/watchdog/apple,wdt.yaml
 +F:    Documentation/hwmon/macsmc-hwmon.rst
  F:    arch/arm64/boot/dts/apple/
  F:    drivers/bluetooth/hci_bcm4377.c
  F:    drivers/clk/clk-apple-nco.c
  F:    drivers/cpufreq/apple-soc-cpufreq.c
  F:    drivers/dma/apple-admac.c
  F:    drivers/gpio/gpio-macsmc.c
 +F:    drivers/hwmon/macsmc-hwmon.c
  F:    drivers/pmdomain/apple/
  F:    drivers/i2c/busses/i2c-pasemi-core.c
  F:    drivers/i2c/busses/i2c-pasemi-platform.c
@@@ -2504,7 -2461,6 +2504,7 @@@ F:      drivers/pwm/pwm-apple.
  F:    drivers/soc/apple/*
  F:    drivers/spi/spi-apple.c
  F:    drivers/spmi/spmi-apple-controller.c
 +F:    drivers/usb/dwc3/dwc3-apple.c
  F:    drivers/video/backlight/apple_dwi_bl.c
  F:    drivers/watchdog/apple_wdt.c
  F:    include/dt-bindings/interrupt-controller/apple-aic.h
@@@ -2587,14 -2543,6 +2587,14 @@@ S:    Maintaine
  F:    Documentation/devicetree/bindings/arm/blaize.yaml
  F:    arch/arm64/boot/dts/blaize/
  
 +ARM/BST SOC SUPPORT
 +M:    Ge Gordon <[email protected]>
 +R:    BST Linux Kernel Upstream Group <[email protected]>
 +L:    [email protected] (moderated for non-subscribers)
 +S:    Supported
 +F:    Documentation/devicetree/bindings/arm/bst.yaml
 +F:    arch/arm64/boot/dts/bst/
 +
  ARM/CALXEDA HIGHBANK ARCHITECTURE
  M:    Andre Przywara <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
@@@ -2708,7 -2656,7 +2708,7 @@@ F:      Documentation/ABI/testing/debugfs-mo
  F:    Documentation/ABI/testing/sysfs-bus-i2c-devices-turris-omnia-mcu
  F:    Documentation/ABI/testing/sysfs-bus-moxtet-devices
  F:    Documentation/ABI/testing/sysfs-firmware-turris-mox-rwtm
 -F:    Documentation/devicetree/bindings/bus/moxtet.txt
 +F:    Documentation/devicetree/bindings/bus/cznic,moxtet.yaml
  F:    Documentation/devicetree/bindings/firmware/cznic,turris-mox-rwtm.txt
  F:    Documentation/devicetree/bindings/firmware/cznic,turris-omnia-mcu.yaml
  F:    Documentation/devicetree/bindings/interrupt-controller/marvell,mpic.yaml
@@@ -3184,15 -3132,6 +3184,15 @@@ F:    arch/arm64/boot/dts/freescale/s32g*.
  F:    drivers/pinctrl/nxp/
  F:    drivers/rtc/rtc-s32g.c
  
 +ARM/NXP S32G PCIE CONTROLLER DRIVER
 +M:    Ciprian Marian Costea <[email protected]>
 +R:    NXP S32 Linux Team <[email protected]>
 +L:    [email protected]
 +L:    [email protected] (moderated for non-subscribers)
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/pci/nxp,s32g-pcie.yaml
 +F:    drivers/pci/controller/dwc/pcie-nxp-s32g*
 +
  ARM/NXP S32G/S32R DWMAC ETHERNET DRIVER
  M:    Jan Petrous <[email protected]>
  R:    [email protected]
@@@ -3357,7 -3296,6 +3357,7 @@@ F:      drivers/*/*/*rockchip
  F:    drivers/*/*rockchip*
  F:    drivers/clk/rockchip/
  F:    drivers/i2c/busses/i2c-rk3x.c
 +F:    drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c
  F:    sound/soc/rockchip/
  N:    rockchip
  
@@@ -3464,7 -3402,7 +3464,7 @@@ S:      Maintaine
  F:    drivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c
  
  ARM/SOCFPGA EDAC BINDINGS
 -M:    Matthew Gerlach <[email protected]>
 +M:    Niravkumar L Rabara <[email protected]>
  S:    Maintained
  F:    Documentation/devicetree/bindings/edac/altr,socfpga-ecc-manager.yaml
  
@@@ -3499,6 -3437,7 +3499,6 @@@ F:      drivers/clocksource/clksrc_st_lpc.
  F:    drivers/cpufreq/sti-cpufreq.c
  F:    drivers/dma/st_fdma*
  F:    drivers/i2c/busses/i2c-st.c
 -F:    drivers/media/platform/st/sti/c8sectpfe/
  F:    drivers/media/rc/st_rc.c
  F:    drivers/mmc/host/sdhci-st.c
  F:    drivers/phy/st/phy-miphy28lp.c
@@@ -3806,13 -3745,6 +3806,13 @@@ S:    Maintaine
  F:    Documentation/devicetree/bindings/iio/chemical/aosong,ags02ma.yaml
  F:    drivers/iio/chemical/ags02ma.c
  
 +AOSONG ADP810 DIFFERENTIAL PRESSURE SENSOR DRIVER
 +M:    Akhilesh Patil <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/iio/pressure/aosong,adp810.yaml
 +F:    drivers/iio/pressure/adp810.c
 +
  ASC7621 HARDWARE MONITOR DRIVER
  M:    George Joseph <[email protected]>
  L:    [email protected]
@@@ -3909,7 -3841,6 +3909,7 @@@ F:      drivers/hwmon/asus-ec-sensors.
  ASUS NOTEBOOKS AND EEEPC ACPI/WMI EXTRAS DRIVERS
  M:    Corentin Chary <[email protected]>
  M:    Luke D. Jones <[email protected]>
 +M:    Denis Benato <[email protected]>
  L:    [email protected]
  S:    Maintained
  W:    https://asus-linux.org/
@@@ -3989,7 -3920,7 +3989,7 @@@ F:      crypto/async_tx
  F:    include/linux/async_tx.h
  
  AT24 EEPROM DRIVER
 -M:    Bartosz Golaszewski <[email protected]>
 +M:    Bartosz Golaszewski <[email protected]>
  L:    [email protected]
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux.git
@@@ -4192,12 -4123,6 +4192,12 @@@ S:    Maintaine
  F:    Documentation/devicetree/bindings/iio/adc/avia-hx711.yaml
  F:    drivers/iio/adc/hx711.c
  
 +AWINIC AW99706 WLED BACKLIGHT DRIVER
 +M:    Junjie Cao <[email protected]>
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/leds/backlight/awinic,aw99706.yaml
 +F:    drivers/video/backlight/aw99706.c
 +
  AX.25 NETWORK LAYER
  L:    [email protected]
  S:    Orphan
@@@ -4375,7 -4300,7 +4375,7 @@@ F:      Documentation/filesystems/befs.rs
  F:    fs/befs/
  
  BFQ I/O SCHEDULER
 -M:    Yu Kuai <[email protected]>
 +M:    Yu Kuai <[email protected]>
  L:    [email protected]
  S:    Odd Fixes
  F:    Documentation/block/bfq-iosched.rst
@@@ -4451,7 -4376,6 +4451,7 @@@ F:      arch/*/lib/bitops.
  F:    include/asm-generic/bitops
  F:    include/asm-generic/bitops.h
  F:    include/linux/bitops.h
 +F:    lib/hweight.c
  F:    lib/test_bitops.c
  F:    tools/*/bitops*
  
@@@ -4469,15 -4393,13 +4469,15 @@@ BLOCK LAYE
  M:    Jens Axboe <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux.git
  F:    Documentation/ABI/stable/sysfs-block
  F:    Documentation/block/
  F:    block/
  F:    drivers/block/
  F:    include/linux/bio.h
  F:    include/linux/blk*
 +F:    include/uapi/linux/blk*
 +F:    include/uapi/linux/ioprio.h
  F:    kernel/trace/blktrace.c
  F:    lib/sbitmap.c
  
@@@ -4545,13 -4467,6 +4545,13 @@@ F:    include/net/bond
  F:    include/uapi/linux/if_bonding.h
  F:    tools/testing/selftests/drivers/net/bonding/
  
 +BOSCH SENSORTEC BMA220 ACCELEROMETER IIO DRIVER
 +M:    Petre Rodan <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/iio/accel/bosch,bma220.yaml
 +F:    drivers/iio/accel/bma220*
 +
  BOSCH SENSORTEC BMA400 ACCELEROMETER IIO DRIVER
  M:    Dan Robertson <[email protected]>
  L:    [email protected]
@@@ -4617,7 -4532,7 +4617,7 @@@ F:      drivers/net/ethernet/netronome/nfp/b
  
  BPF JIT for POWERPC (32-BIT AND 64-BIT)
  M:    Hari Bathini <[email protected]>
 -M:    Christophe Leroy <[email protected]>
 +M:    Christophe Leroy (CS GROUP) <[email protected]>
  R:    Naveen N Rao <[email protected]>
  L:    [email protected]
  S:    Supported
@@@ -4733,7 -4648,6 +4733,7 @@@ F:      Documentation/userspace-api/ebpf
  F:    arch/*/net/*
  F:    include/linux/bpf*
  F:    include/linux/btf*
 +F:    include/linux/buildid.h
  F:    include/linux/filter.h
  F:    include/trace/events/xdp.h
  F:    include/uapi/linux/bpf*
@@@ -4890,7 -4804,6 +4890,7 @@@ F:      drivers/net/ethernet/broadcom/b44.
  
  BROADCOM B53/SF2 ETHERNET SWITCH DRIVER
  M:    Florian Fainelli <[email protected]>
 +M:    Jonas Gorski <[email protected]>
  L:    [email protected]
  L:    [email protected] (subscribers-only)
  S:    Supported
@@@ -4899,7 -4812,6 +4899,7 @@@ F:      drivers/net/dsa/b53/
  F:    drivers/net/dsa/bcm_sf2*
  F:    include/linux/dsa/brcm.h
  F:    include/linux/platform_data/b53.h
 +F:    net/dsa/tag_brcm.c
  
  BROADCOM BCM2711/BCM2835 ARM ARCHITECTURE
  M:    Florian Fainelli <[email protected]>
@@@ -4910,9 -4822,7 +4910,9 @@@ S:      Maintaine
  T:    git https://github.com/broadcom/stblinux.git
  F:    Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml
  F:    drivers/pci/controller/pcie-brcmstb.c
 +F:    drivers/platform/raspberrypi/vchiq-*
  F:    drivers/staging/vc04_services
 +F:    include/linux/raspberrypi/vchiq*
  N:    bcm2711
  N:    bcm2712
  N:    bcm283*
@@@ -5213,6 -5123,7 +5213,6 @@@ F:      Documentation/devicetree/bindings/ne
  F:    drivers/net/ethernet/broadcom/genet/
  F:    drivers/net/ethernet/broadcom/unimac.h
  F:    drivers/net/mdio/mdio-bcm-unimac.c
 -F:    include/linux/platform_data/bcmgenet.h
  F:    include/linux/platform_data/mdio-bcm-unimac.h
  
  BROADCOM IPROC ARM ARCHITECTURE
@@@ -5280,13 -5191,6 +5280,13 @@@ W:    http://www.broadcom.co
  F:    drivers/infiniband/hw/bnxt_re/
  F:    include/uapi/rdma/bnxt_re-abi.h
  
 +BROADCOM 800 GIGABIT ROCE DRIVER
 +M:    Siva Reddy Kallam <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +W:    http://www.broadcom.com
 +F:    drivers/infiniband/hw/bng_re/
 +
  BROADCOM NVRAM DRIVER
  M:    Rafał Miłecki <[email protected]>
  L:    [email protected]
@@@ -6701,6 -6605,7 +6701,6 @@@ CRYPTOGRAPHIC RANDOM NUMBER GENERATO
  M:    Neil Horman <[email protected]>
  L:    [email protected]
  S:    Maintained
 -F:    crypto/ansi_cprng.c
  F:    crypto/rng.c
  
  CS3308 MEDIA DRIVER
@@@ -7284,6 -7189,7 +7284,6 @@@ F:      Documentation/devicetree/bindings/in
  F:    Documentation/devicetree/bindings/input/dlg,da9062-onkey.yaml
  F:    Documentation/devicetree/bindings/mfd/da90*.txt
  F:    Documentation/devicetree/bindings/mfd/dlg,da90*.yaml
 -F:    Documentation/devicetree/bindings/regulator/da92*.txt
  F:    Documentation/devicetree/bindings/regulator/dlg,da9*.yaml
  F:    Documentation/devicetree/bindings/regulator/dlg,slg51000.yaml
  F:    Documentation/devicetree/bindings/sound/da[79]*.txt
@@@ -7402,7 -7308,6 +7402,7 @@@ F:      Documentation/userspace-api/dma-buf-
  F:    drivers/dma-buf/
  F:    include/linux/*fence.h
  F:    include/linux/dma-buf.h
 +F:    include/linux/dma-buf/
  F:    include/linux/dma-resv.h
  K:    \bdma_(?:buf|fence|resv)\b
  
@@@ -7506,10 -7411,16 +7506,10 @@@ S:   Maintaine
  P:    Documentation/doc-guide/maintainer-profile.rst
  T:    git git://git.lwn.net/linux.git docs-next
  F:    Documentation/
 -F:    scripts/check-variable-fonts.sh
 -F:    scripts/checktransupdate.py
 -F:    scripts/documentation-file-ref-check
 -F:    scripts/get_abi.py
  F:    scripts/kernel-doc*
 -F:    scripts/lib/abi/*
 -F:    scripts/lib/kdoc/*
 -F:    tools/docs/*
 +F:    tools/lib/python/*
 +F:    tools/docs/
  F:    tools/net/ynl/pyynl/lib/doc_generator.py
 -F:    scripts/sphinx-pre-install
  X:    Documentation/ABI/
  X:    Documentation/admin-guide/media/
  X:    Documentation/devicetree/
@@@ -7542,10 -7453,9 +7542,10 @@@ DOCUMENTATION SCRIPT
  M:    Mauro Carvalho Chehab <[email protected]>
  L:    [email protected]
  S:    Maintained
 -F:    Documentation/sphinx/parse-headers.pl
 -F:    scripts/documentation-file-ref-check
 -F:    scripts/sphinx-pre-install
 +F:    Documentation/sphinx/
 +F:    scripts/kernel-doc*
 +F:    tools/lib/python/*
 +F:    tools/docs/
  
  DOCUMENTATION/ITALIAN
  M:    Federico Vaga <[email protected]>
@@@ -7568,7 -7478,7 +7568,7 @@@ F:      Documentation/devicetree/bindings/me
  F:    drivers/media/i2c/dw9714.c
  
  DONGWOON DW9719 LENS VOICE COIL DRIVER
 -M:    Daniel Scally <[email protected]>
 +M:    Daniel Scally <[email protected]>
  L:    [email protected]
  S:    Maintained
  T:    git git://linuxtv.org/media.git
@@@ -7726,7 -7636,8 +7726,7 @@@ F:      drivers/accel
  F:    include/drm/drm_accel.h
  
  DRM DRIVER FOR ALLWINNER DE2 AND DE3 ENGINE
 -M:    Maxime Ripard <[email protected]>
 -M:    Chen-Yu Tsai <[email protected]>
 +M:    Chen-Yu Tsai <[email protected]>
  R:    Jernej Skrabec <[email protected]>
  L:    [email protected]
  S:    Supported
@@@ -7835,8 -7746,7 +7835,8 @@@ F:      Documentation/devicetree/bindings/di
  F:    drivers/gpu/drm/panel/panel-edp.c
  
  DRM DRIVER FOR GENERIC USB DISPLAY
 -S:    Orphan
 +M:    Ruben Wauters <[email protected]>
 +S:    Maintained
  W:    https://github.com/notro/gud/wiki
  T:    git https://gitlab.freedesktop.org/drm/misc/kernel.git
  F:    drivers/gpu/drm/gud/
@@@ -7958,7 -7868,6 +7958,7 @@@ DRM DRIVER for Qualcomm Adreno GPU
  M:    Rob Clark <[email protected]>
  R:    Sean Paul <[email protected]>
  R:    Konrad Dybcio <[email protected]>
 +R:    Akhil P Oommen <[email protected]>
  L:    [email protected]
  L:    [email protected]
  L:    [email protected]
@@@ -7978,7 -7887,7 +7978,7 @@@ DRM DRIVER for Qualcomm display hardwar
  M:    Rob Clark <[email protected]>
  M:    Dmitry Baryshkov <[email protected]>
  R:    Abhinav Kumar <[email protected]>
 -R:    Jessica Zhang <[email protected]>
 +R:    Jessica Zhang <[email protected]>
  R:    Sean Paul <[email protected]>
  R:    Marijn Suijten <[email protected]>
  L:    [email protected]
@@@ -8147,25 -8056,12 +8147,25 @@@ S:   Maintaine
  F:    Documentation/devicetree/bindings/display/panel/samsung,s6d7aa0.yaml
  F:    drivers/gpu/drm/panel/panel-samsung-s6d7aa0.c
  
 +DRM DRIVER FOR SAMSUNG S6E3FC2X01 DDIC
 +M:    David Heidelberg <[email protected]>
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/display/panel/samsung,s6e3fc2x01.yaml
 +F:    drivers/gpu/drm/panel/panel-samsung-s6e3fc2x01.c
 +
  DRM DRIVER FOR SAMSUNG S6E3HA8 PANELS
  M:    Dzmitry Sankouski <[email protected]>
  S:    Maintained
  F:    Documentation/devicetree/bindings/display/panel/samsung,s6e3ha8.yaml
  F:    drivers/gpu/drm/panel/panel-samsung-s6e3ha8.c
  
 +DRM DRIVER FOR SAMSUNG SOFEF00 DDIC
 +M:    David Heidelberg <[email protected]>
 +M:    Casey Connolly <[email protected]>
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/display/panel/samsung,sofef00.yaml
 +F:    drivers/gpu/drm/panel/panel-samsung-sofef00.c
 +
  DRM DRIVER FOR SHARP MEMORY LCD
  M:    Alex Lanzano <[email protected]>
  S:    Maintained
@@@ -8350,12 -8246,12 +8350,12 @@@ S:   Supporte
  W:    https://drm.pages.freedesktop.org/maintainer-tools/drm-rust.html
  T:    git https://gitlab.freedesktop.org/drm/rust/kernel.git
  F:    drivers/gpu/drm/nova/
 +F:    drivers/gpu/drm/tyr/
  F:    drivers/gpu/nova-core/
  F:    rust/kernel/drm/
  
  DRM DRIVERS FOR ALLWINNER A10
 -M:    Maxime Ripard <[email protected]>
 -M:    Chen-Yu Tsai <[email protected]>
 +M:    Chen-Yu Tsai <[email protected]>
  L:    [email protected]
  S:    Supported
  T:    git https://gitlab.freedesktop.org/drm/misc/kernel.git
@@@ -8682,7 -8578,6 +8682,7 @@@ S:      Supporte
  T:    git https://gitlab.freedesktop.org/drm/misc/kernel.git
  F:    drivers/gpu/drm/scheduler/
  F:    include/drm/gpu_scheduler.h
 +F:    include/drm/spsc_queue.h
  
  DRM GPUVM
  M:    Danilo Krummrich <[email protected]>
@@@ -8705,7 -8600,7 +8705,7 @@@ F:      drivers/gpu/drm/clients/drm_log.
  
  DRM PANEL DRIVERS
  M:    Neil Armstrong <[email protected]>
 -R:    Jessica Zhang <[email protected]>
 +R:    Jessica Zhang <[email protected]>
  L:    [email protected]
  S:    Maintained
  T:    git https://gitlab.freedesktop.org/drm/misc/kernel.git
@@@ -9285,9 -9180,6 +9285,9 @@@ S:      Maintaine
  F:    kernel/power/energy_model.c
  F:    include/linux/energy_model.h
  F:    Documentation/power/energy-model.rst
 +F:    Documentation/netlink/specs/em.yaml
 +F:    include/uapi/linux/energy_model.h
 +F:    kernel/power/em_netlink*.*
  
  EPAPR HYPERVISOR BYTE CHANNEL DEVICE DRIVER
  M:    Laurentiu Tudor <[email protected]>
@@@ -9309,7 -9201,6 +9309,7 @@@ R:      Yue Hu <[email protected]
  R:    Jeffle Xu <[email protected]>
  R:    Sandeep Dhavale <[email protected]>
  R:    Hongbo Li <[email protected]>
 +R:    Chunhai Guo <[email protected]>
  L:    [email protected]
  S:    Maintained
  W:    https://erofs.docs.kernel.org
@@@ -9366,6 -9257,7 +9366,6 @@@ M:      Ido Schimmel <[email protected]
  L:    [email protected]
  L:    [email protected]
  S:    Maintained
 -W:    http://www.linuxfoundation.org/en/Net:Bridge
  F:    include/linux/if_bridge.h
  F:    include/uapi/linux/if_bridge.h
  F:    include/linux/netfilter_bridge/
@@@ -10111,7 -10003,7 +10111,7 @@@ F:   drivers/spi/spi-fsl-qspi.
  
  FREESCALE QUICC ENGINE LIBRARY
  M:    Qiang Zhao <[email protected]>
 -M:    Christophe Leroy <[email protected]>
 +M:    Christophe Leroy (CS GROUP) <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    drivers/soc/fsl/qe/
@@@ -10164,7 -10056,7 +10164,7 @@@ S:   Maintaine
  F:    drivers/tty/serial/ucc_uart.c
  
  FREESCALE SOC DRIVERS
 -M:    Christophe Leroy <[email protected]>
 +M:    Christophe Leroy (CS GROUP) <[email protected]>
  L:    [email protected]
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
@@@ -10635,7 -10527,7 +10635,7 @@@ L:   [email protected]
  S:    Supported
  B:    
https://bugzilla.kernel.org/enter_bug.cgi?product=File%20System&component=gfs2
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2.git
 -F:    Documentation/filesystems/gfs2*
 +F:    Documentation/filesystems/gfs2/
  F:    fs/gfs2/
  F:    include/uapi/linux/gfs2_ondisk.h
  
@@@ -10708,9 -10600,8 +10708,9 @@@ F:   Documentation/devicetree/bindings/cl
  F:    
Documentation/devicetree/bindings/soc/google/google,gs101-pmu-intr-gen.yaml
  F:    arch/arm64/boot/dts/exynos/google/
  F:    drivers/clk/samsung/clk-gs101.c
 +F:    drivers/soc/samsung/gs101-pmu.c
  F:    drivers/phy/samsung/phy-gs101-ufs.c
 -F:    include/dt-bindings/clock/google,gs101.h
 +F:    include/dt-bindings/clock/google,gs101*
  K:    [gG]oogle.?[tT]ensor
  
  GPD FAN DRIVER
@@@ -10729,9 -10620,7 +10729,9 @@@ F:   drivers/platform/x86/gpd-pocket-fan.
  GPIB DRIVERS
  M:    Dave Penkler <[email protected]>
  S:    Maintained
 -F:    drivers/staging/gpib/
 +F:    drivers/gpib/
 +F:    include/uapi/linux/gpib.h
 +F:    include/uapi/linux/gpib_ioctl.h
  
  GPIO ACPI SUPPORT
  M:    Mika Westerberg <[email protected]>
@@@ -10781,7 -10670,7 +10781,7 @@@ F:   tools/gpio/gpio-sloppy-logic-analyze
  
  GPIO SUBSYSTEM
  M:    Linus Walleij <[email protected]>
 -M:    Bartosz Golaszewski <[email protected]>
 +M:    Bartosz Golaszewski <[email protected]>
  L:    [email protected]
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux.git
@@@ -10798,7 -10687,7 +10798,7 @@@ K:   GPIOD_FLAGS_BIT_NONEXCLUSIV
  K:    devm_gpiod_unhinge
  
  GPIO UAPI
 -M:    Bartosz Golaszewski <[email protected]>
 +M:    Bartosz Golaszewski <[email protected]>
  R:    Kent Gibson <[email protected]>
  L:    [email protected]
  S:    Maintained
@@@ -11630,7 -11519,7 +11630,7 @@@ F:   include/linux/platform_data/huawei-g
  HUGETLB SUBSYSTEM
  M:    Muchun Song <[email protected]>
  M:    Oscar Salvador <[email protected]>
 -R:    David Hildenbrand <[email protected]>
 +R:    David Hildenbrand <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    Documentation/ABI/testing/sysfs-kernel-mm-hugepages
@@@ -11644,8 -11533,6 +11644,8 @@@ F:   mm/hugetlb.
  F:    mm/hugetlb_cgroup.c
  F:    mm/hugetlb_cma.c
  F:    mm/hugetlb_cma.h
 +F:    mm/hugetlb_sysctl.c
 +F:    mm/hugetlb_sysfs.c
  F:    mm/hugetlb_vmemmap.c
  F:    mm/hugetlb_vmemmap.h
  F:    tools/testing/selftests/cgroup/test_hugetlb_memcg.c
@@@ -11663,8 -11550,6 +11663,8 @@@ M:   Miaohe Lin <[email protected]
  R:    Naoya Horiguchi <[email protected]>
  L:    [email protected]
  S:    Maintained
 +F:    include/linux/memory-failure.h
 +F:    include/trace/events/memory-failure.h
  F:    mm/hwpoison-inject.c
  F:    mm/memory-failure.c
  
@@@ -11689,7 -11574,7 +11689,7 @@@ T:   git git://linuxtv.org/media.gi
  F:    drivers/media/i2c/hi556.c
  
  HYNIX HI846 SENSOR DRIVER
 -M:    Martin Kepplinger <[email protected]>
 +M:    Martin Kepplinger-Novakovic <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    drivers/media/i2c/hi846.c
@@@ -11705,6 -11590,7 +11705,7 @@@ M:   "K. Y. Srinivasan" <[email protected]
  M:    Haiyang Zhang <[email protected]>
  M:    Wei Liu <[email protected]>
  M:    Dexuan Cui <[email protected]>
+ M:    Long Li <[email protected]>
  L:    [email protected]
  S:    Supported
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/hyperv/linux.git
@@@ -11722,6 -11608,7 +11723,7 @@@ F:   arch/x86/kernel/cpu/mshyperv.
  F:    drivers/clocksource/hyperv_timer.c
  F:    drivers/hid/hid-hyperv.c
  F:    drivers/hv/
+ F:    drivers/infiniband/hw/mana/
  F:    drivers/input/serio/hyperv-keyboard.c
  F:    drivers/iommu/hyperv-iommu.c
  F:    drivers/net/ethernet/microsoft/
@@@ -11740,6 -11627,7 +11742,7 @@@ F:   include/hyperv/hvhdk_mini.
  F:    include/linux/hyperv.h
  F:    include/net/mana
  F:    include/uapi/linux/hyperv.h
+ F:    include/uapi/rdma/mana-abi.h
  F:    net/vmw_vsock/hyperv_transport.c
  F:    tools/hv/
  
@@@ -11774,7 -11662,6 +11777,7 @@@ HUNG TASK DETECTO
  M:    Andrew Morton <[email protected]>
  R:    Lance Yang <[email protected]>
  R:    Masami Hiramatsu <[email protected]>
 +R:    Petr Mladek <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    include/linux/hung_task.h
@@@ -11853,16 -11740,6 +11856,16 @@@ F: include/linux/i2c.
  F:    include/uapi/linux/i2c-*.h
  F:    include/uapi/linux/i2c.h
  
 +I2C SUBSYSTEM [RUST]
 +M:    Igor Korotin <[email protected]>
 +R:    Danilo Krummrich <[email protected]>
 +R:    Daniel Almeida <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    rust/kernel/i2c.rs
 +F:    samples/rust/rust_driver_i2c.rs
 +F:    samples/rust/rust_i2c_client.rs
 +
  I2C SUBSYSTEM HOST DRIVERS
  M:    Andi Shyti <[email protected]>
  L:    [email protected]
@@@ -12342,13 -12219,11 +12345,13 @@@ L:        
[email protected]
  S:    Maintained
  W:    http://industrypack.sourceforge.net
  F:    drivers/ipack/
 +F:    include/linux/ipack.h
  
  INFINEON DPS310 Driver
  M:    Eddie James <[email protected]>
  L:    [email protected]
  S:    Maintained
 +F:    Documentation/devicetree/bindings/iio/pressure/infineon,dps310.yaml
  F:    drivers/iio/pressure/dps310.c
  
  INFINEON PEB2466 ASoC CODEC
@@@ -12627,13 -12502,6 +12630,13 @@@ F: drivers/gpu/drm/xe
  F:    include/drm/intel/
  F:    include/uapi/drm/xe_drm.h
  
 +INTEL ELKHART LAKE PSE I/O DRIVER
 +M:    Raag Jadav <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +F:    drivers/platform/x86/intel/ehl_pse_io.c
 +F:    include/linux/ehl_pse_io_aux.h
 +
  INTEL ETHERNET DRIVERS
  M:    Tony Nguyen <[email protected]>
  M:    Przemek Kitszel <[email protected]>
@@@ -12650,7 -12518,6 +12653,7 @@@ F:   include/linux/avf/virtchnl.
  F:    include/linux/net/intel/*/
  
  INTEL ETHERNET PROTOCOL DRIVER FOR RDMA
 +M:    Krzysztof Czurylo <[email protected]>
  M:    Tatyana Nikolova <[email protected]>
  L:    [email protected]
  S:    Supported
@@@ -12697,7 -12564,6 +12700,7 @@@ F:   drivers/dma/ioat
  INTEL IAA CRYPTO DRIVER
  M:    Kristen Accardi <[email protected]>
  M:    Vinicius Costa Gomes <[email protected]>
 +M:    Kanchana P Sridhar <[email protected]>
  L:    [email protected]
  S:    Supported
  F:    Documentation/driver-api/crypto/iaa/iaa-crypto.rst
@@@ -12749,7 -12615,7 +12752,7 @@@ INTEL IPU3 CSI-2 CIO2 DRIVE
  M:    Yong Zhi <[email protected]>
  M:    Sakari Ailus <[email protected]>
  M:    Bingbu Cao <[email protected]>
 -M:    Dan Scally <[email protected]>
 +M:    Dan Scally <[email protected]>
  R:    Tianshu Qiu <[email protected]>
  L:    [email protected]
  S:    Maintained
@@@ -12871,7 -12737,7 +12874,7 @@@ F:   drivers/mfd/intel-m10-bmc
  F:    include/linux/mfd/intel-m10-bmc.h
  
  INTEL MAX10 BMC SECURE UPDATES
 -M:    Matthew Gerlach <[email protected]>
 +M:    Xu Yilun <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    Documentation/ABI/testing/sysfs-driver-intel-m10-bmc-sec-update
@@@ -12992,8 -12858,7 +12995,8 @@@ F:   tools/testing/selftests/sgx/
  K:    \bSGX_
  
  INTEL SKYLAKE INT3472 ACPI DEVICE DRIVER
 -M:    Daniel Scally <[email protected]>
 +M:    Daniel Scally <[email protected]>
 +M:    Sakari Ailus <[email protected]>
  S:    Maintained
  F:    drivers/platform/x86/intel/int3472/
  F:    include/linux/platform_data/x86/int3472.h
@@@ -13170,14 -13035,6 +13173,14 @@@ F: Documentation/ABI/testing/sysfs-bus-
  F:    Documentation/devicetree/bindings/iio/imu/invensense,icm42600.yaml
  F:    drivers/iio/imu/inv_icm42600/
  
 +INVENSENSE ICM-456xx IMU DRIVER
 +M:    Remi Buisson <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +W:    https://invensense.tdk.com/
 +F:    Documentation/devicetree/bindings/iio/imu/invensense,icm45600.yaml
 +F:    drivers/iio/imu/inv_icm45600/
 +
  INVENSENSE MPU-3050 GYROSCOPE DRIVER
  M:    Linus Walleij <[email protected]>
  L:    [email protected]
@@@ -13256,15 -13113,6 +13259,15 @@@ F: include/uapi/linux/io_uring.
  F:    include/uapi/linux/io_uring/
  F:    io_uring/
  
 +IO_URING ZCRX
 +M:    Pavel Begunkov <[email protected]>
 +L:    [email protected]
 +L:    [email protected]
 +T:    git https://github.com/isilence/linux.git zcrx/for-next
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux.git
 +S:    Maintained
 +F:    io_uring/zcrx.*
 +
  IPMI SUBSYSTEM
  M:    Corey Minyard <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
@@@ -13400,8 -13248,10 +13403,8 @@@ T:  git git://git.kernel.org/pub/scm/lin
  F:    drivers/infiniband/ulp/isert
  
  ISDN/CMTP OVER BLUETOOTH
 -M:    Karsten Keil <[email protected]>
 -L:    [email protected] (subscribers-only)
  L:    [email protected]
 -S:    Odd Fixes
 +S:    Orphan
  W:    http://www.isdn4linux.de
  F:    Documentation/isdn/
  F:    drivers/isdn/capi/
@@@ -13410,8 -13260,10 +13413,8 @@@ F:  include/uapi/linux/isdn
  F:    net/bluetooth/cmtp/
  
  ISDN/mISDN SUBSYSTEM
 -M:    Karsten Keil <[email protected]>
 -L:    [email protected] (subscribers-only)
  L:    [email protected]
 -S:    Maintained
 +S:    Orphan
  W:    http://www.isdn4linux.de
  F:    drivers/isdn/Kconfig
  F:    drivers/isdn/Makefile
@@@ -13565,12 -13417,9 +13568,12 @@@ F: mm/kasan
  F:    scripts/Makefile.kasan
  
  KCONFIG
 +M:    Nathan Chancellor <[email protected]>
 +M:    Nicolas Schier <[email protected]>
  L:    [email protected]
 -S:    Orphan
 +S:    Odd Fixes
  Q:    https://patchwork.kernel.org/project/linux-kbuild/list/
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kbuild/linux.git
  F:    Documentation/kbuild/kconfig*
  F:    scripts/Kconfig.include
  F:    scripts/kconfig/
@@@ -13636,7 -13485,7 +13639,7 @@@ F:   fs/autofs
  
  KERNEL BUILD + files below scripts/ (unless maintained elsewhere)
  M:    Nathan Chancellor <[email protected]>
 -M:    Nicolas Schier <[email protected]>
 +M:    Nicolas Schier <[email protected]>
  L:    [email protected]
  S:    Odd Fixes
  Q:    https://patchwork.kernel.org/project/linux-kbuild/list/
@@@ -13695,7 -13544,6 +13698,7 @@@ R:   Dai Ngo <[email protected]
  R:    Tom Talpey <[email protected]>
  L:    [email protected]
  S:    Supported
 +P:    Documentation/filesystems/nfs/nfsd-maintainer-entry-profile.rst
  B:    https://bugzilla.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/cel/linux.git
  F:    Documentation/filesystems/nfs/
@@@ -13715,10 -13563,6 +13718,10 @@@ F: include/uapi/linux/sunrpc
  F:    net/sunrpc/
  F:    tools/net/sunrpc/
  
 +KERNEL NFSD BLOCK and SCSI LAYOUT DRIVER
 +R:    Christoph Hellwig <[email protected]>
 +F:    fs/nfsd/blocklayout*
 +
  KERNEL PACMAN PACKAGING (in addition to generic KERNEL BUILD)
  M:    Thomas Weißschuh <[email protected]>
  R:    Christian Heusel <[email protected]>
@@@ -13760,7 -13604,7 +13763,7 @@@ F:   fs/smb/server
  KERNEL UNIT TESTING FRAMEWORK (KUnit)
  M:    Brendan Higgins <[email protected]>
  M:    David Gow <[email protected]>
 -R:    Rae Moar <[email protected]>
 +R:    Rae Moar <[email protected]>
  L:    [email protected]
  L:    [email protected]
  S:    Maintained
@@@ -13801,7 -13645,7 +13804,7 @@@ F:   virt/kvm/
  
  KERNEL VIRTUAL MACHINE FOR ARM64 (KVM/arm64)
  M:    Marc Zyngier <[email protected]>
 -M:    Oliver Upton <[email protected]>
 +M:    Oliver Upton <[email protected]>
  R:    Joey Gouly <[email protected]>
  R:    Suzuki K Poulose <[email protected]>
  R:    Zenghui Yu <[email protected]>
@@@ -13875,7 -13719,7 +13878,7 @@@ KERNEL VIRTUAL MACHINE for s390 (KVM/s3
  M:    Christian Borntraeger <[email protected]>
  M:    Janosch Frank <[email protected]>
  M:    Claudio Imbrenda <[email protected]>
 -R:    David Hildenbrand <[email protected]>
 +R:    David Hildenbrand <[email protected]>
  L:    [email protected]
  S:    Supported
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kvms390/linux.git
@@@ -13932,16 -13776,14 +13935,16 @@@ F:        kernel/kexec
  KEXEC HANDOVER (KHO)
  M:    Alexander Graf <[email protected]>
  M:    Mike Rapoport <[email protected]>
 -M:    Changyuan Lyu <[email protected]>
 +M:    Pasha Tatashin <[email protected]>
 +R:    Pratyush Yadav <[email protected]>
  L:    [email protected]
  L:    [email protected]
  S:    Maintained
  F:    Documentation/admin-guide/mm/kho.rst
  F:    Documentation/core-api/kho/*
  F:    include/linux/kexec_handover.h
 -F:    kernel/kexec_handover.c
 +F:    kernel/liveupdate/kexec_handover*
 +F:    lib/test_kho.c
  F:    tools/testing/selftests/kho/
  
  KEYS-ENCRYPTED
@@@ -14197,7 -14039,7 +14200,7 @@@ F:   tools/testing/selftests/landlock
  K:    landlock
  K:    LANDLOCK
  
 -LANTIQ / INTEL Ethernet drivers
 +LANTIQ / MAXLINEAR / INTEL Ethernet DSA drivers
  M:    Hauke Mehrtens <[email protected]>
  L:    [email protected]
  S:    Maintained
@@@ -14205,7 -14047,6 +14208,7 @@@ F:   Documentation/devicetree/bindings/ne
  F:    drivers/net/dsa/lantiq/*
  F:    drivers/net/ethernet/lantiq_xrx200.c
  F:    net/dsa/tag_gswip.c
 +F:    net/dsa/tag_mxl-gsw1xx.c
  
  LANTIQ MIPS ARCHITECTURE
  M:    John Crispin <[email protected]>
@@@ -14458,7 -14299,7 +14461,7 @@@ LINUX FOR POWERPC (32-BIT AND 64-BIT
  M:    Madhavan Srinivasan <[email protected]>
  M:    Michael Ellerman <[email protected]>
  R:    Nicholas Piggin <[email protected]>
 -R:    Christophe Leroy <[email protected]>
 +R:    Christophe Leroy (CS GROUP) <[email protected]>
  L:    [email protected]
  S:    Supported
  W:    https://github.com/linuxppc/wiki/wiki
@@@ -14514,7 -14355,7 +14517,7 @@@ F:   Documentation/devicetree/bindings/po
  F:    arch/powerpc/platforms/85xx/
  
  LINUX FOR POWERPC EMBEDDED PPC8XX AND PPC83XX
 -M:    Christophe Leroy <[email protected]>
 +M:    Christophe Leroy (CS GROUP) <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    arch/powerpc/platforms/8xx/
@@@ -14555,7 -14396,6 +14558,7 @@@ F:   tools/memory-model
  
  LINUX-NEXT TREE
  M:    Stephen Rothwell <[email protected]>
 +M:    Mark Brown <[email protected]>
  L:    [email protected]
  S:    Supported
  B:    mailto:[email protected] and the appropriate development tree
@@@ -14602,29 -14442,12 +14605,29 @@@ T:        git 
git://git.kernel.org/pub/scm/lin
  F:    Documentation/ABI/testing/sysfs-kernel-livepatch
  F:    Documentation/livepatch/
  F:    arch/powerpc/include/asm/livepatch.h
 -F:    include/linux/livepatch.h
 +F:    include/linux/livepatch*.h
  F:    kernel/livepatch/
  F:    kernel/module/livepatch.c
  F:    samples/livepatch/
 +F:    scripts/livepatch/
  F:    tools/testing/selftests/livepatch/
  
 +LIVE UPDATE
 +M:    Pasha Tatashin <[email protected]>
 +M:    Mike Rapoport <[email protected]>
 +R:    Pratyush Yadav <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/core-api/liveupdate.rst
 +F:    Documentation/mm/memfd_preservation.rst
 +F:    Documentation/userspace-api/liveupdate.rst
 +F:    include/linux/liveupdate.h
 +F:    include/linux/liveupdate/
 +F:    include/uapi/linux/liveupdate.h
 +F:    kernel/liveupdate/
 +F:    mm/memfd_luo.c
 +F:    tools/testing/selftests/liveupdate/
 +
  LLC (802.2)
  L:    [email protected]
  S:    Odd fixes
@@@ -14696,7 -14519,6 +14699,7 @@@ S:   Maintaine
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git 
locking/core
  F:    Documentation/locking/
  F:    arch/*/include/asm/spinlock*.h
 +F:    include/linux/local_lock*.h
  F:    include/linux/lockdep*.h
  F:    include/linux/mutex*.h
  F:    include/linux/rwlock*.h
@@@ -14841,7 -14663,6 +14844,7 @@@ LOONGSON-2K Board Management Controlle
  M:    Binbin Zhou <[email protected]>
  M:    Chong Qiao <[email protected]>
  S:    Maintained
 +F:    drivers/char/ipmi/ipmi_si_ls2k.c
  F:    drivers/mfd/ls2k-bmc-core.c
  
  LOONGSON EDAC DRIVER
@@@ -15340,15 -15161,6 +15343,15 @@@ S: Orpha
  F:    drivers/video/fbdev/matrox/matroxfb_*
  F:    include/uapi/linux/matroxfb.h
  
 +MAX14001/MAX14002 IIO ADC DRIVER
 +M:    Kim Seer Paller <[email protected]>
 +M:    Marilene Andrade Garcia <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +W:    https://ez.analog.com/linux-software-drivers
 +F:    Documentation/devicetree/bindings/iio/adc/adi,max14001.yaml
 +F:    drivers/iio/adc/max14001.c
 +
  MAX15301 DRIVER
  M:    Daniel Nilsson <[email protected]>
  L:    [email protected]
@@@ -15356,15 -15168,6 +15359,15 @@@ S: Maintaine
  F:    Documentation/hwmon/max15301.rst
  F:    drivers/hwmon/pmbus/max15301.c
  
 +MAX17616 HARDWARE MONITOR DRIVER
 +M:    Kim Seer Paller <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +W:    https://ez.analog.com/linux-software-drivers
 +F:    Documentation/devicetree/bindings/hwmon/pmbus/adi,max17616.yaml
 +F:    Documentation/hwmon/max17616.rst
 +F:    drivers/hwmon/pmbus/max17616.c
 +
  MAX2175 SDR TUNER DRIVER
  M:    Ramesh Shanmugasundaram <[email protected]>
  L:    [email protected]
@@@ -15490,7 -15293,7 +15493,7 @@@ F:   drivers/pwm/pwm-max7360.
  F:    include/linux/mfd/max7360.h
  
  MAXIM MAX77650 PMIC MFD DRIVER
 -M:    Bartosz Golaszewski <[email protected]>
 +M:    Bartosz Golaszewski <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    Documentation/devicetree/bindings/*/*max77650.yaml
@@@ -15592,12 -15395,14 +15595,12 @@@ S:        Supporte
  F:    drivers/net/phy/mxl-86110.c
  F:    drivers/net/phy/mxl-gpy.c
  
 -MCAN MMIO DEVICE DRIVER
 -M:    Chandrasekar Ramakrishnan <[email protected]>
 +MCAN DEVICE DRIVER
 +M:    Markus Schneider-Pargmann <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    Documentation/devicetree/bindings/net/can/bosch,m_can.yaml
 -F:    drivers/net/can/m_can/m_can.c
 -F:    drivers/net/can/m_can/m_can.h
 -F:    drivers/net/can/m_can/m_can_platform.c
 +F:    drivers/net/can/m_can/
  
  MCBA MICROCHIP CAN BUS ANALYZER TOOL DRIVER
  R:    Yasushi SHOJI <[email protected]>
@@@ -15721,8 -15526,6 +15724,8 @@@ F:   drivers/media/pci/ddbridge/
  MEDIA DRIVERS FOR FREESCALE IMX
  M:    Steve Longerbeam <[email protected]>
  M:    Philipp Zabel <[email protected]>
 +R:    Frank Li <[email protected]>
 +L:    [email protected]
  L:    [email protected]
  S:    Maintained
  T:    git git://linuxtv.org/media.git
@@@ -15735,10 -15538,8 +15738,10 @@@ F: include/media/imx.
  MEDIA DRIVERS FOR FREESCALE IMX7/8
  M:    Rui Miguel Silva <[email protected]>
  M:    Laurent Pinchart <[email protected]>
 -M:    Martin Kepplinger <[email protected]>
 +M:    Martin Kepplinger-Novakovic <[email protected]>
  R:    Purism Kernel Team <[email protected]>
 +R:    Frank Li <[email protected]>
 +L:    [email protected]
  L:    [email protected]
  S:    Maintained
  T:    git git://linuxtv.org/media.git
@@@ -16388,7 -16189,7 +16391,7 @@@ MEMORY CONTROLLER DRIVER
  M:    Krzysztof Kozlowski <[email protected]>
  L:    [email protected]
  S:    Maintained
 -B:    mailto:[email protected]
 +B:    mailto:[email protected]
  T:    git 
git://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux-mem-ctrl.git
  F:    Documentation/devicetree/bindings/memory-controllers/
  F:    drivers/memory/
@@@ -16404,7 -16205,7 +16407,7 @@@ T:   git git://git.kernel.org/pub/scm/lin
  F:    drivers/devfreq/tegra30-devfreq.c
  
  MEMORY HOT(UN)PLUG
 -M:    David Hildenbrand <[email protected]>
 +M:    David Hildenbrand <[email protected]>
  M:    Oscar Salvador <[email protected]>
  L:    [email protected]
  S:    Maintained
@@@ -16429,7 -16230,7 +16432,7 @@@ F:   tools/mm
  
  MEMORY MANAGEMENT - CORE
  M:    Andrew Morton <[email protected]>
 -M:    David Hildenbrand <[email protected]>
 +M:    David Hildenbrand <[email protected]>
  R:    Lorenzo Stoakes <[email protected]>
  R:    Liam R. Howlett <[email protected]>
  R:    Vlastimil Babka <[email protected]>
@@@ -16443,7 -16244,6 +16446,7 @@@ T:   git git://git.kernel.org/pub/scm/lin
  F:    include/linux/gfp.h
  F:    include/linux/gfp_types.h
  F:    include/linux/highmem.h
 +F:    include/linux/leafops.h
  F:    include/linux/memory.h
  F:    include/linux/mm.h
  F:    include/linux/mm_*.h
@@@ -16451,7 -16251,6 +16454,7 @@@ F:   include/linux/mmzone.
  F:    include/linux/mmdebug.h
  F:    include/linux/mmu_notifier.h
  F:    include/linux/pagewalk.h
 +F:    include/linux/pgalloc.h
  F:    include/linux/pgtable.h
  F:    include/linux/ptdump.h
  F:    include/linux/vmpressure.h
@@@ -16487,7 -16286,7 +16490,7 @@@ F:   mm/execmem.
  
  MEMORY MANAGEMENT - GUP (GET USER PAGES)
  M:    Andrew Morton <[email protected]>
 -M:    David Hildenbrand <[email protected]>
 +M:    David Hildenbrand <[email protected]>
  R:    Jason Gunthorpe <[email protected]>
  R:    John Hubbard <[email protected]>
  R:    Peter Xu <[email protected]>
@@@ -16503,7 -16302,7 +16506,7 @@@ F:   tools/testing/selftests/mm/gup_test.
  
  MEMORY MANAGEMENT - KSM (Kernel Samepage Merging)
  M:    Andrew Morton <[email protected]>
 -M:    David Hildenbrand <[email protected]>
 +M:    David Hildenbrand <[email protected]>
  R:    Xu Xin <[email protected]>
  R:    Chengming Zhou <[email protected]>
  L:    [email protected]
@@@ -16519,7 -16318,7 +16522,7 @@@ F:   mm/mm_slot.
  
  MEMORY MANAGEMENT - MEMORY POLICY AND MIGRATION
  M:    Andrew Morton <[email protected]>
 -M:    David Hildenbrand <[email protected]>
 +M:    David Hildenbrand <[email protected]>
  R:    Zi Yan <[email protected]>
  R:    Matthew Brost <[email protected]>
  R:    Joshua Hahn <[email protected]>
@@@ -16559,7 -16358,7 +16562,7 @@@ F:   mm/workingset.
  
  MEMORY MANAGEMENT - MISC
  M:    Andrew Morton <[email protected]>
 -M:    David Hildenbrand <[email protected]>
 +M:    David Hildenbrand <[email protected]>
  R:    Lorenzo Stoakes <[email protected]>
  R:    Liam R. Howlett <[email protected]>
  R:    Vlastimil Babka <[email protected]>
@@@ -16647,7 -16446,7 +16650,7 @@@ F:   mm/shuffle.
  MEMORY MANAGEMENT - RECLAIM
  M:    Andrew Morton <[email protected]>
  M:    Johannes Weiner <[email protected]>
 -R:    David Hildenbrand <[email protected]>
 +R:    David Hildenbrand <[email protected]>
  R:    Michal Hocko <[email protected]>
  R:    Qi Zheng <[email protected]>
  R:    Shakeel Butt <[email protected]>
@@@ -16660,7 -16459,7 +16663,7 @@@ F:   mm/workingset.
  
  MEMORY MANAGEMENT - RMAP (REVERSE MAPPING)
  M:    Andrew Morton <[email protected]>
 -M:    David Hildenbrand <[email protected]>
 +M:    David Hildenbrand <[email protected]>
  M:    Lorenzo Stoakes <[email protected]>
  R:    Rik van Riel <[email protected]>
  R:    Liam R. Howlett <[email protected]>
@@@ -16684,12 -16483,12 +16687,12 @@@ F:        mm/secretmem.
  
  MEMORY MANAGEMENT - SWAP
  M:    Andrew Morton <[email protected]>
 +M:    Chris Li <[email protected]>
 +M:    Kairui Song <[email protected]>
  R:    Kemeng Shi <[email protected]>
 -R:    Kairui Song <[email protected]>
  R:    Nhat Pham <[email protected]>
  R:    Baoquan He <[email protected]>
  R:    Barry Song <[email protected]>
 -R:    Chris Li <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    Documentation/mm/swap-table.rst
@@@ -16705,7 -16504,7 +16708,7 @@@ F:   mm/swapfile.
  
  MEMORY MANAGEMENT - THP (TRANSPARENT HUGE PAGE)
  M:    Andrew Morton <[email protected]>
 -M:    David Hildenbrand <[email protected]>
 +M:    David Hildenbrand <[email protected]>
  M:    Lorenzo Stoakes <[email protected]>
  R:    Zi Yan <[email protected]>
  R:    Baolin Wang <[email protected]>
@@@ -16807,7 -16606,7 +16810,7 @@@ MEMORY MAPPING - MADVISE (MEMORY ADVICE
  M:    Andrew Morton <[email protected]>
  M:    Liam R. Howlett <[email protected]>
  M:    Lorenzo Stoakes <[email protected]>
 -M:    David Hildenbrand <[email protected]>
 +M:    David Hildenbrand <[email protected]>
  R:    Vlastimil Babka <[email protected]>
  R:    Jann Horn <[email protected]>
  L:    [email protected]
@@@ -17595,7 -17394,6 +17598,7 @@@ M:   Luis Chamberlain <[email protected]
  M:    Petr Pavlu <[email protected]>
  M:    Daniel Gomez <[email protected]>
  R:    Sami Tolvanen <[email protected]>
 +R:    Aaron Tomlin <[email protected]>
  L:    [email protected]
  L:    [email protected]
  S:    Maintained
@@@ -17605,8 -17403,6 +17608,8 @@@ F:   include/linux/module*.
  F:    kernel/module/
  F:    lib/test_kmod.c
  F:    lib/tests/module/
 +F:    rust/kernel/module_param.rs
 +F:    rust/macros/module.rs
  F:    scripts/module*
  F:    tools/testing/selftests/kmod/
  F:    tools/testing/selftests/module/
@@@ -17642,14 -17438,6 +17645,14 @@@ S: Maintaine
  F:    Documentation/devicetree/bindings/net/motorcomm,yt8xxx.yaml
  F:    drivers/net/phy/motorcomm.c
  
 +MOTORCOMM YT921X ETHERNET SWITCH DRIVER
 +M:    David Yang <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/net/dsa/motorcomm,yt921x.yaml
 +F:    drivers/net/dsa/yt921x.*
 +F:    net/dsa/tag_yt921x.c
 +
  MOXA SMARTIO/INDUSTIO/INTELLIO SERIAL CARD
  M:    Jiri Slaby <[email protected]>
  S:    Maintained
@@@ -17663,16 -17451,6 +17666,16 @@@ S: Maintaine
  F:    Documentation/devicetree/bindings/leds/backlight/mps,mp3309c.yaml
  F:    drivers/video/backlight/mp3309c.c
  
 +MPAM DRIVER
 +M:    James Morse <[email protected]>
 +M:    Ben Horgan <[email protected]>
 +R:    Reinette Chatre <[email protected]>
 +R:    Fenghua Yu <[email protected]>
 +S:    Maintained
 +F:    drivers/resctrl/mpam_*
 +F:    drivers/resctrl/test_mpam_*
 +F:    include/linux/arm_mpam.h
 +
  MPS MP2869 DRIVER
  M:    Wensheng Wang <[email protected]>
  L:    [email protected]
@@@ -17687,13 -17465,6 +17690,13 @@@ S: Maintaine
  F:    Documentation/hwmon/mp2891.rst
  F:    drivers/hwmon/pmbus/mp2891.c
  
 +MPS MP2925 DRIVER
 +M:    Noah Wang <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/hwmon/mp2925.rst
 +F:    drivers/hwmon/pmbus/mp2925.c
 +
  MPS MP29502 DRIVER
  M:    Wensheng Wang <[email protected]>
  L:    [email protected]
@@@ -17715,13 -17486,6 +17718,13 @@@ S: Maintaine
  F:    Documentation/hwmon/mp9941.rst
  F:    drivers/hwmon/pmbus/mp9941.c
  
 +MPS MP9945 DRIVER
 +M:    Cosmo Chou <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/hwmon/mp9945.rst
 +F:    drivers/hwmon/pmbus/mp9945.c
 +
  MR800 AVERMEDIA USB FM RADIO DRIVER
  M:    Alexey Klimov <[email protected]>
  L:    [email protected]
@@@ -17829,14 -17593,6 +17832,14 @@@ T: git git://linuxtv.org/media.gi
  F:    Documentation/devicetree/bindings/media/i2c/aptina,mt9v111.yaml
  F:    drivers/media/i2c/mt9v111.c
  
 +MUCSE ETHERNET DRIVER
 +M:    Yibo Dong <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +W:    https://www.mucse.com/en/
 +F:    Documentation/networking/device_drivers/ethernet/mucse/
 +F:    drivers/net/ethernet/mucse/
 +
  MULTIFUNCTION DEVICES (MFD)
  M:    Lee Jones <[email protected]>
  S:    Maintained
@@@ -18260,16 -18016,6 +18263,16 @@@ X: net/rfkill
  X:    net/wireless/
  X:    tools/testing/selftests/net/can/
  
 +NETWORKING [IOAM]
 +M:    Justin Iurman <[email protected]>
 +S:    Maintained
 +F:    Documentation/networking/ioam6*
 +F:    include/linux/ioam6*
 +F:    include/net/ioam6*
 +F:    include/uapi/linux/ioam6*
 +F:    net/ipv6/ioam6*
 +F:    tools/testing/selftests/net/ioam6*
 +
  NETWORKING [IPSEC]
  M:    Steffen Klassert <[email protected]>
  M:    Herbert Xu <[email protected]>
@@@ -18278,7 -18024,6 +18281,7 @@@ L:   [email protected]
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/klassert/ipsec.git
  T:    git 
git://git.kernel.org/pub/scm/linux/kernel/git/klassert/ipsec-next.git
 +F:    Documentation/networking/xfrm/
  F:    include/net/xfrm.h
  F:    include/uapi/linux/xfrm.h
  F:    net/ipv4/ah4.c
@@@ -18487,11 -18232,10 +18490,11 @@@ F:        net/sunrpc
  
  NILFS2 FILESYSTEM
  M:    Ryusuke Konishi <[email protected]>
 +M:    Viacheslav Dubeyko <[email protected]>
  L:    [email protected]
 -S:    Supported
 +S:    Maintained
  W:    https://nilfs.sourceforge.io/
 -T:    git https://github.com/konis/nilfs2.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/vdubeyko/nilfs2.git
  F:    Documentation/filesystems/nilfs2.rst
  F:    fs/nilfs2/
  F:    include/trace/events/nilfs2.h
@@@ -18866,17 -18610,6 +18869,17 @@@ S: Maintaine
  F:    Documentation/devicetree/bindings/regulator/nxp,pf5300.yaml
  F:    drivers/regulator/pf530x-regulator.c
  
 +NXP PF1550 PMIC MFD DRIVER
 +M:    Samuel Kayode <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/mfd/nxp,pf1550.yaml
 +F:    drivers/input/misc/pf1550-onkey.c
 +F:    drivers/mfd/pf1550.c
 +F:    drivers/power/supply/pf1550-charger.c
 +F:    drivers/regulator/pf1550-regulator.c
 +F:    include/linux/mfd/pf1550.h
 +
  NXP PF8100/PF8121A/PF8200 PMIC REGULATOR DEVICE DRIVER
  M:    Jagan Teki <[email protected]>
  S:    Maintained
@@@ -18917,7 -18650,7 +18920,7 @@@ NXP TFA9879 DRIVE
  M:    Peter Rosin <[email protected]>
  L:    [email protected]
  S:    Maintained
 -F:    Documentation/devicetree/bindings/sound/nxp,tfa9879.yaml
 +F:    Documentation/devicetree/bindings/sound/trivial-codec.yaml
  F:    sound/soc/codecs/tfa9879*
  
  NXP-NCI NFC DRIVER
@@@ -18995,7 -18728,7 +18998,7 @@@ OCXL (Open Coherent Accelerator Process
  M:    Frederic Barrat <[email protected]>
  M:    Andrew Donnellan <[email protected]>
  L:    [email protected]
 -S:    Supported
 +S:    Odd Fixes
  F:    Documentation/userspace-api/accelerators/ocxl.rst
  F:    arch/powerpc/include/asm/pnv-ocxl.h
  F:    arch/powerpc/platforms/powernv/ocxl.c
@@@ -19021,10 -18754,6 +19024,10 @@@ S: Maintaine
  F:    arch/arm/*omap*/*clock*
  
  OMAP DEVICE TREE SUPPORT
 +M:    Aaro Koskinen <[email protected]>
 +M:    Andreas Kemnade <[email protected]>
 +M:    Kevin Hilman <[email protected]>
 +M:    Roger Quadros <[email protected]>
  M:    Tony Lindgren <[email protected]>
  L:    [email protected]
  L:    [email protected]
@@@ -19245,9 -18974,10 +19248,9 @@@ T:  git git://linuxtv.org/media.gi
  F:    drivers/media/i2c/ov08d10.c
  
  OMNIVISION OV08X40 SENSOR DRIVER
 -M:    Jason Chen <[email protected]>
 +M:    Jimmy Su <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://linuxtv.org/media.git
  F:    drivers/media/i2c/ov08x40.c
  F:    Documentation/devicetree/bindings/media/i2c/ovti,ov08x40.yaml
  
@@@ -19340,7 -19070,7 +19343,7 @@@ F:   Documentation/devicetree/bindings/me
  F:    drivers/media/i2c/ov5675.c
  
  OMNIVISION OV5693 SENSOR DRIVER
 -M:    Daniel Scally <[email protected]>
 +M:    Daniel Scally <[email protected]>
  L:    [email protected]
  S:    Maintained
  T:    git git://linuxtv.org/media.git
@@@ -19894,13 -19624,6 +19897,13 @@@ S: Orpha
  F:    Documentation/devicetree/bindings/pci/cdns,*
  F:    drivers/pci/controller/cadence/*cadence*
  
 +PCI DRIVER FOR CIX Sky1
 +M:    Hans Zhang <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/pci/cix,sky1-pcie-*.yaml
 +F:    drivers/pci/controller/cadence/*sky1*
 +
  PCI DRIVER FOR FREESCALE LAYERSCAPE
  M:    Minghuan Lian <[email protected]>
  M:    Mingkai Hu <[email protected]>
@@@ -20150,8 -19873,7 +20153,8 @@@ F:   drivers/pci/p2pdma.
  F:    include/linux/pci-p2pdma.h
  
  PCI POWER CONTROL
 -M:    Bartosz Golaszewski <[email protected]>
 +M:    Bartosz Golaszewski <[email protected]>
 +M:    Manivannan Sadhasivam <[email protected]>
  L:    [email protected]
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/pci/pci.git
@@@ -20166,7 -19888,6 +20169,7 @@@ Q:   https://patchwork.kernel.org/project
  B:    https://bugzilla.kernel.org
  C:    irc://irc.oftc.net/linux-pci
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/pci/pci.git
 +F:    Documentation/ABI/testing/sysfs-devices-pci-host-bridge
  F:    Documentation/PCI/
  F:    Documentation/devicetree/bindings/pci/
  F:    arch/x86/kernel/early-quirks.c
@@@ -20289,14 -20010,6 +20292,14 @@@ S: Maintaine
  F:    drivers/pci/controller/dwc/pcie-qcom-common.c
  F:    drivers/pci/controller/dwc/pcie-qcom.c
  
 +PCIE DRIVER FOR RENESAS RZ/G3S SERIES
 +M:    Claudiu Beznea <[email protected]>
 +L:    [email protected]
 +L:    [email protected]
 +S:    Supported
 +F:    Documentation/devicetree/bindings/pci/renesas,r9a08g045-pcie.yaml
 +F:    drivers/pci/controller/pcie-rzg3s-host.c
 +
  PCIE DRIVER FOR ROCKCHIP
  M:    Shawn Lin <[email protected]>
  L:    [email protected]
@@@ -20425,7 -20138,6 +20428,7 @@@ R:   Alexander Shishkin <alexander.shishk
  R:    Jiri Olsa <[email protected]>
  R:    Ian Rogers <[email protected]>
  R:    Adrian Hunter <[email protected]>
 +R:    James Clark <[email protected]>
  L:    [email protected]
  L:    [email protected]
  S:    Supported
@@@ -20757,7 -20469,7 +20760,7 @@@ F:   include/linux/powercap.
  F:    kernel/configs/nopm.config
  
  POWER SEQUENCING
 -M:    Bartosz Golaszewski <[email protected]>
 +M:    Bartosz Golaszewski <[email protected]>
  L:    [email protected]
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux.git
@@@ -20854,7 -20566,6 +20857,7 @@@ R:   John Ogness <john.ogness@linutronix.
  R:    Sergey Senozhatsky <[email protected]>
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/printk/linux.git
 +F:    Documentation/core-api/printk-basics.rst
  F:    include/linux/printk.h
  F:    kernel/printk/
  
@@@ -21055,14 -20766,6 +21058,14 @@@ F: include/linux/pwm.
  F:    include/linux/pwm_backlight.h
  K:    pwm_(config|apply_might_sleep|apply_atomic|ops)
  
 +PWM SUBSYSTEM BINDINGS [RUST]
 +M:    Michal Wilczynski <[email protected]>
 +L:    [email protected]
 +L:    [email protected]
 +S:    Maintained
 +F:    rust/helpers/pwm.c
 +F:    rust/kernel/pwm.rs
 +
  PXA GPIO DRIVER
  M:    Robert Jarzmik <[email protected]>
  L:    [email protected]
@@@ -21320,7 -21023,6 +21323,7 @@@ F:   Documentation/devicetree/bindings/ne
  F:    drivers/net/wwan/qcom_bam_dmux.c
  
  QUALCOMM BLUETOOTH DRIVER
 +M:    Bartosz Golaszewski <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    drivers/bluetooth/btqca.[ch]
@@@ -21449,7 -21151,7 +21452,7 @@@ F:   Documentation/devicetree/bindings/i2
  F:    drivers/i2c/busses/i2c-qcom-cci.c
  
  QUALCOMM INTERCONNECT BWMON DRIVER
 -M:    Krzysztof Kozlowski <[email protected]>
 +M:    Krzysztof Kozlowski <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    Documentation/devicetree/bindings/interconnect/qcom,msm8998-bwmon.yaml
@@@ -21570,7 -21272,7 +21573,7 @@@ F:   Documentation/tee/qtee.rs
  F:    drivers/tee/qcomtee/
  
  QUALCOMM TRUST ZONE MEMORY ALLOCATOR
 -M:    Bartosz Golaszewski <[email protected]>
 +M:    Bartosz Golaszewski <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    drivers/firmware/qcom/qcom_tzmem.c
@@@ -21607,7 -21309,6 +21610,7 @@@ F:   drivers/media/platform/qcom/venus
  QUALCOMM WCN36XX WIRELESS DRIVER
  M:    Loic Poulain <[email protected]>
  L:    [email protected]
 +L:    [email protected]
  S:    Supported
  W:    https://wireless.wiki.kernel.org/en/users/Drivers/wcn36xx
  F:    drivers/net/wireless/ath/wcn36xx/
@@@ -21906,12 -21607,8 +21909,12 @@@ F: tools/testing/selftests/rtc
  
  Real-time Linux Analysis (RTLA) tools
  M:    Steven Rostedt <[email protected]>
 +M:    Tomas Glozar <[email protected]>
  L:    [email protected]
 +L:    [email protected]
  S:    Maintained
 +Q:    https://patchwork.kernel.org/project/linux-trace-kernel/list/
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace.git
  F:    Documentation/tools/rtla/
  F:    tools/tracing/rtla/
  
@@@ -21949,11 -21646,6 +21952,11 @@@ S: Maintaine
  F:    Documentation/devicetree/bindings/spi/realtek,rtl9301-snand.yaml
  F:    drivers/spi/spi-realtek-rtl-snand.c
  
 +REALTEK SYSTIMER DRIVER
 +M:    Hao-Wen Ting <[email protected]>
 +S:    Maintained
 +F:    drivers/clocksource/timer-realtek.c
 +
  REALTEK WIRELESS DRIVER (rtlwifi family)
  M:    Ping-Ke Shih <[email protected]>
  L:    [email protected]
@@@ -22164,14 -21856,6 +22167,14 @@@ S: Supporte
  F:    Documentation/devicetree/bindings/timer/renesas,rz-mtu3.yaml
  F:    drivers/counter/rz-mtu3-cnt.c
  
 +RENESAS RZ/T2H / RZ/N2H A/D DRIVER
 +M:    Cosmin Tanislav <[email protected]>
 +L:    [email protected]
 +L:    [email protected]
 +S:    Supported
 +F:    Documentation/devicetree/bindings/iio/adc/renesas,r9a09g077-adc.yaml
 +F:    drivers/iio/adc/rzt2h_adc.c
 +
  RENESAS RTCA-3 RTC DRIVER
  M:    Claudiu Beznea <[email protected]>
  L:    [email protected]
@@@ -22193,13 -21877,6 +22196,13 @@@ F: include/dt-bindings/net/pcs-rzn1-mii
  F:    include/linux/pcs-rzn1-miic.h
  F:    net/dsa/tag_rzn1_a5psw.c
  
 +RENESAS RZ/N1 ADC DRIVER
 +M:    Herve Codina <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +F:    Documentation/devicetree/bindings/iio/adc/renesas,rzn1-adc.yaml
 +F:    drivers/iio/adc/rzn1-adc.c
 +
  RENESAS RZ/N1 DWMAC GLUE LAYER
  M:    Romain Gantois <[email protected]>
  S:    Maintained
@@@ -22230,13 -21907,6 +22233,13 @@@ S: Maintaine
  F:    Documentation/devicetree/bindings/net/renesas,rzv2h-gbeth.yaml
  F:    drivers/net/ethernet/stmicro/stmmac/dwmac-renesas-gbeth.c
  
 +RENESAS RZ/V2H(P) INPUT VIDEO CONTROL BLOCK DRIVER
 +M:    Daniel Scally <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/media/renesas,r9a09g057-ivc.yaml
 +F:    drivers/media/platform/renesas/rzv2h-ivc/
 +
  RENESAS RZ/V2H(P) RSPI DRIVER
  M:    Fabrizio Castro <[email protected]>
  L:    [email protected]
@@@ -22388,14 -22058,6 +22391,14 @@@ F: Documentation/devicetree/bindings/ri
  F:    Documentation/devicetree/bindings/timer/andestech,plmt0.yaml
  F:    arch/riscv/boot/dts/andes/
  
 +RISC-V ANLOGIC SoC SUPPORT
 +M:    Conor Dooley <[email protected]>
 +T:    git https://git.kernel.org/pub/scm/linux/kernel/git/conor/linux.git/
 +L:    [email protected]
 +S:    Odd Fixes
 +F:    Documentation/devicetree/bindings/riscv/anlogic.yaml
 +F:    arch/riscv/boot/dts/anlogic/
 +
  RISC-V ARCHITECTURE
  M:    Paul Walmsley <[email protected]>
  M:    Palmer Dabbelt <[email protected]>
@@@ -22420,12 -22082,11 +22423,12 @@@ T:        git 
git://git.kernel.org/pub/scm/lin
  F:    Documentation/devicetree/bindings/iommu/riscv,iommu.yaml
  F:    drivers/iommu/riscv/
  
 -RISC-V MICROCHIP FPGA SUPPORT
 +RISC-V MICROCHIP SUPPORT
  M:    Conor Dooley <[email protected]>
  M:    Daire McNamara <[email protected]>
  L:    [email protected]
  S:    Supported
 +T:    git https://git.kernel.org/pub/scm/linux/kernel/git/conor/linux.git/ 
(dts, soc, firmware)
  F:    Documentation/devicetree/bindings/clock/microchip,mpfs*.yaml
  F:    Documentation/devicetree/bindings/gpio/microchip,mpfs-gpio.yaml
  F:    Documentation/devicetree/bindings/i2c/microchip,corei2c.yaml
@@@ -22447,21 -22108,22 +22450,21 @@@ F:        
drivers/pci/controller/plda/pcie-mic
  F:    drivers/pwm/pwm-microchip-core.c
  F:    drivers/reset/reset-mpfs.c
  F:    drivers/rtc/rtc-mpfs.c
 +F:    drivers/soc/microchip/mpfs-control-scb.c
 +F:    drivers/soc/microchip/mpfs-mss-top-sysreg.c
  F:    drivers/soc/microchip/mpfs-sys-controller.c
  F:    drivers/spi/spi-microchip-core-qspi.c
 -F:    drivers/spi/spi-microchip-core.c
 +F:    drivers/spi/spi-mpfs.c
  F:    drivers/usb/musb/mpfs.c
  F:    include/soc/microchip/mpfs.h
  
  RISC-V MISC SOC SUPPORT
  M:    Conor Dooley <[email protected]>
  L:    [email protected]
 -S:    Maintained
 -Q:    https://patchwork.kernel.org/project/linux-riscv/list/
 +S:    Odd Fixes
  T:    git https://git.kernel.org/pub/scm/linux/kernel/git/conor/linux.git/
  F:    arch/riscv/boot/dts/canaan/
 -F:    arch/riscv/boot/dts/microchip/
  F:    arch/riscv/boot/dts/sifive/
 -F:    arch/riscv/boot/dts/starfive/
  
  RISC-V PMU DRIVERS
  M:    Atish Patra <[email protected]>
@@@ -22499,15 -22161,6 +22502,15 @@@ F: arch/riscv/boot/dts/spacemit
  N:    spacemit
  K:    spacemit
  
 +RISC-V TENSTORRENT SoC SUPPORT
 +M:    Drew Fustini <[email protected]>
 +M:    Joel Stanley <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +T:    git https://github.com/tenstorrent/linux.git
 +F:    Documentation/devicetree/bindings/riscv/tenstorrent.yaml
 +F:    arch/riscv/boot/dts/tenstorrent/
 +
  RISC-V THEAD SoC SUPPORT
  M:    Drew Fustini <[email protected]>
  M:    Guo Ren <[email protected]>
@@@ -22521,7 -22174,6 +22524,7 @@@ F:   Documentation/devicetree/bindings/fi
  F:    Documentation/devicetree/bindings/mailbox/thead,th1520-mbox.yaml
  F:    Documentation/devicetree/bindings/net/thead,th1520-gmac.yaml
  F:    Documentation/devicetree/bindings/pinctrl/thead,th1520-pinctrl.yaml
 +F:    Documentation/devicetree/bindings/pwm/thead,th1520-pwm.yaml
  F:    Documentation/devicetree/bindings/reset/thead,th1520-reset.yaml
  F:    arch/riscv/boot/dts/thead/
  F:    drivers/clk/thead/clk-th1520-ap.c
@@@ -22532,7 -22184,6 +22535,7 @@@ F:   drivers/pinctrl/pinctrl-th1520.
  F:    drivers/pmdomain/thead/
  F:    drivers/power/reset/th1520-aon-reboot.c
  F:    drivers/power/sequencing/pwrseq-thead-gpu.c
 +F:    drivers/pwm/pwm_th1520.rs
  F:    drivers/reset/reset-th1520.c
  F:    include/dt-bindings/clock/thead,th1520-clk-ap.h
  F:    include/dt-bindings/power/thead,th1520-power.h
@@@ -22562,16 -22213,6 +22565,16 @@@ S: Maintaine
  F:    Documentation/devicetree/bindings/net/can/rockchip,rk3568v2-canfd.yaml
  F:    drivers/net/can/rockchip/
  
 +ROCKCHIP CAMERA INTERFACE (RKCIF) DRIVER
 +M:    Mehdi Djait <[email protected]>
 +M:    Michael Riesch <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/admin-guide/media/rkcif*
 +F:    Documentation/devicetree/bindings/media/rockchip,px30-vip.yaml
 +F:    Documentation/devicetree/bindings/media/rockchip,rk3568-vicap.yaml
 +F:    drivers/media/platform/rockchip/rkcif/
 +
  ROCKCHIP CRYPTO DRIVERS
  M:    Corentin Labbe <[email protected]>
  L:    [email protected]
@@@ -22651,12 -22292,6 +22654,12 @@@ L: [email protected]
  S:    Odd Fixes
  F:    drivers/tty/serial/rp2.*
  
 +ROHM BD71828 CHARGER
 +M:    Andreas Kemnade <[email protected]>
 +M:    Matti Vaittinen <[email protected]>
 +S:    Maintained
 +F:    drivers/power/supply/bd71828-charger.c
 +
  ROHM BD79703 DAC
  M:    Matti Vaittinen <[email protected]>
  S:    Supported
@@@ -22836,11 -22471,11 +22839,11 @@@ F:        Documentation/trace/rv
  F:    include/linux/rv.h
  F:    include/rv/
  F:    kernel/trace/rv/
 +F:    tools/testing/selftests/verification/
  F:    tools/verification/
  
  RUST
  M:    Miguel Ojeda <[email protected]>
 -M:    Alex Gaynor <[email protected]>
  R:    Boqun Feng <[email protected]>
  R:    Gary Guo <[email protected]>
  R:    Björn Roy Baron <[email protected]>
@@@ -22877,14 -22512,6 +22880,14 @@@ T: git https://github.com/Rust-for-Linu
  F:    rust/kernel/alloc.rs
  F:    rust/kernel/alloc/
  
 +RUST [NUM]
 +M:    Alexandre Courbot <[email protected]>
 +R:    Yury Norov <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    rust/kernel/num.rs
 +F:    rust/kernel/num/
 +
  RUST [PIN-INIT]
  M:    Benno Lossin <[email protected]>
  L:    [email protected]
@@@ -22995,7 -22622,7 +22998,7 @@@ F:   arch/s390/m
  
  S390 NETWORK DRIVERS
  M:    Alexandra Winter <[email protected]>
 -R:    Aswin Karuvally <[email protected]>
 +M:    Aswin Karuvally <[email protected]>
  L:    [email protected]
  L:    [email protected]
  S:    Supported
@@@ -23137,7 -22764,6 +23140,7 @@@ L:   [email protected]
  L:    [email protected]
  S:    Supported
  F:    Documentation/devicetree/bindings/firmware/google,gs101-acpm-ipc.yaml
 +F:    drivers/clk/samsung/clk-acpm.c
  F:    drivers/firmware/samsung/exynos-acpm*
  F:    include/linux/firmware/samsung/exynos-acpm-protocol.h
  
@@@ -23418,7 -23044,6 +23421,7 @@@ F:   drivers/scsi
  F:    drivers/ufs/
  F:    include/scsi/
  F:    include/uapi/scsi/
 +F:    include/ufs/
  
  SCSI TAPE DRIVER
  M:    Kai Mäkisara <[email protected]>
@@@ -24209,7 -23834,7 +24212,7 @@@ F:   include/linux/property.
  
  SOFTWARE RAID (Multiple Disks) SUPPORT
  M:    Song Liu <[email protected]>
 -M:    Yu Kuai <[email protected]>
 +M:    Yu Kuai <[email protected]>
  L:    [email protected]
  S:    Supported
  Q:    https://patchwork.kernel.org/project/linux-raid/list/
@@@ -24604,7 -24229,6 +24607,7 @@@ T:   git git://git.kernel.org/pub/scm/lin
  F:    Documentation/devicetree/bindings/spi/
  F:    Documentation/spi/
  F:    drivers/spi/
 +F:    include/trace/events/spi*
  F:    include/linux/spi/
  F:    include/uapi/linux/spi/
  F:    tools/spi/
@@@ -24712,14 -24336,6 +24715,14 @@@ S: Maintaine
  F:    Documentation/hwmon/stpddc60.rst
  F:    drivers/hwmon/pmbus/stpddc60.c
  
 +ST TSC1641 DRIVER
 +M:    Igor Reznichenko <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/hwmon/st,tsc1641.yaml
 +F:    Documentation/hwmon/tsc1641.rst
 +F:    drivers/hwmon/tsc1641.c
 +
  ST VD55G1 DRIVER
  M:    Benjamin Mugnier <[email protected]>
  M:    Sylvain Petinot <[email protected]>
@@@ -24804,13 -24420,10 +24807,13 @@@ F:        drivers/staging
  
  STANDALONE CACHE CONTROLLER DRIVERS
  M:    Conor Dooley <[email protected]>
 +M:    Jonathan Cameron <[email protected]>
  S:    Maintained
  T:    git https://git.kernel.org/pub/scm/linux/kernel/git/conor/linux.git/
  F:    Documentation/devicetree/bindings/cache/
  F:    drivers/cache
 +F:    include/linux/cache_coherency.h
 +F:    lib/cache_maint.c
  
  STARFIRE/DURALAN NETWORK DRIVER
  M:    Ion Badulescu <[email protected]>
@@@ -24835,10 -24448,7 +24838,10 @@@ F: drivers/crypto/starfive
  
  STARFIVE DEVICETREES
  M:    Emil Renner Berthing <[email protected]>
 +M:    Conor Dooley <[email protected]>
 +L:    [email protected]
  S:    Maintained
 +T:    git https://git.kernel.org/pub/scm/linux/kernel/git/conor/linux.git/
  F:    arch/riscv/boot/dts/starfive/
  
  STARFIVE DWMAC GLUE LAYER
@@@ -25187,6 -24797,7 +25190,6 @@@ F:   drivers/regulator/sy8106a-regulator.
  
  SYNC FILE FRAMEWORK
  M:    Sumit Semwal <[email protected]>
 -R:    Gustavo Padovan <[email protected]>
  L:    [email protected]
  L:    [email protected]
  S:    Maintained
@@@ -25286,7 -24897,7 +25289,7 @@@ F:   drivers/net/pcs/pcs-xpcs.
  F:    include/linux/pcs/pcs-xpcs.h
  
  SYNOPSYS DESIGNWARE HDMI RX CONTROLLER DRIVER
 -M:    Shreeya Patel <[email protected]>
 +M:    Dmitry Osipenko <[email protected]>
  L:    [email protected]
  L:    [email protected]
  S:    Maintained
@@@ -25311,7 -24922,6 +25314,7 @@@ F:   include/linux/soc/amd/isp4_misc.
  
  SYNOPSYS DESIGNWARE MMC/SD/SDIO DRIVER
  M:    Jaehoon Chung <[email protected]>
 +M:    Shawn Lin <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    drivers/mmc/host/dw_mmc*
@@@ -25480,7 -25090,7 +25483,7 @@@ L:   [email protected]
  S:    Maintained
  W:    https://linuxtv.org
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
 -F:    Documentation/devicetree/bindings/media/i2c/nxp,tda1997x.txt
 +F:    Documentation/devicetree/bindings/media/i2c/nxp,tda19971.yaml
  F:    drivers/media/i2c/tda1997x.*
  
  TDA827x MEDIA DRIVER
@@@ -26029,7 -25639,7 +26032,7 @@@ F:   Documentation/devicetree/bindings/cr
  F:    drivers/crypto/ti/
  
  TI DAVINCI MACHINE SUPPORT
 -M:    Bartosz Golaszewski <[email protected]>
 +M:    Bartosz Golaszewski <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux.git
@@@ -26391,7 -26001,7 +26394,7 @@@ M:   Jarkko Sakkinen <[email protected]
  R:    Jason Gunthorpe <[email protected]>
  L:    [email protected]
  S:    Maintained
 -W:    https://codeberg.org/jarkko/linux-tpmdd-test
 +W:    
https://git.kernel.org/pub/scm/linux/kernel/git/jarkko/linux-tpmdd-test.git/about/
  Q:    https://patchwork.kernel.org/project/linux-integrity/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jarkko/linux-tpmdd.git
  F:    Documentation/devicetree/bindings/tpm/
@@@ -26413,8 -26023,6 +26416,8 @@@ S:   Supporte
  W:    https://www.tq-group.com/en/products/tq-embedded/
  F:    arch/arm/boot/dts/nxp/imx/*mba*.dts*
  F:    arch/arm/boot/dts/nxp/imx/*tqma*.dts*
 +F:    arch/arm/boot/dts/ti/omap/*mba*.dts*
 +F:    arch/arm/boot/dts/ti/omap/*tqma*.dts*
  F:    arch/arm64/boot/dts/freescale/fsl-*tqml*.dts*
  F:    arch/arm64/boot/dts/freescale/imx*mba*.dts*
  F:    arch/arm64/boot/dts/freescale/imx*tqma*.dts*
@@@ -26481,16 -26089,14 +26484,16 @@@ M:        David Lechner 
<[email protected]
  S:    Maintained
  F:    Documentation/devicetree/bindings/trigger-source/*
  
 -TRUSTED SECURITY MODULE (TSM) INFRASTRUCTURE
 +TRUSTED EXECUTION ENVIRONMENT SECURITY MANAGER (TSM)
  M:    Dan Williams <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    Documentation/ABI/testing/configfs-tsm-report
  F:    Documentation/driver-api/coco/
 +F:    Documentation/driver-api/pci/tsm.rst
 +F:    drivers/pci/tsm.c
  F:    drivers/virt/coco/guest/
 -F:    include/linux/tsm*.h
 +F:    include/linux/*tsm*.h
  F:    samples/tsm-mr/
  
  TRUSTED SERVICES TEE DRIVER
@@@ -26735,14 -26341,6 +26738,14 @@@ S: Supporte
  F:    Documentation/devicetree/bindings/ufs/
  F:    Documentation/scsi/ufs.rst
  F:    drivers/ufs/core/
 +F:    include/ufs/
 +
 +UNIVERSAL FLASH STORAGE HOST CONTROLLER DRIVER AMD VERSAL2
 +M:    Sai Krishna Potthuri <[email protected]>
 +M:    Ajay Neeli <[email protected]>
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/ufs/amd,versal2-ufs.yaml
 +F:    drivers/ufs/host/ufs-amd-versal2.c
  
  UNIVERSAL FLASH STORAGE HOST CONTROLLER DRIVER DWC HOOKS
  M:    Pedro Sousa <[email protected]>
@@@ -26760,7 -26358,6 +26763,7 @@@ F:   drivers/ufs/host/ufs-exynos
  
  UNIVERSAL FLASH STORAGE HOST CONTROLLER DRIVER MEDIATEK HOOKS
  M:    Peter Wang <[email protected]>
 +M:    Chaotian Jing <[email protected]>
  R:    Stanley Jhu <[email protected]>
  L:    [email protected]
  L:    [email protected] (moderated for non-subscribers)
@@@ -27259,16 -26856,6 +27262,16 @@@ F: drivers/media/i2c/vd55g1.
  F:    drivers/media/i2c/vd56g3.c
  F:    drivers/media/i2c/vgxy61.c
  
 +V4L2 GENERIC ISP PARAMETERS AND STATISTIC FORMATS
 +M:    Jacopo Mondi <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/driver-api/media/v4l2-isp.rst
 +F:    Documentation/userspace-api/media/v4l/v4l2-isp.rst
 +F:    drivers/media/v4l2-core/v4l2-isp.c
 +F:    include/media/v4l2-isp.h
 +F:    include/uapi/linux/media/v4l2-isp.h
 +
  VF610 NAND DRIVER
  M:    Stefan Agner <[email protected]>
  L:    [email protected]
@@@ -27290,7 -26877,7 +27293,7 @@@ S:   Maintaine
  F:    drivers/vfio/cdx/*
  
  VFIO DRIVER
 -M:    Alex Williamson <[email protected]>
 +M:    Alex Williamson <[email protected]>
  L:    [email protected]
  S:    Maintained
  T:    git https://github.com/awilliam/linux-vfio.git
@@@ -27380,13 -26967,6 +27383,13 @@@ L: [email protected]
  S:    Maintained
  F:    drivers/vfio/pci/virtio
  
 +VFIO XE PCI DRIVER
 +M:    Michał Winiarski <[email protected]>
 +L:    [email protected]
 +L:    [email protected]
 +S:    Supported
 +F:    drivers/vfio/pci/xe
 +
  VGA_SWITCHEROO
  R:    Lukas Wunner <[email protected]>
  S:    Maintained
@@@ -27460,7 -27040,7 +27463,7 @@@ T:   git git://linuxtv.org/media.gi
  F:    drivers/media/test-drivers/vimc/*
  
  VIRT LIB
 -M:    Alex Williamson <[email protected]>
 +M:    Alex Williamson <[email protected]>
  M:    Paolo Bonzini <[email protected]>
  L:    [email protected]
  S:    Supported
@@@ -27481,7 -27061,7 +27484,7 @@@ F:   net/vmw_vsock/virtio_transport_commo
  
  VIRTIO BALLOON
  M:    "Michael S. Tsirkin" <[email protected]>
 -M:    David Hildenbrand <[email protected]>
 +M:    David Hildenbrand <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    drivers/virtio/virtio_balloon.c
@@@ -27509,7 -27089,7 +27512,7 @@@ S:   Maintaine
  F:    drivers/char/virtio_console.c
  F:    include/uapi/linux/virtio_console.h
  
 -VIRTIO CORE AND NET DRIVERS
 +VIRTIO CORE
  M:    "Michael S. Tsirkin" <[email protected]>
  M:    Jason Wang <[email protected]>
  R:    Xuan Zhuo <[email protected]>
@@@ -27522,6 -27102,7 +27525,6 @@@ F:   Documentation/devicetree/bindings/vi
  F:    Documentation/driver-api/virtio/
  F:    drivers/block/virtio_blk.c
  F:    drivers/crypto/virtio/
 -F:    drivers/net/virtio_net.c
  F:    drivers/vdpa/
  F:    drivers/virtio/
  F:    include/linux/vdpa.h
@@@ -27530,6 -27111,7 +27533,6 @@@ F:   include/linux/vringh.
  F:    include/uapi/linux/virtio_*.h
  F:    net/vmw_vsock/virtio*
  F:    tools/virtio/
 -F:    tools/testing/selftests/drivers/net/virtio_net/
  
  VIRTIO CRYPTO DRIVER
  M:    Gonglei <[email protected]>
@@@ -27551,7 -27133,6 +27554,7 @@@ F:   arch/s390/include/uapi/asm/virtio-cc
  F:    drivers/s390/virtio/
  
  VIRTIO FILE SYSTEM
 +M:    German Maglione <[email protected]>
  M:    Vivek Goyal <[email protected]>
  M:    Stefan Hajnoczi <[email protected]>
  M:    Miklos Szeredi <[email protected]>
@@@ -27628,33 -27209,20 +27631,33 @@@ F:        drivers/virtio/virtio_input.
  F:    include/uapi/linux/virtio_input.h
  
  VIRTIO IOMMU DRIVER
 -M:    Jean-Philippe Brucker <[email protected]>
 +M:    Jean-Philippe Brucker <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    drivers/iommu/virtio-iommu.c
  F:    include/uapi/linux/virtio_iommu.h
  
  VIRTIO MEM DRIVER
 -M:    David Hildenbrand <[email protected]>
 +M:    David Hildenbrand <[email protected]>
  L:    [email protected]
  S:    Maintained
  W:    https://virtio-mem.gitlab.io/
  F:    drivers/virtio/virtio_mem.c
  F:    include/uapi/linux/virtio_mem.h
  
 +VIRTIO NET DRIVER
 +M:    "Michael S. Tsirkin" <[email protected]>
 +M:    Jason Wang <[email protected]>
 +R:    Xuan Zhuo <[email protected]>
 +R:    Eugenio Pérez <[email protected]>
 +L:    [email protected]
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/net/virtio_net.c
 +F:    include/linux/virtio_net.h
 +F:    include/uapi/linux/virtio_net.h
 +F:    tools/testing/selftests/drivers/net/virtio_net/
 +
  VIRTIO PMEM DRIVER
  M:    Pankaj Gupta <[email protected]>
  L:    [email protected]
@@@ -28045,7 -27613,6 +28048,7 @@@ M:   Jason A. Donenfeld <[email protected]
  L:    [email protected]
  L:    [email protected]
  S:    Maintained
 +F:    Documentation/netlink/specs/wireguard.yaml
  F:    drivers/net/wireguard/
  F:    tools/testing/selftests/wireguard/
  
@@@ -28072,7 -27639,6 +28075,7 @@@ F:   Documentation/devicetree/bindings/ex
  F:    Documentation/devicetree/bindings/mfd/wlf,arizona.yaml
  F:    Documentation/devicetree/bindings/mfd/wm831x.txt
  F:    Documentation/devicetree/bindings/regulator/wlf,arizona.yaml
 +F:    Documentation/devicetree/bindings/sound/trivial-codec.yaml
  F:    Documentation/devicetree/bindings/sound/wlf,*.yaml
  F:    Documentation/devicetree/bindings/sound/wm*
  F:    Documentation/hwmon/wm83??.rst
@@@ -28132,7 -27698,7 +28135,7 @@@ F:   drivers/acpi/pmic/intel_pmic_xpower.
  N:    axp288
  
  X-POWERS MULTIFUNCTION PMIC DEVICE DRIVERS
 -M:    Chen-Yu Tsai <[email protected]>
 +M:    Chen-Yu Tsai <[email protected]>
  L:    [email protected]
  S:    Maintained
  N:    axp[128]
@@@ -28256,7 -27822,7 +28259,7 @@@ F:   arch/x86/kernel/stacktrace.
  F:    arch/x86/kernel/unwind_*.c
  
  X86 TRUST DOMAIN EXTENSIONS (TDX)
 -M:    Kirill A. Shutemov <[email protected]>
 +M:    Kiryl Shutsemau <[email protected]>
  R:    Dave Hansen <[email protected]>
  R:    Rick Edgecombe <[email protected]>
  L:    [email protected]
@@@ -28716,13 -28282,6 +28719,13 @@@ L: [email protected]
  S:    Maintained
  F:    arch/x86/kernel/cpu/zhaoxin.c
  
 +ZONED BLOCK DEVICE (BLOCK LAYER)
 +M:    Damien Le Moal <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    block/blk-zoned.c
 +F:    include/uapi/linux/blkzoned.h
 +
  ZONED LOOP DEVICE
  M:    Damien Le Moal <[email protected]>
  R:    Christoph Hellwig <[email protected]>
diff --combined arch/x86/hyperv/hv_init.c
index 085ef4f2e73a9,daf97a984b78d..14de43f4bc6c1
--- a/arch/x86/hyperv/hv_init.c
+++ b/arch/x86/hyperv/hv_init.c
@@@ -170,6 -170,10 +170,10 @@@ static int hv_cpu_init(unsigned int cpu
                wrmsrq(HV_X64_MSR_VP_ASSIST_PAGE, msr.as_uint64);
        }
  
+       /* Allow Hyper-V stimer vector to be injected from Hypervisor. */
+       if (ms_hyperv.misc_features & HV_STIMER_DIRECT_MODE_AVAILABLE)
+               apic_update_vector(cpu, HYPERV_STIMER0_VECTOR, true);
+ 
        return hyperv_init_ghcb();
  }
  
@@@ -277,6 -281,9 +281,9 @@@ static int hv_cpu_die(unsigned int cpu
                *ghcb_va = NULL;
        }
  
+       if (ms_hyperv.misc_features & HV_STIMER_DIRECT_MODE_AVAILABLE)
+               apic_update_vector(cpu, HYPERV_STIMER0_VECTOR, false);
+ 
        hv_common_cpu_die(cpu);
  
        if (hv_vp_assist_page && hv_vp_assist_page[cpu]) {
@@@ -351,7 -358,7 +358,7 @@@ static int __init hv_pci_init(void
        return 1;
  }
  
 -static int hv_suspend(void)
 +static int hv_suspend(void *data)
  {
        union hv_x64_msr_hypercall_contents hypercall_msr;
        int ret;
@@@ -378,7 -385,7 +385,7 @@@
        return ret;
  }
  
 -static void hv_resume(void)
 +static void hv_resume(void *data)
  {
        union hv_x64_msr_hypercall_contents hypercall_msr;
        int ret;
@@@ -405,15 -412,11 +412,15 @@@
  }
  
  /* Note: when the ops are called, only CPU0 is online and IRQs are disabled. 
*/
 -static struct syscore_ops hv_syscore_ops = {
 +static const struct syscore_ops hv_syscore_ops = {
        .suspend        = hv_suspend,
        .resume         = hv_resume,
  };
  
 +static struct syscore hv_syscore = {
 +      .ops = &hv_syscore_ops,
 +};
 +
  static void (* __initdata old_setup_percpu_clockev)(void);
  
  static void __init hv_stimer_setup_percpu_clockev(void)
@@@ -551,6 -554,8 +558,8 @@@ void __init hyperv_init(void
                memunmap(src);
  
                hv_remap_tsc_clocksource();
+               hv_root_crash_init();
+               hv_sleep_notifiers_register();
        } else {
                hypercall_msr.guest_physical_address = 
vmalloc_to_pfn(hv_hypercall_pg);
                wrmsrq(HV_X64_MSR_HYPERCALL, hypercall_msr.as_uint64);
@@@ -573,7 -578,7 +582,7 @@@ skip_hypercall_pg_init
  
        x86_init.pci.arch_init = hv_pci_init;
  
 -      register_syscore_ops(&hv_syscore_ops);
 +      register_syscore(&hv_syscore);
  
        if (ms_hyperv.priv_high & HV_ACCESS_PARTITION_ID)
                hv_get_partition_id();
diff --combined drivers/hv/mshv_root_main.c
index 1d8d8d00e4e01,9cf28a3f12fe7..1134a82c78813
--- a/drivers/hv/mshv_root_main.c
+++ b/drivers/hv/mshv_root_main.c
@@@ -29,7 -29,6 +29,7 @@@
  #include <linux/crash_dump.h>
  #include <linux/panic_notifier.h>
  #include <linux/vmalloc.h>
 +#include <linux/rseq.h>
  
  #include "mshv_eventfd.h"
  #include "mshv.h"
@@@ -42,7 -41,7 +42,7 @@@ MODULE_DESCRIPTION("Microsoft Hyper-V r
  /* TODO move this to another file when debugfs code is added */
  enum hv_stats_vp_counters {                   /* HV_THREAD_COUNTER */
  #if defined(CONFIG_X86)
-       VpRootDispatchThreadBlocked                     = 201,
+       VpRootDispatchThreadBlocked                     = 202,
  #elif defined(CONFIG_ARM64)
        VpRootDispatchThreadBlocked                     = 94,
  #endif
@@@ -123,6 -122,7 +123,7 @@@ static struct miscdevice mshv_dev = 
   */
  static u16 mshv_passthru_hvcalls[] = {
        HVCALL_GET_PARTITION_PROPERTY,
+       HVCALL_GET_PARTITION_PROPERTY_EX,
        HVCALL_SET_PARTITION_PROPERTY,
        HVCALL_INSTALL_INTERCEPT,
        HVCALL_GET_VP_REGISTERS,
@@@ -137,6 -137,16 +138,16 @@@
        HVCALL_GET_VP_CPUID_VALUES,
  };
  
+ /*
+  * Only allow hypercalls that are safe to be called by the VMM with the host
+  * partition as target (i.e. HV_PARTITION_ID_SELF). Carefully audit that a
+  * hypercall cannot be misused by the VMM before adding it to this list.
+  */
+ static u16 mshv_self_passthru_hvcalls[] = {
+       HVCALL_GET_PARTITION_PROPERTY,
+       HVCALL_GET_PARTITION_PROPERTY_EX,
+ };
+ 
  static bool mshv_hvcall_is_async(u16 code)
  {
        switch (code) {
@@@ -148,18 -158,38 +159,38 @@@
        return false;
  }
  
+ static bool mshv_passthru_hvcall_allowed(u16 code, u64 pt_id)
+ {
+       int i;
+       int n = ARRAY_SIZE(mshv_passthru_hvcalls);
+       u16 *allowed_hvcalls = mshv_passthru_hvcalls;
+ 
+       if (pt_id == HV_PARTITION_ID_SELF) {
+               n = ARRAY_SIZE(mshv_self_passthru_hvcalls);
+               allowed_hvcalls = mshv_self_passthru_hvcalls;
+       }
+ 
+       for (i = 0; i < n; ++i)
+               if (allowed_hvcalls[i] == code)
+                       return true;
+ 
+       return false;
+ }
+ 
  static int mshv_ioctl_passthru_hvcall(struct mshv_partition *partition,
                                      bool partition_locked,
                                      void __user *user_args)
  {
        u64 status;
-       int ret = 0, i;
+       int ret = 0;
        bool is_async;
        struct mshv_root_hvcall args;
        struct page *page;
        unsigned int pages_order;
        void *input_pg = NULL;
        void *output_pg = NULL;
+       u16 reps_completed;
+       u64 pt_id = partition ? partition->pt_id : HV_PARTITION_ID_SELF;
  
        if (copy_from_user(&args, user_args, sizeof(args)))
                return -EFAULT;
@@@ -171,17 -201,13 +202,13 @@@
        if (args.out_ptr && (!args.out_sz || args.out_sz > HV_HYP_PAGE_SIZE))
                return -EINVAL;
  
-       for (i = 0; i < ARRAY_SIZE(mshv_passthru_hvcalls); ++i)
-               if (args.code == mshv_passthru_hvcalls[i])
-                       break;
- 
-       if (i >= ARRAY_SIZE(mshv_passthru_hvcalls))
+       if (!mshv_passthru_hvcall_allowed(args.code, pt_id))
                return -EINVAL;
  
        is_async = mshv_hvcall_is_async(args.code);
        if (is_async) {
                /* async hypercalls can only be called from partition fd */
-               if (!partition_locked)
+               if (!partition || !partition_locked)
                        return -EINVAL;
                ret = mshv_init_async_handler(partition);
                if (ret)
@@@ -209,43 -235,44 +236,44 @@@
         * NOTE: This only works because all the allowed hypercalls' input
         * structs begin with a u64 partition_id field.
         */
-       *(u64 *)input_pg = partition->pt_id;
+       *(u64 *)input_pg = pt_id;
  
-       if (args.reps)
-               status = hv_do_rep_hypercall(args.code, args.reps, 0,
-                                            input_pg, output_pg);
-       else
-               status = hv_do_hypercall(args.code, input_pg, output_pg);
- 
-       if (hv_result(status) == HV_STATUS_CALL_PENDING) {
-               if (is_async) {
-                       mshv_async_hvcall_handler(partition, &status);
-               } else { /* Paranoia check. This shouldn't happen! */
-                       ret = -EBADFD;
-                       goto free_pages_out;
+       reps_completed = 0;
+       do {
+               if (args.reps) {
+                       status = hv_do_rep_hypercall_ex(args.code, args.reps,
+                                                       0, reps_completed,
+                                                       input_pg, output_pg);
+                       reps_completed = hv_repcomp(status);
+               } else {
+                       status = hv_do_hypercall(args.code, input_pg, 
output_pg);
                }
-       }
  
-       if (hv_result(status) == HV_STATUS_INSUFFICIENT_MEMORY) {
-               ret = hv_call_deposit_pages(NUMA_NO_NODE, partition->pt_id, 1);
-               if (!ret)
-                       ret = -EAGAIN;
-       } else if (!hv_result_success(status)) {
-               ret = hv_result_to_errno(status);
-       }
+               if (hv_result(status) == HV_STATUS_CALL_PENDING) {
+                       if (is_async) {
+                               mshv_async_hvcall_handler(partition, &status);
+                       } else { /* Paranoia check. This shouldn't happen! */
+                               ret = -EBADFD;
+                               goto free_pages_out;
+                       }
+               }
+ 
+               if (hv_result_success(status))
+                       break;
+ 
+               if (hv_result(status) != HV_STATUS_INSUFFICIENT_MEMORY)
+                       ret = hv_result_to_errno(status);
+               else
+                       ret = hv_call_deposit_pages(NUMA_NO_NODE,
+                                                   pt_id, 1);
+       } while (!ret);
  
-       /*
-        * Always return the status and output data regardless of result.
-        * The VMM may need it to determine how to proceed. E.g. the status may
-        * contain the number of reps completed if a rep hypercall partially
-        * succeeded.
-        */
        args.status = hv_result(status);
-       args.reps = args.reps ? hv_repcomp(status) : 0;
+       args.reps = reps_completed;
        if (copy_to_user(user_args, &args, sizeof(args)))
                ret = -EFAULT;
  
-       if (output_pg &&
+       if (!ret && output_pg &&
            copy_to_user((void __user *)args.out_ptr, output_pg, args.out_sz))
                ret = -EFAULT;
  
@@@ -561,22 -588,104 +589,106 @@@ static long mshv_run_vp_with_root_sched
                }
        } while (!vp->run.flags.intercept_suspend);
  
 +      rseq_virt_userspace_exit();
 +
        return ret;
  }
  
  static_assert(sizeof(struct hv_message) <= MSHV_RUN_VP_BUF_SZ,
              "sizeof(struct hv_message) must not exceed MSHV_RUN_VP_BUF_SZ");
  
+ static struct mshv_mem_region *
+ mshv_partition_region_by_gfn(struct mshv_partition *partition, u64 gfn)
+ {
+       struct mshv_mem_region *region;
+ 
+       hlist_for_each_entry(region, &partition->pt_mem_regions, hnode) {
+               if (gfn >= region->start_gfn &&
+                   gfn < region->start_gfn + region->nr_pages)
+                       return region;
+       }
+ 
+       return NULL;
+ }
+ 
+ #ifdef CONFIG_X86_64
+ static struct mshv_mem_region *
+ mshv_partition_region_by_gfn_get(struct mshv_partition *p, u64 gfn)
+ {
+       struct mshv_mem_region *region;
+ 
+       spin_lock(&p->pt_mem_regions_lock);
+       region = mshv_partition_region_by_gfn(p, gfn);
+       if (!region || !mshv_region_get(region)) {
+               spin_unlock(&p->pt_mem_regions_lock);
+               return NULL;
+       }
+       spin_unlock(&p->pt_mem_regions_lock);
+ 
+       return region;
+ }
+ 
+ /**
+  * mshv_handle_gpa_intercept - Handle GPA (Guest Physical Address) intercepts.
+  * @vp: Pointer to the virtual processor structure.
+  *
+  * This function processes GPA intercepts by identifying the memory region
+  * corresponding to the intercepted GPA, aligning the page offset, and
+  * mapping the required pages. It ensures that the region is valid and
+  * handles faults efficiently by mapping multiple pages at once.
+  *
+  * Return: true if the intercept was handled successfully, false otherwise.
+  */
+ static bool mshv_handle_gpa_intercept(struct mshv_vp *vp)
+ {
+       struct mshv_partition *p = vp->vp_partition;
+       struct mshv_mem_region *region;
+       struct hv_x64_memory_intercept_message *msg;
+       bool ret;
+       u64 gfn;
+ 
+       msg = (struct hv_x64_memory_intercept_message *)
+               vp->vp_intercept_msg_page->u.payload;
+ 
+       gfn = HVPFN_DOWN(msg->guest_physical_address);
+ 
+       region = mshv_partition_region_by_gfn_get(p, gfn);
+       if (!region)
+               return false;
+ 
+       /* Only movable memory ranges are supported for GPA intercepts */
+       if (region->type == MSHV_REGION_TYPE_MEM_MOVABLE)
+               ret = mshv_region_handle_gfn_fault(region, gfn);
+       else
+               ret = false;
+ 
+       mshv_region_put(region);
+ 
+       return ret;
+ }
+ #else  /* CONFIG_X86_64 */
+ static bool mshv_handle_gpa_intercept(struct mshv_vp *vp) { return false; }
+ #endif /* CONFIG_X86_64 */
+ 
+ static bool mshv_vp_handle_intercept(struct mshv_vp *vp)
+ {
+       switch (vp->vp_intercept_msg_page->header.message_type) {
+       case HVMSG_GPA_INTERCEPT:
+               return mshv_handle_gpa_intercept(vp);
+       }
+       return false;
+ }
+ 
  static long mshv_vp_ioctl_run_vp(struct mshv_vp *vp, void __user *ret_msg)
  {
        long rc;
  
-       if (hv_scheduler_type == HV_SCHEDULER_TYPE_ROOT)
-               rc = mshv_run_vp_with_root_scheduler(vp);
-       else
-               rc = mshv_run_vp_with_hyp_scheduler(vp);
+       do {
+               if (hv_scheduler_type == HV_SCHEDULER_TYPE_ROOT)
+                       rc = mshv_run_vp_with_root_scheduler(vp);
+               else
+                       rc = mshv_run_vp_with_hyp_scheduler(vp);
+       } while (rc == 0 && mshv_vp_handle_intercept(vp));
  
        if (rc)
                return rc;
@@@ -844,7 -953,8 +956,8 @@@ mshv_vp_release(struct inode *inode, st
        return 0;
  }
  
- static void mshv_vp_stats_unmap(u64 partition_id, u32 vp_index)
+ static void mshv_vp_stats_unmap(u64 partition_id, u32 vp_index,
+                               void *stats_pages[])
  {
        union hv_stats_object_identity identity = {
                .vp.partition_id = partition_id,
@@@ -852,10 -962,10 +965,10 @@@
        };
  
        identity.vp.stats_area_type = HV_STATS_AREA_SELF;
-       hv_call_unmap_stat_page(HV_STATS_OBJECT_VP, &identity);
+       hv_unmap_stats_page(HV_STATS_OBJECT_VP, NULL, &identity);
  
        identity.vp.stats_area_type = HV_STATS_AREA_PARENT;
-       hv_call_unmap_stat_page(HV_STATS_OBJECT_VP, &identity);
+       hv_unmap_stats_page(HV_STATS_OBJECT_VP, NULL, &identity);
  }
  
  static int mshv_vp_stats_map(u64 partition_id, u32 vp_index,
@@@ -868,14 -978,14 +981,14 @@@
        int err;
  
        identity.vp.stats_area_type = HV_STATS_AREA_SELF;
-       err = hv_call_map_stat_page(HV_STATS_OBJECT_VP, &identity,
-                                   &stats_pages[HV_STATS_AREA_SELF]);
+       err = hv_map_stats_page(HV_STATS_OBJECT_VP, &identity,
+                               &stats_pages[HV_STATS_AREA_SELF]);
        if (err)
                return err;
  
        identity.vp.stats_area_type = HV_STATS_AREA_PARENT;
-       err = hv_call_map_stat_page(HV_STATS_OBJECT_VP, &identity,
-                                   &stats_pages[HV_STATS_AREA_PARENT]);
+       err = hv_map_stats_page(HV_STATS_OBJECT_VP, &identity,
+                               &stats_pages[HV_STATS_AREA_PARENT]);
        if (err)
                goto unmap_self;
  
@@@ -883,7 -993,7 +996,7 @@@
  
  unmap_self:
        identity.vp.stats_area_type = HV_STATS_AREA_SELF;
-       hv_call_unmap_stat_page(HV_STATS_OBJECT_VP, &identity);
+       hv_unmap_stats_page(HV_STATS_OBJECT_VP, NULL, &identity);
        return err;
  }
  
@@@ -893,7 -1003,7 +1006,7 @@@ mshv_partition_ioctl_create_vp(struct m
  {
        struct mshv_create_vp args;
        struct mshv_vp *vp;
-       struct page *intercept_message_page, *register_page, *ghcb_page;
+       struct page *intercept_msg_page, *register_page, *ghcb_page;
        void *stats_pages[2];
        long ret;
  
@@@ -911,33 -1021,34 +1024,34 @@@
        if (ret)
                return ret;
  
-       ret = hv_call_map_vp_state_page(partition->pt_id, args.vp_index,
-                                       HV_VP_STATE_PAGE_INTERCEPT_MESSAGE,
-                                       input_vtl_zero,
-                                       &intercept_message_page);
+       ret = hv_map_vp_state_page(partition->pt_id, args.vp_index,
+                                  HV_VP_STATE_PAGE_INTERCEPT_MESSAGE,
+                                  input_vtl_zero, &intercept_msg_page);
        if (ret)
                goto destroy_vp;
  
        if (!mshv_partition_encrypted(partition)) {
-               ret = hv_call_map_vp_state_page(partition->pt_id, args.vp_index,
-                                               HV_VP_STATE_PAGE_REGISTERS,
-                                               input_vtl_zero,
-                                               &register_page);
+               ret = hv_map_vp_state_page(partition->pt_id, args.vp_index,
+                                          HV_VP_STATE_PAGE_REGISTERS,
+                                          input_vtl_zero, &register_page);
                if (ret)
                        goto unmap_intercept_message_page;
        }
  
        if (mshv_partition_encrypted(partition) &&
            is_ghcb_mapping_available()) {
-               ret = hv_call_map_vp_state_page(partition->pt_id, args.vp_index,
-                                               HV_VP_STATE_PAGE_GHCB,
-                                               input_vtl_normal,
-                                               &ghcb_page);
+               ret = hv_map_vp_state_page(partition->pt_id, args.vp_index,
+                                          HV_VP_STATE_PAGE_GHCB,
+                                          input_vtl_normal, &ghcb_page);
                if (ret)
                        goto unmap_register_page;
        }
  
-       if (hv_parent_partition()) {
+       /*
+        * This mapping of the stats page is for detecting if dispatch thread
+        * is blocked - only relevant for root scheduler
+        */
+       if (hv_scheduler_type == HV_SCHEDULER_TYPE_ROOT) {
                ret = mshv_vp_stats_map(partition->pt_id, args.vp_index,
                                        stats_pages);
                if (ret)
@@@ -959,14 -1070,14 +1073,14 @@@
        atomic64_set(&vp->run.vp_signaled_count, 0);
  
        vp->vp_index = args.vp_index;
-       vp->vp_intercept_msg_page = page_to_virt(intercept_message_page);
+       vp->vp_intercept_msg_page = page_to_virt(intercept_msg_page);
        if (!mshv_partition_encrypted(partition))
                vp->vp_register_page = page_to_virt(register_page);
  
        if (mshv_partition_encrypted(partition) && is_ghcb_mapping_available())
                vp->vp_ghcb_page = page_to_virt(ghcb_page);
  
-       if (hv_parent_partition())
+       if (hv_scheduler_type == HV_SCHEDULER_TYPE_ROOT)
                memcpy(vp->vp_stats_pages, stats_pages, sizeof(stats_pages));
  
        /*
@@@ -989,24 -1100,22 +1103,22 @@@ put_partition
  free_vp:
        kfree(vp);
  unmap_stats_pages:
-       if (hv_parent_partition())
-               mshv_vp_stats_unmap(partition->pt_id, args.vp_index);
+       if (hv_scheduler_type == HV_SCHEDULER_TYPE_ROOT)
+               mshv_vp_stats_unmap(partition->pt_id, args.vp_index, 
stats_pages);
  unmap_ghcb_page:
-       if (mshv_partition_encrypted(partition) && is_ghcb_mapping_available()) 
{
-               hv_call_unmap_vp_state_page(partition->pt_id, args.vp_index,
-                                           HV_VP_STATE_PAGE_GHCB,
-                                           input_vtl_normal);
-       }
+       if (mshv_partition_encrypted(partition) && is_ghcb_mapping_available())
+               hv_unmap_vp_state_page(partition->pt_id, args.vp_index,
+                                      HV_VP_STATE_PAGE_GHCB, ghcb_page,
+                                      input_vtl_normal);
  unmap_register_page:
-       if (!mshv_partition_encrypted(partition)) {
-               hv_call_unmap_vp_state_page(partition->pt_id, args.vp_index,
-                                           HV_VP_STATE_PAGE_REGISTERS,
-                                           input_vtl_zero);
-       }
+       if (!mshv_partition_encrypted(partition))
+               hv_unmap_vp_state_page(partition->pt_id, args.vp_index,
+                                      HV_VP_STATE_PAGE_REGISTERS,
+                                      register_page, input_vtl_zero);
  unmap_intercept_message_page:
-       hv_call_unmap_vp_state_page(partition->pt_id, args.vp_index,
-                                   HV_VP_STATE_PAGE_INTERCEPT_MESSAGE,
-                                   input_vtl_zero);
+       hv_unmap_vp_state_page(partition->pt_id, args.vp_index,
+                              HV_VP_STATE_PAGE_INTERCEPT_MESSAGE,
+                              intercept_msg_page, input_vtl_zero);
  destroy_vp:
        hv_call_delete_vp(partition->pt_id, args.vp_index);
        return ret;
@@@ -1034,162 -1143,6 +1146,6 @@@ static void mshv_async_hvcall_handler(v
        *status = partition->async_hypercall_status;
  }
  
- static int
- mshv_partition_region_share(struct mshv_mem_region *region)
- {
-       u32 flags = HV_MODIFY_SPA_PAGE_HOST_ACCESS_MAKE_SHARED;
- 
-       if (region->flags.large_pages)
-               flags |= HV_MODIFY_SPA_PAGE_HOST_ACCESS_LARGE_PAGE;
- 
-       return hv_call_modify_spa_host_access(region->partition->pt_id,
-                       region->pages, region->nr_pages,
-                       HV_MAP_GPA_READABLE | HV_MAP_GPA_WRITABLE,
-                       flags, true);
- }
- 
- static int
- mshv_partition_region_unshare(struct mshv_mem_region *region)
- {
-       u32 flags = HV_MODIFY_SPA_PAGE_HOST_ACCESS_MAKE_EXCLUSIVE;
- 
-       if (region->flags.large_pages)
-               flags |= HV_MODIFY_SPA_PAGE_HOST_ACCESS_LARGE_PAGE;
- 
-       return hv_call_modify_spa_host_access(region->partition->pt_id,
-                       region->pages, region->nr_pages,
-                       0,
-                       flags, false);
- }
- 
- static int
- mshv_region_remap_pages(struct mshv_mem_region *region, u32 map_flags,
-                       u64 page_offset, u64 page_count)
- {
-       if (page_offset + page_count > region->nr_pages)
-               return -EINVAL;
- 
-       if (region->flags.large_pages)
-               map_flags |= HV_MAP_GPA_LARGE_PAGE;
- 
-       /* ask the hypervisor to map guest ram */
-       return hv_call_map_gpa_pages(region->partition->pt_id,
-                                    region->start_gfn + page_offset,
-                                    page_count, map_flags,
-                                    region->pages + page_offset);
- }
- 
- static int
- mshv_region_map(struct mshv_mem_region *region)
- {
-       u32 map_flags = region->hv_map_flags;
- 
-       return mshv_region_remap_pages(region, map_flags,
-                                      0, region->nr_pages);
- }
- 
- static void
- mshv_region_evict_pages(struct mshv_mem_region *region,
-                       u64 page_offset, u64 page_count)
- {
-       if (region->flags.range_pinned)
-               unpin_user_pages(region->pages + page_offset, page_count);
- 
-       memset(region->pages + page_offset, 0,
-              page_count * sizeof(struct page *));
- }
- 
- static void
- mshv_region_evict(struct mshv_mem_region *region)
- {
-       mshv_region_evict_pages(region, 0, region->nr_pages);
- }
- 
- static int
- mshv_region_populate_pages(struct mshv_mem_region *region,
-                          u64 page_offset, u64 page_count)
- {
-       u64 done_count, nr_pages;
-       struct page **pages;
-       __u64 userspace_addr;
-       int ret;
- 
-       if (page_offset + page_count > region->nr_pages)
-               return -EINVAL;
- 
-       for (done_count = 0; done_count < page_count; done_count += ret) {
-               pages = region->pages + page_offset + done_count;
-               userspace_addr = region->start_uaddr +
-                               (page_offset + done_count) *
-                               HV_HYP_PAGE_SIZE;
-               nr_pages = min(page_count - done_count,
-                              MSHV_PIN_PAGES_BATCH_SIZE);
- 
-               /*
-                * Pinning assuming 4k pages works for large pages too.
-                * All page structs within the large page are returned.
-                *
-                * Pin requests are batched because pin_user_pages_fast
-                * with the FOLL_LONGTERM flag does a large temporary
-                * allocation of contiguous memory.
-                */
-               if (region->flags.range_pinned)
-                       ret = pin_user_pages_fast(userspace_addr,
-                                                 nr_pages,
-                                                 FOLL_WRITE | FOLL_LONGTERM,
-                                                 pages);
-               else
-                       ret = -EOPNOTSUPP;
- 
-               if (ret < 0)
-                       goto release_pages;
-       }
- 
-       if (PageHuge(region->pages[page_offset]))
-               region->flags.large_pages = true;
- 
-       return 0;
- 
- release_pages:
-       mshv_region_evict_pages(region, page_offset, done_count);
-       return ret;
- }
- 
- static int
- mshv_region_populate(struct mshv_mem_region *region)
- {
-       return mshv_region_populate_pages(region, 0, region->nr_pages);
- }
- 
- static struct mshv_mem_region *
- mshv_partition_region_by_gfn(struct mshv_partition *partition, u64 gfn)
- {
-       struct mshv_mem_region *region;
- 
-       hlist_for_each_entry(region, &partition->pt_mem_regions, hnode) {
-               if (gfn >= region->start_gfn &&
-                   gfn < region->start_gfn + region->nr_pages)
-                       return region;
-       }
- 
-       return NULL;
- }
- 
- static struct mshv_mem_region *
- mshv_partition_region_by_uaddr(struct mshv_partition *partition, u64 uaddr)
- {
-       struct mshv_mem_region *region;
- 
-       hlist_for_each_entry(region, &partition->pt_mem_regions, hnode) {
-               if (uaddr >= region->start_uaddr &&
-                   uaddr < region->start_uaddr +
-                           (region->nr_pages << HV_HYP_PAGE_SHIFT))
-                       return region;
-       }
- 
-       return NULL;
- }
- 
  /*
   * NB: caller checks and makes sure mem->size is page aligned
   * Returns: 0 with regionpp updated on success, or -errno
@@@ -1199,53 -1152,61 +1155,61 @@@ static int mshv_partition_create_region
                                        struct mshv_mem_region **regionpp,
                                        bool is_mmio)
  {
-       struct mshv_mem_region *region;
+       struct mshv_mem_region *rg;
        u64 nr_pages = HVPFN_DOWN(mem->size);
  
        /* Reject overlapping regions */
-       if (mshv_partition_region_by_gfn(partition, mem->guest_pfn) ||
-           mshv_partition_region_by_gfn(partition, mem->guest_pfn + nr_pages - 
1) ||
-           mshv_partition_region_by_uaddr(partition, mem->userspace_addr) ||
-           mshv_partition_region_by_uaddr(partition, mem->userspace_addr + 
mem->size - 1))
+       spin_lock(&partition->pt_mem_regions_lock);
+       hlist_for_each_entry(rg, &partition->pt_mem_regions, hnode) {
+               if (mem->guest_pfn + nr_pages <= rg->start_gfn ||
+                   rg->start_gfn + rg->nr_pages <= mem->guest_pfn)
+                       continue;
+               spin_unlock(&partition->pt_mem_regions_lock);
                return -EEXIST;
+       }
+       spin_unlock(&partition->pt_mem_regions_lock);
  
-       region = vzalloc(sizeof(*region) + sizeof(struct page *) * nr_pages);
-       if (!region)
-               return -ENOMEM;
- 
-       region->nr_pages = nr_pages;
-       region->start_gfn = mem->guest_pfn;
-       region->start_uaddr = mem->userspace_addr;
-       region->hv_map_flags = HV_MAP_GPA_READABLE | HV_MAP_GPA_ADJUSTABLE;
-       if (mem->flags & BIT(MSHV_SET_MEM_BIT_WRITABLE))
-               region->hv_map_flags |= HV_MAP_GPA_WRITABLE;
-       if (mem->flags & BIT(MSHV_SET_MEM_BIT_EXECUTABLE))
-               region->hv_map_flags |= HV_MAP_GPA_EXECUTABLE;
+       rg = mshv_region_create(mem->guest_pfn, nr_pages,
+                               mem->userspace_addr, mem->flags);
+       if (IS_ERR(rg))
+               return PTR_ERR(rg);
  
-       /* Note: large_pages flag populated when we pin the pages */
-       if (!is_mmio)
-               region->flags.range_pinned = true;
+       if (is_mmio)
+               rg->type = MSHV_REGION_TYPE_MMIO;
+       else if (mshv_partition_encrypted(partition) ||
+                !mshv_region_movable_init(rg))
+               rg->type = MSHV_REGION_TYPE_MEM_PINNED;
+       else
+               rg->type = MSHV_REGION_TYPE_MEM_MOVABLE;
  
-       region->partition = partition;
+       rg->partition = partition;
  
-       *regionpp = region;
+       *regionpp = rg;
  
        return 0;
  }
  
- /*
-  * Map guest ram. if snp, make sure to release that from the host first
-  * Side Effects: In case of failure, pages are unpinned when feasible.
+ /**
+  * mshv_prepare_pinned_region - Pin and map memory regions
+  * @region: Pointer to the memory region structure
+  *
+  * This function processes memory regions that are explicitly marked as 
pinned.
+  * Pinned regions are preallocated, mapped upfront, and do not rely on 
fault-based
+  * population. The function ensures the region is properly populated, handles
+  * encryption requirements for SNP partitions if applicable, maps the region,
+  * and performs necessary sharing or eviction operations based on the mapping
+  * result.
+  *
+  * Return: 0 on success, negative error code on failure.
   */
- static int
- mshv_partition_mem_region_map(struct mshv_mem_region *region)
+ static int mshv_prepare_pinned_region(struct mshv_mem_region *region)
  {
        struct mshv_partition *partition = region->partition;
        int ret;
  
-       ret = mshv_region_populate(region);
+       ret = mshv_region_pin(region);
        if (ret) {
-               pt_err(partition, "Failed to populate memory region: %d\n",
+               pt_err(partition, "Failed to pin memory region: %d\n",
                       ret);
                goto err_out;
        }
@@@ -1258,12 -1219,12 +1222,12 @@@
         * access to guest memory regions.
         */
        if (mshv_partition_encrypted(partition)) {
-               ret = mshv_partition_region_unshare(region);
+               ret = mshv_region_unshare(region);
                if (ret) {
                        pt_err(partition,
                               "Failed to unshare memory region (guest_pfn: 
%llu): %d\n",
                               region->start_gfn, ret);
-                       goto evict_region;
+                       goto invalidate_region;
                }
        }
  
@@@ -1271,9 -1232,9 +1235,9 @@@
        if (ret && mshv_partition_encrypted(partition)) {
                int shrc;
  
-               shrc = mshv_partition_region_share(region);
+               shrc = mshv_region_share(region);
                if (!shrc)
-                       goto evict_region;
+                       goto invalidate_region;
  
                pt_err(partition,
                       "Failed to share memory region (guest_pfn: %llu): %d\n",
@@@ -1287,8 -1248,8 +1251,8 @@@
  
        return 0;
  
- evict_region:
-       mshv_region_evict(region);
+ invalidate_region:
+       mshv_region_invalidate(region);
  err_out:
        return ret;
  }
@@@ -1333,17 -1294,35 +1297,35 @@@ mshv_map_user_memory(struct mshv_partit
        if (ret)
                return ret;
  
-       if (is_mmio)
-               ret = hv_call_map_mmio_pages(partition->pt_id, mem.guest_pfn,
-                                            mmio_pfn, HVPFN_DOWN(mem.size));
-       else
-               ret = mshv_partition_mem_region_map(region);
+       switch (region->type) {
+       case MSHV_REGION_TYPE_MEM_PINNED:
+               ret = mshv_prepare_pinned_region(region);
+               break;
+       case MSHV_REGION_TYPE_MEM_MOVABLE:
+               /*
+                * For movable memory regions, remap with no access to let
+                * the hypervisor track dirty pages, enabling pre-copy live
+                * migration.
+                */
+               ret = hv_call_map_gpa_pages(partition->pt_id,
+                                           region->start_gfn,
+                                           region->nr_pages,
+                                           HV_MAP_GPA_NO_ACCESS, NULL);
+               break;
+       case MSHV_REGION_TYPE_MMIO:
+               ret = hv_call_map_mmio_pages(partition->pt_id,
+                                            region->start_gfn,
+                                            mmio_pfn,
+                                            region->nr_pages);
+               break;
+       }
  
        if (ret)
                goto errout;
  
-       /* Install the new region */
+       spin_lock(&partition->pt_mem_regions_lock);
        hlist_add_head(&region->hnode, &partition->pt_mem_regions);
+       spin_unlock(&partition->pt_mem_regions_lock);
  
        return 0;
  
@@@ -1358,33 -1337,32 +1340,32 @@@ mshv_unmap_user_memory(struct mshv_part
                       struct mshv_user_mem_region mem)
  {
        struct mshv_mem_region *region;
-       u32 unmap_flags = 0;
  
        if (!(mem.flags & BIT(MSHV_SET_MEM_BIT_UNMAP)))
                return -EINVAL;
  
+       spin_lock(&partition->pt_mem_regions_lock);
+ 
        region = mshv_partition_region_by_gfn(partition, mem.guest_pfn);
-       if (!region)
-               return -EINVAL;
+       if (!region) {
+               spin_unlock(&partition->pt_mem_regions_lock);
+               return -ENOENT;
+       }
  
        /* Paranoia check */
        if (region->start_uaddr != mem.userspace_addr ||
            region->start_gfn != mem.guest_pfn ||
-           region->nr_pages != HVPFN_DOWN(mem.size))
+           region->nr_pages != HVPFN_DOWN(mem.size)) {
+               spin_unlock(&partition->pt_mem_regions_lock);
                return -EINVAL;
+       }
  
        hlist_del(&region->hnode);
  
-       if (region->flags.large_pages)
-               unmap_flags |= HV_UNMAP_GPA_LARGE_PAGE;
- 
-       /* ignore unmap failures and continue as process may be exiting */
-       hv_call_unmap_gpa_pages(partition->pt_id, region->start_gfn,
-                               region->nr_pages, unmap_flags);
+       spin_unlock(&partition->pt_mem_regions_lock);
  
-       mshv_region_evict(region);
+       mshv_region_put(region);
  
-       vfree(region);
        return 0;
  }
  
@@@ -1720,8 -1698,8 +1701,8 @@@ static void destroy_partition(struct ms
  {
        struct mshv_vp *vp;
        struct mshv_mem_region *region;
-       int i, ret;
        struct hlist_node *n;
+       int i;
  
        if (refcount_read(&partition->pt_ref_count)) {
                pt_err(partition,
@@@ -1743,28 -1721,32 +1724,32 @@@
                        if (!vp)
                                continue;
  
-                       if (hv_parent_partition())
-                               mshv_vp_stats_unmap(partition->pt_id, 
vp->vp_index);
+                       if (hv_scheduler_type == HV_SCHEDULER_TYPE_ROOT)
+                               mshv_vp_stats_unmap(partition->pt_id, 
vp->vp_index,
+                                                   (void 
**)vp->vp_stats_pages);
  
                        if (vp->vp_register_page) {
-                               
(void)hv_call_unmap_vp_state_page(partition->pt_id,
-                                                                 vp->vp_index,
-                                                                 
HV_VP_STATE_PAGE_REGISTERS,
-                                                                 
input_vtl_zero);
+                               (void)hv_unmap_vp_state_page(partition->pt_id,
+                                                            vp->vp_index,
+                                                            
HV_VP_STATE_PAGE_REGISTERS,
+                                                            
virt_to_page(vp->vp_register_page),
+                                                            input_vtl_zero);
                                vp->vp_register_page = NULL;
                        }
  
-                       (void)hv_call_unmap_vp_state_page(partition->pt_id,
-                                                         vp->vp_index,
-                                                         
HV_VP_STATE_PAGE_INTERCEPT_MESSAGE,
-                                                         input_vtl_zero);
+                       (void)hv_unmap_vp_state_page(partition->pt_id,
+                                                    vp->vp_index,
+                                                    
HV_VP_STATE_PAGE_INTERCEPT_MESSAGE,
+                                                    
virt_to_page(vp->vp_intercept_msg_page),
+                                                    input_vtl_zero);
                        vp->vp_intercept_msg_page = NULL;
  
                        if (vp->vp_ghcb_page) {
-                               
(void)hv_call_unmap_vp_state_page(partition->pt_id,
-                                                                 vp->vp_index,
-                                                                 
HV_VP_STATE_PAGE_GHCB,
-                                                                 
input_vtl_normal);
+                               (void)hv_unmap_vp_state_page(partition->pt_id,
+                                                            vp->vp_index,
+                                                            
HV_VP_STATE_PAGE_GHCB,
+                                                            
virt_to_page(vp->vp_ghcb_page),
+                                                            input_vtl_normal);
                                vp->vp_ghcb_page = NULL;
                        }
  
@@@ -1781,24 -1763,10 +1766,10 @@@
  
        remove_partition(partition);
  
-       /* Remove regions, regain access to the memory and unpin the pages */
        hlist_for_each_entry_safe(region, n, &partition->pt_mem_regions,
                                  hnode) {
                hlist_del(&region->hnode);
- 
-               if (mshv_partition_encrypted(partition)) {
-                       ret = mshv_partition_region_share(region);
-                       if (ret) {
-                               pt_err(partition,
-                                      "Failed to regain access to memory, 
unpinning user pages will fail and crash the host error: %d\n",
-                                     ret);
-                               return;
-                       }
-               }
- 
-               mshv_region_evict(region);
- 
-               vfree(region);
+               mshv_region_put(region);
        }
  
        /* Withdraw and free all pages we deposited */
@@@ -1865,41 -1833,119 +1836,117 @@@ add_partition(struct mshv_partition *pa
        return 0;
  }
  
- static long
- mshv_ioctl_create_partition(void __user *user_arg, struct device *module_dev)
+ static_assert(MSHV_NUM_CPU_FEATURES_BANKS ==
+             HV_PARTITION_PROCESSOR_FEATURES_BANKS);
+ 
+ static long mshv_ioctl_process_pt_flags(void __user *user_arg, u64 *pt_flags,
+                                       struct hv_partition_creation_properties 
*cr_props,
+                                       union hv_partition_isolation_properties 
*isol_props)
  {
-       struct mshv_create_partition args;
-       u64 creation_flags;
-       struct hv_partition_creation_properties creation_properties = {};
-       union hv_partition_isolation_properties isolation_properties = {};
-       struct mshv_partition *partition;
-       long ret;
+       int i;
+       struct mshv_create_partition_v2 args;
+       union hv_partition_processor_features *disabled_procs;
+       union hv_partition_processor_xsave_features *disabled_xsave;
  
-       if (copy_from_user(&args, user_arg, sizeof(args)))
+       /* First, copy v1 struct in case user is on previous versions */
+       if (copy_from_user(&args, user_arg,
+                          sizeof(struct mshv_create_partition)))
                return -EFAULT;
  
        if ((args.pt_flags & ~MSHV_PT_FLAGS_MASK) ||
            args.pt_isolation >= MSHV_PT_ISOLATION_COUNT)
                return -EINVAL;
  
+       disabled_procs = &cr_props->disabled_processor_features;
+       disabled_xsave = &cr_props->disabled_processor_xsave_features;
+ 
+       /* Check if user provided newer struct with feature fields */
+       if (args.pt_flags & BIT_ULL(MSHV_PT_BIT_CPU_AND_XSAVE_FEATURES)) {
+               if (copy_from_user(&args, user_arg, sizeof(args)))
+                       return -EFAULT;
+ 
+               /* Re-validate v1 fields after second copy_from_user() */
+               if ((args.pt_flags & ~MSHV_PT_FLAGS_MASK) ||
+                   args.pt_isolation >= MSHV_PT_ISOLATION_COUNT)
+                       return -EINVAL;
+ 
+               if (args.pt_num_cpu_fbanks != MSHV_NUM_CPU_FEATURES_BANKS ||
+                   mshv_field_nonzero(args, pt_rsvd) ||
+                   mshv_field_nonzero(args, pt_rsvd1))
+                       return -EINVAL;
+ 
+               /*
+                * Note this assumes MSHV_NUM_CPU_FEATURES_BANKS will never
+                * change and equals HV_PARTITION_PROCESSOR_FEATURES_BANKS
+                * (i.e. 2).
+                *
+                * Further banks (index >= 2) will be modifiable as 'early'
+                * properties via the set partition property hypercall.
+                */
+               for (i = 0; i < HV_PARTITION_PROCESSOR_FEATURES_BANKS; i++)
+                       disabled_procs->as_uint64[i] = args.pt_cpu_fbanks[i];
+ 
+ #if IS_ENABLED(CONFIG_X86_64)
+               disabled_xsave->as_uint64 = args.pt_disabled_xsave;
+ #else
+               /*
+                * In practice this field is ignored on arm64, but safer to
+                * zero it in case it is ever used.
+                */
+               disabled_xsave->as_uint64 = 0;
+ 
+               if (mshv_field_nonzero(args, pt_rsvd2))
+                       return -EINVAL;
+ #endif
+       } else {
+               /*
+                * v1 behavior: try to enable everything. The hypervisor will
+                * disable features that are not supported. The banks can be
+                * queried via the get partition property hypercall.
+                */
+               for (i = 0; i < HV_PARTITION_PROCESSOR_FEATURES_BANKS; i++)
+                       disabled_procs->as_uint64[i] = 0;
+ 
+               disabled_xsave->as_uint64 = 0;
+       }
+ 
        /* Only support EXO partitions */
-       creation_flags = HV_PARTITION_CREATION_FLAG_EXO_PARTITION |
-                        
HV_PARTITION_CREATION_FLAG_INTERCEPT_MESSAGE_PAGE_ENABLED;
+       *pt_flags = HV_PARTITION_CREATION_FLAG_EXO_PARTITION |
+                   HV_PARTITION_CREATION_FLAG_INTERCEPT_MESSAGE_PAGE_ENABLED;
+ 
+       if (args.pt_flags & BIT_ULL(MSHV_PT_BIT_LAPIC))
+               *pt_flags |= HV_PARTITION_CREATION_FLAG_LAPIC_ENABLED;
+       if (args.pt_flags & BIT_ULL(MSHV_PT_BIT_X2APIC))
+               *pt_flags |= HV_PARTITION_CREATION_FLAG_X2APIC_CAPABLE;
+       if (args.pt_flags & BIT_ULL(MSHV_PT_BIT_GPA_SUPER_PAGES))
+               *pt_flags |= HV_PARTITION_CREATION_FLAG_GPA_SUPER_PAGES_ENABLED;
  
-       if (args.pt_flags & BIT(MSHV_PT_BIT_LAPIC))
-               creation_flags |= HV_PARTITION_CREATION_FLAG_LAPIC_ENABLED;
-       if (args.pt_flags & BIT(MSHV_PT_BIT_X2APIC))
-               creation_flags |= HV_PARTITION_CREATION_FLAG_X2APIC_CAPABLE;
-       if (args.pt_flags & BIT(MSHV_PT_BIT_GPA_SUPER_PAGES))
-               creation_flags |= 
HV_PARTITION_CREATION_FLAG_GPA_SUPER_PAGES_ENABLED;
+       isol_props->as_uint64 = 0;
  
        switch (args.pt_isolation) {
        case MSHV_PT_ISOLATION_NONE:
-               isolation_properties.isolation_type =
-                       HV_PARTITION_ISOLATION_TYPE_NONE;
+               isol_props->isolation_type = HV_PARTITION_ISOLATION_TYPE_NONE;
                break;
        }
  
+       return 0;
+ }
+ 
+ static long
+ mshv_ioctl_create_partition(void __user *user_arg, struct device *module_dev)
+ {
+       u64 creation_flags;
+       struct hv_partition_creation_properties creation_properties;
+       union hv_partition_isolation_properties isolation_properties;
+       struct mshv_partition *partition;
 -      struct file *file;
 -      int fd;
+       long ret;
+ 
+       ret = mshv_ioctl_process_pt_flags(user_arg, &creation_flags,
+                                         &creation_properties,
+                                         &isolation_properties);
+       if (ret)
+               return ret;
+ 
        partition = kzalloc(sizeof(*partition), GFP_KERNEL);
        if (!partition)
                return -ENOMEM;
@@@ -1919,6 -1965,7 +1966,7 @@@
  
        INIT_HLIST_HEAD(&partition->pt_devices);
  
+       spin_lock_init(&partition->pt_mem_regions_lock);
        INIT_HLIST_HEAD(&partition->pt_mem_regions);
  
        mshv_eventfd_init(partition);
@@@ -1939,13 -1986,29 +1987,13 @@@
                goto delete_partition;
  
        ret = mshv_init_async_handler(partition);
 -      if (ret)
 -              goto remove_partition;
 -
 -      fd = get_unused_fd_flags(O_CLOEXEC);
 -      if (fd < 0) {
 -              ret = fd;
 -              goto remove_partition;
 -      }
 -
 -      file = anon_inode_getfile("mshv_partition", &mshv_partition_fops,
 -                                partition, O_RDWR);
 -      if (IS_ERR(file)) {
 -              ret = PTR_ERR(file);
 -              goto put_fd;
 +      if (!ret) {
 +              ret = FD_ADD(O_CLOEXEC, anon_inode_getfile("mshv_partition",
 +                                                         &mshv_partition_fops,
 +                                                         partition, O_RDWR));
 +              if (ret >= 0)
 +                      return ret;
        }
 -
 -      fd_install(fd, file);
 -
 -      return fd;
 -
 -put_fd:
 -      put_unused_fd(fd);
 -remove_partition:
        remove_partition(partition);
  delete_partition:
        hv_call_delete_partition(partition->pt_id);
@@@ -1966,6 -2029,9 +2014,9 @@@ static long mshv_dev_ioctl(struct file 
        case MSHV_CREATE_PARTITION:
                return mshv_ioctl_create_partition((void __user *)arg,
                                                misc->this_device);
+       case MSHV_ROOT_HVCALL:
+               return mshv_ioctl_passthru_hvcall(NULL, false,
+                                       (void __user *)arg);
        }
  
        return -ENOTTY;
@@@ -2182,6 -2248,22 +2233,22 @@@ root_sched_deinit
        return err;
  }
  
+ static void mshv_init_vmm_caps(struct device *dev)
+ {
+       /*
+        * This can only fail here if HVCALL_GET_PARTITION_PROPERTY_EX or
+        * HV_PARTITION_PROPERTY_VMM_CAPABILITIES are not supported. In that
+        * case it's valid to proceed as if all vmm_caps are disabled (zero).
+        */
+       if (hv_call_get_partition_property_ex(HV_PARTITION_ID_SELF,
+                                             
HV_PARTITION_PROPERTY_VMM_CAPABILITIES,
+                                             0, &mshv_root.vmm_caps,
+                                             sizeof(mshv_root.vmm_caps)))
+               dev_warn(dev, "Unable to get VMM capabilities\n");
+ 
+       dev_dbg(dev, "vmm_caps = %#llx\n", mshv_root.vmm_caps.as_uint64[0]);
+ }
+ 
  static int __init mshv_parent_partition_init(void)
  {
        int ret;
@@@ -2234,6 -2316,8 +2301,8 @@@
        if (ret)
                goto remove_cpu_state;
  
+       mshv_init_vmm_caps(dev);
+ 
        ret = mshv_irqfd_wq_init();
        if (ret)
                goto exit_partition;
diff --combined drivers/hv/vmbus_drv.c
index 67734dc73e160,47fcab38398a4..a53af6fe81a65
--- a/drivers/hv/vmbus_drv.c
+++ b/drivers/hv/vmbus_drv.c
@@@ -36,6 -36,7 +36,7 @@@
  #include <linux/syscore_ops.h>
  #include <linux/dma-map-ops.h>
  #include <linux/pci.h>
+ #include <linux/export.h>
  #include <clocksource/hyperv_timer.h>
  #include <asm/mshyperv.h>
  #include "hyperv_vmbus.h"
@@@ -56,6 -57,18 +57,18 @@@ static long __percpu *vmbus_evt
  int vmbus_irq;
  int vmbus_interrupt;
  
+ /*
+  * If the Confidential VMBus is used, the data on the "wire" is not
+  * visible to either the host or the hypervisor.
+  */
+ static bool is_confidential;
+ 
+ bool vmbus_is_confidential(void)
+ {
+       return is_confidential;
+ }
+ EXPORT_SYMBOL_GPL(vmbus_is_confidential);
+ 
  /*
   * The panic notifier below is responsible solely for unloading the
   * vmbus connection, which is necessary in a panic event.
@@@ -1045,12 -1058,9 +1058,9 @@@ static void vmbus_onmessage_work(struc
        kfree(ctx);
  }
  
- void vmbus_on_msg_dpc(unsigned long data)
+ static void __vmbus_on_msg_dpc(void *message_page_addr)
  {
-       struct hv_per_cpu_context *hv_cpu = (void *)data;
-       void *page_addr = hv_cpu->synic_message_page;
-       struct hv_message msg_copy, *msg = (struct hv_message *)page_addr +
-                                 VMBUS_MESSAGE_SINT;
+       struct hv_message msg_copy, *msg;
        struct vmbus_channel_message_header *hdr;
        enum vmbus_channel_message_type msgtype;
        const struct vmbus_channel_message_table_entry *entry;
@@@ -1058,6 -1068,10 +1068,10 @@@
        __u8 payload_size;
        u32 message_type;
  
+       if (!message_page_addr)
+               return;
+       msg = (struct hv_message *)message_page_addr + VMBUS_MESSAGE_SINT;
+ 
        /*
         * 'enum vmbus_channel_message_type' is supposed to always be 'u32' as
         * it is being used in 'struct vmbus_channel_message_header' definition
@@@ -1183,6 -1197,14 +1197,14 @@@ msg_handled
        vmbus_signal_eom(msg, message_type);
  }
  
+ void vmbus_on_msg_dpc(unsigned long data)
+ {
+       struct hv_per_cpu_context *hv_cpu = (void *)data;
+ 
+       __vmbus_on_msg_dpc(hv_cpu->hyp_synic_message_page);
+       __vmbus_on_msg_dpc(hv_cpu->para_synic_message_page);
+ }
+ 
  #ifdef CONFIG_PM_SLEEP
  /*
   * Fake RESCIND_CHANNEL messages to clean up hv_sock channels by force for
@@@ -1221,21 -1243,19 +1243,19 @@@ static void vmbus_force_channel_rescind
  #endif /* CONFIG_PM_SLEEP */
  
  /*
-  * Schedule all channels with events pending
+  * Schedule all channels with events pending.
+  * The event page can be directly checked to get the id of
+  * the channel that has the interrupt pending.
   */
- static void vmbus_chan_sched(struct hv_per_cpu_context *hv_cpu)
+ static void vmbus_chan_sched(void *event_page_addr)
  {
        unsigned long *recv_int_page;
        u32 maxbits, relid;
+       union hv_synic_event_flags *event;
  
-       /*
-        * The event page can be directly checked to get the id of
-        * the channel that has the interrupt pending.
-        */
-       void *page_addr = hv_cpu->synic_event_page;
-       union hv_synic_event_flags *event
-               = (union hv_synic_event_flags *)page_addr +
-                                        VMBUS_MESSAGE_SINT;
+       if (!event_page_addr)
+               return;
+       event = (union hv_synic_event_flags *)event_page_addr + 
VMBUS_MESSAGE_SINT;
  
        maxbits = HV_EVENT_FLAGS_COUNT;
        recv_int_page = event->flags;
@@@ -1243,6 -1263,11 +1263,11 @@@
        if (unlikely(!recv_int_page))
                return;
  
+       /*
+        * Suggested-by: Michael Kelley <[email protected]>
+        * One possible optimization would be to keep track of the largest 
relID that's in use,
+        * and only scan up to that relID.
+        */
        for_each_set_bit(relid, recv_int_page, maxbits) {
                void (*callback_fn)(void *context);
                struct vmbus_channel *channel;
@@@ -1306,29 -1331,39 +1331,39 @@@ sched_unlock_rcu
        }
  }
  
- static void vmbus_isr(void)
+ static void vmbus_message_sched(struct hv_per_cpu_context *hv_cpu, void 
*message_page_addr)
  {
-       struct hv_per_cpu_context *hv_cpu
-               = this_cpu_ptr(hv_context.cpu_context);
-       void *page_addr;
        struct hv_message *msg;
  
-       vmbus_chan_sched(hv_cpu);
- 
-       page_addr = hv_cpu->synic_message_page;
-       msg = (struct hv_message *)page_addr + VMBUS_MESSAGE_SINT;
+       if (!message_page_addr)
+               return;
+       msg = (struct hv_message *)message_page_addr + VMBUS_MESSAGE_SINT;
  
        /* Check if there are actual msgs to be processed */
        if (msg->header.message_type != HVMSG_NONE) {
                if (msg->header.message_type == HVMSG_TIMER_EXPIRED) {
                        hv_stimer0_isr();
                        vmbus_signal_eom(msg, HVMSG_TIMER_EXPIRED);
-               } else
+               } else {
                        tasklet_schedule(&hv_cpu->msg_dpc);
+               }
        }
+ }
+ 
+ void vmbus_isr(void)
+ {
+       struct hv_per_cpu_context *hv_cpu
+               = this_cpu_ptr(hv_context.cpu_context);
+ 
+       vmbus_chan_sched(hv_cpu->hyp_synic_event_page);
+       vmbus_chan_sched(hv_cpu->para_synic_event_page);
+ 
+       vmbus_message_sched(hv_cpu, hv_cpu->hyp_synic_message_page);
+       vmbus_message_sched(hv_cpu, hv_cpu->para_synic_message_page);
  
        add_interrupt_randomness(vmbus_interrupt);
  }
+ EXPORT_SYMBOL_FOR_MODULES(vmbus_isr, "mshv_vtl");
  
  static irqreturn_t vmbus_percpu_isr(int irq, void *dev_id)
  {
@@@ -1343,6 -1378,59 +1378,59 @@@ static void vmbus_percpu_work(struct wo
        hv_synic_init(cpu);
  }
  
+ static int vmbus_alloc_synic_and_connect(void)
+ {
+       int ret, cpu;
+       struct work_struct __percpu *works;
+       int hyperv_cpuhp_online;
+ 
+       ret = hv_synic_alloc();
+       if (ret < 0)
+               goto err_alloc;
+ 
+       works = alloc_percpu(struct work_struct);
+       if (!works) {
+               ret = -ENOMEM;
+               goto err_alloc;
+       }
+ 
+       /*
+        * Initialize the per-cpu interrupt state and stimer state.
+        * Then connect to the host.
+        */
+       cpus_read_lock();
+       for_each_online_cpu(cpu) {
+               struct work_struct *work = per_cpu_ptr(works, cpu);
+ 
+               INIT_WORK(work, vmbus_percpu_work);
+               schedule_work_on(cpu, work);
+       }
+ 
+       for_each_online_cpu(cpu)
+               flush_work(per_cpu_ptr(works, cpu));
+ 
+       /* Register the callbacks for possible CPU online/offline'ing */
+       ret = cpuhp_setup_state_nocalls_cpuslocked(CPUHP_AP_ONLINE_DYN, 
"hyperv/vmbus:online",
+                                                  hv_synic_init, 
hv_synic_cleanup);
+       cpus_read_unlock();
+       free_percpu(works);
+       if (ret < 0)
+               goto err_alloc;
+       hyperv_cpuhp_online = ret;
+ 
+       ret = vmbus_connect();
+       if (ret)
+               goto err_connect;
+       return 0;
+ 
+ err_connect:
+       cpuhp_remove_state(hyperv_cpuhp_online);
+       return -ENODEV;
+ err_alloc:
+       hv_synic_free();
+       return -ENOMEM;
+ }
+ 
  /*
   * vmbus_bus_init -Main vmbus driver initialization routine.
   *
@@@ -1353,8 -1441,7 +1441,7 @@@
   */
  static int vmbus_bus_init(void)
  {
-       int ret, cpu;
-       struct work_struct __percpu *works;
+       int ret;
  
        ret = hv_init();
        if (ret != 0) {
@@@ -1389,41 -1476,15 +1476,15 @@@
                }
        }
  
-       ret = hv_synic_alloc();
-       if (ret)
-               goto err_alloc;
- 
-       works = alloc_percpu(struct work_struct);
-       if (!works) {
-               ret = -ENOMEM;
-               goto err_alloc;
-       }
- 
        /*
-        * Initialize the per-cpu interrupt state and stimer state.
-        * Then connect to the host.
+        * Cache the value as getting it involves a VM exit on x86(_64), and
+        * doing that on each VP while initializing SynIC's wastes time.
         */
-       cpus_read_lock();
-       for_each_online_cpu(cpu) {
-               struct work_struct *work = per_cpu_ptr(works, cpu);
- 
-               INIT_WORK(work, vmbus_percpu_work);
-               schedule_work_on(cpu, work);
-       }
- 
-       for_each_online_cpu(cpu)
-               flush_work(per_cpu_ptr(works, cpu));
- 
-       /* Register the callbacks for possible CPU online/offline'ing */
-       ret = cpuhp_setup_state_nocalls_cpuslocked(CPUHP_AP_ONLINE_DYN, 
"hyperv/vmbus:online",
-                                                  hv_synic_init, 
hv_synic_cleanup);
-       cpus_read_unlock();
-       free_percpu(works);
-       if (ret < 0)
-               goto err_alloc;
-       hyperv_cpuhp_online = ret;
- 
-       ret = vmbus_connect();
+       is_confidential = ms_hyperv.confidential_vmbus_available;
+       if (is_confidential)
+               pr_info("Establishing connection to the confidential VMBus\n");
+       hv_para_set_sint_proxy(!is_confidential);
+       ret = vmbus_alloc_synic_and_connect();
        if (ret)
                goto err_connect;
  
@@@ -1439,9 -1500,6 +1500,6 @@@
        return 0;
  
  err_connect:
-       cpuhp_remove_state(hyperv_cpuhp_online);
- err_alloc:
-       hv_synic_free();
        if (vmbus_irq == -1) {
                hv_remove_vmbus_handler();
        } else {
@@@ -2798,10 -2856,10 +2856,10 @@@ static void hv_crash_handler(struct pt_
         */
        cpu = smp_processor_id();
        hv_stimer_cleanup(cpu);
-       hv_synic_disable_regs(cpu);
+       hv_hyp_synic_disable_regs(cpu);
  };
  
 -static int hv_synic_suspend(void)
 +static int hv_synic_suspend(void *data)
  {
        /*
         * When we reach here, all the non-boot CPUs have been offlined.
@@@ -2823,14 -2881,14 +2881,14 @@@
         * interrupts-disabled context.
         */
  
-       hv_synic_disable_regs(0);
+       hv_hyp_synic_disable_regs(0);
  
        return 0;
  }
  
 -static void hv_synic_resume(void)
 +static void hv_synic_resume(void *data)
  {
-       hv_synic_enable_regs(0);
+       hv_hyp_synic_enable_regs(0);
  
        /*
         * Note: we don't need to call hv_stimer_init(0), because the timer
@@@ -2840,15 -2898,11 +2898,15 @@@
  }
  
  /* The callbacks run only on CPU0, with irqs_disabled. */
 -static struct syscore_ops hv_synic_syscore_ops = {
 +static const struct syscore_ops hv_synic_syscore_ops = {
        .suspend = hv_synic_suspend,
        .resume = hv_synic_resume,
  };
  
 +static struct syscore hv_synic_syscore = {
 +      .ops = &hv_synic_syscore_ops,
 +};
 +
  static int __init hv_acpi_init(void)
  {
        int ret;
@@@ -2891,7 -2945,7 +2949,7 @@@
        hv_setup_kexec_handler(hv_kexec_handler);
        hv_setup_crash_handler(hv_crash_handler);
  
 -      register_syscore_ops(&hv_synic_syscore_ops);
 +      register_syscore(&hv_synic_syscore);
  
        return 0;
  
@@@ -2905,7 -2959,7 +2963,7 @@@ static void __exit vmbus_exit(void
  {
        int cpu;
  
 -      unregister_syscore_ops(&hv_synic_syscore_ops);
 +      unregister_syscore(&hv_synic_syscore);
  
        hv_remove_kexec_handler();
        hv_remove_crash_handler();
diff --combined include/linux/compiler_types.h
index 3eac51d684261,6897d4d5cb28a..45875903960ed
--- a/include/linux/compiler_types.h
+++ b/include/linux/compiler_types.h
@@@ -11,6 -11,10 +11,10 @@@
  #define __has_builtin(x) (0)
  #endif
  
+ /* Indirect macros required for expanded argument pasting, eg. __LINE__. */
+ #define ___PASTE(a, b) a##b
+ #define __PASTE(a, b) ___PASTE(a, b)
+ 
  #ifndef __ASSEMBLY__
  
  /*
@@@ -79,10 -83,6 +83,6 @@@ static inline void __chk_io_ptr(const v
  # define __builtin_warning(x, y...) (1)
  #endif /* __CHECKER__ */
  
- /* Indirect macros required for expanded argument pasting, eg. __LINE__. */
- #define ___PASTE(a,b) a##b
- #define __PASTE(a,b) ___PASTE(a,b)
- 
  #ifdef __KERNEL__
  
  /* Attributes */
@@@ -250,9 -250,10 +250,9 @@@ struct ftrace_likely_data 
  /*
   * GCC does not warn about unused static inline functions for 
-Wunused-function.
   * Suppress the warning in clang as well by using __maybe_unused, but enable 
it
 - * for W=1 build. This will allow clang to find unused functions. Remove the
 - * __inline_maybe_unused entirely after fixing most of -Wunused-function 
warnings.
 + * for W=2 build. This will allow clang to find unused functions.
   */
 -#ifdef KBUILD_EXTRA_WARN1
 +#ifdef KBUILD_EXTRA_WARN2
  #define __inline_maybe_unused
  #else
  #define __inline_maybe_unused __maybe_unused
@@@ -393,21 -394,6 +393,21 @@@
  #define __counted_by_be(member)       __counted_by(member)
  #endif
  
 +/*
 + * This designates the minimum number of elements a passed array parameter 
must
 + * have. For example:
 + *
 + *     void some_function(u8 param[at_least 7]);
 + *
 + * If a caller passes an array with fewer than 7 elements, the compiler will
 + * emit a warning.
 + */
 +#ifndef __CHECKER__
 +#define at_least static
 +#else
 +#define at_least
 +#endif
 +
  /* Do not trap wrapping arithmetic within an annotated function. */
  #ifdef CONFIG_UBSAN_INTEGER_WRAP
  # define __signed_wrap __attribute__((no_sanitize("signed-integer-overflow")))
@@@ -475,12 -461,6 +475,12 @@@
  # define __nocfi
  #endif
  
 +#if defined(CONFIG_ARCH_USES_CFI_GENERIC_LLVM_PASS)
 +# define __nocfi_generic      __nocfi
 +#else
 +# define __nocfi_generic
 +#endif
 +
  /*
   * Any place that could be marked with the "alloc_size" attribute is also
   * a place to be marked with the "malloc" attribute, except those that may

-- 
LinuxNextTracking

Reply via email to