Merge tag 'bitmap-for-5.19-rc1' of https://github.com/norov/linux
authorLinus Torvalds <torvalds@linux-foundation.org>
Sat, 4 Jun 2022 21:04:27 +0000 (14:04 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 4 Jun 2022 21:04:27 +0000 (14:04 -0700)
Pull bitmap updates from Yury Norov:

 - bitmap: optimize bitmap_weight() usage, from me

 - lib/bitmap.c make bitmap_print_bitmask_to_buf parseable, from Mauro
   Carvalho Chehab

 - include/linux/find: Fix documentation, from Anna-Maria Behnsen

 - bitmap: fix conversion from/to fix-sized arrays, from me

 - bitmap: Fix return values to be unsigned, from Kees Cook

It has been in linux-next for at least a week with no problems.

* tag 'bitmap-for-5.19-rc1' of https://github.com/norov/linux: (31 commits)
  nodemask: Fix return values to be unsigned
  bitmap: Fix return values to be unsigned
  KVM: x86: hyper-v: replace bitmap_weight() with hweight64()
  KVM: x86: hyper-v: fix type of valid_bank_mask
  ia64: cleanup remove_siblinginfo()
  drm/amd/pm: use bitmap_{from,to}_arr32 where appropriate
  KVM: s390: replace bitmap_copy with bitmap_{from,to}_arr64 where appropriate
  lib/bitmap: add test for bitmap_{from,to}_arr64
  lib: add bitmap_{from,to}_arr64
  lib/bitmap: extend comment for bitmap_(from,to)_arr32()
  include/linux/find: Fix documentation
  lib/bitmap.c make bitmap_print_bitmask_to_buf parseable
  MAINTAINERS: add cpumask and nodemask files to BITMAP_API
  arch/x86: replace nodes_weight with nodes_empty where appropriate
  mm/vmstat: replace cpumask_weight with cpumask_empty where appropriate
  clocksource: replace cpumask_weight with cpumask_empty in clocksource.c
  genirq/affinity: replace cpumask_weight with cpumask_empty where appropriate
  irq: mips: replace cpumask_weight with cpumask_empty where appropriate
  drm/i915/pmu: replace cpumask_weight with cpumask_empty where appropriate
  arch/x86: replace cpumask_weight with cpumask_empty where appropriate
  ...

12 files changed:
1  2 
MAINTAINERS
arch/alpha/kernel/process.c
arch/riscv/kernel/cpufeature.c
arch/s390/kvm/kvm-s390.c
arch/x86/kvm/hyperv.c
drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c
drivers/gpu/drm/i915/i915_pmu.c
drivers/net/dsa/b53/b53_common.c
drivers/net/ethernet/broadcom/bcmsysport.c
drivers/net/ethernet/marvell/octeontx2/nic/otx2_pf.c
include/linux/nodemask.h
mm/vmstat.c

diff --combined MAINTAINERS
@@@ -201,7 -201,6 +201,7 @@@ F: include/net/ieee80211_radiotap.
  F:    include/net/iw_handler.h
  F:    include/net/wext.h
  F:    include/uapi/linux/nl80211.h
 +F:    include/uapi/linux/wireless.h
  F:    net/wireless/
  
  8169 10/100/1000 GIGABIT ETHERNET DRIVER
@@@ -382,7 -381,7 +382,7 @@@ F: include/acpi
  F:    tools/power/acpi/
  
  ACPI FOR ARM64 (ACPI/arm64)
 -M:    Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
 +M:    Lorenzo Pieralisi <lpieralisi@kernel.org>
  M:    Hanjun Guo <guohanjun@huawei.com>
  M:    Sudeep Holla <sudeep.holla@arm.com>
  L:    linux-acpi@vger.kernel.org
@@@ -820,7 -819,7 +820,7 @@@ S: Maintaine
  F:    drivers/mailbox/mailbox-altera.c
  
  ALTERA MSGDMA IP CORE DRIVER
 -M:    Olivier Dautricourt <olivier.dautricourt@orolia.com>
 +M:    Olivier Dautricourt <olivierdautricourt@gmail.com>
  R:    Stefan Roese <sr@denx.de>
  L:    dmaengine@vger.kernel.org
  S:    Odd Fixes
@@@ -1044,6 -1043,7 +1044,6 @@@ F:      arch/arm64/boot/dts/amd/amd-seattle-
  F:    drivers/net/ethernet/amd/xgbe/
  
  AMD SENSOR FUSION HUB DRIVER
 -M:    Nehal Shah <nehal-bakulchandra.shah@amd.com>
  M:    Basavaraj Natikar <basavaraj.natikar@amd.com>
  L:    linux-input@vger.kernel.org
  S:    Maintained
@@@ -1090,14 -1090,6 +1090,14 @@@ W:    https://ez.analog.com/linux-software
  F:    Documentation/devicetree/bindings/iio/adc/adi,ad7292.yaml
  F:    drivers/iio/adc/ad7292.c
  
 +ANALOG DEVICES INC AD3552R DRIVER
 +M:    Nuno Sá <nuno.sa@analog.com>
 +L:    linux-iio@vger.kernel.org
 +S:    Supported
 +W:    https://ez.analog.com/linux-software-drivers
 +F:    Documentation/devicetree/bindings/iio/dac/adi,ad3552r.yaml
 +F:    drivers/iio/dac/ad3552r.c
 +
  ANALOG DEVICES INC AD7293 DRIVER
  M:    Antoniu Miclaus <antoniu.miclaus@analog.com>
  L:    linux-iio@vger.kernel.org
@@@ -1383,6 -1375,14 +1383,6 @@@ L:     linux-input@vger.kernel.or
  S:    Odd fixes
  F:    drivers/input/mouse/bcm5974.c
  
 -APPLE DART IOMMU DRIVER
 -M:    Sven Peter <sven@svenpeter.dev>
 -R:    Alyssa Rosenzweig <alyssa@rosenzweig.io>
 -L:    iommu@lists.linux-foundation.org
 -S:    Maintained
 -F:    Documentation/devicetree/bindings/iommu/apple,dart.yaml
 -F:    drivers/iommu/apple-dart.c
 -
  APPLE PCIE CONTROLLER DRIVER
  M:    Alyssa Rosenzweig <alyssa@rosenzweig.io>
  M:    Marc Zyngier <maz@kernel.org>
@@@ -1446,7 -1446,6 +1446,7 @@@ F:      drivers/media/i2c/aptina-pll.
  
  AQUACOMPUTER D5 NEXT PUMP SENSOR DRIVER
  M:    Aleksa Savic <savicaleksa83@gmail.com>
 +M:    Jack Doan <me@jackdoan.com>
  L:    linux-hwmon@vger.kernel.org
  S:    Maintained
  F:    Documentation/hwmon/aquacomputer_d5next.rst
@@@ -1526,7 -1525,10 +1526,7 @@@ F:     Documentation/devicetree/bindings/mt
  F:    arch/arm/boot/dts/arm-realview-*
  F:    arch/arm/boot/dts/integrator*
  F:    arch/arm/boot/dts/versatile*
 -F:    arch/arm/mach-integrator/
 -F:    arch/arm/mach-realview/
  F:    arch/arm/mach-versatile/
 -F:    arch/arm/plat-versatile/
  F:    drivers/bus/arm-integrator-lm.c
  F:    drivers/clk/versatile/
  F:    drivers/i2c/busses/i2c-versatile.c
@@@ -1834,11 -1836,7 +1834,11 @@@ F:    Documentation/devicetree/bindings/ar
  F:    Documentation/devicetree/bindings/clock/apple,nco.yaml
  F:    Documentation/devicetree/bindings/i2c/apple,i2c.yaml
  F:    Documentation/devicetree/bindings/interrupt-controller/apple,*
 +F:    Documentation/devicetree/bindings/iommu/apple,dart.yaml
 +F:    Documentation/devicetree/bindings/iommu/apple,sart.yaml
  F:    Documentation/devicetree/bindings/mailbox/apple,mailbox.yaml
 +F:    Documentation/devicetree/bindings/nvme/apple,nvme-ans.yaml
 +F:    Documentation/devicetree/bindings/nvmem/apple,efuses.yaml
  F:    Documentation/devicetree/bindings/pci/apple,pcie.yaml
  F:    Documentation/devicetree/bindings/pinctrl/apple,pinctrl.yaml
  F:    Documentation/devicetree/bindings/power/apple*
@@@ -1847,18 -1845,14 +1847,18 @@@ F:   arch/arm64/boot/dts/apple
  F:    drivers/clk/clk-apple-nco.c
  F:    drivers/i2c/busses/i2c-pasemi-core.c
  F:    drivers/i2c/busses/i2c-pasemi-platform.c
 +F:    drivers/iommu/apple-dart.c
  F:    drivers/irqchip/irq-apple-aic.c
  F:    drivers/mailbox/apple-mailbox.c
 +F:    drivers/nvme/host/apple.c
 +F:    drivers/nvmem/apple-efuses.c
  F:    drivers/pinctrl/pinctrl-apple-gpio.c
  F:    drivers/soc/apple/*
  F:    drivers/watchdog/apple_wdt.c
  F:    include/dt-bindings/interrupt-controller/apple-aic.h
  F:    include/dt-bindings/pinctrl/apple.h
  F:    include/linux/apple-mailbox.h
 +F:    include/linux/soc/apple/*
  
  ARM/ARTPEC MACHINE SUPPORT
  M:    Jesper Nilsson <jesper.nilsson@axis.com>
@@@ -2135,18 -2129,6 +2135,18 @@@ T:    git git://git.kernel.org/pub/scm/lin
  F:    arch/arm/mach-sa1100/include/mach/jornada720.h
  F:    arch/arm/mach-sa1100/jornada720.c
  
 +ARM/HPE GXP ARCHITECTURE
 +M:    Jean-Marie Verdun <verdun@hpe.com>
 +M:    Nick Hawkins <nick.hawkins@hpe.com>
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/arm/hpe,gxp.yaml
 +F:    Documentation/devicetree/bindings/timer/hpe,gxp-timer.yaml
 +F:    arch/arm/boot/dts/hpe-bmc*
 +F:    arch/arm/boot/dts/hpe-gxp*
 +F:    arch/arm/mach-hpe/
 +F:    drivers/clocksource/timer-gxp.c
 +F:    drivers/watchdog/gxp-wdt.c
 +
  ARM/IGEP MACHINE SUPPORT
  M:    Enric Balletbo i Serra <eballetbo@gmail.com>
  M:    Javier Martinez Canillas <javier@dowhile0.org>
@@@ -2589,7 -2571,7 +2589,7 @@@ F:      Documentation/devicetree/bindings/ar
  F:    Documentation/devicetree/bindings/gpio/gpio-rda.yaml
  F:    Documentation/devicetree/bindings/interrupt-controller/rda,8810pl-intc.txt
  F:    Documentation/devicetree/bindings/serial/rda,8810pl-uart.yaml
 -F:    Documentation/devicetree/bindings/timer/rda,8810pl-timer.txt
 +F:    Documentation/devicetree/bindings/timer/rda,8810pl-timer.yaml
  F:    arch/arm/boot/dts/rda8810pl-*
  F:    drivers/clocksource/timer-rda.c
  F:    drivers/gpio/gpio-rda.c
@@@ -2654,14 -2636,13 +2654,14 @@@ F:   sound/soc/rockchip
  N:    rockchip
  
  ARM/SAMSUNG S3C, S5P AND EXYNOS ARM ARCHITECTURES
 -M:    Krzysztof Kozlowski <krzk@kernel.org>
 +M:    Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
  R:    Alim Akhtar <alim.akhtar@samsung.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  L:    linux-samsung-soc@vger.kernel.org
  S:    Maintained
  C:    irc://irc.libera.chat/linux-exynos
  Q:    https://patchwork.kernel.org/project/linux-samsung-soc/list/
 +B:    mailto:linux-samsung-soc@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux.git
  F:    Documentation/arm/samsung/
  F:    Documentation/devicetree/bindings/arm/samsung/
@@@ -2962,7 -2943,7 +2962,7 @@@ N:      uniphie
  ARM/VERSATILE EXPRESS PLATFORM
  M:    Liviu Dudau <liviu.dudau@arm.com>
  M:    Sudeep Holla <sudeep.holla@arm.com>
 -M:    Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
 +M:    Lorenzo Pieralisi <lpieralisi@kernel.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  F:    */*/*/vexpress*
@@@ -3118,16 -3099,6 +3118,16 @@@ S:    Maintaine
  F:    Documentation/devicetree/bindings/mmc/aspeed,sdhci.yaml
  F:    drivers/mmc/host/sdhci-of-aspeed*
  
 +ASPEED SMC SPI DRIVER
 +M:    Chin-Ting Kuo <chin-ting_kuo@aspeedtech.com>
 +M:    Cédric Le Goater <clg@kaod.org>
 +L:    linux-aspeed@lists.ozlabs.org (moderated for non-subscribers)
 +L:    openbmc@lists.ozlabs.org (moderated for non-subscribers)
 +L:    linux-spi@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/spi/aspeed,ast2600-fmc.yaml
 +F:    drivers/spi/spi-aspeed-smc.c
 +
  ASPEED VIDEO ENGINE DRIVER
  M:    Eddie James <eajames@linux.ibm.com>
  L:    linux-media@vger.kernel.org
@@@ -3533,10 -3504,14 +3533,14 @@@ R:   Andy Shevchenko <andriy.shevchenko@l
  R:    Rasmus Villemoes <linux@rasmusvillemoes.dk>
  S:    Maintained
  F:    include/linux/bitmap.h
+ F:    include/linux/cpumask.h
  F:    include/linux/find.h
+ F:    include/linux/nodemask.h
  F:    lib/bitmap.c
+ F:    lib/cpumask.c
  F:    lib/find_bit.c
  F:    lib/find_bit_benchmark.c
+ F:    lib/nodemask.c
  F:    lib/test_bitmap.c
  F:    tools/include/linux/bitmap.h
  F:    tools/include/linux/find.h
@@@ -3598,9 -3573,8 +3602,9 @@@ M:      Andy Gospodarek <andy@greyhouse.net
  L:    netdev@vger.kernel.org
  S:    Supported
  W:    http://sourceforge.net/projects/bonding/
 +F:    Documentation/networking/bonding.rst
  F:    drivers/net/bonding/
 -F:    include/net/bonding.h
 +F:    include/net/bond*
  F:    include/uapi/linux/if_bonding.h
  
  BOSCH SENSORTEC BMA400 ACCELEROMETER IIO DRIVER
@@@ -3770,23 -3744,9 +3774,23 @@@ F:    drivers/net/dsa/bcm_sf2
  F:    include/linux/dsa/brcm.h
  F:    include/linux/platform_data/b53.h
  
 +BROADCOM BCMBCA ARM ARCHITECTURE
 +M:    William Zhang <william.zhang@broadcom.com>
 +M:    Anand Gore <anand.gore@broadcom.com>
 +M:    Kursad Oney <kursad.oney@broadcom.com>
 +R:    Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +S:    Maintained
 +T:    git git://github.com/broadcom/stblinux.git
 +F:    Documentation/devicetree/bindings/arm/bcm/brcm,bcmbca.yaml
 +F:    arch/arm/boot/dts/bcm47622.dtsi
 +F:    arch/arm/boot/dts/bcm947622.dts
 +N:    bcmbca
 +N:    bcm[9]?47622
 +
  BROADCOM BCM2711/BCM2835 ARM ARCHITECTURE
  M:    Nicolas Saenz Julienne <nsaenz@kernel.org>
 -L:    bcm-kernel-feedback-list@broadcom.com
 +R:    Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
  L:    linux-rpi-kernel@lists.infradead.org (moderated for non-subscribers)
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
@@@ -3796,13 -3756,12 +3800,13 @@@ F:   drivers/pci/controller/pcie-brcmstb.
  F:    drivers/staging/vc04_services
  N:    bcm2711
  N:    bcm283*
 +N:    raspberrypi
  
  BROADCOM BCM281XX/BCM11XXX/BCM216XX ARM ARCHITECTURE
  M:    Florian Fainelli <f.fainelli@gmail.com>
  M:    Ray Jui <rjui@broadcom.com>
  M:    Scott Branden <sbranden@broadcom.com>
 -M:    bcm-kernel-feedback-list@broadcom.com
 +R:    Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
  S:    Maintained
  T:    git git://github.com/broadcom/mach-bcm
  F:    arch/arm/mach-bcm/
@@@ -3822,7 -3781,7 +3826,7 @@@ F:      arch/mips/include/asm/mach-bcm47xx/
  
  BROADCOM BCM4908 ETHERNET DRIVER
  M:    Rafał Miłecki <rafal@milecki.pl>
 -M:    bcm-kernel-feedback-list@broadcom.com
 +R:    Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
  L:    netdev@vger.kernel.org
  S:    Maintained
  F:    Documentation/devicetree/bindings/net/brcm,bcm4908-enet.yaml
@@@ -3831,7 -3790,7 +3835,7 @@@ F:      drivers/net/ethernet/broadcom/unimac
  
  BROADCOM BCM4908 PINMUX DRIVER
  M:    Rafał Miłecki <rafal@milecki.pl>
 -M:    bcm-kernel-feedback-list@broadcom.com
 +R:    Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
  L:    linux-gpio@vger.kernel.org
  S:    Maintained
  F:    Documentation/devicetree/bindings/pinctrl/brcm,bcm4908-pinctrl.yaml
@@@ -3841,7 -3800,7 +3845,7 @@@ BROADCOM BCM5301X ARM ARCHITECTUR
  M:    Florian Fainelli <f.fainelli@gmail.com>
  M:    Hauke Mehrtens <hauke@hauke-m.de>
  M:    Rafał Miłecki <zajec5@gmail.com>
 -M:    bcm-kernel-feedback-list@broadcom.com
 +R:    Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  F:    arch/arm/boot/dts/bcm470*
@@@ -3852,7 -3811,7 +3856,7 @@@ F:      arch/arm/mach-bcm/bcm_5301x.
  BROADCOM BCM53573 ARM ARCHITECTURE
  M:    Florian Fainelli <f.fainelli@gmail.com>
  M:    Rafał Miłecki <rafal@milecki.pl>
 -L:    bcm-kernel-feedback-list@broadcom.com
 +R:    Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  F:    arch/arm/boot/dts/bcm47189*
@@@ -3860,7 -3819,7 +3864,7 @@@ F:      arch/arm/boot/dts/bcm53573
  
  BROADCOM BCM63XX ARM ARCHITECTURE
  M:    Florian Fainelli <f.fainelli@gmail.com>
 -M:    bcm-kernel-feedback-list@broadcom.com
 +R:    Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  T:    git git://github.com/broadcom/stblinux.git
@@@ -3874,7 -3833,7 +3878,7 @@@ F:      drivers/usb/gadget/udc/bcm63xx_udc.
  
  BROADCOM BCM7XXX ARM ARCHITECTURE
  M:    Florian Fainelli <f.fainelli@gmail.com>
 -M:    bcm-kernel-feedback-list@broadcom.com
 +R:    Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  T:    git git://github.com/broadcom/stblinux.git
@@@ -3892,21 -3851,21 +3896,21 @@@ N:   bcm712
  BROADCOM BDC DRIVER
  M:    Al Cooper <alcooperx@gmail.com>
  L:    linux-usb@vger.kernel.org
 -L:    bcm-kernel-feedback-list@broadcom.com
 +R:    Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
  S:    Maintained
  F:    Documentation/devicetree/bindings/usb/brcm,bdc.yaml
  F:    drivers/usb/gadget/udc/bdc/
  
  BROADCOM BMIPS CPUFREQ DRIVER
  M:    Markus Mayer <mmayer@broadcom.com>
 -M:    bcm-kernel-feedback-list@broadcom.com
 +R:    Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
  L:    linux-pm@vger.kernel.org
  S:    Maintained
  F:    drivers/cpufreq/bmips-cpufreq.c
  
  BROADCOM BMIPS MIPS ARCHITECTURE
  M:    Florian Fainelli <f.fainelli@gmail.com>
 -L:    bcm-kernel-feedback-list@broadcom.com
 +R:    Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
  L:    linux-mips@vger.kernel.org
  S:    Maintained
  T:    git git://github.com/broadcom/stblinux.git
@@@ -3957,9 -3916,7 +3961,9 @@@ BROADCOM BNXT_EN 50 GIGABIT ETHERNET DR
  M:    Michael Chan <michael.chan@broadcom.com>
  L:    netdev@vger.kernel.org
  S:    Supported
 +F:    drivers/firmware/broadcom/tee_bnxt_fw.c
  F:    drivers/net/ethernet/broadcom/bnxt/
 +F:    include/linux/firmware/broadcom/tee_bnxt_fw.h
  
  BROADCOM BRCM80211 IEEE802.11n WIRELESS DRIVER
  M:    Arend van Spriel <aspriel@gmail.com>
@@@ -3974,53 -3931,53 +3978,53 @@@ F:   drivers/net/wireless/broadcom/brcm80
  BROADCOM BRCMSTB GPIO DRIVER
  M:    Doug Berger <opendmb@gmail.com>
  M:    Florian Fainelli <f.fainelli@gmail.com>
 -L:    bcm-kernel-feedback-list@broadcom.com
 +R:    Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
  S:    Supported
  F:    Documentation/devicetree/bindings/gpio/brcm,brcmstb-gpio.yaml
  F:    drivers/gpio/gpio-brcmstb.c
  
  BROADCOM BRCMSTB I2C DRIVER
  M:    Kamal Dasu <kdasu.kdev@gmail.com>
 +R:    Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
  L:    linux-i2c@vger.kernel.org
 -L:    bcm-kernel-feedback-list@broadcom.com
  S:    Supported
  F:    Documentation/devicetree/bindings/i2c/brcm,brcmstb-i2c.yaml
  F:    drivers/i2c/busses/i2c-brcmstb.c
  
  BROADCOM BRCMSTB UART DRIVER
  M:    Al Cooper <alcooperx@gmail.com>
 +R:    Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
  L:    linux-serial@vger.kernel.org
 -L:    bcm-kernel-feedback-list@broadcom.com
  S:    Maintained
  F:    Documentation/devicetree/bindings/serial/brcm,bcm7271-uart.yaml
  F:    drivers/tty/serial/8250/8250_bcm7271.c
  
  BROADCOM BRCMSTB USB EHCI DRIVER
  M:    Al Cooper <alcooperx@gmail.com>
 +R:    Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
  L:    linux-usb@vger.kernel.org
 -L:    bcm-kernel-feedback-list@broadcom.com
  S:    Maintained
  F:    Documentation/devicetree/bindings/usb/brcm,bcm7445-ehci.yaml
  F:    drivers/usb/host/ehci-brcm.*
  
  BROADCOM BRCMSTB USB PIN MAP DRIVER
  M:    Al Cooper <alcooperx@gmail.com>
 +R:    Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
  L:    linux-usb@vger.kernel.org
 -L:    bcm-kernel-feedback-list@broadcom.com
  S:    Maintained
  F:    Documentation/devicetree/bindings/usb/brcm,usb-pinmap.yaml
  F:    drivers/usb/misc/brcmstb-usb-pinmap.c
  
  BROADCOM BRCMSTB USB2 and USB3 PHY DRIVER
  M:    Al Cooper <alcooperx@gmail.com>
 +R:    Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
  L:    linux-kernel@vger.kernel.org
 -L:    bcm-kernel-feedback-list@broadcom.com
  S:    Maintained
  F:    drivers/phy/broadcom/phy-brcm-usb*
  
  BROADCOM ETHERNET PHY DRIVERS
  M:    Florian Fainelli <f.fainelli@gmail.com>
 -L:    bcm-kernel-feedback-list@broadcom.com
 +R:    Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
  L:    netdev@vger.kernel.org
  S:    Supported
  F:    Documentation/devicetree/bindings/net/broadcom-bcm87xx.txt
@@@ -4031,7 -3988,7 +4035,7 @@@ F:      include/linux/brcmphy.
  BROADCOM GENET ETHERNET DRIVER
  M:    Doug Berger <opendmb@gmail.com>
  M:    Florian Fainelli <f.fainelli@gmail.com>
 -L:    bcm-kernel-feedback-list@broadcom.com
 +R:    Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
  L:    netdev@vger.kernel.org
  S:    Supported
  F:    Documentation/devicetree/bindings/net/brcm,bcmgenet.yaml
@@@ -4045,7 -4002,7 +4049,7 @@@ F:      include/linux/platform_data/mdio-bcm
  BROADCOM IPROC ARM ARCHITECTURE
  M:    Ray Jui <rjui@broadcom.com>
  M:    Scott Branden <sbranden@broadcom.com>
 -M:    bcm-kernel-feedback-list@broadcom.com
 +R:    Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  T:    git git://github.com/broadcom/stblinux.git
@@@ -4073,7 -4030,7 +4077,7 @@@ N:      stingra
  
  BROADCOM IPROC GBIT ETHERNET DRIVER
  M:    Rafał Miłecki <rafal@milecki.pl>
 -M:    bcm-kernel-feedback-list@broadcom.com
 +R:    Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
  L:    netdev@vger.kernel.org
  S:    Maintained
  F:    Documentation/devicetree/bindings/net/brcm,amac.yaml
@@@ -4082,7 -4039,7 +4086,7 @@@ F:      drivers/net/ethernet/broadcom/unimac
  
  BROADCOM KONA GPIO DRIVER
  M:    Ray Jui <rjui@broadcom.com>
 -L:    bcm-kernel-feedback-list@broadcom.com
 +R:    Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
  S:    Supported
  F:    Documentation/devicetree/bindings/gpio/brcm,kona-gpio.txt
  F:    drivers/gpio/gpio-bcm-kona.c
@@@ -4115,7 -4072,7 +4119,7 @@@ F:      drivers/firmware/broadcom/
  BROADCOM PMB (POWER MANAGEMENT BUS) DRIVER
  M:    Rafał Miłecki <rafal@milecki.pl>
  M:    Florian Fainelli <f.fainelli@gmail.com>
 -M:    bcm-kernel-feedback-list@broadcom.com
 +R:    Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
  L:    linux-pm@vger.kernel.org
  S:    Maintained
  T:    git git://github.com/broadcom/stblinux.git
@@@ -4131,7 -4088,7 +4135,7 @@@ F:      include/linux/bcma
  
  BROADCOM SPI DRIVER
  M:    Kamal Dasu <kdasu.kdev@gmail.com>
 -M:    bcm-kernel-feedback-list@broadcom.com
 +R:    Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
  S:    Maintained
  F:    Documentation/devicetree/bindings/spi/brcm,spi-bcm-qspi.yaml
  F:    drivers/spi/spi-bcm-qspi.*
@@@ -4140,7 -4097,7 +4144,7 @@@ F:      drivers/spi/spi-iproc-qspi.
  
  BROADCOM STB AVS CPUFREQ DRIVER
  M:    Markus Mayer <mmayer@broadcom.com>
 -M:    bcm-kernel-feedback-list@broadcom.com
 +R:    Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
  L:    linux-pm@vger.kernel.org
  S:    Maintained
  F:    Documentation/devicetree/bindings/cpufreq/brcm,stb-avs-cpu-freq.txt
@@@ -4148,7 -4105,7 +4152,7 @@@ F:      drivers/cpufreq/brcmstb
  
  BROADCOM STB AVS TMON DRIVER
  M:    Markus Mayer <mmayer@broadcom.com>
 -M:    bcm-kernel-feedback-list@broadcom.com
 +R:    Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
  L:    linux-pm@vger.kernel.org
  S:    Maintained
  F:    Documentation/devicetree/bindings/thermal/brcm,avs-tmon.yaml
@@@ -4156,7 -4113,7 +4160,7 @@@ F:      drivers/thermal/broadcom/brcmstb
  
  BROADCOM STB DPFE DRIVER
  M:    Markus Mayer <mmayer@broadcom.com>
 -M:    bcm-kernel-feedback-list@broadcom.com
 +R:    Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  F:    Documentation/devicetree/bindings/memory-controllers/brcm,dpfe-cpu.yaml
@@@ -4165,8 -4122,8 +4169,8 @@@ F:      drivers/memory/brcmstb_dpfe.
  BROADCOM STB NAND FLASH DRIVER
  M:    Brian Norris <computersforpeace@gmail.com>
  M:    Kamal Dasu <kdasu.kdev@gmail.com>
 +R:    Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
  L:    linux-mtd@lists.infradead.org
 -L:    bcm-kernel-feedback-list@broadcom.com
  S:    Maintained
  F:    drivers/mtd/nand/raw/brcmnand/
  F:    include/linux/platform_data/brcmnand.h
@@@ -4175,7 -4132,7 +4179,7 @@@ BROADCOM STB PCIE DRIVE
  M:    Jim Quinlan <jim2101024@gmail.com>
  M:    Nicolas Saenz Julienne <nsaenz@kernel.org>
  M:    Florian Fainelli <f.fainelli@gmail.com>
 -M:    bcm-kernel-feedback-list@broadcom.com
 +R:    Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
  L:    linux-pci@vger.kernel.org
  S:    Maintained
  F:    Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml
@@@ -4183,7 -4140,7 +4187,7 @@@ F:      drivers/pci/controller/pcie-brcmstb.
  
  BROADCOM SYSTEMPORT ETHERNET DRIVER
  M:    Florian Fainelli <f.fainelli@gmail.com>
 -L:    bcm-kernel-feedback-list@broadcom.com
 +R:    Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
  L:    netdev@vger.kernel.org
  S:    Supported
  F:    drivers/net/ethernet/broadcom/bcmsysport.*
@@@ -4200,7 -4157,7 +4204,7 @@@ F:      drivers/net/ethernet/broadcom/tg3.
  
  BROADCOM VK DRIVER
  M:    Scott Branden <scott.branden@broadcom.com>
 -L:    bcm-kernel-feedback-list@broadcom.com
 +R:    Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
  S:    Supported
  F:    drivers/misc/bcm-vk/
  F:    include/uapi/linux/misc/bcm_vk.h
@@@ -4418,6 -4375,7 +4422,6 @@@ F:      drivers/net/can
  F:    drivers/phy/phy-can-transceiver.c
  F:    include/linux/can/bittiming.h
  F:    include/linux/can/dev.h
 -F:    include/linux/can/led.h
  F:    include/linux/can/length.h
  F:    include/linux/can/platform/
  F:    include/linux/can/rx-offload.h
@@@ -4588,8 -4546,8 +4592,8 @@@ F:      drivers/power/supply/cw2015_battery.
  
  CEPH COMMON CODE (LIBCEPH)
  M:    Ilya Dryomov <idryomov@gmail.com>
 -M:    Jeff Layton <jlayton@kernel.org>
  M:    Xiubo Li <xiubli@redhat.com>
 +R:    Jeff Layton <jlayton@kernel.org>
  L:    ceph-devel@vger.kernel.org
  S:    Supported
  W:    http://ceph.com/
@@@ -4599,9 -4557,9 +4603,9 @@@ F:      include/linux/crush
  F:    net/ceph/
  
  CEPH DISTRIBUTED FILE SYSTEM CLIENT (CEPH)
 -M:    Jeff Layton <jlayton@kernel.org>
  M:    Xiubo Li <xiubli@redhat.com>
  M:    Ilya Dryomov <idryomov@gmail.com>
 +R:    Jeff Layton <jlayton@kernel.org>
  L:    ceph-devel@vger.kernel.org
  S:    Supported
  W:    http://ceph.com/
@@@ -4616,9 -4574,7 +4620,9 @@@ L:      keyrings@vger.kernel.or
  S:    Maintained
  F:    Documentation/admin-guide/module-signing.rst
  F:    certs/
 +F:    scripts/check-blacklist-hashes.awk
  F:    scripts/sign-file.c
 +F:    tools/certs/
  
  CFAG12864B LCD DRIVER
  M:    Miguel Ojeda <ojeda@kernel.org>
@@@ -4663,7 -4619,6 +4667,7 @@@ F:      Documentation/dev-tools/checkpatch.r
  
  CHINESE DOCUMENTATION
  M:    Alex Shi <alexs@kernel.org>
 +M:    Yanteng Si <siyanteng@loongson.cn>
  S:    Maintained
  F:    Documentation/translations/zh_CN/
  
@@@ -4737,12 -4692,10 +4741,12 @@@ CIRRUS LOGIC AUDIO CODEC DRIVER
  M:    James Schulman <james.schulman@cirrus.com>
  M:    David Rhodes <david.rhodes@cirrus.com>
  M:    Lucas Tanure <tanureal@opensource.cirrus.com>
 +M:    Richard Fitzgerald <rf@opensource.cirrus.com>
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
  L:    patches@opensource.cirrus.com
  S:    Maintained
  F:    Documentation/devicetree/bindings/sound/cirrus,cs*
 +F:    include/dt-bindings/sound/cs*
  F:    sound/pci/hda/cs*
  F:    sound/soc/codecs/cs*
  
@@@ -5043,7 -4996,6 +5047,7 @@@ F:      Documentation/admin-guide/cgroup-v1
  F:    Documentation/admin-guide/cgroup-v2.rst
  F:    include/linux/cgroup*
  F:    kernel/cgroup/
 +F:    tools/testing/selftests/cgroup/
  
  CONTROL GROUP - BLOCK IO CONTROLLER (BLKIO)
  M:    Tejun Heo <tj@kernel.org>
@@@ -5072,15 -5024,11 +5076,15 @@@ M:   Johannes Weiner <hannes@cmpxchg.org
  M:    Michal Hocko <mhocko@kernel.org>
  M:    Roman Gushchin <roman.gushchin@linux.dev>
  M:    Shakeel Butt <shakeelb@google.com>
 +R:    Muchun Song <songmuchun@bytedance.com>
  L:    cgroups@vger.kernel.org
  L:    linux-mm@kvack.org
  S:    Maintained
  F:    mm/memcontrol.c
  F:    mm/swap_cgroup.c
 +F:    tools/testing/selftests/cgroup/memcg_protection.m
 +F:    tools/testing/selftests/cgroup/test_kmem.c
 +F:    tools/testing/selftests/cgroup/test_memcontrol.c
  
  CORETEMP HARDWARE MONITORING DRIVER
  M:    Fenghua Yu <fenghua.yu@intel.com>
@@@ -5102,6 -5050,12 +5106,6 @@@ S:     Maintaine
  F:    Documentation/hwmon/corsair-psu.rst
  F:    drivers/hwmon/corsair-psu.c
  
 -COSA/SRP SYNC SERIAL DRIVER
 -M:    Jan "Yenya" Kasprzak <kas@fi.muni.cz>
 -S:    Maintained
 -W:    http://www.fi.muni.cz/~kas/cosa/
 -F:    drivers/net/wan/cosa*
 -
  COUNTER SUBSYSTEM
  M:    William Breathitt Gray <vilhelm.gray@gmail.com>
  L:    linux-iio@vger.kernel.org
@@@ -5178,7 -5132,7 +5182,7 @@@ F:      arch/x86/kernel/cpuid.
  F:    arch/x86/kernel/msr.c
  
  CPUIDLE DRIVER - ARM BIG LITTLE
 -M:    Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
 +M:    Lorenzo Pieralisi <lpieralisi@kernel.org>
  M:    Daniel Lezcano <daniel.lezcano@linaro.org>
  L:    linux-pm@vger.kernel.org
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@@ -5198,7 -5152,7 +5202,7 @@@ F:      drivers/cpuidle/cpuidle-exynos.
  F:    include/linux/platform_data/cpuidle-exynos.h
  
  CPUIDLE DRIVER - ARM PSCI
 -M:    Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
 +M:    Lorenzo Pieralisi <lpieralisi@kernel.org>
  M:    Sudeep Holla <sudeep.holla@arm.com>
  L:    linux-pm@vger.kernel.org
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@@ -5283,14 -5237,6 +5287,14 @@@ T:    git git://linuxtv.org/media_tree.gi
  F:    Documentation/devicetree/bindings/media/allwinner,sun6i-a31-csi.yaml
  F:    drivers/media/platform/sunxi/sun6i-csi/
  
 +CTU CAN FD DRIVER
 +M:    Pavel Pisa <pisa@cmp.felk.cvut.cz>
 +M:    Ondrej Ille <ondrej.ille@gmail.com>
 +L:    linux-can@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/net/can/ctu,ctucanfd.yaml
 +F:    drivers/net/can/ctucanfd/
 +
  CW1200 WLAN driver
  M:    Solomon Peachy <pizza@shaftnet.org>
  S:    Maintained
@@@ -5493,7 -5439,6 +5497,7 @@@ F:      net/ax25/sysctl_net_ax25.
  
  DATA ACCESS MONITOR
  M:    SeongJae Park <sj@kernel.org>
 +L:    damon@lists.linux.dev
  L:    linux-mm@kvack.org
  S:    Maintained
  F:    Documentation/ABI/testing/sysfs-kernel-mm-damon
@@@ -5972,7 -5917,7 +5976,7 @@@ R:      Benjamin Gaignard <benjamin.gaignard
  R:    Liam Mark <lmark@codeaurora.org>
  R:    Laura Abbott <labbott@redhat.com>
  R:    Brian Starkey <Brian.Starkey@arm.com>
 -R:    John Stultz <john.stultz@linaro.org>
 +R:    John Stultz <jstultz@google.com>
  L:    linux-media@vger.kernel.org
  L:    dri-devel@lists.freedesktop.org
  L:    linaro-mm-sig@lists.linaro.org (moderated for non-subscribers)
@@@ -6047,12 -5992,6 +6051,12 @@@ L:    linux-doc@vger.kernel.or
  S:    Maintained
  F:    Documentation/translations/it_IT
  
 +DOCUMENTATION/JAPANESE
 +R:    Akira Yokosawa <akiyks@gmail.com>
 +L:    linux-doc@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/translations/ja_JP
 +
  DONGWOON DW9714 LENS VOICE COIL DRIVER
  M:    Sakari Ailus <sakari.ailus@linux.intel.com>
  L:    linux-media@vger.kernel.org
@@@ -6319,9 -6258,8 +6323,9 @@@ F:      drivers/gpu/drm/tiny/panel-mipi-dbi.
  
  DRM DRIVER FOR MSM ADRENO GPU
  M:    Rob Clark <robdclark@gmail.com>
 -M:    Sean Paul <sean@poorly.run>
 -R:    Abhinav Kumar <quic_abhinavk@quicinc.com>
 +M:    Abhinav Kumar <quic_abhinavk@quicinc.com>
 +M:    Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
 +R:    Sean Paul <sean@poorly.run>
  L:    linux-arm-msm@vger.kernel.org
  L:    dri-devel@lists.freedesktop.org
  L:    freedreno@lists.freedesktop.org
@@@ -6374,11 -6312,6 +6378,11 @@@ S:    Maintaine
  F:    Documentation/devicetree/bindings/display/panel/olimex,lcd-olinuxino.yaml
  F:    drivers/gpu/drm/panel/panel-olimex-lcd-olinuxino.c
  
 +DRM DRIVER FOR PARADE PS8640 BRIDGE CHIP
 +R:    Douglas Anderson <dianders@chromium.org>
 +F:    Documentation/devicetree/bindings/display/bridge/ps8640.yaml
 +F:    drivers/gpu/drm/bridge/parade-ps8640.c
 +
  DRM DRIVER FOR PERVASIVE DISPLAYS REPAPER PANELS
  M:    Noralf Trønnes <noralf@tronnes.org>
  S:    Maintained
@@@ -6492,11 -6425,6 +6496,11 @@@ DRM DRIVER FOR TDFX VIDEO CARD
  S:    Orphan / Obsolete
  F:    drivers/gpu/drm/tdfx/
  
 +DRM DRIVER FOR TI SN65DSI86 BRIDGE CHIP
 +R:    Douglas Anderson <dianders@chromium.org>
 +F:    Documentation/devicetree/bindings/display/bridge/ti,sn65dsi86.yaml
 +F:    drivers/gpu/drm/bridge/ti-sn65dsi86.c
 +
  DRM DRIVER FOR TPO TPG110 PANELS
  M:    Linus Walleij <linus.walleij@linaro.org>
  S:    Maintained
@@@ -6616,7 -6544,6 +6620,7 @@@ R:      Jonas Karlman <jonas@kwiboo.se
  R:    Jernej Skrabec <jernej.skrabec@gmail.com>
  S:    Maintained
  T:    git git://anongit.freedesktop.org/drm/drm-misc
 +F:    Documentation/devicetree/bindings/display/bridge/
  F:    drivers/gpu/drm/bridge/
  
  DRM DRIVERS FOR EXYNOS
@@@ -6660,7 -6587,7 +6664,7 @@@ F:      drivers/gpu/drm/gma500
  DRM DRIVERS FOR HISILICON
  M:    Xinliang Liu <xinliang.liu@linaro.org>
  M:    Tian Tao  <tiantao6@hisilicon.com>
 -R:    John Stultz <john.stultz@linaro.org>
 +R:    John Stultz <jstultz@google.com>
  R:    Xinwei Kong <kong.kongxinwei@hisilicon.com>
  R:    Chen Feng <puck.chen@hisilicon.com>
  L:    dri-devel@lists.freedesktop.org
@@@ -7456,6 -7383,7 +7460,6 @@@ L:      linux-mm@kvack.or
  S:    Supported
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git for-next/execve
  F:    arch/alpha/kernel/binfmt_loader.c
 -F:    arch/x86/ia32/ia32_aout.c
  F:    fs/*binfmt_*.c
  F:    fs/exec.c
  F:    include/linux/binfmts.h
@@@ -7533,7 -7461,6 +7537,7 @@@ S:      Maintaine
  F:    Documentation/admin-guide/bootconfig.rst
  F:    fs/proc/bootconfig.c
  F:    include/linux/bootconfig.h
 +F:    lib/bootconfig-data.S
  F:    lib/bootconfig.c
  F:    tools/bootconfig/*
  F:    tools/bootconfig/scripts/*
@@@ -7572,7 -7499,7 +7576,7 @@@ F:      Documentation/hwmon/f71805f.rs
  F:    drivers/hwmon/f71805f.c
  
  FADDR2LINE
 -M:    Josh Poimboeuf <jpoimboe@redhat.com>
 +M:    Josh Poimboeuf <jpoimboe@kernel.org>
  S:    Maintained
  F:    scripts/faddr2line
  
@@@ -7727,7 -7654,6 +7731,7 @@@ F:      include/linux/arm_ffa.
  
  FIRMWARE LOADER (request_firmware)
  M:    Luis Chamberlain <mcgrof@kernel.org>
 +M:    Russ Weight <russell.h.weight@intel.com>
  L:    linux-kernel@vger.kernel.org
  S:    Maintained
  F:    Documentation/firmware_class/
@@@ -7796,7 -7722,7 +7800,7 @@@ R:      Tom Rix <trix@redhat.com
  L:    linux-fpga@vger.kernel.org
  S:    Maintained
  Q:    http://patchwork.kernel.org/project/linux-fpga/list/
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mdf/linux-fpga.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/fpga/linux-fpga.git
  F:    Documentation/devicetree/bindings/fpga/
  F:    Documentation/driver-api/fpga/
  F:    Documentation/fpga/
@@@ -8186,7 -8112,7 +8190,7 @@@ M:      Ingo Molnar <mingo@redhat.com
  R:    Peter Zijlstra <peterz@infradead.org>
  R:    Darren Hart <dvhart@infradead.org>
  R:    Davidlohr Bueso <dave@stgolabs.net>
 -R:    André Almeida <andrealmeid@collabora.com>
 +R:    André Almeida <andrealmeid@igalia.com>
  L:    linux-kernel@vger.kernel.org
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git locking/core
@@@ -8422,7 -8348,7 +8426,7 @@@ M:      Mika Westerberg <mika.westerberg@lin
  M:    Andy Shevchenko <andriy.shevchenko@linux.intel.com>
  L:    linux-gpio@vger.kernel.org
  L:    linux-acpi@vger.kernel.org
 -S:    Maintained
 +S:    Supported
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/andy/linux-gpio-intel.git
  F:    Documentation/firmware-guide/acpi/gpio-properties.rst
  F:    drivers/gpio/gpiolib-acpi.c
@@@ -8459,7 -8385,7 +8463,7 @@@ M:      Linus Walleij <linus.walleij@linaro.
  M:    Bartosz Golaszewski <brgl@bgdev.pl>
  L:    linux-gpio@vger.kernel.org
  S:    Maintained
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux.git
  F:    Documentation/ABI/obsolete/sysfs-gpio
  F:    Documentation/ABI/testing/gpio-cdev
  F:    Documentation/admin-guide/gpio/
@@@ -8630,6 -8556,17 +8634,6 @@@ L:     linux-efi@vger.kernel.or
  S:    Maintained
  F:    block/partitions/efi.*
  
 -H8/300 ARCHITECTURE
 -M:    Yoshinori Sato <ysato@users.sourceforge.jp>
 -L:    uclinux-h8-devel@lists.sourceforge.jp (moderated for non-subscribers)
 -S:    Maintained
 -W:    http://uclinux-h8.sourceforge.jp
 -T:    git git://git.sourceforge.jp/gitroot/uclinux-h8/linux.git
 -F:    arch/h8300/
 -F:    drivers/clk/h8300/
 -F:    drivers/clocksource/h8300_*.c
 -F:    drivers/irqchip/irq-renesas-h8*.c
 -
  HABANALABS PCI DRIVER
  M:    Oded Gabbay <ogabbay@kernel.org>
  S:    Supported
@@@ -8815,14 -8752,6 +8819,14 @@@ F:    drivers/hid/hid-sensor-
  F:    drivers/iio/*/hid-*
  F:    include/linux/hid-sensor-*
  
 +HID WACOM DRIVER
 +M:    Ping Cheng <ping.cheng@wacom.com>
 +M:    Jason Gerecke  <jason.gerecke@wacom.com>
 +L:    linux-input@vger.kernel.org
 +S:    Maintained
 +F:    drivers/hid/wacom.h
 +F:    drivers/hid/wacom_*
 +
  HIGH-RESOLUTION TIMERS, CLOCKEVENTS
  M:    Thomas Gleixner <tglx@linutronix.de>
  L:    linux-kernel@vger.kernel.org
@@@ -8838,6 -8767,7 +8842,6 @@@ F:      kernel/time/timer_*.
  HIGH-SPEED SCC DRIVER FOR AX.25
  L:    linux-hams@vger.kernel.org
  S:    Orphan
 -F:    drivers/net/hamradio/dmascc.c
  F:    drivers/net/hamradio/scc.c
  
  HIGHPOINT ROCKETRAID 3xxx RAID DRIVER
@@@ -8918,7 -8848,7 +8922,7 @@@ F:      Documentation/devicetree/bindings/ne
  F:    drivers/net/ethernet/hisilicon/
  
  HIKEY960 ONBOARD USB GPIO HUB DRIVER
 -M:    John Stultz <john.stultz@linaro.org>
 +M:    John Stultz <jstultz@google.com>
  L:    linux-kernel@vger.kernel.org
  S:    Maintained
  F:    drivers/misc/hisi_hikey_usb.c
@@@ -9074,7 -9004,7 +9078,7 @@@ S:      Maintaine
  F:    drivers/input/touchscreen/htcpen.c
  
  HTS221 TEMPERATURE-HUMIDITY IIO DRIVER
 -M:    Lorenzo Bianconi <lorenzo.bianconi83@gmail.com>
 +M:    Lorenzo Bianconi <lorenzo@kernel.org>
  L:    linux-iio@vger.kernel.org
  S:    Maintained
  W:    http://www.st.com/
@@@ -9087,20 -9017,16 +9091,20 @@@ S:   Orpha
  F:    Documentation/networking/device_drivers/ethernet/huawei/hinic.rst
  F:    drivers/net/ethernet/huawei/hinic/
  
 -HUGETLB FILESYSTEM
 +HUGETLB SUBSYSTEM
  M:    Mike Kravetz <mike.kravetz@oracle.com>
 +M:    Muchun Song <songmuchun@bytedance.com>
  L:    linux-mm@kvack.org
  S:    Maintained
  F:    Documentation/ABI/testing/sysfs-kernel-mm-hugepages
  F:    Documentation/admin-guide/mm/hugetlbpage.rst
  F:    Documentation/vm/hugetlbfs_reserv.rst
 +F:    Documentation/vm/vmemmap_dedup.rst
  F:    fs/hugetlbfs/
  F:    include/linux/hugetlb.h
  F:    mm/hugetlb.c
 +F:    mm/hugetlb_vmemmap.c
 +F:    mm/hugetlb_vmemmap.h
  
  HVA ST MEDIA DRIVER
  M:    Jean-Christophe Trotin <jean-christophe.trotin@foss.st.com>
@@@ -9342,13 -9268,13 +9346,13 @@@ F:   drivers/i2c/i2c-stub.
  I3C DRIVER FOR CADENCE I3C MASTER IP
  M:    Przemysław Gaj <pgaj@cadence.com>
  S:    Maintained
 -F:    Documentation/devicetree/bindings/i3c/cdns,i3c-master.txt
 +F:    Documentation/devicetree/bindings/i3c/cdns,i3c-master.yaml
  F:    drivers/i3c/master/i3c-master-cdns.c
  
  I3C DRIVER FOR SYNOPSYS DESIGNWARE
  M:    Vitor Soares <vitor.soares@synopsys.com>
  S:    Maintained
 -F:    Documentation/devicetree/bindings/i3c/snps,dw-i3c-master.txt
 +F:    Documentation/devicetree/bindings/i3c/snps,dw-i3c-master.yaml
  F:    drivers/i3c/master/dw*
  
  I3C SUBSYSTEM
@@@ -9414,12 -9340,14 +9418,12 @@@ F:   drivers/pci/hotplug/rpaphp
  
  IBM Power SRIOV Virtual NIC Device Driver
  M:    Dany Madden <drt@linux.ibm.com>
 -M:    Sukadev Bhattiprolu <sukadev@linux.ibm.com>
  R:    Thomas Falcon <tlfalcon@linux.ibm.com>
  L:    netdev@vger.kernel.org
  S:    Supported
  F:    drivers/net/ethernet/ibm/ibmvnic.*
  
  IBM Power Virtual Accelerator Switchboard
 -M:    Sukadev Bhattiprolu <sukadev@linux.ibm.com>
  L:    linuxppc-dev@lists.ozlabs.org
  S:    Supported
  F:    arch/powerpc/include/asm/vas.h
@@@ -9887,7 -9815,7 +9891,7 @@@ F:      drivers/video/fbdev/intelfb
  INTEL GPIO DRIVERS
  M:    Andy Shevchenko <andy@kernel.org>
  L:    linux-gpio@vger.kernel.org
 -S:    Maintained
 +S:    Supported
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/andy/linux-gpio-intel.git
  F:    drivers/gpio/gpio-ich.c
  F:    drivers/gpio/gpio-merrifield.c
@@@ -9936,14 -9864,6 +9940,14 @@@ B:    https://bugzilla.kernel.or
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux.git
  F:    drivers/idle/intel_idle.c
  
 +INTEL IN FIELD SCAN (IFS) DEVICE
 +M:    Jithu Joseph <jithu.joseph@intel.com>
 +R:    Ashok Raj <ashok.raj@intel.com>
 +R:    Tony Luck <tony.luck@intel.com>
 +S:    Maintained
 +F:    drivers/platform/x86/intel/ifs
 +F:    include/trace/events/intel_ifs.h
 +
  INTEL INTEGRATED SENSOR HUB DRIVER
  M:    Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
  M:    Jiri Kosina <jikos@kernel.org>
@@@ -10069,7 -9989,6 +10073,7 @@@ S:    Supporte
  F:    Documentation/driver-api/mei/*
  F:    drivers/misc/mei/
  F:    drivers/watchdog/mei_wdt.c
 +F:    include/linux/mei_aux.h
  F:    include/linux/mei_cl_bus.h
  F:    include/uapi/linux/mei.h
  F:    samples/mei/*
@@@ -10108,7 -10027,7 +10112,7 @@@ F:   drivers/platform/x86/intel/pmc
  
  INTEL PMIC GPIO DRIVERS
  M:    Andy Shevchenko <andy@kernel.org>
 -S:    Maintained
 +S:    Supported
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/andy/linux-gpio-intel.git
  F:    drivers/gpio/gpio-*cove.c
  
@@@ -10214,7 -10133,7 +10218,7 @@@ S:   Supporte
  F:    drivers/net/wireless/intel/iwlegacy/
  
  INTEL WIRELESS WIFI LINK (iwlwifi)
 -M:    Luca Coelho <luciano.coelho@intel.com>
 +M:    Gregory Greenman <gregory.greenman@intel.com>
  L:    linux-wireless@vger.kernel.org
  S:    Supported
  W:    https://wireless.wiki.kernel.org/en/users/drivers/iwlwifi
@@@ -10323,6 -10242,8 +10327,6 @@@ F:   drivers/net/ethernet/sgi/ioc3-eth.
  IOMAP FILESYSTEM LIBRARY
  M:    Christoph Hellwig <hch@infradead.org>
  M:    Darrick J. Wong <djwong@kernel.org>
 -M:    linux-xfs@vger.kernel.org
 -M:    linux-fsdevel@vger.kernel.org
  L:    linux-xfs@vger.kernel.org
  L:    linux-fsdevel@vger.kernel.org
  S:    Supported
@@@ -10453,7 -10374,6 +10457,7 @@@ F:   include/linux/isapnp.
  ISCSI
  M:    Lee Duncan <lduncan@suse.com>
  M:    Chris Leech <cleech@redhat.com>
 +M:    Mike Christie <michael.christie@oracle.com>
  L:    open-iscsi@googlegroups.com
  L:    linux-scsi@vger.kernel.org
  S:    Maintained
@@@ -10631,7 -10551,6 +10635,7 @@@ M:   Andrey Ryabinin <ryabinin.a.a@gmail.
  R:    Alexander Potapenko <glider@google.com>
  R:    Andrey Konovalov <andreyknvl@gmail.com>
  R:    Dmitry Vyukov <dvyukov@google.com>
 +R:    Vincenzo Frascino <vincenzo.frascino@arm.com>
  L:    kasan-dev@googlegroups.com
  S:    Maintained
  F:    Documentation/dev-tools/kasan.rst
@@@ -10850,8 -10769,6 +10854,8 @@@ T:   git git://github.com/kvm-riscv/linux
  F:    arch/riscv/include/asm/kvm*
  F:    arch/riscv/include/uapi/asm/kvm*
  F:    arch/riscv/kvm/
 +F:    tools/testing/selftests/kvm/*/riscv/
 +F:    tools/testing/selftests/kvm/riscv/
  
  KERNEL VIRTUAL MACHINE for s390 (KVM/s390)
  M:    Christian Borntraeger <borntraeger@linux.ibm.com>
@@@ -10866,12 -10783,9 +10870,12 @@@ F: Documentation/virt/kvm/s390
  F:    arch/s390/include/asm/gmap.h
  F:    arch/s390/include/asm/kvm*
  F:    arch/s390/include/uapi/asm/kvm*
 +F:    arch/s390/include/uapi/asm/uvdevice.h
  F:    arch/s390/kernel/uv.c
  F:    arch/s390/kvm/
  F:    arch/s390/mm/gmap.c
 +F:    drivers/s390/char/uvdevice.c
 +F:    tools/testing/selftests/drivers/s390x/uvdevice/
  F:    tools/testing/selftests/kvm/*/s390x/
  F:    tools/testing/selftests/kvm/s390x/
  
@@@ -10944,15 -10858,6 +10948,15 @@@ S: Supporte
  F:    include/keys/trusted_tee.h
  F:    security/keys/trusted-keys/trusted_tee.c
  
 +KEYS-TRUSTED-CAAM
 +M:    Ahmad Fatoum <a.fatoum@pengutronix.de>
 +R:    Pengutronix Kernel Team <kernel@pengutronix.de>
 +L:    linux-integrity@vger.kernel.org
 +L:    keyrings@vger.kernel.org
 +S:    Maintained
 +F:    include/keys/trusted_caam.h
 +F:    security/keys/trusted-keys/trusted_caam.c
 +
  KEYS/KEYRINGS
  M:    David Howells <dhowells@redhat.com>
  M:    Jarkko Sakkinen <jarkko@kernel.org>
@@@ -11007,7 -10912,6 +11011,7 @@@ F:   drivers/tty/serial/kgdboc.
  F:    include/linux/kdb.h
  F:    include/linux/kgdb.h
  F:    kernel/debug/
 +F:    kernel/module/kdb.c
  
  KHADAS MCU MFD DRIVER
  M:    Neil Armstrong <narmstrong@baylibre.com>
@@@ -11446,7 -11350,7 +11450,7 @@@ F:   drivers/mmc/host/litex_mmc.
  N:    litex
  
  LIVE PATCHING
 -M:    Josh Poimboeuf <jpoimboe@redhat.com>
 +M:    Josh Poimboeuf <jpoimboe@kernel.org>
  M:    Jiri Kosina <jikos@kernel.org>
  M:    Miroslav Benes <mbenes@suse.cz>
  M:    Petr Mladek <pmladek@suse.com>
@@@ -11457,9 -11361,10 +11461,9 @@@ 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:    arch/s390/include/asm/livepatch.h
 -F:    arch/x86/include/asm/livepatch.h
  F:    include/linux/livepatch.h
  F:    kernel/livepatch/
 +F:    kernel/module/livepatch.c
  F:    lib/livepatch/
  F:    samples/livepatch/
  F:    tools/testing/selftests/livepatch/
@@@ -11565,16 -11470,6 +11569,16 @@@ S: Maintaine
  F:    Documentation/devicetree/bindings/display/bridge/lontium,lt8912b.yaml
  F:    drivers/gpu/drm/bridge/lontium-lt8912b.c
  
 +LOONGARCH
 +M:    Huacai Chen <chenhuacai@kernel.org>
 +R:    WANG Xuerui <kernel@xen0n.name>
 +S:    Maintained
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson.git
 +F:    arch/loongarch/
 +F:    drivers/*/*loongarch*
 +F:    Documentation/loongarch/
 +F:    Documentation/translations/zh_CN/loongarch/
 +
  LSILOGIC MPT FUSION DRIVERS (FC/SAS/SPI)
  M:    Sathya Prakash <sathya.prakash@broadcom.com>
  M:    Sreekanth Reddy <sreekanth.reddy@broadcom.com>
@@@ -11935,16 -11830,9 +11939,16 @@@ MARVELL XENON MMC/SD/SDIO HOST CONTROLL
  M:    Hu Ziji <huziji@marvell.com>
  L:    linux-mmc@vger.kernel.org
  S:    Supported
 -F:    Documentation/devicetree/bindings/mmc/marvell,xenon-sdhci.txt
 +F:    Documentation/devicetree/bindings/mmc/marvell,xenon-sdhci.yaml
  F:    drivers/mmc/host/sdhci-xenon*
  
 +MARVELL OCTEON ENDPOINT DRIVER
 +M:    Veerasenareddy Burru <vburru@marvell.com>
 +M:    Abhijit Ayarekar <aayarekar@marvell.com>
 +L:    netdev@vger.kernel.org
 +S:    Supported
 +F:    drivers/net/ethernet/marvell/octeon_ep
 +
  MATROX FRAMEBUFFER DRIVER
  L:    linux-fbdev@vger.kernel.org
  S:    Orphan
@@@ -12022,7 -11910,7 +12026,7 @@@ F:   drivers/iio/proximity/mb1232.
  
  MAXIM MAX17040 FAMILY FUEL GAUGE DRIVERS
  R:    Iskren Chernev <iskren.chernev@gmail.com>
 -R:    Krzysztof Kozlowski <krzk@kernel.org>
 +R:    Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
  R:    Marek Szyprowski <m.szyprowski@samsung.com>
  R:    Matheus Castello <matheus@castello.eng.br>
  L:    linux-pm@vger.kernel.org
@@@ -12032,7 -11920,7 +12036,7 @@@ F:   drivers/power/supply/max17040_batter
  
  MAXIM MAX17042 FAMILY FUEL GAUGE DRIVERS
  R:    Hans de Goede <hdegoede@redhat.com>
 -R:    Krzysztof Kozlowski <krzk@kernel.org>
 +R:    Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
  R:    Marek Szyprowski <m.szyprowski@samsung.com>
  R:    Sebastian Krzyszkowiak <sebastian.krzyszkowiak@puri.sm>
  R:    Purism Kernel Team <kernel@puri.sm>
@@@ -12084,11 -11972,10 +12088,11 @@@ F:        Documentation/devicetree/bindings/po
  F:    drivers/power/supply/max77976_charger.c
  
  MAXIM MUIC CHARGER DRIVERS FOR EXYNOS BASED BOARDS
 -M:    Krzysztof Kozlowski <krzk@kernel.org>
 +M:    Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
  M:    Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
  L:    linux-pm@vger.kernel.org
  S:    Supported
 +B:    mailto:linux-samsung-soc@vger.kernel.org
  F:    Documentation/devicetree/bindings/power/supply/maxim,max14577.yaml
  F:    Documentation/devicetree/bindings/power/supply/maxim,max77693.yaml
  F:    drivers/power/supply/max14577_charger.c
@@@ -12096,11 -11983,10 +12100,11 @@@ F:        drivers/power/supply/max77693_charge
  
  MAXIM PMIC AND MUIC DRIVERS FOR EXYNOS BASED BOARDS
  M:    Chanwoo Choi <cw00.choi@samsung.com>
 -M:    Krzysztof Kozlowski <krzk@kernel.org>
 +M:    Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
  M:    Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
  L:    linux-kernel@vger.kernel.org
  S:    Supported
 +B:    mailto:linux-samsung-soc@vger.kernel.org
  F:    Documentation/devicetree/bindings/*/maxim,max14577.yaml
  F:    Documentation/devicetree/bindings/*/maxim,max77686.yaml
  F:    Documentation/devicetree/bindings/*/maxim,max77693.yaml
@@@ -12270,7 -12156,7 +12274,7 @@@ T:   git git://linuxtv.org/media_tree.gi
  F:    Documentation/admin-guide/media/imx7.rst
  F:    Documentation/devicetree/bindings/media/nxp,imx-mipi-csi2.yaml
  F:    Documentation/devicetree/bindings/media/nxp,imx7-csi.yaml
 -F:    drivers/media/platform/imx/imx-mipi-csis.c
 +F:    drivers/media/platform/nxp/imx-mipi-csis.c
  F:    drivers/staging/media/imx/imx7-media-csi.c
  
  MEDIA DRIVERS FOR HELENE
@@@ -12325,7 -12211,7 +12329,7 @@@ L:   linux-media@vger.kernel.or
  L:    linux-tegra@vger.kernel.org
  S:    Maintained
  T:    git git://linuxtv.org/media_tree.git
 -F:    Documentation/devicetree/bindings/media/nvidia,tegra-vde.txt
 +F:    Documentation/devicetree/bindings/media/nvidia,tegra-vde.yaml
  F:    drivers/media/platform/nvidia/tegra-vde/
  
  MEDIA DRIVERS FOR RENESAS - CEU
@@@ -12475,7 -12361,7 +12479,7 @@@ MEDIATEK I2C CONTROLLER DRIVE
  M:    Qii Wang <qii.wang@mediatek.com>
  L:    linux-i2c@vger.kernel.org
  S:    Maintained
 -F:    Documentation/devicetree/bindings/i2c/i2c-mt65xx.txt
 +F:    Documentation/devicetree/bindings/i2c/i2c-mt65xx.yaml
  F:    drivers/i2c/busses/i2c-mt65xx.c
  
  MEDIATEK IOMMU DRIVER
@@@ -12488,9 -12374,10 +12492,9 @@@ F:  drivers/iommu/mtk_iommu
  F:    include/dt-bindings/memory/mt*-port.h
  
  MEDIATEK JPEG DRIVER
 -M:    Rick Chang <rick.chang@mediatek.com>
  M:    Bin Liu <bin.liu@mediatek.com>
  S:    Supported
 -F:    Documentation/devicetree/bindings/media/mediatek-jpeg-decoder.txt
 +F:    Documentation/devicetree/bindings/media/mediatek-jpeg-*.yaml
  F:    drivers/media/platform/mediatek/jpeg/
  
  MEDIATEK MDP DRIVER
@@@ -12506,7 -12393,7 +12510,7 @@@ MEDIATEK MEDIA DRIVE
  M:    Tiffany Lin <tiffany.lin@mediatek.com>
  M:    Andrew-CT Chen <andrew-ct.chen@mediatek.com>
  S:    Supported
 -F:    Documentation/devicetree/bindings/media/mediatek-vcodec.txt
 +F:    Documentation/devicetree/bindings/media/mediatek,vcodec*.yaml
  F:    Documentation/devicetree/bindings/media/mediatek-vpu.txt
  F:    drivers/media/platform/mediatek/vcodec/
  F:    drivers/media/platform/mediatek/vpu/
@@@ -12519,7 -12406,7 +12523,7 @@@ F:   drivers/mmc/host/mtk-sd.
  
  MEDIATEK MT76 WIRELESS LAN DRIVER
  M:    Felix Fietkau <nbd@nbd.name>
 -M:    Lorenzo Bianconi <lorenzo.bianconi83@gmail.com>
 +M:    Lorenzo Bianconi <lorenzo@kernel.org>
  M:    Ryder Lee <ryder.lee@mediatek.com>
  R:    Shayne Chen <shayne.chen@mediatek.com>
  R:    Sean Wang <sean.wang@mediatek.com>
@@@ -12593,17 -12480,6 +12597,17 @@@ S: Maintaine
  F:    drivers/net/dsa/mt7530.*
  F:    net/dsa/tag_mtk.c
  
 +MEDIATEK T7XX 5G WWAN MODEM DRIVER
 +M:    Chandrashekar Devegowda <chandrashekar.devegowda@intel.com>
 +M:    Intel Corporation <linuxwwan@intel.com>
 +R:    Chiranjeevi Rapolu <chiranjeevi.rapolu@linux.intel.com>
 +R:    Liu Haijun <haijun.liu@mediatek.com>
 +R:    M Chetan Kumar <m.chetan.kumar@linux.intel.com>
 +R:    Ricardo Martinez <ricardo.martinez@linux.intel.com>
 +L:    netdev@vger.kernel.org
 +S:    Supported
 +F:    drivers/net/wwan/t7xx/
 +
  MEDIATEK USB3 DRD IP DRIVER
  M:    Chunfeng Yun <chunfeng.yun@mediatek.com>
  L:    linux-usb@vger.kernel.org
@@@ -12801,10 -12677,9 +12805,10 @@@ F: mm/memblock.
  F:    tools/testing/memblock/
  
  MEMORY CONTROLLER DRIVERS
 -M:    Krzysztof Kozlowski <krzk@kernel.org>
 +M:    Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
  L:    linux-kernel@vger.kernel.org
  S:    Maintained
 +B:    mailto:krzysztof.kozlowski@linaro.org
  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/
@@@ -12923,7 -12798,7 +12927,7 @@@ F:   arch/arm64/boot/dts/marvell/armada-3
  
  MHI BUS
  M:    Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
 -R:    Hemant Kumar <hemantk@codeaurora.org>
 +R:    Hemant Kumar <quic_hemantk@quicinc.com>
  L:    mhi@lists.linux.dev
  L:    linux-arm-msm@vger.kernel.org
  S:    Maintained
@@@ -13033,13 -12908,6 +13037,13 @@@ F: drivers/net/dsa/microchip/
  F:    include/linux/platform_data/microchip-ksz.h
  F:    net/dsa/tag_ksz.c
  
 +MICROCHIP LAN87xx/LAN937x T1 PHY DRIVER
 +M:    Arun Ramadoss <arun.ramadoss@microchip.com>
 +R:    UNGLinuxDriver@microchip.com
 +L:    netdev@vger.kernel.org
 +S:    Maintained
 +F:    drivers/net/phy/microchip_t1.c
 +
  MICROCHIP LAN743X ETHERNET DRIVER
  M:    Bryan Whitehead <bryan.whitehead@microchip.com>
  M:    UNGLinuxDriver@microchip.com
@@@ -13093,7 -12961,7 +13097,7 @@@ M:   Claudiu Beznea <claudiu.beznea@micro
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  L:    linux-pwm@vger.kernel.org
  S:    Supported
 -F:    Documentation/devicetree/bindings/pwm/atmel-pwm.txt
 +F:    Documentation/devicetree/bindings/pwm/atmel,at91sam-pwm.yaml
  F:    drivers/pwm/pwm-atmel.c
  
  MICROCHIP SAMA5D2-COMPATIBLE ADC DRIVER
@@@ -13401,7 -13269,7 +13405,7 @@@ L:   linux-kernel@vger.kernel.or
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/linux.git modules-next
  F:    include/linux/module.h
 -F:    kernel/module.c
 +F:    kernel/module/
  
  MONOLITHIC POWER SYSTEM PMIC DRIVER
  M:    Saravanan Sekar <sravanhome@gmail.com>
@@@ -13432,7 -13300,7 +13436,7 @@@ F:   drivers/net/phy/motorcomm.
  MOXA SMARTIO/INDUSTIO/INTELLIO SERIAL CARD
  M:    Jiri Slaby <jirislaby@kernel.org>
  S:    Maintained
 -F:    Documentation/driver-api/serial/moxa-smartio.rst
 +F:    Documentation/driver-api/tty/moxa-smartio.rst
  F:    drivers/tty/mxser.*
  
  MR800 AVERMEDIA USB FM RADIO DRIVER
@@@ -13665,21 -13533,12 +13669,21 @@@ M:        Samuel Mendoza-Jonas <sam@mendozajon
  S:    Maintained
  F:    net/ncsi/
  
 -NCT6775 HARDWARE MONITOR DRIVER
 +NCT6775 HARDWARE MONITOR DRIVER - CORE & PLATFORM DRIVER
  M:    Guenter Roeck <linux@roeck-us.net>
  L:    linux-hwmon@vger.kernel.org
  S:    Maintained
  F:    Documentation/hwmon/nct6775.rst
 -F:    drivers/hwmon/nct6775.c
 +F:    drivers/hwmon/nct6775-core.c
 +F:    drivers/hwmon/nct6775-platform.c
 +F:    drivers/hwmon/nct6775.h
 +
 +NCT6775 HARDWARE MONITOR DRIVER - I2C DRIVER
 +M:    Zev Weiss <zev@bewilderbeest.net>
 +L:    linux-hwmon@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/hwmon/nuvoton,nct6775.yaml
 +F:    drivers/hwmon/nct6775-i2c.c
  
  NETDEVSIM
  M:    Jakub Kicinski <kuba@kernel.org>
@@@ -13769,7 -13628,6 +13773,7 @@@ F:   net/core/drop_monitor.
  
  NETWORKING DRIVERS
  M:    "David S. Miller" <davem@davemloft.net>
 +M:    Eric Dumazet <edumazet@google.com>
  M:    Jakub Kicinski <kuba@kernel.org>
  M:    Paolo Abeni <pabeni@redhat.com>
  L:    netdev@vger.kernel.org
@@@ -13817,7 -13675,6 +13821,7 @@@ F:   tools/testing/selftests/drivers/net/
  
  NETWORKING [GENERAL]
  M:    "David S. Miller" <davem@davemloft.net>
 +M:    Eric Dumazet <edumazet@google.com>
  M:    Jakub Kicinski <kuba@kernel.org>
  M:    Paolo Abeni <pabeni@redhat.com>
  L:    netdev@vger.kernel.org
@@@ -13912,7 -13769,6 +13916,7 @@@ F:   include/net/mptcp.
  F:    include/trace/events/mptcp.h
  F:    include/uapi/linux/mptcp.h
  F:    net/mptcp/
 +F:    tools/testing/selftests/bpf/*/*mptcp*.c
  F:    tools/testing/selftests/net/mptcp/
  
  NETWORKING [TCP]
@@@ -13965,11 -13821,10 +13969,11 @@@ F:        include/uapi/linux/nexthop.
  F:    net/ipv4/nexthop.c
  
  NFC SUBSYSTEM
 -M:    Krzysztof Kozlowski <krzk@kernel.org>
 +M:    Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
  L:    linux-nfc@lists.01.org (subscribers-only)
  L:    netdev@vger.kernel.org
  S:    Maintained
 +B:    mailto:linux-nfc@lists.01.org
  F:    Documentation/devicetree/bindings/net/nfc/
  F:    drivers/nfc/
  F:    include/linux/platform_data/nfcmrvl.h
@@@ -14283,7 -14138,7 +14287,7 @@@ F:   Documentation/devicetree/bindings/re
  F:    drivers/regulator/pf8x00-regulator.c
  
  NXP PTN5150A CC LOGIC AND EXTCON DRIVER
 -M:    Krzysztof Kozlowski <krzk@kernel.org>
 +M:    Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
  L:    linux-kernel@vger.kernel.org
  S:    Maintained
  F:    Documentation/devicetree/bindings/extcon/extcon-ptn5150.yaml
@@@ -14340,7 -14195,7 +14344,7 @@@ R:   NXP Linux Team <linux-imx@nxp.com
  L:    linux-media@vger.kernel.org
  S:    Maintained
  F:    Documentation/devicetree/bindings/media/nxp,imx8-jpeg.yaml
 -F:    drivers/media/platform/imx-jpeg
 +F:    drivers/media/platform/nxp/imx-jpeg
  
  NZXT-KRAKEN2 HARDWARE MONITORING DRIVER
  M:    Jonas Malaco <jonas@protocubo.io>
@@@ -14365,7 -14220,7 +14369,7 @@@ F:   lib/objagg.
  F:    lib/test_objagg.c
  
  OBJTOOL
 -M:    Josh Poimboeuf <jpoimboe@redhat.com>
 +M:    Josh Poimboeuf <jpoimboe@kernel.org>
  M:    Peter Zijlstra <peterz@infradead.org>
  S:    Supported
  F:    tools/objtool/
@@@ -14513,6 -14368,7 +14517,6 @@@ F:   arch/arm/*omap*/*pm
  F:    drivers/cpufreq/omap-cpufreq.c
  
  OMAP POWERDOMAIN SOC ADAPTATION LAYER SUPPORT
 -M:    Rajendra Nayak <rnayak@codeaurora.org>
  M:    Paul Walmsley <paul@pwsan.com>
  L:    linux-omap@vger.kernel.org
  S:    Maintained
@@@ -14538,7 -14394,6 +14542,7 @@@ F:   arch/arm/boot/dts/am335x-nano.dt
  
  OMAP1 SUPPORT
  M:    Aaro Koskinen <aaro.koskinen@iki.fi>
 +M:    Janusz Krzysztofik <jmkrzyszt@gmail.com>
  M:    Tony Lindgren <tony@atomide.com>
  L:    linux-omap@vger.kernel.org
  S:    Maintained
@@@ -14836,7 -14691,7 +14840,7 @@@ F:   scripts/dtc
  
  OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS
  M:    Rob Herring <robh+dt@kernel.org>
 -M:    Krzysztof Kozlowski <krzk+dt@kernel.org>
 +M:    Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>
  L:    devicetree@vger.kernel.org
  S:    Maintained
  C:    irc://irc.libera.chat/devicetree
@@@ -14974,19 -14829,6 +14978,19 @@@ F: Documentation/core-api/padata.rs
  F:    include/linux/padata.h
  F:    kernel/padata.c
  
 +PAGE CACHE
 +M:    Matthew Wilcox (Oracle) <willy@infradead.org>
 +L:    linux-fsdevel@vger.kernel.org
 +S:    Supported
 +T:    git git://git.infradead.org/users/willy/pagecache.git
 +F:    Documentation/filesystems/locking.rst
 +F:    Documentation/filesystems/vfs.rst
 +F:    include/linux/pagemap.h
 +F:    mm/filemap.c
 +F:    mm/page-writeback.c
 +F:    mm/readahead.c
 +F:    mm/truncate.c
 +
  PAGE POOL
  M:    Jesper Dangaard Brouer <hawk@kernel.org>
  M:    Ilias Apalodimas <ilias.apalodimas@linaro.org>
@@@ -15315,7 -15157,7 +15319,7 @@@ F:   drivers/pci/controller/pci-v3-semi.
  
  PCI ENDPOINT SUBSYSTEM
  M:    Kishon Vijay Abraham I <kishon@ti.com>
 -M:    Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
 +M:    Lorenzo Pieralisi <lpieralisi@kernel.org>
  R:    Krzysztof Wilczyński <kw@linux.com>
  L:    linux-pci@vger.kernel.org
  S:    Supported
@@@ -15378,7 -15220,7 +15382,7 @@@ F:   Documentation/devicetree/bindings/pc
  F:    drivers/pci/controller/pci-xgene-msi.c
  
  PCI NATIVE HOST BRIDGE AND ENDPOINT DRIVERS
 -M:    Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
 +M:    Lorenzo Pieralisi <lpieralisi@kernel.org>
  R:    Rob Herring <robh@kernel.org>
  R:    Krzysztof Wilczyński <kw@linux.com>
  L:    linux-pci@vger.kernel.org
@@@ -15519,7 -15361,7 +15523,7 @@@ PCIE DRIVER FOR SOCIONEXT UNIPHIE
  M:    Kunihiko Hayashi <hayashi.kunihiko@socionext.com>
  L:    linux-pci@vger.kernel.org
  S:    Maintained
 -F:    Documentation/devicetree/bindings/pci/uniphier-pcie*
 +F:    Documentation/devicetree/bindings/pci/socionext,uniphier-pcie*
  F:    drivers/pci/controller/dwc/pcie-uniphier*
  
  PCIE DRIVER FOR ST SPEAR13XX
@@@ -15629,8 -15471,7 +15633,8 @@@ F:   tools/perf
  PERFORMANCE EVENTS TOOLING ARM64
  R:    John Garry <john.garry@huawei.com>
  R:    Will Deacon <will@kernel.org>
 -R:    Mathieu Poirier <mathieu.poirier@linaro.org>
 +R:    James Clark <james.clark@arm.com>
 +R:    Mike Leach <mike.leach@linaro.org>
  R:    Leo Yan <leo.yan@linaro.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Supported
@@@ -15762,7 -15603,7 +15766,7 @@@ F:   drivers/pinctrl/renesas
  
  PIN CONTROLLER - SAMSUNG
  M:    Tomasz Figa <tomasz.figa@gmail.com>
 -M:    Krzysztof Kozlowski <krzk@kernel.org>
 +M:    Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
  M:    Sylwester Nawrocki <s.nawrocki@samsung.com>
  R:    Alim Akhtar <alim.akhtar@samsung.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@@ -15770,7 -15611,6 +15774,7 @@@ L:   linux-samsung-soc@vger.kernel.or
  S:    Maintained
  C:    irc://irc.libera.chat/linux-exynos
  Q:    https://patchwork.kernel.org/project/linux-samsung-soc/list/
 +B:    mailto:linux-samsung-soc@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/pinctrl/samsung.git
  F:    Documentation/devicetree/bindings/pinctrl/samsung,pinctrl*yaml
  F:    drivers/pinctrl/samsung/
@@@ -15931,7 -15771,7 +15935,7 @@@ F:   include/linux/dtpm.
  
  POWER STATE COORDINATION INTERFACE (PSCI)
  M:    Mark Rutland <mark.rutland@arm.com>
 -M:    Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
 +M:    Lorenzo Pieralisi <lpieralisi@kernel.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  F:    drivers/firmware/psci/
@@@ -16019,9 -15859,7 +16023,9 @@@ F:   kernel/printk
  PRINTK INDEXING
  R:    Chris Down <chris@chrisdown.name>
  S:    Maintained
 +F:    Documentation/core-api/printk-index.rst
  F:    kernel/printk/index.c
 +K:    printk_index
  
  PROC FILESYSTEM
  L:    linux-kernel@vger.kernel.org
@@@ -16125,6 -15963,7 +16129,6 @@@ F:   include/asm-generic/syscall.
  F:    include/linux/ptrace.h
  F:    include/linux/regset.h
  F:    include/uapi/linux/ptrace.h
 -F:    include/uapi/linux/ptrace.h
  F:    kernel/ptrace.c
  
  PULSE8-CEC DRIVER
@@@ -16135,12 -15974,6 +16139,12 @@@ T: git git://linuxtv.org/media_tree.gi
  F:    Documentation/admin-guide/media/pulse8-cec.rst
  F:    drivers/media/cec/usb/pulse8/
  
 +PURELIFI PLFXLC DRIVER
 +M:    Srinivasan Raju <srini.raju@purelifi.com>
 +L:    linux-wireless@vger.kernel.org
 +S:    Supported
 +F:    drivers/net/wireless/purelifi/plfxlc/
 +
  PVRUSB2 VIDEO4LINUX DRIVER
  M:    Mike Isely <isely@pobox.com>
  L:    pvrusb2@isely.net       (subscribers-only)
@@@ -16608,7 -16441,6 +16612,7 @@@ S:   Supporte
  T:    git https://gitlab.freedesktop.org/agd5f/linux.git
  B:    https://gitlab.freedesktop.org/drm/amd/-/issues
  C:    irc://irc.oftc.net/radeon
 +F:    Documentation/gpu/amdgpu/
  F:    drivers/gpu/drm/amd/
  F:    drivers/gpu/drm/radeon/
  F:    include/uapi/drm/amdgpu_drm.h
@@@ -16673,13 -16505,6 +16677,13 @@@ L: linux-mips@vger.kernel.or
  S:    Maintained
  F:    arch/mips/boot/dts/ralink/mt7621*
  
 +RALINK PINCTRL DRIVER
 +M:    Arınç ÜNAL <arinc.unal@arinc9.com>
 +M:    Sergio Paracuellos <sergio.paracuellos@gmail.com>
 +L:    linux-mips@vger.kernel.org
 +S:    Maintained
 +F:    drivers/pinctrl/ralink/
 +
  RALINK RT2X00 WIRELESS LAN DRIVER
  M:    Stanislaw Gruszka <stf_xl@wp.pl>
  M:    Helmut Schaa <helmut.schaa@googlemail.com>
@@@ -17026,14 -16851,6 +17030,14 @@@ S: Supporte
  F:    Documentation/devicetree/bindings/iio/adc/renesas,rzg2l-adc.yaml
  F:    drivers/iio/adc/rzg2l_adc.c
  
 +RENESAS RZ/N1 RTC CONTROLLER DRIVER
 +M:    Miquel Raynal <miquel.raynal@bootlin.com>
 +L:    linux-rtc@vger.kernel.org
 +L:    linux-renesas-soc@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/rtc/renesas,rzn1-rtc.yaml
 +F:    drivers/rtc/rtc-rzn1.c
 +
  RENESAS R-CAR GEN3 & RZ/N1 NAND CONTROLLER DRIVER
  M:    Miquel Raynal <miquel.raynal@bootlin.com>
  L:    linux-mtd@lists.infradead.org
@@@ -17461,7 -17278,7 +17465,7 @@@ W:   http://www.ibm.com/developerworks/li
  F:    drivers/s390/scsi/zfcp_*
  
  S3C ADC BATTERY DRIVER
 -M:    Krzysztof Kozlowski <krzk@kernel.org>
 +M:    Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
  L:    linux-samsung-soc@vger.kernel.org
  S:    Odd Fixes
  F:    drivers/power/supply/s3c_adc_battery.c
@@@ -17506,16 -17323,15 +17510,16 @@@ F:        Documentation/admin-guide/LSM/SafeSe
  F:    security/safesetid/
  
  SAMSUNG AUDIO (ASoC) DRIVERS
 -M:    Krzysztof Kozlowski <krzk@kernel.org>
 +M:    Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
  M:    Sylwester Nawrocki <s.nawrocki@samsung.com>
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
  S:    Supported
 +B:    mailto:linux-samsung-soc@vger.kernel.org
  F:    Documentation/devicetree/bindings/sound/samsung*
  F:    sound/soc/samsung/
  
  SAMSUNG EXYNOS PSEUDO RANDOM NUMBER GENERATOR (RNG) DRIVER
 -M:    Krzysztof Kozlowski <krzk@kernel.org>
 +M:    Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
  L:    linux-crypto@vger.kernel.org
  L:    linux-samsung-soc@vger.kernel.org
  S:    Maintained
@@@ -17550,12 -17366,11 +17554,12 @@@ S:        Maintaine
  F:    drivers/platform/x86/samsung-laptop.c
  
  SAMSUNG MULTIFUNCTION PMIC DEVICE DRIVERS
 -M:    Krzysztof Kozlowski <krzk@kernel.org>
 +M:    Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
  M:    Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
  L:    linux-kernel@vger.kernel.org
  L:    linux-samsung-soc@vger.kernel.org
  S:    Supported
 +B:    mailto:linux-samsung-soc@vger.kernel.org
  F:    Documentation/devicetree/bindings/clock/samsung,s2mps11.yaml
  F:    Documentation/devicetree/bindings/mfd/samsung,s2m*.yaml
  F:    Documentation/devicetree/bindings/mfd/samsung,s5m*.yaml
@@@ -17577,7 -17392,7 +17581,7 @@@ F:   drivers/media/platform/samsung/s3c-c
  F:    include/media/drv-intf/s3c_camif.h
  
  SAMSUNG S3FWRN5 NFC DRIVER
 -M:    Krzysztof Kozlowski <krzk@kernel.org>
 +M:    Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
  M:    Krzysztof Opasiak <k.opasiak@samsung.com>
  L:    linux-nfc@lists.01.org (subscribers-only)
  S:    Maintained
@@@ -17599,7 -17414,7 +17603,7 @@@ S:   Supporte
  F:    drivers/media/i2c/s5k5baf.c
  
  SAMSUNG S5P Security SubSystem (SSS) DRIVER
 -M:    Krzysztof Kozlowski <krzk@kernel.org>
 +M:    Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
  M:    Vladimir Zapolskiy <vz@mleia.com>
  L:    linux-crypto@vger.kernel.org
  L:    linux-samsung-soc@vger.kernel.org
@@@ -17634,7 -17449,7 +17638,7 @@@ F:   include/linux/clk/samsung.
  F:    include/linux/platform_data/clk-s3c2410.h
  
  SAMSUNG SPI DRIVERS
 -M:    Krzysztof Kozlowski <krzk@kernel.org>
 +M:    Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
  M:    Andi Shyti <andi@etezian.org>
  L:    linux-spi@vger.kernel.org
  L:    linux-samsung-soc@vger.kernel.org
@@@ -17652,7 -17467,7 +17656,7 @@@ F:   drivers/net/ethernet/samsung/sxgbe
  
  SAMSUNG THERMAL DRIVER
  M:    Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
 -M:    Krzysztof Kozlowski <krzk@kernel.org>
 +M:    Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
  L:    linux-pm@vger.kernel.org
  L:    linux-samsung-soc@vger.kernel.org
  S:    Maintained
@@@ -17693,7 -17508,6 +17697,7 @@@ R:   Steven Rostedt <rostedt@goodmis.org
  R:    Ben Segall <bsegall@google.com> (CONFIG_CFS_BANDWIDTH)
  R:    Mel Gorman <mgorman@suse.de> (CONFIG_NUMA_BALANCING)
  R:    Daniel Bristot de Oliveira <bristot@redhat.com> (SCHED_DEADLINE)
 +R:    Valentin Schneider <vschneid@redhat.com> (TOPOLOGY)
  L:    linux-kernel@vger.kernel.org
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git sched/core
@@@ -17837,8 -17651,8 +17841,8 @@@ K:   \bTIF_SECCOMP\
  
  SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) Broadcom BRCMSTB DRIVER
  M:    Al Cooper <alcooperx@gmail.com>
 +R:    Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
  L:    linux-mmc@vger.kernel.org
 -L:    bcm-kernel-feedback-list@broadcom.com
  S:    Maintained
  F:    drivers/mmc/host/sdhci-brcmstb*
  
