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,
- ®ister_page);
+ ret = hv_map_vp_state_page(partition->pt_id, args.vp_index,
+ HV_VP_STATE_PAGE_REGISTERS,
+ input_vtl_zero, ®ister_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(®ion->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(®ion->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(®ion->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