@@@ -18168,8 -17982,8 +18172,8 @@@ F:   drivers/platform/x86/touchscreen_dmi
  SILICON LABS WIRELESS DRIVERS (for WFxxx series)
  M:    Jérôme Pouiller <jerome.pouiller@silabs.com>
  S:    Supported
 -F:    Documentation/devicetree/bindings/staging/net/wireless/silabs,wfx.yaml
 -F:    drivers/staging/wfx/
 +F:    Documentation/devicetree/bindings/net/wireless/silabs,wfx.yaml
 +F:    drivers/net/wireless/silabs/wfx/
  
  SILICON MOTION SM712 FRAME BUFFER DRIVER
  M:    Sudip Mukherjee <sudipm.mukherjee@gmail.com>
@@@ -18282,7 -18096,6 +18286,7 @@@ M:   Joonsoo Kim <iamjoonsoo.kim@lge.com
  M:    Andrew Morton <akpm@linux-foundation.org>
  M:    Vlastimil Babka <vbabka@suse.cz>
  R:    Roman Gushchin <roman.gushchin@linux.dev>
 +R:    Hyeonggon Yoo <42.hyeyoo@gmail.com>
  L:    linux-mm@kvack.org
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/vbabka/slab.git
@@@ -18318,7 -18131,7 +18322,7 @@@ F:   drivers/net/ethernet/smsc/smc91x.
  
  SECURE MONITOR CALL(SMC) CALLING CONVENTION (SMCCC)
  M:    Mark Rutland <mark.rutland@arm.com>
 -M:    Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
 +M:    Lorenzo Pieralisi <lpieralisi@kernel.org>
  M:    Sudeep Holla <sudeep.holla@arm.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
@@@ -18815,7 -18628,7 +18819,7 @@@ S:   Maintaine
  F:    arch/alpha/kernel/srm_env.c
  
  ST LSM6DSx IMU IIO DRIVER
 -M:    Lorenzo Bianconi <lorenzo.bianconi83@gmail.com>
 +M:    Lorenzo Bianconi <lorenzo@kernel.org>
  L:    linux-iio@vger.kernel.org
  S:    Maintained
  W:    http://www.st.com/
@@@ -18972,7 -18785,7 +18976,7 @@@ F:   include/dt-bindings/reset/starfive-j
  
  STATIC BRANCH/CALL
  M:    Peter Zijlstra <peterz@infradead.org>
 -M:    Josh Poimboeuf <jpoimboe@redhat.com>
 +M:    Josh Poimboeuf <jpoimboe@kernel.org>
  M:    Jason Baron <jbaron@akamai.com>
  R:    Steven Rostedt <rostedt@goodmis.org>
  R:    Ard Biesheuvel <ardb@kernel.org>
@@@ -19056,26 -18869,12 +19060,26 @@@ L:        netdev@vger.kernel.or
  S:    Maintained
  F:    drivers/net/ethernet/dlink/sundance.c
  
 +SUNPLUS ETHERNET DRIVER
 +M:    Wells Lu <wellslutw@gmail.com>
 +L:    netdev@vger.kernel.org
 +S:    Maintained
 +W:    https://sunplus.atlassian.net/wiki/spaces/doc/overview
 +F:    Documentation/devicetree/bindings/net/sunplus,sp7021-emac.yaml
 +F:    drivers/net/ethernet/sunplus/
 +
  SUNPLUS OCOTP DRIVER
  M:    Vincent Shih <vincent.sunplus@gmail.com>
  S:    Maintained
  F:    Documentation/devicetree/bindings/nvmem/sunplus,sp7021-ocotp.yaml
  F:    drivers/nvmem/sunplus-ocotp.c
  
 +SUNPLUS PWM DRIVER
 +M:    Hammer Hsieh <hammerh0314@gmail.com>
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/pwm/sunplus,sp7021-pwm.yaml
 +F:    drivers/pwm/pwm-sunplus.c
 +
  SUNPLUS RTC DRIVER
  M:    Vincent Shih <vincent.sunplus@gmail.com>
  L:    linux-rtc@vger.kernel.org
@@@ -19096,13 -18895,6 +19100,13 @@@ S: Maintaine
  F:    Documentation/devicetree/bindings/serial/sunplus,sp7021-uart.yaml
  F:    drivers/tty/serial/sunplus-uart.c
  
 +SUNPLUS WATCHDOG DRIVER
 +M:    Xiantao Hu <xt.hu@cqplus1.com>
 +L:    linux-watchdog@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/watchdog/sunplus,sp7021-wdt.yaml
 +F:    drivers/watchdog/sunplus_wdt.c
 +
  SUPERH
  M:    Yoshinori Sato <ysato@users.sourceforge.jp>
  M:    Rich Felker <dalias@libc.org>
@@@ -19248,7 -19040,6 +19252,7 @@@ SYNOPSYS DESIGNWARE DMAC DRIVE
  M:    Viresh Kumar <vireshk@kernel.org>
  R:    Andy Shevchenko <andriy.shevchenko@linux.intel.com>
  S:    Maintained
 +F:    Documentation/devicetree/bindings/dma/renesas,rzn1-dmamux.yaml
  F:    Documentation/devicetree/bindings/dma/snps,dma-spear1340.yaml
  F:    drivers/dma/dw/
  F:    include/dt-bindings/dma/dw-dmac.h
@@@ -19743,7 -19534,6 +19747,7 @@@ F:   drivers/thermal
  F:    include/linux/cpu_cooling.h
  F:    include/linux/thermal.h
  F:    include/uapi/linux/thermal.h
 +F:    tools/lib/thermal/
  F:    tools/thermal/
  
  THERMAL DRIVER FOR AMLOGIC SOCS
@@@ -19996,7 -19786,7 +20000,7 @@@ F:   drivers/net/wireless/ti
  F:    include/linux/wl12xx.h
  
  TIMEKEEPING, CLOCKSOURCE CORE, NTP, ALARMTIMER
 -M:    John Stultz <john.stultz@linaro.org>
 +M:    John Stultz <jstultz@google.com>
  M:    Thomas Gleixner <tglx@linutronix.de>
  R:    Stephen Boyd <sboyd@kernel.org>
  L:    linux-kernel@vger.kernel.org
@@@ -20043,7 -19833,6 +20047,7 @@@ F:   drivers/media/usb/tm6000
  TMIO/SDHI MMC DRIVER
  M:    Wolfram Sang <wsa+renesas@sang-engineering.com>
  L:    linux-mmc@vger.kernel.org
 +L:    linux-renesas-soc@vger.kernel.org
  S:    Supported
  F:    drivers/mmc/host/renesas_sdhi*
  F:    drivers/mmc/host/tmio_mmc*
@@@ -20053,7 -19842,6 +20057,7 @@@ TMP401 HARDWARE MONITOR DRIVE
  M:    Guenter Roeck <linux@roeck-us.net>
  L:    linux-hwmon@vger.kernel.org
  S:    Maintained
 +F:    Documentation/devicetree/bindings/hwmon/ti,tmp401.yaml
  F:    Documentation/hwmon/tmp401.rst
  F:    drivers/hwmon/tmp401.c
  
@@@ -20167,8 -19955,8 +20171,8 @@@ M:   Ingo Molnar <mingo@redhat.com
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace.git
  F:    Documentation/trace/ftrace.rst
 -F:    arch/*/*/*/ftrace.h
 -F:    arch/*/kernel/ftrace.c
 +F:    arch/*/*/*/*ftrace*
 +F:    arch/*/*/*ftrace*
  F:    fs/tracefs/
  F:    include/*/ftrace.h
  F:    include/linux/trace*.h
@@@ -20399,6 -20187,14 +20403,6 @@@ F:  drivers/cdrom/cdrom.
  F:    include/linux/cdrom.h
  F:    include/uapi/linux/cdrom.h
  
 -UNISYS S-PAR DRIVERS
 -M:    David Kershner <david.kershner@unisys.com>
 -L:    sparmaintainer@unisys.com (Unisys internal)
 -S:    Supported
 -F:    drivers/staging/unisys/
 -F:    drivers/visorbus/
 -F:    include/linux/visorbus.h
 -
  UNIVERSAL FLASH STORAGE HOST CONTROLLER DRIVER
  R:    Alim Akhtar <alim.akhtar@samsung.com>
  R:    Avri Altman <avri.altman@wdc.com>
@@@ -20729,6 -20525,7 +20733,6 @@@ F:   drivers/usb/host/uhci
  
  USB VIDEO CLASS
  M:    Laurent Pinchart <laurent.pinchart@ideasonboard.com>
 -L:    linux-uvc-devel@lists.sourceforge.net (subscribers-only)
  L:    linux-media@vger.kernel.org
  S:    Maintained
  W:    http://www.ideasonboard.org/uvc/
@@@ -21067,7 -20864,6 +21071,7 @@@ F:   include/uapi/linux/virtio_crypto.
  VIRTIO DRIVERS FOR S390
  M:    Cornelia Huck <cohuck@redhat.com>
  M:    Halil Pasic <pasic@linux.ibm.com>
 +M:    Eric Farman <farman@linux.ibm.com>
  L:    linux-s390@vger.kernel.org
  L:    virtualization@lists.linux-foundation.org
  L:    kvm@vger.kernel.org
@@@ -21218,7 -21014,7 +21222,7 @@@ L:   linux-kernel@vger.kernel.or
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git
  F:    Documentation/driver-api/vme.rst
 -F:    drivers/staging/vme/
 +F:    drivers/staging/vme_user/
  F:    drivers/vme/
  F:    include/linux/vme*
  
@@@ -21435,8 -21231,10 +21439,8 @@@ S:  Maintaine
  F:    drivers/hid/hid-wiimote*
  
  WILOCITY WIL6210 WIRELESS DRIVER
 -M:    Maya Erez <merez@codeaurora.org>
  L:    linux-wireless@vger.kernel.org
 -L:    wil6210@qti.qualcomm.com
 -S:    Supported
 +S:    Orphan
  W:    https://wireless.wiki.kernel.org/en/users/Drivers/wil6210
  F:    drivers/net/wireless/ath/wil6210/
  
@@@ -21640,15 -21438,6 +21644,15 @@@ F: arch/x86/include/asm/uv
  F:    arch/x86/kernel/apic/x2apic_uv_x.c
  F:    arch/x86/platform/uv/
  
 +X86 STACK UNWINDING
 +M:    Josh Poimboeuf <jpoimboe@kernel.org>
 +M:    Peter Zijlstra <peterz@infradead.org>
 +S:    Supported
 +F:    arch/x86/include/asm/unwind*.h
 +F:    arch/x86/kernel/dumpstack.c
 +F:    arch/x86/kernel/stacktrace.c
 +F:    arch/x86/kernel/unwind_*.c
 +
  X86 VDSO
  M:    Andy Lutomirski <luto@kernel.org>
  L:    linux-kernel@vger.kernel.org
@@@ -21707,7 -21496,6 +21711,7 @@@ K:   (?:\b|_)xdp(?:\b|_
  XDP SOCKETS (AF_XDP)
  M:    Björn Töpel <bjorn@kernel.org>
  M:    Magnus Karlsson <magnus.karlsson@intel.com>
 +M:    Maciej Fijalkowski <maciej.fijalkowski@intel.com>
  R:    Jonathan Lemon <jonathan.lemon@gmail.com>
  L:    netdev@vger.kernel.org
  L:    bpf@vger.kernel.org
@@@ -21744,29 -21532,23 +21748,29 @@@ F:        arch/arm64/include/asm/xen
  F:    arch/arm64/xen/
  
  XEN HYPERVISOR INTERFACE
 -M:    Boris Ostrovsky <boris.ostrovsky@oracle.com>
  M:    Juergen Gross <jgross@suse.com>
 -R:    Stefano Stabellini <sstabellini@kernel.org>
 +M:    Stefano Stabellini <sstabellini@kernel.org>
 +R:    Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
  L:    xen-devel@lists.xenproject.org (moderated for non-subscribers)
  S:    Supported
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip.git
  F:    Documentation/ABI/stable/sysfs-hypervisor-xen
  F:    Documentation/ABI/testing/sysfs-hypervisor-xen
 -F:    arch/x86/include/asm/pvclock-abi.h
 -F:    arch/x86/include/asm/xen/
 -F:    arch/x86/platform/pvh/
 -F:    arch/x86/xen/
  F:    drivers/*/xen-*front.c
  F:    drivers/xen/
  F:    include/uapi/xen/
  F:    include/xen/
  
 +XEN HYPERVISOR X86
 +M:    Juergen Gross <jgross@suse.com>
 +R:    Boris Ostrovsky <boris.ostrovsky@oracle.com>
 +L:    xen-devel@lists.xenproject.org (moderated for non-subscribers)
 +S:    Supported
 +F:    arch/x86/include/asm/pvclock-abi.h
 +F:    arch/x86/include/asm/xen/
 +F:    arch/x86/platform/pvh/
 +F:    arch/x86/xen/
 +
  XEN NETWORK BACKEND DRIVER
  M:    Wei Liu <wei.liu@kernel.org>
  M:    Paul Durrant <paul@xen.org>
@@@ -21818,6 -21600,7 +21822,6 @@@ F:   drivers/xen/*swiotlb
  XFS FILESYSTEM
  C:    irc://irc.oftc.net/xfs
  M:    Darrick J. Wong <djwong@kernel.org>
 -M:    linux-xfs@vger.kernel.org
  L:    linux-xfs@vger.kernel.org
  S:    Supported
  W:    http://xfs.org/
@@@ -21847,7 -21630,7 +21851,7 @@@ M:   Appana Durga Kedareswara rao <appana
  R:    Naga Sureshkumar Relli <naga.sureshkumar.relli@xilinx.com>
  L:    linux-can@vger.kernel.org
  S:    Maintained
 -F:    Documentation/devicetree/bindings/net/can/xilinx_can.txt
 +F:    Documentation/devicetree/bindings/net/can/xilinx,can.yaml
  F:    drivers/net/can/xilinx_can.c
  
  XILINX GPIO DRIVER
@@@ -21871,12 -21654,6 +21875,12 @@@ F: drivers/misc/Makefil
  F:    drivers/misc/xilinx_sdfec.c
  F:    include/uapi/misc/xilinx_sdfec.h
  
 +XILINX PWM DRIVER
 +M:    Sean Anderson <sean.anderson@seco.com>
 +S:    Maintained
 +F:    drivers/pwm/pwm-xilinx.c
 +F:    include/clocksource/timer-xilinx.h
 +
  XILINX UARTLITE SERIAL DRIVER
  M:    Peter Korsgaard <jacmet@sunsite.dk>
  L:    linux-serial@vger.kernel.org
@@@ -125,7 -125,7 +125,7 @@@ common_shutdown_1(void *generic_ptr
        /* Wait for the secondaries to halt. */
        set_cpu_present(boot_cpuid, false);
        set_cpu_possible(boot_cpuid, false);
-       while (cpumask_weight(cpu_present_mask))
+       while (!cpumask_empty(cpu_present_mask))
                barrier();
  #endif
  
@@@ -233,11 -233,10 +233,11 @@@ release_thread(struct task_struct *dead
  /*
   * Copy architecture-specific thread state
   */
 -int copy_thread(unsigned long clone_flags, unsigned long usp,
 -              unsigned long kthread_arg, struct task_struct *p,
 -              unsigned long tls)
 +int copy_thread(struct task_struct *p, const struct kernel_clone_args *args)
  {
 +      unsigned long clone_flags = args->flags;
 +      unsigned long usp = args->stack;
 +      unsigned long tls = args->tls;
        extern void ret_from_fork(void);
        extern void ret_from_kernel_thread(void);
  
        childti->pcb.ksp = (unsigned long) childstack;
        childti->pcb.flags = 1; /* set FEN, clear everything else */
  
 -      if (unlikely(p->flags & (PF_KTHREAD | PF_IO_WORKER))) {
 +      if (unlikely(args->fn)) {
                /* kernel thread */
                memset(childstack, 0,
                        sizeof(struct switch_stack) + sizeof(struct pt_regs));
                childstack->r26 = (unsigned long) ret_from_kernel_thread;
 -              childstack->r9 = usp;   /* function */
 -              childstack->r10 = kthread_arg;
 +              childstack->r9 = (unsigned long) args->fn;
 +              childstack->r10 = (unsigned long) args->fn_arg;
                childregs->hae = alpha_mv.hae_cache;
                childti->pcb.usp = 0;
                return 0;
@@@ -8,15 -8,9 +8,15 @@@
  
  #include <linux/bitmap.h>
  #include <linux/ctype.h>
 +#include <linux/libfdt.h>
 +#include <linux/module.h>
  #include <linux/of.h>
 -#include <asm/processor.h>
 +#include <asm/alternative.h>
 +#include <asm/errata_list.h>
  #include <asm/hwcap.h>
 +#include <asm/patch.h>
 +#include <asm/pgtable.h>
 +#include <asm/processor.h>
  #include <asm/smp.h>
  #include <asm/switch_to.h>
  
@@@ -198,7 -192,6 +198,7 @@@ void __init riscv_fill_hwcap(void
                                set_bit(*ext - 'a', this_isa);
                        } else {
                                SET_ISA_EXT_MAP("sscofpmf", RISCV_ISA_EXT_SSCOFPMF);
 +                              SET_ISA_EXT_MAP("svpbmt", RISCV_ISA_EXT_SVPBMT);
                        }
  #undef SET_ISA_EXT_MAP
                }
                else
                        elf_hwcap = this_hwcap;
  
-               if (bitmap_weight(riscv_isa, RISCV_ISA_EXT_MAX))
-                       bitmap_and(riscv_isa, riscv_isa, this_isa, RISCV_ISA_EXT_MAX);
-               else
+               if (bitmap_empty(riscv_isa, RISCV_ISA_EXT_MAX))
                        bitmap_copy(riscv_isa, this_isa, RISCV_ISA_EXT_MAX);
+               else
+                       bitmap_and(riscv_isa, riscv_isa, this_isa, RISCV_ISA_EXT_MAX);
        }
  
        /* We don't support systems with F but without D, so mask those out
                static_branch_enable(&cpu_hwcap_fpu);
  #endif
  }
 +
 +#ifdef CONFIG_RISCV_ALTERNATIVE
 +struct cpufeature_info {
 +      char name[ERRATA_STRING_LENGTH_MAX];
 +      bool (*check_func)(unsigned int stage);
 +};
 +
 +static bool __init_or_module cpufeature_svpbmt_check_func(unsigned int stage)
 +{
 +#ifdef CONFIG_RISCV_ISA_SVPBMT
 +      switch (stage) {
 +      case RISCV_ALTERNATIVES_EARLY_BOOT:
 +              return false;
 +      default:
 +              return riscv_isa_extension_available(NULL, SVPBMT);
 +      }
 +#endif
 +
 +      return false;
 +}
 +
 +static const struct cpufeature_info __initdata_or_module
 +cpufeature_list[CPUFEATURE_NUMBER] = {
 +      {
 +              .name = "svpbmt",
 +              .check_func = cpufeature_svpbmt_check_func
 +      },
 +};
 +
 +static u32 __init_or_module cpufeature_probe(unsigned int stage)
 +{
 +      const struct cpufeature_info *info;
 +      u32 cpu_req_feature = 0;
 +      int idx;
 +
 +      for (idx = 0; idx < CPUFEATURE_NUMBER; idx++) {
 +              info = &cpufeature_list[idx];
 +
 +              if (info->check_func(stage))
 +                      cpu_req_feature |= (1U << idx);
 +      }
 +
 +      return cpu_req_feature;
 +}
 +
 +void __init_or_module riscv_cpufeature_patch_func(struct alt_entry *begin,
 +                                                struct alt_entry *end,
 +                                                unsigned int stage)
 +{
 +      u32 cpu_req_feature = cpufeature_probe(stage);
 +      u32 cpu_apply_feature = 0;
 +      struct alt_entry *alt;
 +      u32 tmp;
 +
 +      for (alt = begin; alt < end; alt++) {
 +              if (alt->vendor_id != 0)
 +                      continue;
 +              if (alt->errata_id >= CPUFEATURE_NUMBER) {
 +                      WARN(1, "This feature id:%d is not in kernel cpufeature list",
 +                              alt->errata_id);
 +                      continue;
 +              }
 +
 +              tmp = (1U << alt->errata_id);
 +              if (cpu_req_feature & tmp) {
 +                      patch_text_nosync(alt->old_ptr, alt->alt_ptr, alt->alt_len);
 +                      cpu_apply_feature |= tmp;
 +              }
 +      }
 +}
 +#endif
diff --combined arch/s390/kvm/kvm-s390.c
@@@ -1332,8 -1332,7 +1332,7 @@@ static int kvm_s390_set_processor_feat(
                mutex_unlock(&kvm->lock);
                return -EBUSY;
        }
-       bitmap_copy(kvm->arch.cpu_feat, (unsigned long *) data.feat,
-                   KVM_S390_VM_CPU_FEAT_NR_BITS);
+       bitmap_from_arr64(kvm->arch.cpu_feat, data.feat, KVM_S390_VM_CPU_FEAT_NR_BITS);
        mutex_unlock(&kvm->lock);
        VM_EVENT(kvm, 3, "SET: guest feat: 0x%16.16llx.0x%16.16llx.0x%16.16llx",
                         data.feat[0],
@@@ -1504,8 -1503,7 +1503,7 @@@ static int kvm_s390_get_processor_feat(
  {
        struct kvm_s390_vm_cpu_feat data;
  
-       bitmap_copy((unsigned long *) data.feat, kvm->arch.cpu_feat,
-                   KVM_S390_VM_CPU_FEAT_NR_BITS);
+       bitmap_to_arr64(data.feat, kvm->arch.cpu_feat, KVM_S390_VM_CPU_FEAT_NR_BITS);
        if (copy_to_user((void __user *)attr->addr, &data, sizeof(data)))
                return -EFAULT;
        VM_EVENT(kvm, 3, "GET: guest feat: 0x%16.16llx.0x%16.16llx.0x%16.16llx",
@@@ -1520,9 -1518,7 +1518,7 @@@ static int kvm_s390_get_machine_feat(st
  {
        struct kvm_s390_vm_cpu_feat data;
  
-       bitmap_copy((unsigned long *) data.feat,
-                   kvm_s390_available_cpu_feat,
-                   KVM_S390_VM_CPU_FEAT_NR_BITS);
+       bitmap_to_arr64(data.feat, kvm_s390_available_cpu_feat, KVM_S390_VM_CPU_FEAT_NR_BITS);
        if (copy_to_user((void __user *)attr->addr, &data, sizeof(data)))
                return -EFAULT;
        VM_EVENT(kvm, 3, "GET: host feat:  0x%16.16llx.0x%16.16llx.0x%16.16llx",
@@@ -2384,16 -2380,7 +2380,16 @@@ static int kvm_s390_vm_mem_op(struct kv
                return -EINVAL;
        if (mop->size > MEM_OP_MAX_SIZE)
                return -E2BIG;
 -      if (kvm_s390_pv_is_protected(kvm))
 +      /*
 +       * This is technically a heuristic only, if the kvm->lock is not
 +       * taken, it is not guaranteed that the vm is/remains non-protected.
 +       * This is ok from a kernel perspective, wrongdoing is detected
 +       * on the access, -EFAULT is returned and the vm may crash the
 +       * next time it accesses the memory in question.
 +       * There is no sane usecase to do switching and a memop on two
 +       * different CPUs at the same time.
 +       */
 +      if (kvm_s390_pv_get_handle(kvm))
                return -EINVAL;
        if (mop->flags & KVM_S390_MEMOP_F_SKEY_PROTECTION) {
                if (access_key_invalid(mop->key))
@@@ -4246,14 -4233,14 +4242,14 @@@ static int __vcpu_run(struct kvm_vcpu *
         * We try to hold kvm->srcu during most of vcpu_run (except when run-
         * ning the guest), so that memslots (and other stuff) are protected
         */
 -      vcpu->srcu_idx = srcu_read_lock(&vcpu->kvm->srcu);
 +      kvm_vcpu_srcu_read_lock(vcpu);
  
        do {
                rc = vcpu_pre_run(vcpu);
                if (rc)
                        break;
  
 -              srcu_read_unlock(&vcpu->kvm->srcu, vcpu->srcu_idx);
 +              kvm_vcpu_srcu_read_unlock(vcpu);
                /*
                 * As PF_VCPU will be used in fault handler, between
                 * guest_enter and guest_exit should be no uaccess.
                __enable_cpu_timer_accounting(vcpu);
                guest_exit_irqoff();
                local_irq_enable();
 -              vcpu->srcu_idx = srcu_read_lock(&vcpu->kvm->srcu);
 +              kvm_vcpu_srcu_read_lock(vcpu);
  
                rc = vcpu_post_run(vcpu, exit_reason);
        } while (!signal_pending(current) && !guestdbg_exit_pending(vcpu) && !rc);
  
 -      srcu_read_unlock(&vcpu->kvm->srcu, vcpu->srcu_idx);
 +      kvm_vcpu_srcu_read_unlock(vcpu);
        return rc;
  }
  
diff --combined arch/x86/kvm/hyperv.c
@@@ -90,7 -90,7 +90,7 @@@ static void synic_update_vector(struct 
  {
        struct kvm_vcpu *vcpu = hv_synic_to_vcpu(synic);
        struct kvm_hv *hv = to_kvm_hv(vcpu->kvm);
-       int auto_eoi_old, auto_eoi_new;
+       bool auto_eoi_old, auto_eoi_new;
  
        if (vector < HV_SYNIC_FIRST_VALID_VECTOR)
                return;
        else
                __clear_bit(vector, synic->vec_bitmap);
  
-       auto_eoi_old = bitmap_weight(synic->auto_eoi_bitmap, 256);
+       auto_eoi_old = !bitmap_empty(synic->auto_eoi_bitmap, 256);
  
        if (synic_has_vector_auto_eoi(synic, vector))
                __set_bit(vector, synic->auto_eoi_bitmap);
        else
                __clear_bit(vector, synic->auto_eoi_bitmap);
  
-       auto_eoi_new = bitmap_weight(synic->auto_eoi_bitmap, 256);
+       auto_eoi_new = !bitmap_empty(synic->auto_eoi_bitmap, 256);
  
-       if (!!auto_eoi_old == !!auto_eoi_new)
+       if (auto_eoi_old == auto_eoi_new)
                return;
  
        if (!enable_apicv)
@@@ -1135,13 -1135,11 +1135,13 @@@ void kvm_hv_setup_tsc_page(struct kvm *
        BUILD_BUG_ON(sizeof(tsc_seq) != sizeof(hv->tsc_ref.tsc_sequence));
        BUILD_BUG_ON(offsetof(struct ms_hyperv_tsc_page, tsc_sequence) != 0);
  
 +      mutex_lock(&hv->hv_lock);
 +
        if (hv->hv_tsc_page_status == HV_TSC_PAGE_BROKEN ||
 +          hv->hv_tsc_page_status == HV_TSC_PAGE_SET ||
            hv->hv_tsc_page_status == HV_TSC_PAGE_UNSET)
 -              return;
 +              goto out_unlock;
  
 -      mutex_lock(&hv->hv_lock);
        if (!(hv->hv_tsc_page & HV_X64_MSR_TSC_REFERENCE_ENABLE))
                goto out_unlock;
  
@@@ -1203,19 -1201,45 +1203,19 @@@ out_unlock
        mutex_unlock(&hv->hv_lock);
  }
  
 -void kvm_hv_invalidate_tsc_page(struct kvm *kvm)
 +void kvm_hv_request_tsc_page_update(struct kvm *kvm)
  {
        struct kvm_hv *hv = to_kvm_hv(kvm);
 -      u64 gfn;
 -      int idx;
 -
 -      if (hv->hv_tsc_page_status == HV_TSC_PAGE_BROKEN ||
 -          hv->hv_tsc_page_status == HV_TSC_PAGE_UNSET ||
 -          tsc_page_update_unsafe(hv))
 -              return;
  
        mutex_lock(&hv->hv_lock);
  
 -      if (!(hv->hv_tsc_page & HV_X64_MSR_TSC_REFERENCE_ENABLE))
 -              goto out_unlock;
 -
 -      /* Preserve HV_TSC_PAGE_GUEST_CHANGED/HV_TSC_PAGE_HOST_CHANGED states */
 -      if (hv->hv_tsc_page_status == HV_TSC_PAGE_SET)
 -              hv->hv_tsc_page_status = HV_TSC_PAGE_UPDATING;
 +      if (hv->hv_tsc_page_status == HV_TSC_PAGE_SET &&
 +          !tsc_page_update_unsafe(hv))
 +              hv->hv_tsc_page_status = HV_TSC_PAGE_HOST_CHANGED;
  
 -      gfn = hv->hv_tsc_page >> HV_X64_MSR_TSC_REFERENCE_ADDRESS_SHIFT;
 -
 -      hv->tsc_ref.tsc_sequence = 0;
 -
 -      /*
 -       * Take the srcu lock as memslots will be accessed to check the gfn
 -       * cache generation against the memslots generation.
 -       */
 -      idx = srcu_read_lock(&kvm->srcu);
 -      if (kvm_write_guest(kvm, gfn_to_gpa(gfn),
 -                          &hv->tsc_ref, sizeof(hv->tsc_ref.tsc_sequence)))
 -              hv->hv_tsc_page_status = HV_TSC_PAGE_BROKEN;
 -      srcu_read_unlock(&kvm->srcu, idx);
 -
 -out_unlock:
        mutex_unlock(&hv->hv_lock);
  }
  
 -
  static bool hv_check_msr_access(struct kvm_vcpu_hv *hv_vcpu, u32 msr)
  {
        if (!hv_vcpu->enforce_cpuid)
@@@ -1855,7 -1879,7 +1855,7 @@@ static u64 kvm_hv_flush_tlb(struct kvm_
                all_cpus = flush_ex.hv_vp_set.format !=
                        HV_GENERIC_SET_SPARSE_4K;
  
-               if (hc->var_cnt != bitmap_weight((unsigned long *)&valid_bank_mask, 64))
+               if (hc->var_cnt != hweight64(valid_bank_mask))
                        return HV_STATUS_INVALID_HYPERCALL_INPUT;
  
                if (all_cpus)
@@@ -1956,7 -1980,7 +1956,7 @@@ static u64 kvm_hv_send_ipi(struct kvm_v
                valid_bank_mask = send_ipi_ex.vp_set.valid_bank_mask;
                all_cpus = send_ipi_ex.vp_set.format == HV_GENERIC_SET_ALL;
  
-               if (hc->var_cnt != bitmap_weight((unsigned long *)&valid_bank_mask, 64))
+               if (hc->var_cnt != hweight64(valid_bank_mask))
                        return HV_STATUS_INVALID_HYPERCALL_INPUT;
  
                if (all_cpus)
@@@ -57,8 -57,6 +57,8 @@@
  #undef pr_debug
  
  MODULE_FIRMWARE("amdgpu/aldebaran_smc.bin");
 +MODULE_FIRMWARE("amdgpu/smu_13_0_0.bin");
 +MODULE_FIRMWARE("amdgpu/smu_13_0_7.bin");
  
  #define SMU13_VOLTAGE_SCALE 4
  
  static const int link_width[] = {0, 1, 2, 4, 8, 12, 16};
  static const int link_speed[] = {25, 50, 80, 160};
  
 +static int smu_v13_0_get_pptable_from_firmware(struct smu_context *smu, void **table, uint32_t *size,
 +                                             uint32_t pptable_id);
 +
  int smu_v13_0_init_microcode(struct smu_context *smu)
  {
        struct amdgpu_device *adev = smu->adev;
        const char *chip_name;
        char fw_name[30];
 +      char ucode_prefix[30];
        int err = 0;
        const struct smc_firmware_header_v1_0 *hdr;
        const struct common_firmware_header *header;
  
        switch (adev->ip_versions[MP1_HWIP][0]) {
        case IP_VERSION(13, 0, 2):
 -              chip_name = "aldebaran";
 +              chip_name = "aldebaran_smc";
                break;
        default:
 -              dev_err(adev->dev, "Unsupported IP version 0x%x\n",
 -                      adev->ip_versions[MP1_HWIP][0]);
 -              return -EINVAL;
 +              amdgpu_ucode_ip_version_decode(adev, MP1_HWIP, ucode_prefix, sizeof(ucode_prefix));
 +              chip_name = ucode_prefix;
        }
  
 -      snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_smc.bin", chip_name);
 +      snprintf(fw_name, sizeof(fw_name), "amdgpu/%s.bin", chip_name);
  
        err = request_firmware(&adev->pm.fw, fw_name, adev->dev);
        if (err)
@@@ -181,81 -176,6 +181,81 @@@ int smu_v13_0_load_microcode(struct smu
        if (i == adev->usec_timeout)
                return -ETIME;
  #endif
 +
 +      return 0;
 +}
 +
 +int smu_v13_0_init_pptable_microcode(struct smu_context *smu)
 +{
 +      struct amdgpu_device *adev = smu->adev;
 +      struct amdgpu_firmware_info *ucode = NULL;
 +      uint32_t size = 0, pptable_id = 0;
 +      int ret = 0;
 +      void *table;
 +
 +      /* doesn't need to load smu firmware in IOV mode */
 +      if (amdgpu_sriov_vf(adev))
 +              return 0;
 +
 +      if (adev->firmware.load_type != AMDGPU_FW_LOAD_PSP)
 +              return 0;
 +
 +      if (!adev->scpm_enabled)
 +              return 0;
 +
 +      /* override pptable_id from driver parameter */
 +      if (amdgpu_smu_pptable_id >= 0) {
 +              pptable_id = amdgpu_smu_pptable_id;
 +              dev_info(adev->dev, "override pptable id %d\n", pptable_id);
 +      } else {
 +              pptable_id = smu->smu_table.boot_values.pp_table_id;
 +
 +              if (adev->ip_versions[MP1_HWIP][0] == IP_VERSION(13, 0, 7) &&
 +                      pptable_id == 3667)
 +                      pptable_id = 36671;
 +
 +              if (adev->ip_versions[MP1_HWIP][0] == IP_VERSION(13, 0, 7) &&
 +                      pptable_id == 3688)
 +                      pptable_id = 36881;
 +              /*
 +               * Temporary solution for SMU V13.0.0 with SCPM enabled:
 +               *   - use 36831 signed pptable when pp_table_id is 3683
 +               *   - use 36641 signed pptable when pp_table_id is 3664 or 0
 +               * TODO: drop these when the pptable carried in vbios is ready.
 +               */
 +              if (adev->ip_versions[MP1_HWIP][0] == IP_VERSION(13, 0, 0)) {
 +                      switch (pptable_id) {
 +                      case 0:
 +                      case 3664:
 +                              pptable_id = 36641;
 +                              break;
 +                      case 3683:
 +                              pptable_id = 36831;
 +                              break;
 +                      default:
 +                              dev_err(adev->dev, "Unsupported pptable id %d\n", pptable_id);
 +                              return -EINVAL;
 +                      }
 +              }
 +      }
 +
 +      /* "pptable_id == 0" means vbios carries the pptable. */
 +      if (!pptable_id)
 +              return 0;
 +
 +      ret = smu_v13_0_get_pptable_from_firmware(smu, &table, &size, pptable_id);
 +      if (ret)
 +              return ret;
 +
 +      smu->pptable_firmware.data = table;
 +      smu->pptable_firmware.size = size;
 +
 +      ucode = &adev->firmware.ucode[AMDGPU_UCODE_ID_PPTABLE];
 +      ucode->ucode_id = AMDGPU_UCODE_ID_PPTABLE;
 +      ucode->fw = &smu->pptable_firmware;
 +      adev->firmware.fw_size +=
 +              ALIGN(smu->pptable_firmware.size, PAGE_SIZE);
 +
        return 0;
  }
  
@@@ -296,20 -216,11 +296,20 @@@ int smu_v13_0_check_fw_version(struct s
        case IP_VERSION(13, 0, 2):
                smu->smc_driver_if_version = SMU13_DRIVER_IF_VERSION_ALDE;
                break;
 +      case IP_VERSION(13, 0, 0):
 +              smu->smc_driver_if_version = SMU13_DRIVER_IF_VERSION_SMU_V13_0_0;
 +              break;
 +      case IP_VERSION(13, 0, 7):
 +              smu->smc_driver_if_version = SMU13_DRIVER_IF_VERSION_SMU_V13_0_7;
 +              break;
        case IP_VERSION(13, 0, 1):
        case IP_VERSION(13, 0, 3):
        case IP_VERSION(13, 0, 8):
                smu->smc_driver_if_version = SMU13_DRIVER_IF_VERSION_YELLOW_CARP;
                break;
 +      case IP_VERSION(13, 0, 4):
 +              smu->smc_driver_if_version = SMU13_DRIVER_IF_VERSION_SMU_V13_0_4;
 +              break;
        case IP_VERSION(13, 0, 5):
                smu->smc_driver_if_version = SMU13_DRIVER_IF_VERSION_SMU_V13_0_5;
                break;
        return ret;
  }
  
 +static int smu_v13_0_set_pptable_v2_0(struct smu_context *smu, void **table, uint32_t *size)
 +{
 +      struct amdgpu_device *adev = smu->adev;
 +      uint32_t ppt_offset_bytes;
 +      const struct smc_firmware_header_v2_0 *v2;
 +
 +      v2 = (const struct smc_firmware_header_v2_0 *) adev->pm.fw->data;
 +
 +      ppt_offset_bytes = le32_to_cpu(v2->ppt_offset_bytes);
 +      *size = le32_to_cpu(v2->ppt_size_bytes);
 +      *table = (uint8_t *)v2 + ppt_offset_bytes;
 +
 +      return 0;
 +}
 +
  static int smu_v13_0_set_pptable_v2_1(struct smu_context *smu, void **table,
                                      uint32_t *size, uint32_t pptable_id)
  {
@@@ -431,9 -327,6 +431,9 @@@ static int smu_v13_0_get_pptable_from_f
        }
  
        switch (version_minor) {
 +      case 0:
 +              ret = smu_v13_0_set_pptable_v2_0(smu, table, size);
 +              break;
        case 1:
                ret = smu_v13_0_set_pptable_v2_1(smu, table, size, pptable_id);
                break;
@@@ -458,30 -351,10 +458,30 @@@ int smu_v13_0_setup_pptable(struct smu_
                dev_info(adev->dev, "override pptable id %d\n", pptable_id);
        } else {
                pptable_id = smu->smu_table.boot_values.pp_table_id;
 +
 +              /*
 +               * Temporary solution for SMU V13.0.0 with SCPM disabled:
 +               *   - use 3664 or 3683 on request
 +               *   - use 3664 when pptable_id is 0
 +               * TODO: drop these when the pptable carried in vbios is ready.
 +               */
 +              if (adev->ip_versions[MP1_HWIP][0] == IP_VERSION(13, 0, 0)) {
 +                      switch (pptable_id) {
 +                      case 0:
 +                              pptable_id = 3664;
 +                              break;
 +                      case 3664:
 +                      case 3683:
 +                              break;
 +                      default:
 +                              dev_err(adev->dev, "Unsupported pptable id %d\n", pptable_id);
 +                              return -EINVAL;
 +                      }
 +              }
        }
  
        /* force using vbios pptable in sriov mode */
 -      if (amdgpu_sriov_vf(adev) || !pptable_id)
 +      if ((amdgpu_sriov_vf(adev) || !pptable_id) && (amdgpu_emu_mode != 1))
                ret = smu_v13_0_get_pptable_from_vbios(smu, &table, &size);
        else
                ret = smu_v13_0_get_pptable_from_firmware(smu, &table, &size, pptable_id);
@@@ -534,17 -407,8 +534,17 @@@ int smu_v13_0_init_smc_tables(struct sm
                }
        }
  
 +      smu_table->combo_pptable =
 +              kzalloc(tables[SMU_TABLE_COMBO_PPTABLE].size, GFP_KERNEL);
 +      if (!smu_table->combo_pptable) {
 +              ret = -ENOMEM;
 +              goto err4_out;
 +      }
 +
        return 0;
  
 +err4_out:
 +      kfree(smu_table->boot_overdrive_table);
  err3_out:
        kfree(smu_table->overdrive_table);
  err2_out:
@@@ -561,13 -425,11 +561,13 @@@ int smu_v13_0_fini_smc_tables(struct sm
        struct smu_dpm_context *smu_dpm = &smu->smu_dpm;
  
        kfree(smu_table->gpu_metrics_table);
 +      kfree(smu_table->combo_pptable);
        kfree(smu_table->boot_overdrive_table);
        kfree(smu_table->overdrive_table);
        kfree(smu_table->max_sustainable_clocks);
        kfree(smu_table->driver_pptable);
        smu_table->gpu_metrics_table = NULL;
 +      smu_table->combo_pptable = NULL;
        smu_table->boot_overdrive_table = NULL;
        smu_table->overdrive_table = NULL;
        smu_table->max_sustainable_clocks = NULL;
@@@ -626,6 -488,32 +626,6 @@@ int smu_v13_0_fini_power(struct smu_con
        return 0;
  }
  
 -static int smu_v13_0_atom_get_smu_clockinfo(struct amdgpu_device *adev,
 -                                          uint8_t clk_id,
 -                                          uint8_t syspll_id,
 -                                          uint32_t *clk_freq)
 -{
 -      struct atom_get_smu_clock_info_parameters_v3_1 input = {0};
 -      struct atom_get_smu_clock_info_output_parameters_v3_1 *output;
 -      int ret, index;
 -
 -      input.clk_id = clk_id;
 -      input.syspll_id = syspll_id;
 -      input.command = GET_SMU_CLOCK_INFO_V3_1_GET_CLOCK_FREQ;
 -      index = get_index_into_master_table(atom_master_list_of_command_functions_v2_1,
 -                                          getsmuclockinfo);
 -
 -      ret = amdgpu_atom_execute_table(adev->mode_info.atom_context, index,
 -                                      (uint32_t *)&input);
 -      if (ret)
 -              return -EINVAL;
 -
 -      output = (struct atom_get_smu_clock_info_output_parameters_v3_1 *)&input;
 -      *clk_freq = le32_to_cpu(output->atom_smu_outputclkfreq.smu_clock_freq_hz) / 10000;
 -
 -      return 0;
 -}
 -
  int smu_v13_0_get_vbios_bootup_values(struct smu_context *smu)
  {
        int ret, index;
        struct atom_firmware_info_v3_4 *v_3_4;
        struct atom_firmware_info_v3_3 *v_3_3;
        struct atom_firmware_info_v3_1 *v_3_1;
 +      struct atom_smu_info_v3_6 *smu_info_v3_6;
 +      struct atom_smu_info_v4_0 *smu_info_v4_0;
  
        index = get_index_into_master_table(atom_master_list_of_data_tables_v2_1,
                                            firmwareinfo);
        smu->smu_table.boot_values.format_revision = header->format_revision;
        smu->smu_table.boot_values.content_revision = header->content_revision;
  
 -      smu_v13_0_atom_get_smu_clockinfo(smu->adev,
 -                                       (uint8_t)SMU11_SYSPLL0_SOCCLK_ID,
 -                                       (uint8_t)0,
 -                                       &smu->smu_table.boot_values.socclk);
 -
 -      smu_v13_0_atom_get_smu_clockinfo(smu->adev,
 -                                       (uint8_t)SMU11_SYSPLL0_DCEFCLK_ID,
 -                                       (uint8_t)0,
 -                                       &smu->smu_table.boot_values.dcefclk);
 -
 -      smu_v13_0_atom_get_smu_clockinfo(smu->adev,
 -                                       (uint8_t)SMU11_SYSPLL0_ECLK_ID,
 -                                       (uint8_t)0,
 -                                       &smu->smu_table.boot_values.eclk);
 -
 -      smu_v13_0_atom_get_smu_clockinfo(smu->adev,
 -                                       (uint8_t)SMU11_SYSPLL0_VCLK_ID,
 -                                       (uint8_t)0,
 -                                       &smu->smu_table.boot_values.vclk);
 -
 -      smu_v13_0_atom_get_smu_clockinfo(smu->adev,
 -                                       (uint8_t)SMU11_SYSPLL0_DCLK_ID,
 -                                       (uint8_t)0,
 -                                       &smu->smu_table.boot_values.dclk);
 -
 -      if ((smu->smu_table.boot_values.format_revision == 3) &&
 -          (smu->smu_table.boot_values.content_revision >= 2))
 -              smu_v13_0_atom_get_smu_clockinfo(smu->adev,
 -                                               (uint8_t)SMU11_SYSPLL1_0_FCLK_ID,
 -                                               (uint8_t)SMU11_SYSPLL1_2_ID,
 -                                               &smu->smu_table.boot_values.fclk);
 +      index = get_index_into_master_table(atom_master_list_of_data_tables_v2_1,
 +                                          smu_info);
 +      if (!amdgpu_atombios_get_data_table(smu->adev, index, &size, &frev, &crev,
 +                                          (uint8_t **)&header)) {
 +
 +              if ((frev == 3) && (crev == 6)) {
 +                      smu_info_v3_6 = (struct atom_smu_info_v3_6 *)header;
 +
 +                      smu->smu_table.boot_values.socclk = smu_info_v3_6->bootup_socclk_10khz;
 +                      smu->smu_table.boot_values.vclk = smu_info_v3_6->bootup_vclk_10khz;
 +                      smu->smu_table.boot_values.dclk = smu_info_v3_6->bootup_dclk_10khz;
 +                      smu->smu_table.boot_values.fclk = smu_info_v3_6->bootup_fclk_10khz;
 +              } else if ((frev == 4) && (crev == 0)) {
 +                      smu_info_v4_0 = (struct atom_smu_info_v4_0 *)header;
 +
 +                      smu->smu_table.boot_values.socclk = smu_info_v4_0->bootup_socclk_10khz;
 +                      smu->smu_table.boot_values.dcefclk = smu_info_v4_0->bootup_dcefclk_10khz;
 +                      smu->smu_table.boot_values.vclk = smu_info_v4_0->bootup_vclk0_10khz;
 +                      smu->smu_table.boot_values.dclk = smu_info_v4_0->bootup_dclk0_10khz;
 +                      smu->smu_table.boot_values.fclk = smu_info_v4_0->bootup_fclk_10khz;
 +              } else {
 +                      dev_warn(smu->adev->dev, "Unexpected and unhandled version: %d.%d\n",
 +                                              (uint32_t)frev, (uint32_t)crev);
 +              }
 +      }
  
        return 0;
  }
@@@ -827,6 -719,7 +827,6 @@@ int smu_v13_0_init_display_count(struc
        return ret;
  }
  
 -
  int smu_v13_0_set_allowed_mask(struct smu_context *smu)
  {
        struct smu_feature *feature = &smu->smu_feature;
            feature->feature_num < 64)
                return -EINVAL;
  
-       bitmap_copy((unsigned long *)feature_mask, feature->allowed, 64);
+       bitmap_to_arr32(feature_mask, feature->allowed, 64);
  
        ret = smu_cmn_send_smc_msg_with_param(smu, SMU_MSG_SetAllowedFeaturesMaskHigh,
                                              feature_mask[1], NULL);
@@@ -856,12 -749,9 +856,12 @@@ int smu_v13_0_gfx_off_control(struct sm
        struct amdgpu_device *adev = smu->adev;
  
        switch (adev->ip_versions[MP1_HWIP][0]) {
 +      case IP_VERSION(13, 0, 0):
        case IP_VERSION(13, 0, 1):
        case IP_VERSION(13, 0, 3):
 +      case IP_VERSION(13, 0, 4):
        case IP_VERSION(13, 0, 5):
 +      case IP_VERSION(13, 0, 7):
        case IP_VERSION(13, 0, 8):
                if (!(adev->pm.pp_feature & PP_GFXOFF_MASK))
                        return 0;
@@@ -1191,14 -1081,15 +1191,14 @@@ smu_v13_0_set_fan_static_mode(struct sm
        return 0;
  }
  
 -      int
 -smu_v13_0_set_fan_speed_percent(struct smu_context *smu, uint32_t speed)
 +int smu_v13_0_set_fan_speed_pwm(struct smu_context *smu,
 +                              uint32_t speed)
  {
        struct amdgpu_device *adev = smu->adev;
        uint32_t duty100, duty;
        uint64_t tmp64;
  
 -      if (speed > 100)
 -              speed = 100;
 +      speed = MIN(speed, 255);
  
        if (smu_v13_0_auto_fan_control(smu, 0))
                return -EINVAL;
                return -EINVAL;
  
        tmp64 = (uint64_t)speed * duty100;
 -      do_div(tmp64, 100);
 +      do_div(tmp64, 255);
        duty = (uint32_t)tmp64;
  
        WREG32_SOC15(THM, 0, regCG_FDO_CTRL0,
@@@ -1227,7 -1118,7 +1227,7 @@@ smu_v13_0_set_fan_control_mode(struct s
  
        switch (mode) {
        case AMD_FAN_CTRL_NONE:
 -              ret = smu_v13_0_set_fan_speed_percent(smu, 100);
 +              ret = smu_v13_0_set_fan_speed_pwm(smu, 255);
                break;
        case AMD_FAN_CTRL_MANUAL:
                ret = smu_v13_0_auto_fan_control(smu, 0);
@@@ -1251,8 -1142,8 +1251,8 @@@ int smu_v13_0_set_fan_speed_rpm(struct 
                                uint32_t speed)
  {
        struct amdgpu_device *adev = smu->adev;
 -      int ret;
        uint32_t tach_period, crystal_clock_freq;
 +      int ret;
  
        if (!speed)
                return -EINVAL;
                                   CG_TACH_CTRL, TARGET_PERIOD,
                                   tach_period));
  
 -      ret = smu_v13_0_set_fan_static_mode(smu, FDO_PWM_MODE_STATIC_RPM);
 -
 -      return ret;
 +      return smu_v13_0_set_fan_static_mode(smu, FDO_PWM_MODE_STATIC_RPM);
  }
  
  int smu_v13_0_set_xgmi_pstate(struct smu_context *smu,
@@@ -1543,6 -1436,19 +1543,6 @@@ int smu_v13_0_wait_for_event(struct smu
        return ret;
  }
  
 -int smu_v13_0_mode2_reset(struct smu_context *smu)
 -{
 -      int ret;
 -
 -      ret = smu_cmn_send_smc_msg_with_param(smu, SMU_MSG_GfxDeviceDriverReset,
 -                      SMU_RESET_MODE_2, NULL);
 -      /*TODO: mode2 reset wait time should be shorter, add ASIC specific func if required */
 -      if (!ret)
 -              msleep(SMU13_MODE1_RESET_WAIT_TIME_IN_MS);
 -
 -      return ret;
 -}
 -
  int smu_v13_0_get_dpm_ultimate_freq(struct smu_context *smu, enum smu_clk_type clk_type,
                                    uint32_t *min, uint32_t *max)
  {
        param = (clk_id & 0xffff) << 16;
  
        if (max) {
 -              ret = smu_cmn_send_smc_msg_with_param(smu, SMU_MSG_GetMaxDpmFreq, param, max);
 +              if (smu->adev->pm.ac_power)
 +                      ret = smu_cmn_send_smc_msg_with_param(smu,
 +                                                            SMU_MSG_GetMaxDpmFreq,
 +                                                            param,
 +                                                            max);
 +              else
 +                      ret = smu_cmn_send_smc_msg_with_param(smu,
 +                                                            SMU_MSG_GetDcModeMaxDpmFreq,
 +                                                            param,
 +                                                            max);
                if (ret)
                        goto failed;
        }
@@@ -1698,39 -1595,24 +1698,39 @@@ int smu_v13_0_set_performance_level(str
                &dpm_context->dpm_tables.uclk_table;
        struct smu_13_0_dpm_table *soc_table =
                &dpm_context->dpm_tables.soc_table;
 +      struct smu_13_0_dpm_table *vclk_table =
 +              &dpm_context->dpm_tables.vclk_table;
 +      struct smu_13_0_dpm_table *dclk_table =
 +              &dpm_context->dpm_tables.dclk_table;
 +      struct smu_13_0_dpm_table *fclk_table =
 +              &dpm_context->dpm_tables.fclk_table;
        struct smu_umd_pstate_table *pstate_table =
                &smu->pstate_table;
        struct amdgpu_device *adev = smu->adev;
        uint32_t sclk_min = 0, sclk_max = 0;
        uint32_t mclk_min = 0, mclk_max = 0;
        uint32_t socclk_min = 0, socclk_max = 0;
 -      int ret = 0;
 +      uint32_t vclk_min = 0, vclk_max = 0;
 +      uint32_t dclk_min = 0, dclk_max = 0;
 +      uint32_t fclk_min = 0, fclk_max = 0;
 +      int ret = 0, i;
  
        switch (level) {
        case AMD_DPM_FORCED_LEVEL_HIGH:
                sclk_min = sclk_max = gfx_table->max;
                mclk_min = mclk_max = mem_table->max;
                socclk_min = socclk_max = soc_table->max;
 +              vclk_min = vclk_max = vclk_table->max;
 +              dclk_min = dclk_max = dclk_table->max;
 +              fclk_min = fclk_max = fclk_table->max;
                break;
        case AMD_DPM_FORCED_LEVEL_LOW:
                sclk_min = sclk_max = gfx_table->min;
                mclk_min = mclk_max = mem_table->min;
                socclk_min = socclk_max = soc_table->min;
 +              vclk_min = vclk_max = vclk_table->min;
 +              dclk_min = dclk_max = dclk_table->min;
 +              fclk_min = fclk_max = fclk_table->min;
                break;
        case AMD_DPM_FORCED_LEVEL_AUTO:
                sclk_min = gfx_table->min;
                mclk_max = mem_table->max;
                socclk_min = soc_table->min;
                socclk_max = soc_table->max;
 +              vclk_min = vclk_table->min;
 +              vclk_max = vclk_table->max;
 +              dclk_min = dclk_table->min;
 +              dclk_max = dclk_table->max;
 +              fclk_min = fclk_table->min;
 +              fclk_max = fclk_table->max;
                break;
        case AMD_DPM_FORCED_LEVEL_PROFILE_STANDARD:
                sclk_min = sclk_max = pstate_table->gfxclk_pstate.standard;
                mclk_min = mclk_max = pstate_table->uclk_pstate.standard;
                socclk_min = socclk_max = pstate_table->socclk_pstate.standard;
 +              vclk_min = vclk_max = pstate_table->vclk_pstate.standard;
 +              dclk_min = dclk_max = pstate_table->dclk_pstate.standard;
 +              fclk_min = fclk_max = pstate_table->fclk_pstate.standard;
                break;
        case AMD_DPM_FORCED_LEVEL_PROFILE_MIN_SCLK:
                sclk_min = sclk_max = pstate_table->gfxclk_pstate.min;
                sclk_min = sclk_max = pstate_table->gfxclk_pstate.peak;
                mclk_min = mclk_max = pstate_table->uclk_pstate.peak;
                socclk_min = socclk_max = pstate_table->socclk_pstate.peak;
 +              vclk_min = vclk_max = pstate_table->vclk_pstate.peak;
 +              dclk_min = dclk_max = pstate_table->dclk_pstate.peak;
 +              fclk_min = fclk_max = pstate_table->fclk_pstate.peak;
                break;
        case AMD_DPM_FORCED_LEVEL_MANUAL:
        case AMD_DPM_FORCED_LEVEL_PROFILE_EXIT:
                return -EINVAL;
        }
  
 -      mclk_min = mclk_max = 0;
 -      socclk_min = socclk_max = 0;
 +      /*
 +       * Unset those settings for SMU 13.0.2. As soft limits settings
 +       * for those clock domains are not supported.
 +       */
 +      if (smu->adev->ip_versions[MP1_HWIP][0] == IP_VERSION(13, 0, 2)) {
 +              mclk_min = mclk_max = 0;
 +              socclk_min = socclk_max = 0;
 +              vclk_min = vclk_max = 0;
 +              dclk_min = dclk_max = 0;
 +              fclk_min = fclk_max = 0;
 +      }
  
        if (sclk_min && sclk_max) {
                ret = smu_v13_0_set_soft_freq_limited_range(smu,
                pstate_table->socclk_pstate.curr.max = socclk_max;
        }
  
 +      if (vclk_min && vclk_max) {
 +              for (i = 0; i < adev->vcn.num_vcn_inst; i++) {
 +                      if (adev->vcn.harvest_config & (1 << i))
 +                              continue;
 +                      ret = smu_v13_0_set_soft_freq_limited_range(smu,
 +                                                                  i ? SMU_VCLK1 : SMU_VCLK,
 +                                                                  vclk_min,
 +                                                                  vclk_max);
 +                      if (ret)
 +                              return ret;
 +              }
 +              pstate_table->vclk_pstate.curr.min = vclk_min;
 +              pstate_table->vclk_pstate.curr.max = vclk_max;
 +      }
 +
 +      if (dclk_min && dclk_max) {
 +              for (i = 0; i < adev->vcn.num_vcn_inst; i++) {
 +                      if (adev->vcn.harvest_config & (1 << i))
 +                              continue;
 +                      ret = smu_v13_0_set_soft_freq_limited_range(smu,
 +                                                                  i ? SMU_DCLK1 : SMU_DCLK,
 +                                                                  dclk_min,
 +                                                                  dclk_max);
 +                      if (ret)
 +                              return ret;
 +              }
 +              pstate_table->dclk_pstate.curr.min = dclk_min;
 +              pstate_table->dclk_pstate.curr.max = dclk_max;
 +      }
 +
 +      if (fclk_min && fclk_max) {
 +              ret = smu_v13_0_set_soft_freq_limited_range(smu,
 +                                                          SMU_FCLK,
 +                                                          fclk_min,
 +                                                          fclk_max);
 +              if (ret)
 +                      return ret;
 +
 +              pstate_table->fclk_pstate.curr.min = fclk_min;
 +              pstate_table->fclk_pstate.curr.max = fclk_max;
 +      }
 +
        return ret;
  }
  
@@@ -1886,10 -1705,10 +1886,10 @@@ int smu_v13_0_set_power_source(struct s
                                               NULL);
  }
  
 -int smu_v13_0_get_dpm_freq_by_index(struct smu_context *smu,
 -                                  enum smu_clk_type clk_type,
 -                                  uint16_t level,
 -                                  uint32_t *value)
 +static int smu_v13_0_get_dpm_freq_by_index(struct smu_context *smu,
 +                                         enum smu_clk_type clk_type,
 +                                         uint16_t level,
 +                                         uint32_t *value)
  {
        int ret = 0, clk_id = 0;
        uint32_t param;
        if (ret)
                return ret;
  
 -      /*
 -       * BIT31:  0 - Fine grained DPM, 1 - Dicrete DPM
 -       * now, we un-support it
 -       */
        *value = *value & 0x7fffffff;
  
        return ret;
  }
  
 -int smu_v13_0_get_dpm_level_count(struct smu_context *smu,
 -                                enum smu_clk_type clk_type,
 -                                uint32_t *value)
 +static int smu_v13_0_get_dpm_level_count(struct smu_context *smu,
 +                                       enum smu_clk_type clk_type,
 +                                       uint32_t *value)
  {
        int ret;
  
        ret = smu_v13_0_get_dpm_freq_by_index(smu, clk_type, 0xff, value);
 -      /* FW returns 0 based max level, increment by one */
 -      if (!ret && value)
 +      /* SMU v13.0.2 FW returns 0 based max level, increment by one for it */
 +      if((smu->adev->ip_versions[MP1_HWIP][0] == IP_VERSION(13, 0, 2)) && (!ret && value))
                ++(*value);
  
        return ret;
  }
  
 +static int smu_v13_0_get_fine_grained_status(struct smu_context *smu,
 +                                           enum smu_clk_type clk_type,
 +                                           bool *is_fine_grained_dpm)
 +{
 +      int ret = 0, clk_id = 0;
 +      uint32_t param;
 +      uint32_t value;
 +
 +      if (!is_fine_grained_dpm)
 +              return -EINVAL;
 +
 +      if (!smu_cmn_clk_dpm_is_enabled(smu, clk_type))
 +              return 0;
 +
 +      clk_id = smu_cmn_to_asic_specific_index(smu,
 +                                              CMN2ASIC_MAPPING_CLK,
 +                                              clk_type);
 +      if (clk_id < 0)
 +              return clk_id;
 +
 +      param = (uint32_t)(((clk_id & 0xffff) << 16) | 0xff);
 +
 +      ret = smu_cmn_send_smc_msg_with_param(smu,
 +                                            SMU_MSG_GetDpmFreqByIndex,
 +                                            param,
 +                                            &value);
 +      if (ret)
 +              return ret;
 +
 +      /*
 +       * BIT31:  1 - Fine grained DPM, 0 - Dicrete DPM
 +       * now, we un-support it
 +       */
 +      *is_fine_grained_dpm = value & 0x80000000;
 +
 +      return 0;
 +}
 +
  int smu_v13_0_set_single_dpm_table(struct smu_context *smu,
                                   enum smu_clk_type clk_type,
                                   struct smu_13_0_dpm_table *single_dpm_table)
                return ret;
        }
  
 +      if (smu->adev->ip_versions[MP1_HWIP][0] != IP_VERSION(13, 0, 2)) {
 +              ret = smu_v13_0_get_fine_grained_status(smu,
 +                                                      clk_type,
 +                                                      &single_dpm_table->is_fine_grained);
 +              if (ret) {
 +                      dev_err(smu->adev->dev, "[%s] failed to get fine grained status!\n", __func__);
 +                      return ret;
 +              }
 +      }
 +
        for (i = 0; i < single_dpm_table->count; i++) {
                ret = smu_v13_0_get_dpm_freq_by_index(smu,
                                                      clk_type,
@@@ -2099,290 -1874,3 +2099,290 @@@ int smu_v13_0_get_current_pcie_link_spe
        return link_speed[speed_level];
  }
  
 +int smu_v13_0_set_vcn_enable(struct smu_context *smu,
 +                           bool enable)
 +{
 +      struct amdgpu_device *adev = smu->adev;
 +      int i, ret = 0;
 +
 +      for (i = 0; i < adev->vcn.num_vcn_inst; i++) {
 +              if (adev->vcn.harvest_config & (1 << i))
 +                      continue;
 +
 +              ret = smu_cmn_send_smc_msg_with_param(smu, enable ?
 +                                                    SMU_MSG_PowerUpVcn : SMU_MSG_PowerDownVcn,
 +                                                    i << 16U, NULL);
 +              if (ret)
 +                      return ret;
 +      }
 +
 +      return ret;
 +}
 +
 +int smu_v13_0_set_jpeg_enable(struct smu_context *smu,
 +                            bool enable)
 +{
 +      return smu_cmn_send_smc_msg_with_param(smu, enable ?
 +                                             SMU_MSG_PowerUpJpeg : SMU_MSG_PowerDownJpeg,
 +                                             0, NULL);
 +}
 +
 +int smu_v13_0_run_btc(struct smu_context *smu)
 +{
 +      int res;
 +
 +      res = smu_cmn_send_smc_msg(smu, SMU_MSG_RunDcBtc, NULL);
 +      if (res)
 +              dev_err(smu->adev->dev, "RunDcBtc failed!\n");
 +
 +      return res;
 +}
 +
 +int smu_v13_0_deep_sleep_control(struct smu_context *smu,
 +                               bool enablement)
 +{
 +      struct amdgpu_device *adev = smu->adev;
 +      int ret = 0;
 +
 +      if (smu_cmn_feature_is_supported(smu, SMU_FEATURE_DS_GFXCLK_BIT)) {
 +              ret = smu_cmn_feature_set_enabled(smu, SMU_FEATURE_DS_GFXCLK_BIT, enablement);
 +              if (ret) {
 +                      dev_err(adev->dev, "Failed to %s GFXCLK DS!\n", enablement ? "enable" : "disable");
 +                      return ret;
 +              }
 +      }
 +
 +      if (smu_cmn_feature_is_supported(smu, SMU_FEATURE_DS_UCLK_BIT)) {
 +              ret = smu_cmn_feature_set_enabled(smu, SMU_FEATURE_DS_UCLK_BIT, enablement);
 +              if (ret) {
 +                      dev_err(adev->dev, "Failed to %s UCLK DS!\n", enablement ? "enable" : "disable");
 +                      return ret;
 +              }
 +      }
 +
 +      if (smu_cmn_feature_is_supported(smu, SMU_FEATURE_DS_FCLK_BIT)) {
 +              ret = smu_cmn_feature_set_enabled(smu, SMU_FEATURE_DS_FCLK_BIT, enablement);
 +              if (ret) {
 +                      dev_err(adev->dev, "Failed to %s FCLK DS!\n", enablement ? "enable" : "disable");
 +                      return ret;
 +              }
 +      }
 +
 +      if (smu_cmn_feature_is_supported(smu, SMU_FEATURE_DS_SOCCLK_BIT)) {
 +              ret = smu_cmn_feature_set_enabled(smu, SMU_FEATURE_DS_SOCCLK_BIT, enablement);
 +              if (ret) {
 +                      dev_err(adev->dev, "Failed to %s SOCCLK DS!\n", enablement ? "enable" : "disable");
 +                      return ret;
 +              }
 +      }
 +
 +      if (smu_cmn_feature_is_supported(smu, SMU_FEATURE_DS_LCLK_BIT)) {
 +              ret = smu_cmn_feature_set_enabled(smu, SMU_FEATURE_DS_LCLK_BIT, enablement);
 +              if (ret) {
 +                      dev_err(adev->dev, "Failed to %s LCLK DS!\n", enablement ? "enable" : "disable");
 +                      return ret;
 +              }
 +      }
 +
 +      if (smu_cmn_feature_is_supported(smu, SMU_FEATURE_DS_VCN_BIT)) {
 +              ret = smu_cmn_feature_set_enabled(smu, SMU_FEATURE_DS_VCN_BIT, enablement);
 +              if (ret) {
 +                      dev_err(adev->dev, "Failed to %s VCN DS!\n", enablement ? "enable" : "disable");
 +                      return ret;
 +              }
 +      }
 +
 +      if (smu_cmn_feature_is_supported(smu, SMU_FEATURE_DS_MP0CLK_BIT)) {
 +              ret = smu_cmn_feature_set_enabled(smu, SMU_FEATURE_DS_MP0CLK_BIT, enablement);
 +              if (ret) {
 +                      dev_err(adev->dev, "Failed to %s MP0/MPIOCLK DS!\n", enablement ? "enable" : "disable");
 +                      return ret;
 +              }
 +      }
 +
 +      if (smu_cmn_feature_is_supported(smu, SMU_FEATURE_DS_MP1CLK_BIT)) {
 +              ret = smu_cmn_feature_set_enabled(smu, SMU_FEATURE_DS_MP1CLK_BIT, enablement);
 +              if (ret) {
 +                      dev_err(adev->dev, "Failed to %s MP1CLK DS!\n", enablement ? "enable" : "disable");
 +                      return ret;
 +              }
 +      }
 +
 +      return ret;
 +}
 +
 +int smu_v13_0_gfx_ulv_control(struct smu_context *smu,
 +                            bool enablement)
 +{
 +      int ret = 0;
 +
 +      if (smu_cmn_feature_is_supported(smu, SMU_FEATURE_GFX_ULV_BIT))
 +              ret = smu_cmn_feature_set_enabled(smu, SMU_FEATURE_GFX_ULV_BIT, enablement);
 +
 +      return ret;
 +}
 +
 +bool smu_v13_0_baco_is_support(struct smu_context *smu)
 +{
 +      struct smu_baco_context *smu_baco = &smu->smu_baco;
 +
 +      if (amdgpu_sriov_vf(smu->adev) ||
 +          !smu_baco->platform_support)
 +              return false;
 +
 +      if (smu_cmn_feature_is_supported(smu, SMU_FEATURE_BACO_BIT) &&
 +          !smu_cmn_feature_is_enabled(smu, SMU_FEATURE_BACO_BIT))
 +              return false;
 +
 +      return true;
 +}
 +
 +enum smu_baco_state smu_v13_0_baco_get_state(struct smu_context *smu)
 +{
 +      struct smu_baco_context *smu_baco = &smu->smu_baco;
 +
 +      return smu_baco->state;
 +}
 +
 +int smu_v13_0_baco_set_state(struct smu_context *smu,
 +                           enum smu_baco_state state)
 +{
 +      struct smu_baco_context *smu_baco = &smu->smu_baco;
 +      struct amdgpu_device *adev = smu->adev;
 +      int ret = 0;
 +
 +      if (smu_v13_0_baco_get_state(smu) == state)
 +              return 0;
 +
 +      if (state == SMU_BACO_STATE_ENTER) {
 +              ret = smu_cmn_send_smc_msg_with_param(smu,
 +                                                    SMU_MSG_EnterBaco,
 +                                                    0,
 +                                                    NULL);
 +      } else {
 +              ret = smu_cmn_send_smc_msg(smu,
 +                                         SMU_MSG_ExitBaco,
 +                                         NULL);
 +              if (ret)
 +                      return ret;
 +
 +              /* clear vbios scratch 6 and 7 for coming asic reinit */
 +              WREG32(adev->bios_scratch_reg_offset + 6, 0);
 +              WREG32(adev->bios_scratch_reg_offset + 7, 0);
 +      }
 +
 +      if (!ret)
 +              smu_baco->state = state;
 +
 +      return ret;
 +}
 +
 +int smu_v13_0_baco_enter(struct smu_context *smu)
 +{
 +      int ret = 0;
 +
 +      ret = smu_v13_0_baco_set_state(smu,
 +                                     SMU_BACO_STATE_ENTER);
 +      if (ret)
 +              return ret;
 +
 +      msleep(10);
 +
 +      return ret;
 +}
 +
 +int smu_v13_0_baco_exit(struct smu_context *smu)
 +{
 +      return smu_v13_0_baco_set_state(smu,
 +                                      SMU_BACO_STATE_EXIT);
 +}
 +
 +int smu_v13_0_od_edit_dpm_table(struct smu_context *smu,
 +                              enum PP_OD_DPM_TABLE_COMMAND type,
 +                              long input[], uint32_t size)
 +{
 +      struct smu_dpm_context *smu_dpm = &(smu->smu_dpm);
 +      int ret = 0;
 +
 +      /* Only allowed in manual mode */
 +      if (smu_dpm->dpm_level != AMD_DPM_FORCED_LEVEL_MANUAL)
 +              return -EINVAL;
 +
 +      switch (type) {
 +      case PP_OD_EDIT_SCLK_VDDC_TABLE:
 +              if (size != 2) {
 +                      dev_err(smu->adev->dev, "Input parameter number not correct\n");
 +                      return -EINVAL;
 +              }
 +
 +              if (input[0] == 0) {
 +                      if (input[1] < smu->gfx_default_hard_min_freq) {
 +                              dev_warn(smu->adev->dev,
 +                                       "Fine grain setting minimum sclk (%ld) MHz is less than the minimum allowed (%d) MHz\n",
 +                                       input[1], smu->gfx_default_hard_min_freq);
 +                              return -EINVAL;
 +                      }
 +                      smu->gfx_actual_hard_min_freq = input[1];
 +              } else if (input[0] == 1) {
 +                      if (input[1] > smu->gfx_default_soft_max_freq) {
 +                              dev_warn(smu->adev->dev,
 +                                       "Fine grain setting maximum sclk (%ld) MHz is greater than the maximum allowed (%d) MHz\n",
 +                                       input[1], smu->gfx_default_soft_max_freq);
 +                              return -EINVAL;
 +                      }
 +                      smu->gfx_actual_soft_max_freq = input[1];
 +              } else {
 +                      return -EINVAL;
 +              }
 +              break;
 +      case PP_OD_RESTORE_DEFAULT_TABLE:
 +              if (size != 0) {
 +                      dev_err(smu->adev->dev, "Input parameter number not correct\n");
 +                      return -EINVAL;
 +              }
 +              smu->gfx_actual_hard_min_freq = smu->gfx_default_hard_min_freq;
 +              smu->gfx_actual_soft_max_freq = smu->gfx_default_soft_max_freq;
 +              break;
 +      case PP_OD_COMMIT_DPM_TABLE:
 +              if (size != 0) {
 +                      dev_err(smu->adev->dev, "Input parameter number not correct\n");
 +                      return -EINVAL;
 +              }
 +              if (smu->gfx_actual_hard_min_freq > smu->gfx_actual_soft_max_freq) {
 +                      dev_err(smu->adev->dev,
 +                              "The setting minimum sclk (%d) MHz is greater than the setting maximum sclk (%d) MHz\n",
 +                              smu->gfx_actual_hard_min_freq,
 +                              smu->gfx_actual_soft_max_freq);
 +                      return -EINVAL;
 +              }
 +
 +              ret = smu_cmn_send_smc_msg_with_param(smu, SMU_MSG_SetHardMinGfxClk,
 +                                                    smu->gfx_actual_hard_min_freq,
 +                                                    NULL);
 +              if (ret) {
 +                      dev_err(smu->adev->dev, "Set hard min sclk failed!");
 +                      return ret;
 +              }
 +
 +              ret = smu_cmn_send_smc_msg_with_param(smu, SMU_MSG_SetSoftMaxGfxClk,
 +                                                    smu->gfx_actual_soft_max_freq,
 +                                                    NULL);
 +              if (ret) {
 +                      dev_err(smu->adev->dev, "Set soft max sclk failed!");
 +                      return ret;
 +              }
 +              break;
 +      default:
 +              return -ENOSYS;
 +      }
 +
 +      return ret;
 +}
 +
 +int smu_v13_0_set_default_dpm_tables(struct smu_context *smu)
 +{
 +      struct smu_table_context *smu_table = &smu->smu_table;
 +
 +      return smu_cmn_update_table(smu, SMU_TABLE_DPMCLOCKS, 0,
 +                                  smu_table->clocks_table, false);
 +}
@@@ -148,7 -148,10 +148,7 @@@ static u64 __get_rc6(struct intel_gt *g
        struct drm_i915_private *i915 = gt->i915;
        u64 val;
  
 -      val = intel_rc6_residency_ns(&gt->rc6,
 -                                   IS_VALLEYVIEW(i915) ?
 -                                   VLV_GT_RENDER_RC6 :
 -                                   GEN6_GT_GFX_RC6);
 +      val = intel_rc6_residency_ns(&gt->rc6, GEN6_GT_GFX_RC6);
  
        if (HAS_RC6p(i915))
                val += intel_rc6_residency_ns(&gt->rc6, GEN6_GT_GFX_RC6p);
@@@ -1047,7 -1050,7 +1047,7 @@@ static int i915_pmu_cpu_online(unsigne
        GEM_BUG_ON(!pmu->base.event_init);
  
        /* Select the first online CPU as a designated reader. */
-       if (!cpumask_weight(&i915_pmu_cpumask))
+       if (cpumask_empty(&i915_pmu_cpumask))
                cpumask_set_cpu(cpu, &i915_pmu_cpumask);
  
        return 0;
@@@ -1354,25 -1354,46 +1354,25 @@@ static void b53_phylink_get_caps(struc
        config->legacy_pre_march2020 = false;
  }
  
 -int b53_phylink_mac_link_state(struct dsa_switch *ds, int port,
 -                             struct phylink_link_state *state)
 +static struct phylink_pcs *b53_phylink_mac_select_pcs(struct dsa_switch *ds,
 +                                                    int port,
 +                                                    phy_interface_t interface)
  {
        struct b53_device *dev = ds->priv;
 -      int ret = -EOPNOTSUPP;
  
 -      if ((phy_interface_mode_is_8023z(state->interface) ||
 -           state->interface == PHY_INTERFACE_MODE_SGMII) &&
 -           dev->ops->serdes_link_state)
 -              ret = dev->ops->serdes_link_state(dev, port, state);
 +      if (!dev->ops->phylink_mac_select_pcs)
 +              return NULL;
  
 -      return ret;
 +      return dev->ops->phylink_mac_select_pcs(dev, port, interface);
  }
 -EXPORT_SYMBOL(b53_phylink_mac_link_state);
  
  void b53_phylink_mac_config(struct dsa_switch *ds, int port,
                            unsigned int mode,
                            const struct phylink_link_state *state)
  {
 -      struct b53_device *dev = ds->priv;
 -
 -      if (mode == MLO_AN_PHY || mode == MLO_AN_FIXED)
 -              return;
 -
 -      if ((phy_interface_mode_is_8023z(state->interface) ||
 -           state->interface == PHY_INTERFACE_MODE_SGMII) &&
 -           dev->ops->serdes_config)
 -              dev->ops->serdes_config(dev, port, mode, state);
  }
  EXPORT_SYMBOL(b53_phylink_mac_config);
  
 -void b53_phylink_mac_an_restart(struct dsa_switch *ds, int port)
 -{
 -      struct b53_device *dev = ds->priv;
 -
 -      if (dev->ops->serdes_an_restart)
 -              dev->ops->serdes_an_restart(dev, port);
 -}
 -EXPORT_SYMBOL(b53_phylink_mac_an_restart);
 -
  void b53_phylink_mac_link_down(struct dsa_switch *ds, int port,
                               unsigned int mode,
                               phy_interface_t interface)
@@@ -1603,12 -1624,8 +1603,8 @@@ static int b53_arl_read(struct b53_devi
                return 0;
        }
  
-       if (bitmap_weight(free_bins, dev->num_arl_bins) == 0)
-               return -ENOSPC;
        *idx = find_first_bit(free_bins, dev->num_arl_bins);
-       return -ENOENT;
+       return *idx >= dev->num_arl_bins ? -ENOSPC : -ENOENT;
  }
  
  static int b53_arl_op(struct b53_device *dev, int op, int port,
@@@ -2248,8 -2265,9 +2244,8 @@@ static const struct dsa_switch_ops b53_
        .phy_write              = b53_phy_write16,
        .adjust_link            = b53_adjust_link,
        .phylink_get_caps       = b53_phylink_get_caps,
 -      .phylink_mac_link_state = b53_phylink_mac_link_state,
 +      .phylink_mac_select_pcs = b53_phylink_mac_select_pcs,
        .phylink_mac_config     = b53_phylink_mac_config,
 -      .phylink_mac_an_restart = b53_phylink_mac_an_restart,
        .phylink_mac_link_down  = b53_phylink_mac_link_down,
        .phylink_mac_link_up    = b53_phylink_mac_link_up,
        .port_enable            = b53_enable_port,
@@@ -1517,7 -1517,7 +1517,7 @@@ static int bcm_sysport_init_tx_ring(str
        /* Initialize SW view of the ring */
        spin_lock_init(&ring->lock);
        ring->priv = priv;
 -      netif_tx_napi_add(priv->netdev, &ring->napi, bcm_sysport_tx_poll, 64);
 +      netif_napi_add_tx(priv->netdev, &ring->napi, bcm_sysport_tx_poll);
        ring->index = index;
        ring->size = size;
        ring->clean_index = 0;
@@@ -2180,13 -2180,9 +2180,9 @@@ static int bcm_sysport_rule_set(struct 
        if (nfc->fs.ring_cookie != RX_CLS_FLOW_WAKE)
                return -EOPNOTSUPP;
  
-       /* All filters are already in use, we cannot match more rules */
-       if (bitmap_weight(priv->filters, RXCHK_BRCM_TAG_MAX) ==
-           RXCHK_BRCM_TAG_MAX)
-               return -ENOSPC;
        index = find_first_zero_bit(priv->filters, RXCHK_BRCM_TAG_MAX);
        if (index >= RXCHK_BRCM_TAG_MAX)
+               /* All filters are already in use, we cannot match more rules */
                return -ENOSPC;
  
        /* Location is the classification ID, and index is the position
@@@ -2585,10 -2581,8 +2581,10 @@@ static int bcm_sysport_probe(struct pla
                device_set_wakeup_capable(&pdev->dev, 1);
  
        priv->wol_clk = devm_clk_get_optional(&pdev->dev, "sw_sysportwol");
 -      if (IS_ERR(priv->wol_clk))
 -              return PTR_ERR(priv->wol_clk);
 +      if (IS_ERR(priv->wol_clk)) {
 +              ret = PTR_ERR(priv->wol_clk);
 +              goto err_deregister_fixed_link;
 +      }
  
        /* Set the needed headroom once and for all */
        BUILD_BUG_ON(sizeof(struct bcm_tsb) != 8);
@@@ -1120,7 -1120,7 +1120,7 @@@ static int otx2_cgx_config_loopback(str
        struct msg_req *msg;
        int err;
  
-       if (enable && bitmap_weight(&pf->flow_cfg->dmacflt_bmap,
+       if (enable && !bitmap_empty(&pf->flow_cfg->dmacflt_bmap,
                                    pf->flow_cfg->dmacflt_max_flows))
                netdev_warn(pf->netdev,
                            "CGX/RPM internal loopback might not work as DMAC filters are active\n");
@@@ -1254,7 -1254,6 +1254,7 @@@ static irqreturn_t otx2_cq_intr_handler
        otx2_write64(pf, NIX_LF_CINTX_ENA_W1C(qidx), BIT_ULL(0));
  
        /* Schedule NAPI */
 +      pf->napi_events++;
        napi_schedule_irqoff(&cq_poll->napi);
  
        return IRQ_HANDLED;
@@@ -1268,7 -1267,6 +1268,7 @@@ static void otx2_disable_napi(struct ot
  
        for (qidx = 0; qidx < pf->hw.cint_cnt; qidx++) {
                cq_poll = &qset->napi[qidx];
 +              cancel_work_sync(&cq_poll->dim.work);
                napi_disable(&cq_poll->napi);
                netif_napi_del(&cq_poll->napi);
        }
@@@ -1548,24 -1546,6 +1548,24 @@@ static void otx2_do_set_rx_mode(struct 
        mutex_unlock(&pf->mbox.lock);
  }
  
 +static void otx2_dim_work(struct work_struct *w)
 +{
 +      struct dim_cq_moder cur_moder;
 +      struct otx2_cq_poll *cq_poll;
 +      struct otx2_nic *pfvf;
 +      struct dim *dim;
 +
 +      dim = container_of(w, struct dim, work);
 +      cur_moder = net_dim_get_rx_moderation(dim->mode, dim->profile_ix);
 +      cq_poll = container_of(dim, struct otx2_cq_poll, dim);
 +      pfvf = (struct otx2_nic *)cq_poll->dev;
 +      pfvf->hw.cq_time_wait = (cur_moder.usec > CQ_TIMER_THRESH_MAX) ?
 +              CQ_TIMER_THRESH_MAX : cur_moder.usec;
 +      pfvf->hw.cq_ecount_wait = (cur_moder.pkts > NAPI_POLL_WEIGHT) ?
 +              NAPI_POLL_WEIGHT : cur_moder.pkts;
 +      dim->state = DIM_START_MEASURE;
 +}
 +
  int otx2_open(struct net_device *netdev)
  {
        struct otx2_nic *pf = netdev_priv(netdev);
                        cq_poll->cq_ids[CQ_XDP] = CINT_INVALID_CQ;
  
                cq_poll->dev = (void *)pf;
 +              cq_poll->dim.mode = DIM_CQ_PERIOD_MODE_START_FROM_CQE;
 +              INIT_WORK(&cq_poll->dim.work, otx2_dim_work);
                netif_napi_add(netdev, &cq_poll->napi,
                               otx2_napi_handler, NAPI_POLL_WEIGHT);
                napi_enable(&cq_poll->napi);
@@@ -1740,6 -1718,7 +1740,6 @@@ err_free_cints
        vec = pci_irq_vector(pf->pdev,
                             pf->hw.nix_msixoff + NIX_LF_QINT_VEC_START);
        otx2_write64(pf, NIX_LF_QINTX_ENA_W1C(0), BIT_ULL(0));
 -      synchronize_irq(vec);
        free_irq(vec, pf);
  err_disable_napi:
        otx2_disable_napi(pf);
@@@ -1783,6 -1762,7 +1783,6 @@@ int otx2_stop(struct net_device *netdev
        vec = pci_irq_vector(pf->pdev,
                             pf->hw.nix_msixoff + NIX_LF_QINT_VEC_START);
        otx2_write64(pf, NIX_LF_QINTX_ENA_W1C(0), BIT_ULL(0));
 -      synchronize_irq(vec);
        free_irq(vec, pf);
  
        /* Cleanup CQ NAPI and IRQ */
        kfree(qset->rq);
        kfree(qset->napi);
        /* Do not clear RQ/SQ ringsize settings */
 -      memset((void *)qset + offsetof(struct otx2_qset, sqe_cnt), 0,
 -             sizeof(*qset) - offsetof(struct otx2_qset, sqe_cnt));
 +      memset_startat(qset, 0, sqe_cnt);
        return 0;
  }
  EXPORT_SYMBOL(otx2_stop);
@@@ -2723,7 -2704,7 +2723,7 @@@ static int otx2_probe(struct pci_dev *p
  
        netdev->hw_features |= NETIF_F_LOOPBACK | NETIF_F_RXALL;
  
 -      netif_set_gso_max_segs(netdev, OTX2_MAX_GSO_SEGS);
 +      netif_set_tso_max_segs(netdev, OTX2_MAX_GSO_SEGS);
        netdev->watchdog_timeo = OTX2_TX_TIMEOUT;
  
        netdev->netdev_ops = &otx2_netdev_ops;
diff --combined include/linux/nodemask.h
   * void nodes_shift_right(dst, src, n)        Shift right
   * void nodes_shift_left(dst, src, n) Shift left
   *
-  * int first_node(mask)                       Number lowest set bit, or MAX_NUMNODES
-  * int next_node(node, mask)          Next node past 'node', or MAX_NUMNODES
-  * int next_node_in(node, mask)               Next node past 'node', or wrap to first,
+  * unsigned int first_node(mask)      Number lowest set bit, or MAX_NUMNODES
+  * unsigend int next_node(node, mask) Next node past 'node', or MAX_NUMNODES
+  * unsigned int next_node_in(node, mask) Next node past 'node', or wrap to first,
   *                                    or MAX_NUMNODES
-  * int first_unset_node(mask)         First node not set in mask, or 
+  * unsigned int first_unset_node(mask)        First node not set in mask, or
   *                                    MAX_NUMNODES
   *
   * nodemask_t nodemask_of_node(node)  Return nodemask with bit 'node' set
@@@ -153,7 -153,7 +153,7 @@@ static inline void __nodes_clear(nodema
  
  #define node_test_and_set(node, nodemask) \
                        __node_test_and_set((node), &(nodemask))
- static inline int __node_test_and_set(int node, nodemask_t *addr)
+ static inline bool __node_test_and_set(int node, nodemask_t *addr)
  {
        return test_and_set_bit(node, addr->bits);
  }
@@@ -200,7 -200,7 +200,7 @@@ static inline void __nodes_complement(n
  
  #define nodes_equal(src1, src2) \
                        __nodes_equal(&(src1), &(src2), MAX_NUMNODES)
- static inline int __nodes_equal(const nodemask_t *src1p,
+ static inline bool __nodes_equal(const nodemask_t *src1p,
                                        const nodemask_t *src2p, unsigned int nbits)
  {
        return bitmap_equal(src1p->bits, src2p->bits, nbits);
  
  #define nodes_intersects(src1, src2) \
                        __nodes_intersects(&(src1), &(src2), MAX_NUMNODES)
- static inline int __nodes_intersects(const nodemask_t *src1p,
+ static inline bool __nodes_intersects(const nodemask_t *src1p,
                                        const nodemask_t *src2p, unsigned int nbits)
  {
        return bitmap_intersects(src1p->bits, src2p->bits, nbits);
  
  #define nodes_subset(src1, src2) \
                        __nodes_subset(&(src1), &(src2), MAX_NUMNODES)
- static inline int __nodes_subset(const nodemask_t *src1p,
+ static inline bool __nodes_subset(const nodemask_t *src1p,
                                        const nodemask_t *src2p, unsigned int nbits)
  {
        return bitmap_subset(src1p->bits, src2p->bits, nbits);
  }
  
  #define nodes_empty(src) __nodes_empty(&(src), MAX_NUMNODES)
- static inline int __nodes_empty(const nodemask_t *srcp, unsigned int nbits)
+ static inline bool __nodes_empty(const nodemask_t *srcp, unsigned int nbits)
  {
        return bitmap_empty(srcp->bits, nbits);
  }
  
  #define nodes_full(nodemask) __nodes_full(&(nodemask), MAX_NUMNODES)
- static inline int __nodes_full(const nodemask_t *srcp, unsigned int nbits)
+ static inline bool __nodes_full(const nodemask_t *srcp, unsigned int nbits)
  {
        return bitmap_full(srcp->bits, nbits);
  }
@@@ -260,15 -260,15 +260,15 @@@ static inline void __nodes_shift_left(n
            > MAX_NUMNODES, then the silly min_ts could be dropped. */
  
  #define first_node(src) __first_node(&(src))
- static inline int __first_node(const nodemask_t *srcp)
+ static inline unsigned int __first_node(const nodemask_t *srcp)
  {
-       return min_t(int, MAX_NUMNODES, find_first_bit(srcp->bits, MAX_NUMNODES));
+       return min_t(unsigned int, MAX_NUMNODES, find_first_bit(srcp->bits, MAX_NUMNODES));
  }
  
  #define next_node(n, src) __next_node((n), &(src))
- static inline int __next_node(int n, const nodemask_t *srcp)
+ static inline unsigned int __next_node(int n, const nodemask_t *srcp)
  {
-       return min_t(int,MAX_NUMNODES,find_next_bit(srcp->bits, MAX_NUMNODES, n+1));
+       return min_t(unsigned int, MAX_NUMNODES, find_next_bit(srcp->bits, MAX_NUMNODES, n+1));
  }
  
  /*
   * the first node in src if needed.  Returns MAX_NUMNODES if src is empty.
   */
  #define next_node_in(n, src) __next_node_in((n), &(src))
- int __next_node_in(int node, const nodemask_t *srcp);
unsigned int __next_node_in(int node, const nodemask_t *srcp);
  
  static inline void init_nodemask_of_node(nodemask_t *mask, int node)
  {
  })
  
  #define first_unset_node(mask) __first_unset_node(&(mask))
- static inline int __first_unset_node(const nodemask_t *maskp)
+ static inline unsigned int __first_unset_node(const nodemask_t *maskp)
  {
-       return min_t(int,MAX_NUMNODES,
+       return min_t(unsigned int, MAX_NUMNODES,
                        find_first_zero_bit(maskp->bits, MAX_NUMNODES));
  }
  
@@@ -375,13 -375,14 +375,13 @@@ static inline void __nodes_fold(nodemas
  }
  
  #if MAX_NUMNODES > 1
 -#define for_each_node_mask(node, mask)                        \
 -      for ((node) = first_node(mask);                 \
 -              (node) < MAX_NUMNODES;                  \
 -              (node) = next_node((node), (mask)))
 +#define for_each_node_mask(node, mask)                                    \
 +      for ((node) = first_node(mask);                             \
 +           (node >= 0) && (node) < MAX_NUMNODES;                  \
 +           (node) = next_node((node), (mask)))
  #else /* MAX_NUMNODES == 1 */
 -#define for_each_node_mask(node, mask)                        \
 -      if (!nodes_empty(mask))                         \
 -              for ((node) = 0; (node) < 1; (node)++)
 +#define for_each_node_mask(node, mask)                                  \
 +      for ((node) = 0; (node) < 1 && !nodes_empty(mask); (node)++)
  #endif /* MAX_NUMNODES */
  
  /*
@@@ -435,11 -436,11 +435,11 @@@ static inline int num_node_state(enum n
  
  #define first_online_node     first_node(node_states[N_ONLINE])
  #define first_memory_node     first_node(node_states[N_MEMORY])
- static inline int next_online_node(int nid)
+ static inline unsigned int next_online_node(int nid)
  {
        return next_node(nid, node_states[N_ONLINE]);
  }
- static inline int next_memory_node(int nid)
+ static inline unsigned int next_memory_node(int nid)
  {
        return next_node(nid, node_states[N_MEMORY]);
  }
diff --combined mm/vmstat.c
@@@ -1393,13 -1393,6 +1393,13 @@@ const char * const vmstat_text[] = 
        "ksm_swpin_copy",
  #endif
  #endif
 +#ifdef CONFIG_KSM
 +      "cow_ksm",
 +#endif
 +#ifdef CONFIG_ZSWAP
 +      "zswpin",
 +      "zswpout",
 +#endif
  #ifdef CONFIG_X86
        "direct_map_level2_splits",
        "direct_map_level3_splits",
@@@ -2049,7 -2042,7 +2049,7 @@@ static void __init init_cpu_node_state(
        int node;
  
        for_each_online_node(node) {
-               if (cpumask_weight(cpumask_of_node(node)) > 0)
+               if (!cpumask_empty(cpumask_of_node(node)))
                        node_set_state(node, N_CPU);
        }
  }
@@@ -2081,7 -2074,7 +2081,7 @@@ static int vmstat_cpu_dead(unsigned in
  
        refresh_zone_stat_thresholds();
        node_cpus = cpumask_of_node(node);
-       if (cpumask_weight(node_cpus) > 0)
+       if (!cpumask_empty(node_cpus))
                return 0;
  
        node_clear_state(node, N_CPU);
@@@ -2118,7 -2111,9 +2118,7 @@@ void __init init_mm_internals(void
  
        start_shepherd_timer();
  #endif
 -#if defined(CONFIG_MIGRATION) && defined(CONFIG_HOTPLUG_CPU)
        migrate_on_reclaim_init();
 -#endif
  #ifdef CONFIG_PROC_FS
        proc_create_seq("buddyinfo", 0444, NULL, &fragmentation_op);
        proc_create_seq("pagetypeinfo", 0400, NULL, &pagetypeinfo_op);