diff options
author | 2021-07-25 13:25:27 -0400 | |
---|---|---|
committer | 2021-07-25 13:25:27 -0400 | |
commit | 361b0a55c6e9c46bd6ef1a7d7742d31354b84cb7 (patch) | |
tree | 20c2ac8bb63a2f3200734c5fd7e538db5cf88dd8 | |
parent | Linux patch 5.13.4 (diff) | |
download | linux-patches-361b0a55c6e9c46bd6ef1a7d7742d31354b84cb7.tar.gz linux-patches-361b0a55c6e9c46bd6ef1a7d7742d31354b84cb7.tar.bz2 linux-patches-361b0a55c6e9c46bd6ef1a7d7742d31354b84cb7.zip |
Linux patch 5.13.55.13-7
Signed-off-by: Mike Pagano <mpagano@gentoo.org>
-rw-r--r-- | 0000_README | 4 | ||||
-rw-r--r-- | 1004_linux-5.13.5.patch | 5954 |
2 files changed, 5958 insertions, 0 deletions
diff --git a/0000_README b/0000_README index 1873ca76..4c49407e 100644 --- a/0000_README +++ b/0000_README @@ -59,6 +59,10 @@ Patch: 1003_linux-5.13.4.patch From: http://www.kernel.org Desc: Linux 5.13.4 +Patch: 1004_linux-5.13.5.patch +From: http://www.kernel.org +Desc: Linux 5.13.5 + Patch: 1500_XATTR_USER_PREFIX.patch From: https://bugs.gentoo.org/show_bug.cgi?id=470644 Desc: Support for namespace user.pax.* on tmpfs. diff --git a/1004_linux-5.13.5.patch b/1004_linux-5.13.5.patch new file mode 100644 index 00000000..2d987377 --- /dev/null +++ b/1004_linux-5.13.5.patch @@ -0,0 +1,5954 @@ +diff --git a/Makefile b/Makefile +index 975acb16046d2..41be12f806e0d 100644 +--- a/Makefile ++++ b/Makefile +@@ -1,7 +1,7 @@ + # SPDX-License-Identifier: GPL-2.0 + VERSION = 5 + PATCHLEVEL = 13 +-SUBLEVEL = 4 ++SUBLEVEL = 5 + EXTRAVERSION = + NAME = Opossums on Parade + +@@ -721,11 +721,12 @@ $(KCONFIG_CONFIG): + # This exploits the 'multi-target pattern rule' trick. + # The syncconfig should be executed only once to make all the targets. + # (Note: use the grouped target '&:' when we bump to GNU Make 4.3) +-quiet_cmd_syncconfig = SYNC $@ +- cmd_syncconfig = $(MAKE) -f $(srctree)/Makefile syncconfig +- ++# ++# Do not use $(call cmd,...) here. That would suppress prompts from syncconfig, ++# so you cannot notice that Kconfig is waiting for the user input. + %/config/auto.conf %/config/auto.conf.cmd %/generated/autoconf.h: $(KCONFIG_CONFIG) +- +$(call cmd,syncconfig) ++ $(Q)$(kecho) " SYNC $@" ++ $(Q)$(MAKE) -f $(srctree)/Makefile syncconfig + else # !may-sync-config + # External modules and some install targets need include/generated/autoconf.h + # and include/config/auto.conf but do not care if they are up-to-date. +diff --git a/arch/arm/boot/dts/am335x-baltos.dtsi b/arch/arm/boot/dts/am335x-baltos.dtsi +index 3ea2861803825..1103a2cb836fb 100644 +--- a/arch/arm/boot/dts/am335x-baltos.dtsi ++++ b/arch/arm/boot/dts/am335x-baltos.dtsi +@@ -393,10 +393,10 @@ + status = "okay"; + }; + +-&gpio0 { ++&gpio0_target { + ti,no-reset-on-init; + }; + +-&gpio3 { ++&gpio3_target { + ti,no-reset-on-init; + }; +diff --git a/arch/arm/boot/dts/am335x-evmsk.dts b/arch/arm/boot/dts/am335x-evmsk.dts +index d5f8d5e2eb5d2..45bf0273ecd85 100644 +--- a/arch/arm/boot/dts/am335x-evmsk.dts ++++ b/arch/arm/boot/dts/am335x-evmsk.dts +@@ -646,7 +646,7 @@ + status = "okay"; + }; + +-&gpio0 { ++&gpio0_target { + ti,no-reset-on-init; + }; + +diff --git a/arch/arm/boot/dts/am335x-moxa-uc-2100-common.dtsi b/arch/arm/boot/dts/am335x-moxa-uc-2100-common.dtsi +index 4e90f9c23d2e5..8121a199607cc 100644 +--- a/arch/arm/boot/dts/am335x-moxa-uc-2100-common.dtsi ++++ b/arch/arm/boot/dts/am335x-moxa-uc-2100-common.dtsi +@@ -150,7 +150,7 @@ + status = "okay"; + }; + +-&gpio0 { ++&gpio0_target { + ti,no-reset-on-init; + }; + +diff --git a/arch/arm/boot/dts/am335x-moxa-uc-8100-common.dtsi b/arch/arm/boot/dts/am335x-moxa-uc-8100-common.dtsi +index 98d8ed4ad9677..39e5d2ce600a1 100644 +--- a/arch/arm/boot/dts/am335x-moxa-uc-8100-common.dtsi ++++ b/arch/arm/boot/dts/am335x-moxa-uc-8100-common.dtsi +@@ -353,7 +353,7 @@ + status = "okay"; + }; + +-&gpio0 { ++&gpio0_target { + ti,no-reset-on-init; + }; + +diff --git a/arch/arm/boot/dts/am33xx-l4.dtsi b/arch/arm/boot/dts/am33xx-l4.dtsi +index 039a9ab4c7eaa..dcce5e3e001eb 100644 +--- a/arch/arm/boot/dts/am33xx-l4.dtsi ++++ b/arch/arm/boot/dts/am33xx-l4.dtsi +@@ -1789,7 +1789,7 @@ + }; + }; + +- target-module@ae000 { /* 0x481ae000, ap 56 3a.0 */ ++ gpio3_target: target-module@ae000 { /* 0x481ae000, ap 56 3a.0 */ + compatible = "ti,sysc-omap2", "ti,sysc"; + reg = <0xae000 0x4>, + <0xae010 0x4>, +diff --git a/arch/arm/boot/dts/am437x-gp-evm.dts b/arch/arm/boot/dts/am437x-gp-evm.dts +index 6e4d05d649e98..033b984ff637d 100644 +--- a/arch/arm/boot/dts/am437x-gp-evm.dts ++++ b/arch/arm/boot/dts/am437x-gp-evm.dts +@@ -813,11 +813,14 @@ + status = "okay"; + }; + ++&gpio5_target { ++ ti,no-reset-on-init; ++}; ++ + &gpio5 { + pinctrl-names = "default"; + pinctrl-0 = <&display_mux_pins>; + status = "okay"; +- ti,no-reset-on-init; + + p8 { + /* +diff --git a/arch/arm/boot/dts/am437x-l4.dtsi b/arch/arm/boot/dts/am437x-l4.dtsi +index e217ffc097705..a6f19ae7d3e6b 100644 +--- a/arch/arm/boot/dts/am437x-l4.dtsi ++++ b/arch/arm/boot/dts/am437x-l4.dtsi +@@ -2070,7 +2070,7 @@ + }; + }; + +- target-module@22000 { /* 0x48322000, ap 116 64.0 */ ++ gpio5_target: target-module@22000 { /* 0x48322000, ap 116 64.0 */ + compatible = "ti,sysc-omap2", "ti,sysc"; + reg = <0x22000 0x4>, + <0x22010 0x4>, +diff --git a/arch/arm/boot/dts/am57xx-cl-som-am57x.dts b/arch/arm/boot/dts/am57xx-cl-som-am57x.dts +index 0d5fe2bfb683a..aed81568a297d 100644 +--- a/arch/arm/boot/dts/am57xx-cl-som-am57x.dts ++++ b/arch/arm/boot/dts/am57xx-cl-som-am57x.dts +@@ -454,20 +454,20 @@ + + &mailbox5 { + status = "okay"; +- mbox_ipu1_ipc3x: mbox_ipu1_ipc3x { ++ mbox_ipu1_ipc3x: mbox-ipu1-ipc3x { + status = "okay"; + }; +- mbox_dsp1_ipc3x: mbox_dsp1_ipc3x { ++ mbox_dsp1_ipc3x: mbox-dsp1-ipc3x { + status = "okay"; + }; + }; + + &mailbox6 { + status = "okay"; +- mbox_ipu2_ipc3x: mbox_ipu2_ipc3x { ++ mbox_ipu2_ipc3x: mbox-ipu2-ipc3x { + status = "okay"; + }; +- mbox_dsp2_ipc3x: mbox_dsp2_ipc3x { ++ mbox_dsp2_ipc3x: mbox-dsp2-ipc3x { + status = "okay"; + }; + }; +@@ -610,12 +610,11 @@ + >; + }; + +-&gpio3 { +- status = "okay"; ++&gpio3_target { + ti,no-reset-on-init; + }; + +-&gpio2 { ++&gpio2_target { + status = "okay"; + ti,no-reset-on-init; + }; +diff --git a/arch/arm/boot/dts/aspeed-bmc-ibm-everest.dts b/arch/arm/boot/dts/aspeed-bmc-ibm-everest.dts +index 3295c8c7c05c8..c619047f6bb1e 100644 +--- a/arch/arm/boot/dts/aspeed-bmc-ibm-everest.dts ++++ b/arch/arm/boot/dts/aspeed-bmc-ibm-everest.dts +@@ -353,10 +353,47 @@ + + &i2c1 { + status = "okay"; ++}; ++ ++&i2c2 { ++ status = "okay"; ++}; + +- pca2: pca9552@61 { ++&i2c3 { ++ status = "okay"; ++ ++ eeprom@54 { ++ compatible = "atmel,24c128"; ++ reg = <0x54>; ++ }; ++ ++ power-supply@68 { ++ compatible = "ibm,cffps"; ++ reg = <0x68>; ++ }; ++ ++ power-supply@69 { ++ compatible = "ibm,cffps"; ++ reg = <0x69>; ++ }; ++ ++ power-supply@6a { ++ compatible = "ibm,cffps"; ++ reg = <0x6a>; ++ }; ++ ++ power-supply@6b { ++ compatible = "ibm,cffps"; ++ reg = <0x6b>; ++ }; ++}; ++ ++&i2c4 { ++ status = "okay"; ++ ++ pca2: pca9552@65 { + compatible = "nxp,pca9552"; +- reg = <0x61>; ++ reg = <0x65>; + #address-cells = <1>; + #size-cells = <0>; + +@@ -424,12 +461,54 @@ + reg = <9>; + type = <PCA955X_TYPE_GPIO>; + }; ++ }; + ++ i2c-switch@70 { ++ compatible = "nxp,pca9546"; ++ reg = <0x70>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ status = "okay"; ++ i2c-mux-idle-disconnect; ++ ++ i2c4mux0chn0: i2c@0 { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ reg = <0>; ++ eeprom@52 { ++ compatible = "atmel,24c64"; ++ reg = <0x52>; ++ }; ++ }; ++ ++ i2c4mux0chn1: i2c@1 { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ reg = <1>; ++ eeprom@50 { ++ compatible = "atmel,24c64"; ++ reg = <0x50>; ++ }; ++ }; ++ ++ i2c4mux0chn2: i2c@2 { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ reg = <2>; ++ eeprom@51 { ++ compatible = "atmel,24c64"; ++ reg = <0x51>; ++ }; ++ }; + }; ++}; + +- pca3: pca9552@62 { ++&i2c5 { ++ status = "okay"; ++ ++ pca3: pca9552@66 { + compatible = "nxp,pca9552"; +- reg = <0x62>; ++ reg = <0x66>; + #address-cells = <1>; + #size-cells = <0>; + +@@ -512,87 +591,6 @@ + + }; + +-}; +- +-&i2c2 { +- status = "okay"; +-}; +- +-&i2c3 { +- status = "okay"; +- +- eeprom@54 { +- compatible = "atmel,24c128"; +- reg = <0x54>; +- }; +- +- power-supply@68 { +- compatible = "ibm,cffps"; +- reg = <0x68>; +- }; +- +- power-supply@69 { +- compatible = "ibm,cffps"; +- reg = <0x69>; +- }; +- +- power-supply@6a { +- compatible = "ibm,cffps"; +- reg = <0x6a>; +- }; +- +- power-supply@6b { +- compatible = "ibm,cffps"; +- reg = <0x6b>; +- }; +-}; +- +-&i2c4 { +- status = "okay"; +- +- i2c-switch@70 { +- compatible = "nxp,pca9546"; +- reg = <0x70>; +- #address-cells = <1>; +- #size-cells = <0>; +- status = "okay"; +- i2c-mux-idle-disconnect; +- +- i2c4mux0chn0: i2c@0 { +- #address-cells = <1>; +- #size-cells = <0>; +- reg = <0>; +- eeprom@52 { +- compatible = "atmel,24c64"; +- reg = <0x52>; +- }; +- }; +- +- i2c4mux0chn1: i2c@1 { +- #address-cells = <1>; +- #size-cells = <0>; +- reg = <1>; +- eeprom@50 { +- compatible = "atmel,24c64"; +- reg = <0x50>; +- }; +- }; +- +- i2c4mux0chn2: i2c@2 { +- #address-cells = <1>; +- #size-cells = <0>; +- reg = <2>; +- eeprom@51 { +- compatible = "atmel,24c64"; +- reg = <0x51>; +- }; +- }; +- }; +-}; +- +-&i2c5 { +- status = "okay"; +- + i2c-switch@70 { + compatible = "nxp,pca9546"; + reg = <0x70>; +@@ -1070,6 +1068,7 @@ + + &emmc { + status = "okay"; ++ clk-phase-mmc-hs200 = <180>, <180>; + }; + + &fsim0 { +diff --git a/arch/arm/boot/dts/aspeed-bmc-ibm-rainier.dts b/arch/arm/boot/dts/aspeed-bmc-ibm-rainier.dts +index 941c0489479ac..481d0ee1f85fb 100644 +--- a/arch/arm/boot/dts/aspeed-bmc-ibm-rainier.dts ++++ b/arch/arm/boot/dts/aspeed-bmc-ibm-rainier.dts +@@ -280,10 +280,7 @@ + /*W0-W7*/ "","","","","","","","", + /*X0-X7*/ "","","","","","","","", + /*Y0-Y7*/ "","","","","","","","", +- /*Z0-Z7*/ "","","","","","","","", +- /*AA0-AA7*/ "","","","","","","","", +- /*AB0-AB7*/ "","","","","","","","", +- /*AC0-AC7*/ "","","","","","","",""; ++ /*Z0-Z7*/ "","","","","","","",""; + + pin_mclr_vpp { + gpio-hog; +diff --git a/arch/arm/boot/dts/aspeed-bmc-opp-tacoma.dts b/arch/arm/boot/dts/aspeed-bmc-opp-tacoma.dts +index c1478d2db6026..ebe69cbd6609b 100644 +--- a/arch/arm/boot/dts/aspeed-bmc-opp-tacoma.dts ++++ b/arch/arm/boot/dts/aspeed-bmc-opp-tacoma.dts +@@ -136,10 +136,7 @@ + /*W0-W7*/ "","","","","","","","", + /*X0-X7*/ "","","","","","","","", + /*Y0-Y7*/ "","","","","","","","", +- /*Z0-Z7*/ "","","","","","","","", +- /*AA0-AA7*/ "","","","","","","","", +- /*AB0-AB7*/ "","","","","","","","", +- /*AC0-AC7*/ "","","","","","","",""; ++ /*Z0-Z7*/ "","","","","","","",""; + }; + + &fmc { +@@ -189,6 +186,7 @@ + + &emmc { + status = "okay"; ++ clk-phase-mmc-hs200 = <36>, <270>; + }; + + &fsim0 { +diff --git a/arch/arm/boot/dts/bcm-cygnus.dtsi b/arch/arm/boot/dts/bcm-cygnus.dtsi +index 0025c88f660cd..8ecb7861ce106 100644 +--- a/arch/arm/boot/dts/bcm-cygnus.dtsi ++++ b/arch/arm/boot/dts/bcm-cygnus.dtsi +@@ -460,7 +460,7 @@ + status = "disabled"; + }; + +- nand: nand@18046000 { ++ nand_controller: nand-controller@18046000 { + compatible = "brcm,nand-iproc", "brcm,brcmnand-v6.1"; + reg = <0x18046000 0x600>, <0xf8105408 0x600>, + <0x18046f00 0x20>; +diff --git a/arch/arm/boot/dts/bcm-hr2.dtsi b/arch/arm/boot/dts/bcm-hr2.dtsi +index e8df458aad392..84cda16f68a23 100644 +--- a/arch/arm/boot/dts/bcm-hr2.dtsi ++++ b/arch/arm/boot/dts/bcm-hr2.dtsi +@@ -179,7 +179,7 @@ + status = "disabled"; + }; + +- nand: nand@26000 { ++ nand_controller: nand-controller@26000 { + compatible = "brcm,nand-iproc", "brcm,brcmnand-v6.1"; + reg = <0x26000 0x600>, + <0x11b408 0x600>, +diff --git a/arch/arm/boot/dts/bcm-nsp.dtsi b/arch/arm/boot/dts/bcm-nsp.dtsi +index b4d2cc70afb19..748df7955ae67 100644 +--- a/arch/arm/boot/dts/bcm-nsp.dtsi ++++ b/arch/arm/boot/dts/bcm-nsp.dtsi +@@ -269,7 +269,7 @@ + dma-coherent; + }; + +- nand: nand@26000 { ++ nand_controller: nand-controller@26000 { + compatible = "brcm,nand-iproc", "brcm,brcmnand-v6.1"; + reg = <0x026000 0x600>, + <0x11b408 0x600>, +diff --git a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts +index 3b4ab947492ac..27d2f859adfca 100644 +--- a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts ++++ b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts +@@ -29,11 +29,11 @@ + }; + + leds { +- act { ++ led-act { + gpios = <&gpio 42 GPIO_ACTIVE_HIGH>; + }; + +- pwr { ++ led-pwr { + label = "PWR"; + gpios = <&expgpio 2 GPIO_ACTIVE_LOW>; + default-state = "keep"; +diff --git a/arch/arm/boot/dts/bcm2711.dtsi b/arch/arm/boot/dts/bcm2711.dtsi +index 720beec54d617..d872064db7616 100644 +--- a/arch/arm/boot/dts/bcm2711.dtsi ++++ b/arch/arm/boot/dts/bcm2711.dtsi +@@ -413,7 +413,7 @@ + ranges = <0x0 0x7e000000 0x0 0xfe000000 0x01800000>; + dma-ranges = <0x0 0xc0000000 0x0 0x00000000 0x40000000>; + +- emmc2: emmc2@7e340000 { ++ emmc2: mmc@7e340000 { + compatible = "brcm,bcm2711-emmc2"; + reg = <0x0 0x7e340000 0x100>; + interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>; +diff --git a/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts b/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts +index 6c8ce39833bf6..40b9405f1a8e4 100644 +--- a/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts ++++ b/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts +@@ -14,11 +14,11 @@ + }; + + leds { +- act { ++ led-act { + gpios = <&gpio 47 GPIO_ACTIVE_HIGH>; + }; + +- pwr { ++ led-pwr { + label = "PWR"; + gpios = <&gpio 35 GPIO_ACTIVE_HIGH>; + default-state = "keep"; +diff --git a/arch/arm/boot/dts/bcm2835-rpi-a.dts b/arch/arm/boot/dts/bcm2835-rpi-a.dts +index 17fdd48346ffb..11edb581dbaf0 100644 +--- a/arch/arm/boot/dts/bcm2835-rpi-a.dts ++++ b/arch/arm/boot/dts/bcm2835-rpi-a.dts +@@ -14,7 +14,7 @@ + }; + + leds { +- act { ++ led-act { + gpios = <&gpio 16 GPIO_ACTIVE_LOW>; + }; + }; +diff --git a/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts b/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts +index b0355c229cdc2..1b435c64bd9c1 100644 +--- a/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts ++++ b/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts +@@ -15,11 +15,11 @@ + }; + + leds { +- act { ++ led-act { + gpios = <&gpio 47 GPIO_ACTIVE_HIGH>; + }; + +- pwr { ++ led-pwr { + label = "PWR"; + gpios = <&gpio 35 GPIO_ACTIVE_HIGH>; + default-state = "keep"; +diff --git a/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts b/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts +index 33b3b5c025219..a23c25c00eea7 100644 +--- a/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts ++++ b/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts +@@ -15,7 +15,7 @@ + }; + + leds { +- act { ++ led-act { + gpios = <&gpio 16 GPIO_ACTIVE_LOW>; + }; + }; +diff --git a/arch/arm/boot/dts/bcm2835-rpi-b.dts b/arch/arm/boot/dts/bcm2835-rpi-b.dts +index 2b69957e0113e..1b63d6b19750b 100644 +--- a/arch/arm/boot/dts/bcm2835-rpi-b.dts ++++ b/arch/arm/boot/dts/bcm2835-rpi-b.dts +@@ -15,7 +15,7 @@ + }; + + leds { +- act { ++ led-act { + gpios = <&gpio 16 GPIO_ACTIVE_LOW>; + }; + }; +diff --git a/arch/arm/boot/dts/bcm2835-rpi-cm1.dtsi b/arch/arm/boot/dts/bcm2835-rpi-cm1.dtsi +index 58059c2ce1294..e4e6b6abbfc13 100644 +--- a/arch/arm/boot/dts/bcm2835-rpi-cm1.dtsi ++++ b/arch/arm/boot/dts/bcm2835-rpi-cm1.dtsi +@@ -5,7 +5,7 @@ + + / { + leds { +- act { ++ led-act { + gpios = <&gpio 47 GPIO_ACTIVE_LOW>; + }; + }; +diff --git a/arch/arm/boot/dts/bcm2835-rpi-zero-w.dts b/arch/arm/boot/dts/bcm2835-rpi-zero-w.dts +index f65448c01e317..33b2b77aa47db 100644 +--- a/arch/arm/boot/dts/bcm2835-rpi-zero-w.dts ++++ b/arch/arm/boot/dts/bcm2835-rpi-zero-w.dts +@@ -23,7 +23,7 @@ + }; + + leds { +- act { ++ led-act { + gpios = <&gpio 47 GPIO_ACTIVE_LOW>; + }; + }; +diff --git a/arch/arm/boot/dts/bcm2835-rpi-zero.dts b/arch/arm/boot/dts/bcm2835-rpi-zero.dts +index 6dd93c6f49666..6f9b3a908f287 100644 +--- a/arch/arm/boot/dts/bcm2835-rpi-zero.dts ++++ b/arch/arm/boot/dts/bcm2835-rpi-zero.dts +@@ -18,7 +18,7 @@ + }; + + leds { +- act { ++ led-act { + gpios = <&gpio 47 GPIO_ACTIVE_HIGH>; + }; + }; +diff --git a/arch/arm/boot/dts/bcm2835-rpi.dtsi b/arch/arm/boot/dts/bcm2835-rpi.dtsi +index d94357b21f7e9..87ddcad760834 100644 +--- a/arch/arm/boot/dts/bcm2835-rpi.dtsi ++++ b/arch/arm/boot/dts/bcm2835-rpi.dtsi +@@ -4,7 +4,7 @@ + leds { + compatible = "gpio-leds"; + +- act { ++ led-act { + label = "ACT"; + default-state = "keep"; + linux,default-trigger = "heartbeat"; +diff --git a/arch/arm/boot/dts/bcm2836-rpi-2-b.dts b/arch/arm/boot/dts/bcm2836-rpi-2-b.dts +index 0455a680394a2..d8af8eeac7b6f 100644 +--- a/arch/arm/boot/dts/bcm2836-rpi-2-b.dts ++++ b/arch/arm/boot/dts/bcm2836-rpi-2-b.dts +@@ -15,11 +15,11 @@ + }; + + leds { +- act { ++ led-act { + gpios = <&gpio 47 GPIO_ACTIVE_HIGH>; + }; + +- pwr { ++ led-pwr { + label = "PWR"; + gpios = <&gpio 35 GPIO_ACTIVE_HIGH>; + default-state = "keep"; +diff --git a/arch/arm/boot/dts/bcm2837-rpi-3-a-plus.dts b/arch/arm/boot/dts/bcm2837-rpi-3-a-plus.dts +index 28be0332c1c81..77099a7871b03 100644 +--- a/arch/arm/boot/dts/bcm2837-rpi-3-a-plus.dts ++++ b/arch/arm/boot/dts/bcm2837-rpi-3-a-plus.dts +@@ -19,11 +19,11 @@ + }; + + leds { +- act { ++ led-act { + gpios = <&gpio 29 GPIO_ACTIVE_HIGH>; + }; + +- pwr { ++ led-pwr { + label = "PWR"; + gpios = <&expgpio 2 GPIO_ACTIVE_LOW>; + default-state = "keep"; +diff --git a/arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts b/arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts +index 37343148643db..61010266ca9a3 100644 +--- a/arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts ++++ b/arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts +@@ -20,11 +20,11 @@ + }; + + leds { +- act { ++ led-act { + gpios = <&gpio 29 GPIO_ACTIVE_HIGH>; + }; + +- pwr { ++ led-pwr { + label = "PWR"; + gpios = <&expgpio 2 GPIO_ACTIVE_LOW>; + default-state = "keep"; +diff --git a/arch/arm/boot/dts/bcm2837-rpi-3-b.dts b/arch/arm/boot/dts/bcm2837-rpi-3-b.dts +index 054ecaa355c9a..dd4a486040971 100644 +--- a/arch/arm/boot/dts/bcm2837-rpi-3-b.dts ++++ b/arch/arm/boot/dts/bcm2837-rpi-3-b.dts +@@ -20,7 +20,7 @@ + }; + + leds { +- act { ++ led-act { + gpios = <&expgpio 2 GPIO_ACTIVE_HIGH>; + }; + }; +diff --git a/arch/arm/boot/dts/bcm2837-rpi-cm3.dtsi b/arch/arm/boot/dts/bcm2837-rpi-cm3.dtsi +index 925cb37c22f06..828a20561b969 100644 +--- a/arch/arm/boot/dts/bcm2837-rpi-cm3.dtsi ++++ b/arch/arm/boot/dts/bcm2837-rpi-cm3.dtsi +@@ -14,7 +14,7 @@ + * Since there is no upstream GPIO driver yet, + * remove the incomplete node. + */ +- /delete-node/ act; ++ /delete-node/ led-act; + }; + + reg_3v3: fixed-regulator { +diff --git a/arch/arm/boot/dts/bcm283x.dtsi b/arch/arm/boot/dts/bcm283x.dtsi +index b83a864e2e8ba..0f3be55201a5b 100644 +--- a/arch/arm/boot/dts/bcm283x.dtsi ++++ b/arch/arm/boot/dts/bcm283x.dtsi +@@ -420,7 +420,7 @@ + status = "disabled"; + }; + +- sdhci: sdhci@7e300000 { ++ sdhci: mmc@7e300000 { + compatible = "brcm,bcm2835-sdhci"; + reg = <0x7e300000 0x100>; + interrupts = <2 30>; +diff --git a/arch/arm/boot/dts/bcm4708-luxul-xwc-1000.dts b/arch/arm/boot/dts/bcm4708-luxul-xwc-1000.dts +index 8636600385fd4..c81944cd6d0bb 100644 +--- a/arch/arm/boot/dts/bcm4708-luxul-xwc-1000.dts ++++ b/arch/arm/boot/dts/bcm4708-luxul-xwc-1000.dts +@@ -24,8 +24,8 @@ + reg = <0x00000000 0x08000000>; + }; + +- nand: nand@18028000 { +- nandcs@0 { ++ nand_controller: nand-controller@18028000 { ++ nand@0 { + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; +diff --git a/arch/arm/boot/dts/bcm47094-dlink-dir-885l.dts b/arch/arm/boot/dts/bcm47094-dlink-dir-885l.dts +index e635a15041dd8..a6e2aeb286754 100644 +--- a/arch/arm/boot/dts/bcm47094-dlink-dir-885l.dts ++++ b/arch/arm/boot/dts/bcm47094-dlink-dir-885l.dts +@@ -25,8 +25,8 @@ + <0x88000000 0x08000000>; + }; + +- nand: nand@18028000 { +- nandcs@0 { ++ nand_controller: nand-controller@18028000 { ++ nand@0 { + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; +diff --git a/arch/arm/boot/dts/bcm47094.dtsi b/arch/arm/boot/dts/bcm47094.dtsi +index 2a8f7312d1be1..6282363313e18 100644 +--- a/arch/arm/boot/dts/bcm47094.dtsi ++++ b/arch/arm/boot/dts/bcm47094.dtsi +@@ -11,7 +11,7 @@ + &pinctrl { + compatible = "brcm,bcm4709-pinmux"; + +- pinmux_mdio: mdio { ++ pinmux_mdio: mdio-pins { + groups = "mdio_grp"; + function = "mdio"; + }; +diff --git a/arch/arm/boot/dts/bcm5301x-nand-cs0.dtsi b/arch/arm/boot/dts/bcm5301x-nand-cs0.dtsi +index 925a7c9ce5b7f..be9a00ff752d9 100644 +--- a/arch/arm/boot/dts/bcm5301x-nand-cs0.dtsi ++++ b/arch/arm/boot/dts/bcm5301x-nand-cs0.dtsi +@@ -6,8 +6,8 @@ + */ + + / { +- nand@18028000 { +- nandcs: nandcs@0 { ++ nand-controller@18028000 { ++ nandcs: nand@0 { + compatible = "brcm,nandcs"; + reg = <0>; + #address-cells = <1>; +diff --git a/arch/arm/boot/dts/bcm5301x.dtsi b/arch/arm/boot/dts/bcm5301x.dtsi +index 86872e12c355e..f92089290ccd5 100644 +--- a/arch/arm/boot/dts/bcm5301x.dtsi ++++ b/arch/arm/boot/dts/bcm5301x.dtsi +@@ -458,18 +458,18 @@ + function = "spi"; + }; + +- pinmux_i2c: i2c { ++ pinmux_i2c: i2c-pins { + groups = "i2c_grp"; + function = "i2c"; + }; + +- pinmux_pwm: pwm { ++ pinmux_pwm: pwm-pins { + groups = "pwm0_grp", "pwm1_grp", + "pwm2_grp", "pwm3_grp"; + function = "pwm"; + }; + +- pinmux_uart1: uart1 { ++ pinmux_uart1: uart1-pins { + groups = "uart1_grp"; + function = "uart1"; + }; +@@ -501,7 +501,7 @@ + reg = <0x18004000 0x14>; + }; + +- nand: nand@18028000 { ++ nand_controller: nand-controller@18028000 { + compatible = "brcm,nand-iproc", "brcm,brcmnand-v6.1", "brcm,brcmnand"; + reg = <0x18028000 0x600>, <0x1811a408 0x600>, <0x18028f00 0x20>; + reg-names = "nand", "iproc-idm", "iproc-ext"; +diff --git a/arch/arm/boot/dts/bcm63138.dtsi b/arch/arm/boot/dts/bcm63138.dtsi +index 9c0325cf9e22e..cca49a2e2d623 100644 +--- a/arch/arm/boot/dts/bcm63138.dtsi ++++ b/arch/arm/boot/dts/bcm63138.dtsi +@@ -203,7 +203,7 @@ + status = "disabled"; + }; + +- nand: nand@2000 { ++ nand_controller: nand-controller@2000 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "brcm,nand-bcm63138", "brcm,brcmnand-v7.0", "brcm,brcmnand"; +diff --git a/arch/arm/boot/dts/bcm7445-bcm97445svmb.dts b/arch/arm/boot/dts/bcm7445-bcm97445svmb.dts +index 8313b7cad5427..f92d2cf859726 100644 +--- a/arch/arm/boot/dts/bcm7445-bcm97445svmb.dts ++++ b/arch/arm/boot/dts/bcm7445-bcm97445svmb.dts +@@ -14,10 +14,10 @@ + }; + }; + +-&nand { ++&nand_controller { + status = "okay"; + +- nandcs@1 { ++ nand@1 { + compatible = "brcm,nandcs"; + reg = <1>; + nand-ecc-step-size = <512>; +diff --git a/arch/arm/boot/dts/bcm7445.dtsi b/arch/arm/boot/dts/bcm7445.dtsi +index 58f67c9b830b8..5ac2042515b8f 100644 +--- a/arch/arm/boot/dts/bcm7445.dtsi ++++ b/arch/arm/boot/dts/bcm7445.dtsi +@@ -148,7 +148,7 @@ + reg-names = "aon-ctrl", "aon-sram"; + }; + +- nand: nand@3e2800 { ++ nand_controller: nand-controller@3e2800 { + status = "disabled"; + #address-cells = <1>; + #size-cells = <0>; +diff --git a/arch/arm/boot/dts/bcm911360_entphn.dts b/arch/arm/boot/dts/bcm911360_entphn.dts +index b2d323f4a5aba..a76c74b44bbaf 100644 +--- a/arch/arm/boot/dts/bcm911360_entphn.dts ++++ b/arch/arm/boot/dts/bcm911360_entphn.dts +@@ -82,8 +82,8 @@ + status = "okay"; + }; + +-&nand { +- nandcs@1 { ++&nand_controller { ++ nand@1 { + compatible = "brcm,nandcs"; + reg = <0>; + nand-on-flash-bbt; +diff --git a/arch/arm/boot/dts/bcm953012k.dts b/arch/arm/boot/dts/bcm953012k.dts +index 046c59fb48462..de40bd59a5faf 100644 +--- a/arch/arm/boot/dts/bcm953012k.dts ++++ b/arch/arm/boot/dts/bcm953012k.dts +@@ -49,8 +49,8 @@ + }; + }; + +-&nand { +- nandcs@0 { ++&nand_controller { ++ nand@0 { + compatible = "brcm,nandcs"; + reg = <0>; + nand-on-flash-bbt; +diff --git a/arch/arm/boot/dts/bcm958300k.dts b/arch/arm/boot/dts/bcm958300k.dts +index b4a1392bd5a6c..dda3e11b711f6 100644 +--- a/arch/arm/boot/dts/bcm958300k.dts ++++ b/arch/arm/boot/dts/bcm958300k.dts +@@ -60,8 +60,8 @@ + status = "okay"; + }; + +-&nand { +- nandcs@1 { ++&nand_controller { ++ nand@1 { + compatible = "brcm,nandcs"; + reg = <0>; + nand-on-flash-bbt; +diff --git a/arch/arm/boot/dts/bcm958305k.dts b/arch/arm/boot/dts/bcm958305k.dts +index 3378683321d3c..ea3c6b88b313b 100644 +--- a/arch/arm/boot/dts/bcm958305k.dts ++++ b/arch/arm/boot/dts/bcm958305k.dts +@@ -68,8 +68,8 @@ + status = "okay"; + }; + +-&nand { +- nandcs@1 { ++&nand_controller { ++ nand@1 { + compatible = "brcm,nandcs"; + reg = <0>; + nand-on-flash-bbt; +diff --git a/arch/arm/boot/dts/bcm958522er.dts b/arch/arm/boot/dts/bcm958522er.dts +index 5443fc079e6e4..1f73885ec274a 100644 +--- a/arch/arm/boot/dts/bcm958522er.dts ++++ b/arch/arm/boot/dts/bcm958522er.dts +@@ -74,8 +74,8 @@ + status = "okay"; + }; + +-&nand { +- nandcs@0 { ++&nand_controller { ++ nand@0 { + compatible = "brcm,nandcs"; + reg = <0>; + nand-on-flash-bbt; +diff --git a/arch/arm/boot/dts/bcm958525er.dts b/arch/arm/boot/dts/bcm958525er.dts +index e1e3c26cef190..b6b9ca8b09726 100644 +--- a/arch/arm/boot/dts/bcm958525er.dts ++++ b/arch/arm/boot/dts/bcm958525er.dts +@@ -74,8 +74,8 @@ + status = "okay"; + }; + +-&nand { +- nandcs@0 { ++&nand_controller { ++ nand@0 { + compatible = "brcm,nandcs"; + reg = <0>; + nand-on-flash-bbt; +diff --git a/arch/arm/boot/dts/bcm958525xmc.dts b/arch/arm/boot/dts/bcm958525xmc.dts +index f161ba2e7e5e1..ecf426f6ad5d5 100644 +--- a/arch/arm/boot/dts/bcm958525xmc.dts ++++ b/arch/arm/boot/dts/bcm958525xmc.dts +@@ -90,8 +90,8 @@ + }; + }; + +-&nand { +- nandcs@0 { ++&nand_controller { ++ nand@0 { + compatible = "brcm,nandcs"; + reg = <0>; + nand-on-flash-bbt; +diff --git a/arch/arm/boot/dts/bcm958622hr.dts b/arch/arm/boot/dts/bcm958622hr.dts +index 83cb877d63dbc..8ca18da981adf 100644 +--- a/arch/arm/boot/dts/bcm958622hr.dts ++++ b/arch/arm/boot/dts/bcm958622hr.dts +@@ -78,8 +78,8 @@ + status = "okay"; + }; + +-&nand { +- nandcs@0 { ++&nand_controller { ++ nand@0 { + compatible = "brcm,nandcs"; + reg = <0>; + nand-on-flash-bbt; +diff --git a/arch/arm/boot/dts/bcm958623hr.dts b/arch/arm/boot/dts/bcm958623hr.dts +index 4e106ce1384a3..9747378db5314 100644 +--- a/arch/arm/boot/dts/bcm958623hr.dts ++++ b/arch/arm/boot/dts/bcm958623hr.dts +@@ -78,8 +78,8 @@ + status = "okay"; + }; + +-&nand { +- nandcs@0 { ++&nand_controller { ++ nand@0 { + compatible = "brcm,nandcs"; + reg = <0>; + nand-on-flash-bbt; +diff --git a/arch/arm/boot/dts/bcm958625hr.dts b/arch/arm/boot/dts/bcm958625hr.dts +index cda6cc281e186..0f92b773afb8d 100644 +--- a/arch/arm/boot/dts/bcm958625hr.dts ++++ b/arch/arm/boot/dts/bcm958625hr.dts +@@ -89,8 +89,8 @@ + status = "okay"; + }; + +-&nand { +- nandcs@0 { ++&nand_controller { ++ nand@0 { + compatible = "brcm,nandcs"; + reg = <0>; + nand-on-flash-bbt; +diff --git a/arch/arm/boot/dts/bcm958625k.dts b/arch/arm/boot/dts/bcm958625k.dts +index ffbff0014c652..9e984ca0e6df4 100644 +--- a/arch/arm/boot/dts/bcm958625k.dts ++++ b/arch/arm/boot/dts/bcm958625k.dts +@@ -68,8 +68,8 @@ + status = "okay"; + }; + +-&nand { +- nandcs@0 { ++&nand_controller { ++ nand@0 { + compatible = "brcm,nandcs"; + reg = <0>; + nand-on-flash-bbt; +diff --git a/arch/arm/boot/dts/bcm963138dvt.dts b/arch/arm/boot/dts/bcm963138dvt.dts +index 5b177274f1826..df5c8ab906273 100644 +--- a/arch/arm/boot/dts/bcm963138dvt.dts ++++ b/arch/arm/boot/dts/bcm963138dvt.dts +@@ -31,10 +31,10 @@ + status = "okay"; + }; + +-&nand { ++&nand_controller { + status = "okay"; + +- nandcs@0 { ++ nand@0 { + compatible = "brcm,nandcs"; + reg = <0>; + nand-ecc-strength = <4>; +diff --git a/arch/arm/boot/dts/bcm988312hr.dts b/arch/arm/boot/dts/bcm988312hr.dts +index 3fd39c479a3ce..5475dab8181d2 100644 +--- a/arch/arm/boot/dts/bcm988312hr.dts ++++ b/arch/arm/boot/dts/bcm988312hr.dts +@@ -74,8 +74,8 @@ + status = "okay"; + }; + +-&nand { +- nandcs@0 { ++&nand_controller { ++ nand@0 { + compatible = "brcm,nandcs"; + reg = <0>; + nand-on-flash-bbt; +diff --git a/arch/arm/boot/dts/dm816x.dtsi b/arch/arm/boot/dts/dm816x.dtsi +index 3551a64963f8d..1825d912b8ab4 100644 +--- a/arch/arm/boot/dts/dm816x.dtsi ++++ b/arch/arm/boot/dts/dm816x.dtsi +@@ -351,7 +351,7 @@ + #mbox-cells = <1>; + ti,mbox-num-users = <4>; + ti,mbox-num-fifos = <12>; +- mbox_dsp: mbox_dsp { ++ mbox_dsp: mbox-dsp { + ti,mbox-tx = <3 0 0>; + ti,mbox-rx = <0 0 0>; + }; +diff --git a/arch/arm/boot/dts/dra7-ipu-dsp-common.dtsi b/arch/arm/boot/dts/dra7-ipu-dsp-common.dtsi +index a25749a1c3659..a5bdc6431d8d0 100644 +--- a/arch/arm/boot/dts/dra7-ipu-dsp-common.dtsi ++++ b/arch/arm/boot/dts/dra7-ipu-dsp-common.dtsi +@@ -5,17 +5,17 @@ + + &mailbox5 { + status = "okay"; +- mbox_ipu1_ipc3x: mbox_ipu1_ipc3x { ++ mbox_ipu1_ipc3x: mbox-ipu1-ipc3x { + status = "okay"; + }; +- mbox_dsp1_ipc3x: mbox_dsp1_ipc3x { ++ mbox_dsp1_ipc3x: mbox-dsp1-ipc3x { + status = "okay"; + }; + }; + + &mailbox6 { + status = "okay"; +- mbox_ipu2_ipc3x: mbox_ipu2_ipc3x { ++ mbox_ipu2_ipc3x: mbox-ipu2-ipc3x { + status = "okay"; + }; + }; +diff --git a/arch/arm/boot/dts/dra7-l4.dtsi b/arch/arm/boot/dts/dra7-l4.dtsi +index 648d23f7f7481..06e26182eabf0 100644 +--- a/arch/arm/boot/dts/dra7-l4.dtsi ++++ b/arch/arm/boot/dts/dra7-l4.dtsi +@@ -1343,7 +1343,7 @@ + }; + }; + +- target-module@55000 { /* 0x48055000, ap 13 0e.0 */ ++ gpio2_target: target-module@55000 { /* 0x48055000, ap 13 0e.0 */ + compatible = "ti,sysc-omap2", "ti,sysc"; + reg = <0x55000 0x4>, + <0x55010 0x4>, +@@ -1376,7 +1376,7 @@ + }; + }; + +- target-module@57000 { /* 0x48057000, ap 15 06.0 */ ++ gpio3_target: target-module@57000 { /* 0x48057000, ap 15 06.0 */ + compatible = "ti,sysc-omap2", "ti,sysc"; + reg = <0x57000 0x4>, + <0x57010 0x4>, +diff --git a/arch/arm/boot/dts/dra72x.dtsi b/arch/arm/boot/dts/dra72x.dtsi +index f3e934ef7d3e2..90617261373cf 100644 +--- a/arch/arm/boot/dts/dra72x.dtsi ++++ b/arch/arm/boot/dts/dra72x.dtsi +@@ -77,12 +77,12 @@ + }; + + &mailbox5 { +- mbox_ipu1_ipc3x: mbox_ipu1_ipc3x { ++ mbox_ipu1_ipc3x: mbox-ipu1-ipc3x { + ti,mbox-tx = <6 2 2>; + ti,mbox-rx = <4 2 2>; + status = "disabled"; + }; +- mbox_dsp1_ipc3x: mbox_dsp1_ipc3x { ++ mbox_dsp1_ipc3x: mbox-dsp1-ipc3x { + ti,mbox-tx = <5 2 2>; + ti,mbox-rx = <1 2 2>; + status = "disabled"; +@@ -90,7 +90,7 @@ + }; + + &mailbox6 { +- mbox_ipu2_ipc3x: mbox_ipu2_ipc3x { ++ mbox_ipu2_ipc3x: mbox-ipu2-ipc3x { + ti,mbox-tx = <6 2 2>; + ti,mbox-rx = <4 2 2>; + status = "disabled"; +diff --git a/arch/arm/boot/dts/dra74-ipu-dsp-common.dtsi b/arch/arm/boot/dts/dra74-ipu-dsp-common.dtsi +index b1147a4b77f9d..3256631510c56 100644 +--- a/arch/arm/boot/dts/dra74-ipu-dsp-common.dtsi ++++ b/arch/arm/boot/dts/dra74-ipu-dsp-common.dtsi +@@ -6,7 +6,7 @@ + #include "dra7-ipu-dsp-common.dtsi" + + &mailbox6 { +- mbox_dsp2_ipc3x: mbox_dsp2_ipc3x { ++ mbox_dsp2_ipc3x: mbox-dsp2-ipc3x { + status = "okay"; + }; + }; +diff --git a/arch/arm/boot/dts/dra74x.dtsi b/arch/arm/boot/dts/dra74x.dtsi +index b4e07d99ffde1..cfb39dde49300 100644 +--- a/arch/arm/boot/dts/dra74x.dtsi ++++ b/arch/arm/boot/dts/dra74x.dtsi +@@ -145,12 +145,12 @@ + }; + + &mailbox5 { +- mbox_ipu1_ipc3x: mbox_ipu1_ipc3x { ++ mbox_ipu1_ipc3x: mbox-ipu1-ipc3x { + ti,mbox-tx = <6 2 2>; + ti,mbox-rx = <4 2 2>; + status = "disabled"; + }; +- mbox_dsp1_ipc3x: mbox_dsp1_ipc3x { ++ mbox_dsp1_ipc3x: mbox-dsp1-ipc3x { + ti,mbox-tx = <5 2 2>; + ti,mbox-rx = <1 2 2>; + status = "disabled"; +@@ -158,12 +158,12 @@ + }; + + &mailbox6 { +- mbox_ipu2_ipc3x: mbox_ipu2_ipc3x { ++ mbox_ipu2_ipc3x: mbox-ipu2-ipc3x { + ti,mbox-tx = <6 2 2>; + ti,mbox-rx = <4 2 2>; + status = "disabled"; + }; +- mbox_dsp2_ipc3x: mbox_dsp2_ipc3x { ++ mbox_dsp2_ipc3x: mbox-dsp2-ipc3x { + ti,mbox-tx = <5 2 2>; + ti,mbox-rx = <1 2 2>; + status = "disabled"; +diff --git a/arch/arm/boot/dts/gemini-dlink-dns-313.dts b/arch/arm/boot/dts/gemini-dlink-dns-313.dts +index c6f3d90e3e90c..b8acc6eaaa6d7 100644 +--- a/arch/arm/boot/dts/gemini-dlink-dns-313.dts ++++ b/arch/arm/boot/dts/gemini-dlink-dns-313.dts +@@ -140,7 +140,7 @@ + }; + }; + +- mdio0: ethernet-phy { ++ mdio0: mdio { + compatible = "virtual,mdio-gpio"; + /* Uses MDC and MDIO */ + gpios = <&gpio0 22 GPIO_ACTIVE_HIGH>, /* MDC */ +diff --git a/arch/arm/boot/dts/gemini-nas4220b.dts b/arch/arm/boot/dts/gemini-nas4220b.dts +index 43c45f7e1e0a3..13112a8a5dd88 100644 +--- a/arch/arm/boot/dts/gemini-nas4220b.dts ++++ b/arch/arm/boot/dts/gemini-nas4220b.dts +@@ -62,7 +62,7 @@ + }; + }; + +- mdio0: ethernet-phy { ++ mdio0: mdio { + compatible = "virtual,mdio-gpio"; + gpios = <&gpio0 22 GPIO_ACTIVE_HIGH>, /* MDC */ + <&gpio0 21 GPIO_ACTIVE_HIGH>; /* MDIO */ +diff --git a/arch/arm/boot/dts/gemini-rut1xx.dts b/arch/arm/boot/dts/gemini-rut1xx.dts +index 08091d2a64e15..0ebda4efd9d0f 100644 +--- a/arch/arm/boot/dts/gemini-rut1xx.dts ++++ b/arch/arm/boot/dts/gemini-rut1xx.dts +@@ -56,7 +56,7 @@ + }; + }; + +- mdio0: ethernet-phy { ++ mdio0: mdio { + compatible = "virtual,mdio-gpio"; + gpios = <&gpio0 22 GPIO_ACTIVE_HIGH>, /* MDC */ + <&gpio0 21 GPIO_ACTIVE_HIGH>; /* MDIO */ +diff --git a/arch/arm/boot/dts/gemini-wbd111.dts b/arch/arm/boot/dts/gemini-wbd111.dts +index 3a2761dd460f9..5602ba8f30f2f 100644 +--- a/arch/arm/boot/dts/gemini-wbd111.dts ++++ b/arch/arm/boot/dts/gemini-wbd111.dts +@@ -68,7 +68,7 @@ + }; + }; + +- mdio0: ethernet-phy { ++ mdio0: mdio { + compatible = "virtual,mdio-gpio"; + gpios = <&gpio0 22 GPIO_ACTIVE_HIGH>, /* MDC */ + <&gpio0 21 GPIO_ACTIVE_HIGH>; /* MDIO */ +diff --git a/arch/arm/boot/dts/gemini-wbd222.dts b/arch/arm/boot/dts/gemini-wbd222.dts +index 52b4dbc0c0723..a4a260c36d752 100644 +--- a/arch/arm/boot/dts/gemini-wbd222.dts ++++ b/arch/arm/boot/dts/gemini-wbd222.dts +@@ -67,7 +67,7 @@ + }; + }; + +- mdio0: ethernet-phy { ++ mdio0: mdio { + compatible = "virtual,mdio-gpio"; + gpios = <&gpio0 22 GPIO_ACTIVE_HIGH>, /* MDC */ + <&gpio0 21 GPIO_ACTIVE_HIGH>; /* MDIO */ +diff --git a/arch/arm/boot/dts/gemini.dtsi b/arch/arm/boot/dts/gemini.dtsi +index 065ed10a79fa7..07448c03dac9e 100644 +--- a/arch/arm/boot/dts/gemini.dtsi ++++ b/arch/arm/boot/dts/gemini.dtsi +@@ -286,6 +286,7 @@ + clock-names = "PCLK", "PCICLK"; + pinctrl-names = "default"; + pinctrl-0 = <&pci_default_pins>; ++ device_type = "pci"; + #address-cells = <3>; + #size-cells = <2>; + #interrupt-cells = <1>; +diff --git a/arch/arm/boot/dts/imx6dl-riotboard.dts b/arch/arm/boot/dts/imx6dl-riotboard.dts +index 065d3ab0f50a7..e7d9bfbfd0e4d 100644 +--- a/arch/arm/boot/dts/imx6dl-riotboard.dts ++++ b/arch/arm/boot/dts/imx6dl-riotboard.dts +@@ -106,6 +106,8 @@ + reset-gpios = <&gpio3 31 GPIO_ACTIVE_LOW>; + reset-assert-us = <10000>; + reset-deassert-us = <1000>; ++ qca,smarteee-tw-us-1g = <24>; ++ qca,clk-out-frequency = <125000000>; + }; + }; + }; +diff --git a/arch/arm/boot/dts/imx6qdl-phytec-pfla02.dtsi b/arch/arm/boot/dts/imx6qdl-phytec-pfla02.dtsi +index 7bd658b7bdda0..f3236204cb5a9 100644 +--- a/arch/arm/boot/dts/imx6qdl-phytec-pfla02.dtsi ++++ b/arch/arm/boot/dts/imx6qdl-phytec-pfla02.dtsi +@@ -322,8 +322,8 @@ + fsl,pins = < + MX6QDL_PAD_EIM_D24__UART3_TX_DATA 0x1b0b1 + MX6QDL_PAD_EIM_D25__UART3_RX_DATA 0x1b0b1 +- MX6QDL_PAD_EIM_D30__UART3_RTS_B 0x1b0b1 +- MX6QDL_PAD_EIM_D31__UART3_CTS_B 0x1b0b1 ++ MX6QDL_PAD_EIM_D31__UART3_RTS_B 0x1b0b1 ++ MX6QDL_PAD_EIM_D30__UART3_CTS_B 0x1b0b1 + >; + }; + +@@ -410,6 +410,7 @@ + &uart3 { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_uart3>; ++ uart-has-rtscts; + status = "disabled"; + }; + +diff --git a/arch/arm/boot/dts/omap4-l4.dtsi b/arch/arm/boot/dts/omap4-l4.dtsi +index 99721673d7afd..46b8f9efd4131 100644 +--- a/arch/arm/boot/dts/omap4-l4.dtsi ++++ b/arch/arm/boot/dts/omap4-l4.dtsi +@@ -600,11 +600,11 @@ + #mbox-cells = <1>; + ti,mbox-num-users = <3>; + ti,mbox-num-fifos = <8>; +- mbox_ipu: mbox_ipu { ++ mbox_ipu: mbox-ipu { + ti,mbox-tx = <0 0 0>; + ti,mbox-rx = <1 0 0>; + }; +- mbox_dsp: mbox_dsp { ++ mbox_dsp: mbox-dsp { + ti,mbox-tx = <3 0 0>; + ti,mbox-rx = <2 0 0>; + }; +diff --git a/arch/arm/boot/dts/omap5-l4.dtsi b/arch/arm/boot/dts/omap5-l4.dtsi +index b148b289e8301..06cc3a19ddaa9 100644 +--- a/arch/arm/boot/dts/omap5-l4.dtsi ++++ b/arch/arm/boot/dts/omap5-l4.dtsi +@@ -616,11 +616,11 @@ + #mbox-cells = <1>; + ti,mbox-num-users = <3>; + ti,mbox-num-fifos = <8>; +- mbox_ipu: mbox_ipu { ++ mbox_ipu: mbox-ipu { + ti,mbox-tx = <0 0 0>; + ti,mbox-rx = <1 0 0>; + }; +- mbox_dsp: mbox_dsp { ++ mbox_dsp: mbox-dsp { + ti,mbox-tx = <3 0 0>; + ti,mbox-rx = <2 0 0>; + }; +diff --git a/arch/arm/boot/dts/rk3036-kylin.dts b/arch/arm/boot/dts/rk3036-kylin.dts +index 7154b827ea2f0..e817eba8c622b 100644 +--- a/arch/arm/boot/dts/rk3036-kylin.dts ++++ b/arch/arm/boot/dts/rk3036-kylin.dts +@@ -390,7 +390,7 @@ + }; + }; + +- sleep { ++ suspend { + global_pwroff: global-pwroff { + rockchip,pins = <2 RK_PA7 1 &pcfg_pull_none>; + }; +diff --git a/arch/arm/boot/dts/rk3066a.dtsi b/arch/arm/boot/dts/rk3066a.dtsi +index 252750c97f97f..bbc3bff508560 100644 +--- a/arch/arm/boot/dts/rk3066a.dtsi ++++ b/arch/arm/boot/dts/rk3066a.dtsi +@@ -755,7 +755,7 @@ + #address-cells = <1>; + #size-cells = <0>; + +- pd_vio@RK3066_PD_VIO { ++ power-domain@RK3066_PD_VIO { + reg = <RK3066_PD_VIO>; + clocks = <&cru ACLK_LCDC0>, + <&cru ACLK_LCDC1>, +@@ -782,7 +782,7 @@ + <&qos_rga>; + }; + +- pd_video@RK3066_PD_VIDEO { ++ power-domain@RK3066_PD_VIDEO { + reg = <RK3066_PD_VIDEO>; + clocks = <&cru ACLK_VDPU>, + <&cru ACLK_VEPU>, +@@ -791,7 +791,7 @@ + pm_qos = <&qos_vpu>; + }; + +- pd_gpu@RK3066_PD_GPU { ++ power-domain@RK3066_PD_GPU { + reg = <RK3066_PD_GPU>; + clocks = <&cru ACLK_GPU>; + pm_qos = <&qos_gpu>; +diff --git a/arch/arm/boot/dts/rk3188.dtsi b/arch/arm/boot/dts/rk3188.dtsi +index 2298a8d840ba3..b6bde9d12c2be 100644 +--- a/arch/arm/boot/dts/rk3188.dtsi ++++ b/arch/arm/boot/dts/rk3188.dtsi +@@ -150,16 +150,16 @@ + compatible = "rockchip,rk3188-timer", "rockchip,rk3288-timer"; + reg = <0x2000e000 0x20>; + interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>; +- clocks = <&cru SCLK_TIMER3>, <&cru PCLK_TIMER3>; +- clock-names = "timer", "pclk"; ++ clocks = <&cru PCLK_TIMER3>, <&cru SCLK_TIMER3>; ++ clock-names = "pclk", "timer"; + }; + + timer6: timer@200380a0 { + compatible = "rockchip,rk3188-timer", "rockchip,rk3288-timer"; + reg = <0x200380a0 0x20>; + interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>; +- clocks = <&cru SCLK_TIMER6>, <&cru PCLK_TIMER0>; +- clock-names = "timer", "pclk"; ++ clocks = <&cru PCLK_TIMER0>, <&cru SCLK_TIMER6>; ++ clock-names = "pclk", "timer"; + }; + + i2s0: i2s@1011a000 { +@@ -699,7 +699,7 @@ + #address-cells = <1>; + #size-cells = <0>; + +- pd_vio@RK3188_PD_VIO { ++ power-domain@RK3188_PD_VIO { + reg = <RK3188_PD_VIO>; + clocks = <&cru ACLK_LCDC0>, + <&cru ACLK_LCDC1>, +@@ -721,7 +721,7 @@ + <&qos_rga>; + }; + +- pd_video@RK3188_PD_VIDEO { ++ power-domain@RK3188_PD_VIDEO { + reg = <RK3188_PD_VIDEO>; + clocks = <&cru ACLK_VDPU>, + <&cru ACLK_VEPU>, +@@ -730,7 +730,7 @@ + pm_qos = <&qos_vpu>; + }; + +- pd_gpu@RK3188_PD_GPU { ++ power-domain@RK3188_PD_GPU { + reg = <RK3188_PD_GPU>; + clocks = <&cru ACLK_GPU>; + pm_qos = <&qos_gpu>; +diff --git a/arch/arm/boot/dts/rk322x.dtsi b/arch/arm/boot/dts/rk322x.dtsi +index 208f212450953..25f83f2f5618e 100644 +--- a/arch/arm/boot/dts/rk322x.dtsi ++++ b/arch/arm/boot/dts/rk322x.dtsi +@@ -517,7 +517,7 @@ + pinctrl-0 = <&otp_pin>; + pinctrl-1 = <&otp_out>; + pinctrl-2 = <&otp_pin>; +- #thermal-sensor-cells = <0>; ++ #thermal-sensor-cells = <1>; + rockchip,hw-tshut-temp = <95000>; + status = "disabled"; + }; +@@ -558,10 +558,9 @@ + compatible = "rockchip,iommu"; + reg = <0x20020800 0x100>; + interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>; +- interrupt-names = "vpu_mmu"; + clocks = <&cru ACLK_VPU>, <&cru HCLK_VPU>; + clock-names = "aclk", "iface"; +- iommu-cells = <0>; ++ #iommu-cells = <0>; + status = "disabled"; + }; + +@@ -569,10 +568,9 @@ + compatible = "rockchip,iommu"; + reg = <0x20030480 0x40>, <0x200304c0 0x40>; + interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>; +- interrupt-names = "vdec_mmu"; + clocks = <&cru ACLK_RKVDEC>, <&cru HCLK_RKVDEC>; + clock-names = "aclk", "iface"; +- iommu-cells = <0>; ++ #iommu-cells = <0>; + status = "disabled"; + }; + +@@ -602,7 +600,6 @@ + compatible = "rockchip,iommu"; + reg = <0x20053f00 0x100>; + interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>; +- interrupt-names = "vop_mmu"; + clocks = <&cru ACLK_VOP>, <&cru HCLK_VOP>; + clock-names = "aclk", "iface"; + #iommu-cells = <0>; +@@ -623,10 +620,9 @@ + compatible = "rockchip,iommu"; + reg = <0x20070800 0x100>; + interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>; +- interrupt-names = "iep_mmu"; + clocks = <&cru ACLK_IEP>, <&cru HCLK_IEP>; + clock-names = "aclk", "iface"; +- iommu-cells = <0>; ++ #iommu-cells = <0>; + status = "disabled"; + }; + +diff --git a/arch/arm/boot/dts/rk3288-rock2-som.dtsi b/arch/arm/boot/dts/rk3288-rock2-som.dtsi +index 44bb5e6f83b12..76363b8afcb9b 100644 +--- a/arch/arm/boot/dts/rk3288-rock2-som.dtsi ++++ b/arch/arm/boot/dts/rk3288-rock2-som.dtsi +@@ -218,7 +218,7 @@ + flash0-supply = <&vcc_flash>; + flash1-supply = <&vccio_pmu>; + gpio30-supply = <&vccio_pmu>; +- gpio1830 = <&vcc_io>; ++ gpio1830-supply = <&vcc_io>; + lcdc-supply = <&vcc_io>; + sdcard-supply = <&vccio_sd>; + wifi-supply = <&vcc_18>; +diff --git a/arch/arm/boot/dts/rk3288-vyasa.dts b/arch/arm/boot/dts/rk3288-vyasa.dts +index aa50f8ed4ca0a..b156a83eb7d78 100644 +--- a/arch/arm/boot/dts/rk3288-vyasa.dts ++++ b/arch/arm/boot/dts/rk3288-vyasa.dts +@@ -379,10 +379,10 @@ + audio-supply = <&vcc_18>; + bb-supply = <&vcc_io>; + dvp-supply = <&vcc_io>; +- flash0-suuply = <&vcc_18>; ++ flash0-supply = <&vcc_18>; + flash1-supply = <&vcc_lan>; + gpio30-supply = <&vcc_io>; +- gpio1830 = <&vcc_io>; ++ gpio1830-supply = <&vcc_io>; + lcdc-supply = <&vcc_io>; + sdcard-supply = <&vccio_sd>; + wifi-supply = <&vcc_18>; +diff --git a/arch/arm/boot/dts/rk3288.dtsi b/arch/arm/boot/dts/rk3288.dtsi +index 05557ad02b33c..d6dbfbd995684 100644 +--- a/arch/arm/boot/dts/rk3288.dtsi ++++ b/arch/arm/boot/dts/rk3288.dtsi +@@ -196,8 +196,8 @@ + compatible = "rockchip,rk3288-timer"; + reg = <0x0 0xff810000 0x0 0x20>; + interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>; +- clocks = <&xin24m>, <&cru PCLK_TIMER>; +- clock-names = "timer", "pclk"; ++ clocks = <&cru PCLK_TIMER>, <&xin24m>; ++ clock-names = "pclk", "timer"; + }; + + display-subsystem { +@@ -765,7 +765,7 @@ + * *_HDMI HDMI + * *_MIPI_* MIPI + */ +- pd_vio@RK3288_PD_VIO { ++ power-domain@RK3288_PD_VIO { + reg = <RK3288_PD_VIO>; + clocks = <&cru ACLK_IEP>, + <&cru ACLK_ISP>, +@@ -807,7 +807,7 @@ + * Note: The following 3 are HEVC(H.265) clocks, + * and on the ACLK_HEVC_NIU (NOC). + */ +- pd_hevc@RK3288_PD_HEVC { ++ power-domain@RK3288_PD_HEVC { + reg = <RK3288_PD_HEVC>; + clocks = <&cru ACLK_HEVC>, + <&cru SCLK_HEVC_CABAC>, +@@ -821,7 +821,7 @@ + * (video endecoder & decoder) clocks that on the + * ACLK_VCODEC_NIU and HCLK_VCODEC_NIU (NOC). + */ +- pd_video@RK3288_PD_VIDEO { ++ power-domain@RK3288_PD_VIDEO { + reg = <RK3288_PD_VIDEO>; + clocks = <&cru ACLK_VCODEC>, + <&cru HCLK_VCODEC>; +@@ -832,7 +832,7 @@ + * Note: ACLK_GPU is the GPU clock, + * and on the ACLK_GPU_NIU (NOC). + */ +- pd_gpu@RK3288_PD_GPU { ++ power-domain@RK3288_PD_GPU { + reg = <RK3288_PD_GPU>; + clocks = <&cru ACLK_GPU>; + pm_qos = <&qos_gpu_r>, +@@ -1582,7 +1582,7 @@ + drive-strength = <12>; + }; + +- sleep { ++ suspend { + global_pwroff: global-pwroff { + rockchip,pins = <0 RK_PA0 1 &pcfg_pull_none>; + }; +diff --git a/arch/arm/boot/dts/ste-ab8500.dtsi b/arch/arm/boot/dts/ste-ab8500.dtsi +index a16a00fb5fa5d..d0fe3f9aa183a 100644 +--- a/arch/arm/boot/dts/ste-ab8500.dtsi ++++ b/arch/arm/boot/dts/ste-ab8500.dtsi +@@ -34,7 +34,7 @@ + #clock-cells = <1>; + }; + +- ab8500_gpio: ab8500-gpio { ++ ab8500_gpio: ab8500-gpiocontroller { + compatible = "stericsson,ab8500-gpio"; + gpio-controller; + #gpio-cells = <2>; +@@ -42,15 +42,15 @@ + + ab8500-rtc { + compatible = "stericsson,ab8500-rtc"; +- interrupts = <17 IRQ_TYPE_LEVEL_HIGH +- 18 IRQ_TYPE_LEVEL_HIGH>; ++ interrupts = <17 IRQ_TYPE_LEVEL_HIGH>, ++ <18 IRQ_TYPE_LEVEL_HIGH>; + interrupt-names = "60S", "ALARM"; + }; + + gpadc: ab8500-gpadc { + compatible = "stericsson,ab8500-gpadc"; +- interrupts = <32 IRQ_TYPE_LEVEL_HIGH +- 39 IRQ_TYPE_LEVEL_HIGH>; ++ interrupts = <32 IRQ_TYPE_LEVEL_HIGH>, ++ <39 IRQ_TYPE_LEVEL_HIGH>; + interrupt-names = "HW_CONV_END", "SW_CONV_END"; + vddadc-supply = <&ab8500_ldo_tvout_reg>; + #address-cells = <1>; +@@ -219,13 +219,13 @@ + + ab8500_usb { + compatible = "stericsson,ab8500-usb"; +- interrupts = < 90 IRQ_TYPE_LEVEL_HIGH +- 96 IRQ_TYPE_LEVEL_HIGH +- 14 IRQ_TYPE_LEVEL_HIGH +- 15 IRQ_TYPE_LEVEL_HIGH +- 79 IRQ_TYPE_LEVEL_HIGH +- 74 IRQ_TYPE_LEVEL_HIGH +- 75 IRQ_TYPE_LEVEL_HIGH>; ++ interrupts = <90 IRQ_TYPE_LEVEL_HIGH>, ++ <96 IRQ_TYPE_LEVEL_HIGH>, ++ <14 IRQ_TYPE_LEVEL_HIGH>, ++ <15 IRQ_TYPE_LEVEL_HIGH>, ++ <79 IRQ_TYPE_LEVEL_HIGH>, ++ <74 IRQ_TYPE_LEVEL_HIGH>, ++ <75 IRQ_TYPE_LEVEL_HIGH>; + interrupt-names = "ID_WAKEUP_R", + "ID_WAKEUP_F", + "VBUS_DET_F", +@@ -242,8 +242,8 @@ + + ab8500-ponkey { + compatible = "stericsson,ab8500-poweron-key"; +- interrupts = <6 IRQ_TYPE_LEVEL_HIGH +- 7 IRQ_TYPE_LEVEL_HIGH>; ++ interrupts = <6 IRQ_TYPE_LEVEL_HIGH>, ++ <7 IRQ_TYPE_LEVEL_HIGH>; + interrupt-names = "ONKEY_DBF", "ONKEY_DBR"; + }; + +diff --git a/arch/arm/boot/dts/ste-ab8505.dtsi b/arch/arm/boot/dts/ste-ab8505.dtsi +index cc045b2fc217d..0defc15b9bbc6 100644 +--- a/arch/arm/boot/dts/ste-ab8505.dtsi ++++ b/arch/arm/boot/dts/ste-ab8505.dtsi +@@ -31,7 +31,7 @@ + #clock-cells = <1>; + }; + +- ab8505_gpio: ab8505-gpio { ++ ab8505_gpio: ab8505-gpiocontroller { + compatible = "stericsson,ab8505-gpio"; + gpio-controller; + #gpio-cells = <2>; +@@ -39,8 +39,8 @@ + + ab8500-rtc { + compatible = "stericsson,ab8500-rtc"; +- interrupts = <17 IRQ_TYPE_LEVEL_HIGH +- 18 IRQ_TYPE_LEVEL_HIGH>; ++ interrupts = <17 IRQ_TYPE_LEVEL_HIGH>, ++ <18 IRQ_TYPE_LEVEL_HIGH>; + interrupt-names = "60S", "ALARM"; + }; + +@@ -182,13 +182,13 @@ + + ab8500_usb: ab8500_usb { + compatible = "stericsson,ab8500-usb"; +- interrupts = < 90 IRQ_TYPE_LEVEL_HIGH +- 96 IRQ_TYPE_LEVEL_HIGH +- 14 IRQ_TYPE_LEVEL_HIGH +- 15 IRQ_TYPE_LEVEL_HIGH +- 79 IRQ_TYPE_LEVEL_HIGH +- 74 IRQ_TYPE_LEVEL_HIGH +- 75 IRQ_TYPE_LEVEL_HIGH>; ++ interrupts = <90 IRQ_TYPE_LEVEL_HIGH>, ++ <96 IRQ_TYPE_LEVEL_HIGH>, ++ <14 IRQ_TYPE_LEVEL_HIGH>, ++ <15 IRQ_TYPE_LEVEL_HIGH>, ++ <79 IRQ_TYPE_LEVEL_HIGH>, ++ <74 IRQ_TYPE_LEVEL_HIGH>, ++ <75 IRQ_TYPE_LEVEL_HIGH>; + interrupt-names = "ID_WAKEUP_R", + "ID_WAKEUP_F", + "VBUS_DET_F", +@@ -205,8 +205,8 @@ + + ab8500-ponkey { + compatible = "stericsson,ab8500-poweron-key"; +- interrupts = <6 IRQ_TYPE_LEVEL_HIGH +- 7 IRQ_TYPE_LEVEL_HIGH>; ++ interrupts = <6 IRQ_TYPE_LEVEL_HIGH>, ++ <7 IRQ_TYPE_LEVEL_HIGH>; + interrupt-names = "ONKEY_DBF", "ONKEY_DBR"; + }; + +diff --git a/arch/arm/boot/dts/ste-href-ab8500.dtsi b/arch/arm/boot/dts/ste-href-ab8500.dtsi +index 4946743de7b9b..3ccb7b5c71625 100644 +--- a/arch/arm/boot/dts/ste-href-ab8500.dtsi ++++ b/arch/arm/boot/dts/ste-href-ab8500.dtsi +@@ -9,7 +9,7 @@ + soc { + prcmu@80157000 { + ab8500 { +- ab8500-gpio { ++ ab8500-gpiocontroller { + /* Hog a few default settings */ + pinctrl-names = "default"; + pinctrl-0 = <&gpio2_default_mode>, +diff --git a/arch/arm/boot/dts/ste-href-tvk1281618-r3.dtsi b/arch/arm/boot/dts/ste-href-tvk1281618-r3.dtsi +index 70f058352efca..511e097cc33e0 100644 +--- a/arch/arm/boot/dts/ste-href-tvk1281618-r3.dtsi ++++ b/arch/arm/boot/dts/ste-href-tvk1281618-r3.dtsi +@@ -89,6 +89,9 @@ + <19 IRQ_TYPE_EDGE_RISING>; + pinctrl-names = "default"; + pinctrl-0 = <&accel_tvk_mode>; ++ mount-matrix = "0", "-1", "0", ++ "-1", "0", "0", ++ "0", "0", "-1"; + }; + magnetometer@1e { + compatible = "st,lsm303dlm-magn"; +diff --git a/arch/arm/boot/dts/ste-href.dtsi b/arch/arm/boot/dts/ste-href.dtsi +index 13d2161929042..c97e8d29004f8 100644 +--- a/arch/arm/boot/dts/ste-href.dtsi ++++ b/arch/arm/boot/dts/ste-href.dtsi +@@ -209,7 +209,7 @@ + + prcmu@80157000 { + ab8500 { +- ab8500-gpio { ++ ab8500-gpiocontroller { + }; + + ab8500_usb { +diff --git a/arch/arm/boot/dts/ste-snowball.dts b/arch/arm/boot/dts/ste-snowball.dts +index b344b3748143a..40f1d7c9c1d4c 100644 +--- a/arch/arm/boot/dts/ste-snowball.dts ++++ b/arch/arm/boot/dts/ste-snowball.dts +@@ -376,7 +376,7 @@ + + prcmu@80157000 { + ab8500 { +- ab8500-gpio { ++ ab8500-gpiocontroller { + /* + * AB8500 GPIOs are numbered starting from 1, so the first + * index 0 is what in the datasheet is called "GPIO1", and +diff --git a/arch/arm/boot/dts/ste-ux500-samsung-golden.dts b/arch/arm/boot/dts/ste-ux500-samsung-golden.dts +index 0d43ee6583cf8..40df7c61bf69e 100644 +--- a/arch/arm/boot/dts/ste-ux500-samsung-golden.dts ++++ b/arch/arm/boot/dts/ste-ux500-samsung-golden.dts +@@ -121,7 +121,7 @@ + #size-cells = <0>; + + wifi@1 { +- compatible = "brcm,bcm4329-fmac"; ++ compatible = "brcm,bcm4334-fmac", "brcm,bcm4329-fmac"; + reg = <1>; + + /* GPIO216 (WLAN_HOST_WAKE) */ +@@ -162,6 +162,7 @@ + pinctrl-1 = <&u0_a_1_sleep>; + + bluetooth { ++ /* BCM4334B0 actually */ + compatible = "brcm,bcm4330-bt"; + /* GPIO222 (BT_VREG_ON) */ + shutdown-gpios = <&gpio6 30 GPIO_ACTIVE_HIGH>; +diff --git a/arch/arm/boot/dts/ste-ux500-samsung-janice.dts b/arch/arm/boot/dts/ste-ux500-samsung-janice.dts +index f24369873ce2c..25af066f6f3ae 100644 +--- a/arch/arm/boot/dts/ste-ux500-samsung-janice.dts ++++ b/arch/arm/boot/dts/ste-ux500-samsung-janice.dts +@@ -401,8 +401,7 @@ + status = "okay"; + + wifi@1 { +- /* Actually BRCM4330 */ +- compatible = "brcm,bcm4329-fmac"; ++ compatible = "brcm,bcm4330-fmac", "brcm,bcm4329-fmac"; + reg = <1>; + /* GPIO216 WL_HOST_WAKE */ + interrupt-parent = <&gpio6>; +@@ -436,6 +435,7 @@ + status = "okay"; + + bluetooth { ++ /* BCM4330B1 actually */ + compatible = "brcm,bcm4330-bt"; + /* GPIO222 rail BT_VREG_EN to BT_REG_ON */ + shutdown-gpios = <&gpio6 30 GPIO_ACTIVE_HIGH>; +@@ -583,10 +583,9 @@ + accelerometer@08 { + compatible = "bosch,bma222"; + reg = <0x08>; +- /* FIXME: no idea about this */ +- mount-matrix = "1", "0", "0", +- "0", "1", "0", +- "0", "0", "1"; ++ mount-matrix = "0", "1", "0", ++ "-1", "0", "0", ++ "0", "0", "-1"; + vddio-supply = <&ab8500_ldo_aux2_reg>; // 1.8V + vdd-supply = <&ab8500_ldo_aux1_reg>; // 3V + }; +diff --git a/arch/arm/boot/dts/ste-ux500-samsung-skomer.dts b/arch/arm/boot/dts/ste-ux500-samsung-skomer.dts +index d28a00757d0b9..94afd7a0fe1f0 100644 +--- a/arch/arm/boot/dts/ste-ux500-samsung-skomer.dts ++++ b/arch/arm/boot/dts/ste-ux500-samsung-skomer.dts +@@ -211,7 +211,7 @@ + #size-cells = <0>; + + wifi@1 { +- compatible = "brcm,bcm4329-fmac"; ++ compatible = "brcm,bcm4334-fmac", "brcm,bcm4329-fmac"; + reg = <1>; + /* GPIO216 WL_HOST_WAKE */ + interrupt-parent = <&gpio6>; +@@ -247,6 +247,7 @@ + + /* FIXME: not quite working yet, probably needs regulators */ + bluetooth { ++ /* BCM4334B0 actually */ + compatible = "brcm,bcm4330-bt"; + shutdown-gpios = <&gpio6 30 GPIO_ACTIVE_HIGH>; + device-wakeup-gpios = <&gpio6 7 GPIO_ACTIVE_HIGH>; +diff --git a/arch/arm/boot/dts/stm32429i-eval.dts b/arch/arm/boot/dts/stm32429i-eval.dts +index 7e10ae744c9d1..9ac1ffe53413c 100644 +--- a/arch/arm/boot/dts/stm32429i-eval.dts ++++ b/arch/arm/boot/dts/stm32429i-eval.dts +@@ -119,17 +119,15 @@ + }; + }; + +- gpio_keys { ++ gpio-keys { + compatible = "gpio-keys"; +- #address-cells = <1>; +- #size-cells = <0>; + autorepeat; +- button@0 { ++ button-0 { + label = "Wake up"; + linux,code = <KEY_WAKEUP>; + gpios = <&gpioa 0 0>; + }; +- button@1 { ++ button-1 { + label = "Tamper"; + linux,code = <KEY_RESTART>; + gpios = <&gpioc 13 0>; +diff --git a/arch/arm/boot/dts/stm32746g-eval.dts b/arch/arm/boot/dts/stm32746g-eval.dts +index ca8c192449ee9..327613fd9666c 100644 +--- a/arch/arm/boot/dts/stm32746g-eval.dts ++++ b/arch/arm/boot/dts/stm32746g-eval.dts +@@ -81,12 +81,10 @@ + }; + }; + +- gpio_keys { ++ gpio-keys { + compatible = "gpio-keys"; +- #address-cells = <1>; +- #size-cells = <0>; + autorepeat; +- button@0 { ++ button-0 { + label = "Wake up"; + linux,code = <KEY_WAKEUP>; + gpios = <&gpioc 13 0>; +diff --git a/arch/arm/boot/dts/stm32f429-disco.dts b/arch/arm/boot/dts/stm32f429-disco.dts +index 3dc068b91ca15..075ac57d0bf4a 100644 +--- a/arch/arm/boot/dts/stm32f429-disco.dts ++++ b/arch/arm/boot/dts/stm32f429-disco.dts +@@ -81,12 +81,10 @@ + }; + }; + +- gpio_keys { ++ gpio-keys { + compatible = "gpio-keys"; +- #address-cells = <1>; +- #size-cells = <0>; + autorepeat; +- button@0 { ++ button-0 { + label = "User"; + linux,code = <KEY_HOME>; + gpios = <&gpioa 0 0>; +diff --git a/arch/arm/boot/dts/stm32f429.dtsi b/arch/arm/boot/dts/stm32f429.dtsi +index f6530d724d004..8748d58502980 100644 +--- a/arch/arm/boot/dts/stm32f429.dtsi ++++ b/arch/arm/boot/dts/stm32f429.dtsi +@@ -283,8 +283,6 @@ + }; + + timers13: timers@40001c00 { +- #address-cells = <1>; +- #size-cells = <0>; + compatible = "st,stm32-timers"; + reg = <0x40001C00 0x400>; + clocks = <&rcc 0 STM32F4_APB1_CLOCK(TIM13)>; +@@ -299,8 +297,6 @@ + }; + + timers14: timers@40002000 { +- #address-cells = <1>; +- #size-cells = <0>; + compatible = "st,stm32-timers"; + reg = <0x40002000 0x400>; + clocks = <&rcc 0 STM32F4_APB1_CLOCK(TIM14)>; +@@ -633,8 +629,6 @@ + }; + + timers10: timers@40014400 { +- #address-cells = <1>; +- #size-cells = <0>; + compatible = "st,stm32-timers"; + reg = <0x40014400 0x400>; + clocks = <&rcc 0 STM32F4_APB2_CLOCK(TIM10)>; +@@ -649,8 +643,6 @@ + }; + + timers11: timers@40014800 { +- #address-cells = <1>; +- #size-cells = <0>; + compatible = "st,stm32-timers"; + reg = <0x40014800 0x400>; + clocks = <&rcc 0 STM32F4_APB2_CLOCK(TIM11)>; +@@ -709,7 +701,7 @@ + status = "disabled"; + }; + +- rcc: rcc@40023810 { ++ rcc: rcc@40023800 { + #reset-cells = <1>; + #clock-cells = <2>; + compatible = "st,stm32f42xx-rcc", "st,stm32-rcc"; +diff --git a/arch/arm/boot/dts/stm32f469-disco.dts b/arch/arm/boot/dts/stm32f469-disco.dts +index 2e1b3bbbe4b5b..8c982ae79f432 100644 +--- a/arch/arm/boot/dts/stm32f469-disco.dts ++++ b/arch/arm/boot/dts/stm32f469-disco.dts +@@ -104,12 +104,10 @@ + }; + }; + +- gpio_keys { ++ gpio-keys { + compatible = "gpio-keys"; +- #address-cells = <1>; +- #size-cells = <0>; + autorepeat; +- button@0 { ++ button-0 { + label = "User"; + linux,code = <KEY_WAKEUP>; + gpios = <&gpioa 0 GPIO_ACTIVE_HIGH>; +diff --git a/arch/arm/boot/dts/stm32f746.dtsi b/arch/arm/boot/dts/stm32f746.dtsi +index e1df603fc9816..014b416f57e6f 100644 +--- a/arch/arm/boot/dts/stm32f746.dtsi ++++ b/arch/arm/boot/dts/stm32f746.dtsi +@@ -265,8 +265,6 @@ + }; + + timers13: timers@40001c00 { +- #address-cells = <1>; +- #size-cells = <0>; + compatible = "st,stm32-timers"; + reg = <0x40001C00 0x400>; + clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM13)>; +@@ -281,8 +279,6 @@ + }; + + timers14: timers@40002000 { +- #address-cells = <1>; +- #size-cells = <0>; + compatible = "st,stm32-timers"; + reg = <0x40002000 0x400>; + clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM14)>; +@@ -364,9 +360,9 @@ + status = "disabled"; + }; + +- i2c3: i2c@40005C00 { ++ i2c3: i2c@40005c00 { + compatible = "st,stm32f7-i2c"; +- reg = <0x40005C00 0x400>; ++ reg = <0x40005c00 0x400>; + interrupts = <72>, + <73>; + resets = <&rcc STM32F7_APB1_RESET(I2C3)>; +@@ -531,8 +527,6 @@ + }; + + timers10: timers@40014400 { +- #address-cells = <1>; +- #size-cells = <0>; + compatible = "st,stm32-timers"; + reg = <0x40014400 0x400>; + clocks = <&rcc 0 STM32F7_APB2_CLOCK(TIM10)>; +@@ -547,8 +541,6 @@ + }; + + timers11: timers@40014800 { +- #address-cells = <1>; +- #size-cells = <0>; + compatible = "st,stm32-timers"; + reg = <0x40014800 0x400>; + clocks = <&rcc 0 STM32F7_APB2_CLOCK(TIM11)>; +diff --git a/arch/arm/boot/dts/stm32f769-disco.dts b/arch/arm/boot/dts/stm32f769-disco.dts +index 0ce7fbc20fa4d..be943b7019806 100644 +--- a/arch/arm/boot/dts/stm32f769-disco.dts ++++ b/arch/arm/boot/dts/stm32f769-disco.dts +@@ -75,12 +75,10 @@ + }; + }; + +- gpio_keys { ++ gpio-keys { + compatible = "gpio-keys"; +- #address-cells = <1>; +- #size-cells = <0>; + autorepeat; +- button@0 { ++ button-0 { + label = "User"; + linux,code = <KEY_HOME>; + gpios = <&gpioa 0 GPIO_ACTIVE_HIGH>; +diff --git a/arch/arm/boot/dts/stm32h743.dtsi b/arch/arm/boot/dts/stm32h743.dtsi +index 05ecdf9ff03a4..6e42ca2dada2c 100644 +--- a/arch/arm/boot/dts/stm32h743.dtsi ++++ b/arch/arm/boot/dts/stm32h743.dtsi +@@ -485,8 +485,6 @@ + }; + + lptimer4: timer@58002c00 { +- #address-cells = <1>; +- #size-cells = <0>; + compatible = "st,stm32-lptimer"; + reg = <0x58002c00 0x400>; + clocks = <&rcc LPTIM4_CK>; +@@ -501,8 +499,6 @@ + }; + + lptimer5: timer@58003000 { +- #address-cells = <1>; +- #size-cells = <0>; + compatible = "st,stm32-lptimer"; + reg = <0x58003000 0x400>; + clocks = <&rcc LPTIM5_CK>; +diff --git a/arch/arm/boot/dts/stm32mp151.dtsi b/arch/arm/boot/dts/stm32mp151.dtsi +index fcd3230c469b7..23234f950de66 100644 +--- a/arch/arm/boot/dts/stm32mp151.dtsi ++++ b/arch/arm/boot/dts/stm32mp151.dtsi +@@ -1416,12 +1416,6 @@ + status = "disabled"; + }; + +- stmmac_axi_config_0: stmmac-axi-config { +- snps,wr_osr_lmt = <0x7>; +- snps,rd_osr_lmt = <0x7>; +- snps,blen = <0 0 0 0 16 8 4>; +- }; +- + ethernet0: ethernet@5800a000 { + compatible = "st,stm32mp1-dwmac", "snps,dwmac-4.20a"; + reg = <0x5800a000 0x2000>; +@@ -1447,6 +1441,12 @@ + snps,axi-config = <&stmmac_axi_config_0>; + snps,tso; + status = "disabled"; ++ ++ stmmac_axi_config_0: stmmac-axi-config { ++ snps,wr_osr_lmt = <0x7>; ++ snps,rd_osr_lmt = <0x7>; ++ snps,blen = <0 0 0 0 16 8 4>; ++ }; + }; + + usbh_ohci: usb@5800c000 { +diff --git a/arch/arm/boot/dts/stm32mp157a-microgea-stm32mp1-microdev2.0-of7.dts b/arch/arm/boot/dts/stm32mp157a-microgea-stm32mp1-microdev2.0-of7.dts +index 674b2d330dc41..5670b23812a21 100644 +--- a/arch/arm/boot/dts/stm32mp157a-microgea-stm32mp1-microdev2.0-of7.dts ++++ b/arch/arm/boot/dts/stm32mp157a-microgea-stm32mp1-microdev2.0-of7.dts +@@ -89,7 +89,7 @@ + }; + + &pinctrl { +- ltdc_pins: ltdc { ++ ltdc_pins: ltdc-0 { + pins { + pinmux = <STM32_PINMUX('G', 10, AF14)>, /* LTDC_B2 */ + <STM32_PINMUX('H', 12, AF14)>, /* LTDC_R6 */ +diff --git a/arch/arm/boot/dts/stm32mp157a-stinger96.dtsi b/arch/arm/boot/dts/stm32mp157a-stinger96.dtsi +index 113c48b2ef93d..a4b14ef3caeeb 100644 +--- a/arch/arm/boot/dts/stm32mp157a-stinger96.dtsi ++++ b/arch/arm/boot/dts/stm32mp157a-stinger96.dtsi +@@ -184,8 +184,6 @@ + + vdd_usb: ldo4 { + regulator-name = "vdd_usb"; +- regulator-min-microvolt = <3300000>; +- regulator-max-microvolt = <3300000>; + interrupts = <IT_CURLIM_LDO4 0>; + }; + +@@ -208,7 +206,6 @@ + vref_ddr: vref_ddr { + regulator-name = "vref_ddr"; + regulator-always-on; +- regulator-over-current-protection; + }; + + bst_out: boost { +@@ -219,13 +216,13 @@ + vbus_otg: pwr_sw1 { + regulator-name = "vbus_otg"; + interrupts = <IT_OCP_OTG 0>; +- regulator-active-discharge; ++ regulator-active-discharge = <1>; + }; + + vbus_sw: pwr_sw2 { + regulator-name = "vbus_sw"; + interrupts = <IT_OCP_SWOUT 0>; +- regulator-active-discharge; ++ regulator-active-discharge = <1>; + }; + }; + +diff --git a/arch/arm/boot/dts/stm32mp157c-odyssey-som.dtsi b/arch/arm/boot/dts/stm32mp157c-odyssey-som.dtsi +index 6cf49a0a9e694..2d9461006810c 100644 +--- a/arch/arm/boot/dts/stm32mp157c-odyssey-som.dtsi ++++ b/arch/arm/boot/dts/stm32mp157c-odyssey-som.dtsi +@@ -173,8 +173,6 @@ + + vdd_usb: ldo4 { + regulator-name = "vdd_usb"; +- regulator-min-microvolt = <3300000>; +- regulator-max-microvolt = <3300000>; + interrupts = <IT_CURLIM_LDO4 0>; + }; + +@@ -197,7 +195,6 @@ + vref_ddr: vref_ddr { + regulator-name = "vref_ddr"; + regulator-always-on; +- regulator-over-current-protection; + }; + + bst_out: boost { +@@ -213,7 +210,7 @@ + vbus_sw: pwr_sw2 { + regulator-name = "vbus_sw"; + interrupts = <IT_OCP_SWOUT 0>; +- regulator-active-discharge; ++ regulator-active-discharge = <1>; + }; + }; + +@@ -269,7 +266,7 @@ + st,neg-edge; + bus-width = <8>; + vmmc-supply = <&v3v3>; +- vqmmc-supply = <&v3v3>; ++ vqmmc-supply = <&vdd>; + mmc-ddr-3_3v; + status = "okay"; + }; +diff --git a/arch/arm/boot/dts/stm32mp157c-odyssey.dts b/arch/arm/boot/dts/stm32mp157c-odyssey.dts +index a7ffec8f15164..be1dd5e9e7443 100644 +--- a/arch/arm/boot/dts/stm32mp157c-odyssey.dts ++++ b/arch/arm/boot/dts/stm32mp157c-odyssey.dts +@@ -64,7 +64,7 @@ + pinctrl-0 = <&sdmmc1_b4_pins_a>; + pinctrl-1 = <&sdmmc1_b4_od_pins_a>; + pinctrl-2 = <&sdmmc1_b4_sleep_pins_a>; +- cd-gpios = <&gpiob 7 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; ++ cd-gpios = <&gpioi 3 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; + disable-wp; + st,neg-edge; + bus-width = <4>; +diff --git a/arch/arm/boot/dts/stm32mp15xx-dhcom-pdk2.dtsi b/arch/arm/boot/dts/stm32mp15xx-dhcom-pdk2.dtsi +index 5523f4138fd69..c5ea08fec535f 100644 +--- a/arch/arm/boot/dts/stm32mp15xx-dhcom-pdk2.dtsi ++++ b/arch/arm/boot/dts/stm32mp15xx-dhcom-pdk2.dtsi +@@ -34,7 +34,6 @@ + + gpio-keys-polled { + compatible = "gpio-keys-polled"; +- #size-cells = <0>; + poll-interval = <20>; + + /* +@@ -60,7 +59,6 @@ + + gpio-keys { + compatible = "gpio-keys"; +- #size-cells = <0>; + + button-1 { + label = "TA2-GPIO-B"; +@@ -184,12 +182,11 @@ + + }; + +- polytouch@38 { +- compatible = "edt,edt-ft5x06"; ++ touchscreen@38 { ++ compatible = "edt,edt-ft5406"; + reg = <0x38>; + interrupt-parent = <&gpiog>; + interrupts = <2 IRQ_TYPE_EDGE_FALLING>; /* GPIO E */ +- linux,wakeup; + }; + }; + +diff --git a/arch/arm/boot/dts/stm32mp15xx-dhcom-som.dtsi b/arch/arm/boot/dts/stm32mp15xx-dhcom-som.dtsi +index 31d08423a32f0..2af0a67526747 100644 +--- a/arch/arm/boot/dts/stm32mp15xx-dhcom-som.dtsi ++++ b/arch/arm/boot/dts/stm32mp15xx-dhcom-som.dtsi +@@ -150,7 +150,7 @@ + pinctrl-1 = <&fmc_sleep_pins_b>; + status = "okay"; + +- ksz8851: ks8851mll@1,0 { ++ ksz8851: ethernet@1,0 { + compatible = "micrel,ks8851-mll"; + reg = <1 0x0 0x2>, <1 0x2 0x20000>; + interrupt-parent = <&gpioc>; +@@ -333,8 +333,6 @@ + + vdd_usb: ldo4 { + regulator-name = "vdd_usb"; +- regulator-min-microvolt = <3300000>; +- regulator-max-microvolt = <3300000>; + interrupts = <IT_CURLIM_LDO4 0>; + }; + +@@ -356,7 +354,6 @@ + vref_ddr: vref_ddr { + regulator-name = "vref_ddr"; + regulator-always-on; +- regulator-over-current-protection; + }; + + bst_out: boost { +@@ -372,7 +369,7 @@ + vbus_sw: pwr_sw2 { + regulator-name = "vbus_sw"; + interrupts = <IT_OCP_SWOUT 0>; +- regulator-active-discharge; ++ regulator-active-discharge = <1>; + }; + }; + +@@ -437,7 +434,7 @@ + #size-cells = <0>; + status = "okay"; + +- flash0: mx66l51235l@0 { ++ flash0: flash@0 { + compatible = "jedec,spi-nor"; + reg = <0>; + spi-rx-bus-width = <4>; +diff --git a/arch/arm/boot/dts/stm32mp15xx-dhcor-som.dtsi b/arch/arm/boot/dts/stm32mp15xx-dhcor-som.dtsi +index 013ae369791d7..2b0ac605549d7 100644 +--- a/arch/arm/boot/dts/stm32mp15xx-dhcor-som.dtsi ++++ b/arch/arm/boot/dts/stm32mp15xx-dhcor-som.dtsi +@@ -198,7 +198,7 @@ + #size-cells = <0>; + status = "okay"; + +- flash0: spi-flash@0 { ++ flash0: flash@0 { + compatible = "jedec,spi-nor"; + reg = <0>; + spi-rx-bus-width = <4>; +diff --git a/arch/arm/boot/dts/stm32mp15xx-osd32.dtsi b/arch/arm/boot/dts/stm32mp15xx-osd32.dtsi +index 713485a95795a..6706d8311a665 100644 +--- a/arch/arm/boot/dts/stm32mp15xx-osd32.dtsi ++++ b/arch/arm/boot/dts/stm32mp15xx-osd32.dtsi +@@ -146,8 +146,6 @@ + + vdd_usb: ldo4 { + regulator-name = "vdd_usb"; +- regulator-min-microvolt = <3300000>; +- regulator-max-microvolt = <3300000>; + interrupts = <IT_CURLIM_LDO4 0>; + }; + +@@ -171,7 +169,6 @@ + vref_ddr: vref_ddr { + regulator-name = "vref_ddr"; + regulator-always-on; +- regulator-over-current-protection; + }; + + bst_out: boost { +@@ -182,13 +179,13 @@ + vbus_otg: pwr_sw1 { + regulator-name = "vbus_otg"; + interrupts = <IT_OCP_OTG 0>; +- regulator-active-discharge; ++ regulator-active-discharge = <1>; + }; + + vbus_sw: pwr_sw2 { + regulator-name = "vbus_sw"; + interrupts = <IT_OCP_SWOUT 0>; +- regulator-active-discharge; ++ regulator-active-discharge = <1>; + }; + }; + +diff --git a/arch/arm/boot/dts/tegra20-acer-a500-picasso.dts b/arch/arm/boot/dts/tegra20-acer-a500-picasso.dts +index 2298fc034183b..14cd3238355b7 100644 +--- a/arch/arm/boot/dts/tegra20-acer-a500-picasso.dts ++++ b/arch/arm/boot/dts/tegra20-acer-a500-picasso.dts +@@ -1030,7 +1030,7 @@ + nvidia,audio-codec = <&wm8903>; + + nvidia,spkr-en-gpios = <&wm8903 2 GPIO_ACTIVE_HIGH>; +- nvidia,hp-det-gpios = <&gpio TEGRA_GPIO(W, 2) GPIO_ACTIVE_HIGH>; ++ nvidia,hp-det-gpios = <&gpio TEGRA_GPIO(W, 2) GPIO_ACTIVE_LOW>; + nvidia,int-mic-en-gpios = <&wm8903 1 GPIO_ACTIVE_HIGH>; + nvidia,headset; + +diff --git a/arch/arm/boot/dts/tegra20-harmony.dts b/arch/arm/boot/dts/tegra20-harmony.dts +index 86494cb4d5a1d..ae4312eedcbd5 100644 +--- a/arch/arm/boot/dts/tegra20-harmony.dts ++++ b/arch/arm/boot/dts/tegra20-harmony.dts +@@ -748,7 +748,7 @@ + + nvidia,spkr-en-gpios = <&wm8903 2 GPIO_ACTIVE_HIGH>; + nvidia,hp-det-gpios = <&gpio TEGRA_GPIO(W, 2) +- GPIO_ACTIVE_HIGH>; ++ GPIO_ACTIVE_LOW>; + nvidia,int-mic-en-gpios = <&gpio TEGRA_GPIO(X, 0) + GPIO_ACTIVE_HIGH>; + nvidia,ext-mic-en-gpios = <&gpio TEGRA_GPIO(X, 1) +diff --git a/arch/arm/boot/dts/tegra20-medcom-wide.dts b/arch/arm/boot/dts/tegra20-medcom-wide.dts +index a348ca30e522b..b31c9bca16e6a 100644 +--- a/arch/arm/boot/dts/tegra20-medcom-wide.dts ++++ b/arch/arm/boot/dts/tegra20-medcom-wide.dts +@@ -84,7 +84,7 @@ + nvidia,audio-codec = <&wm8903>; + + nvidia,spkr-en-gpios = <&wm8903 2 GPIO_ACTIVE_HIGH>; +- nvidia,hp-det-gpios = <&gpio TEGRA_GPIO(W, 2) GPIO_ACTIVE_HIGH>; ++ nvidia,hp-det-gpios = <&gpio TEGRA_GPIO(W, 2) GPIO_ACTIVE_LOW>; + + clocks = <&tegra_car TEGRA20_CLK_PLL_A>, + <&tegra_car TEGRA20_CLK_PLL_A_OUT0>, +diff --git a/arch/arm/boot/dts/tegra20-plutux.dts b/arch/arm/boot/dts/tegra20-plutux.dts +index 378f23b2958b1..5811b7006a9bf 100644 +--- a/arch/arm/boot/dts/tegra20-plutux.dts ++++ b/arch/arm/boot/dts/tegra20-plutux.dts +@@ -52,7 +52,7 @@ + nvidia,audio-codec = <&wm8903>; + + nvidia,spkr-en-gpios = <&wm8903 2 GPIO_ACTIVE_HIGH>; +- nvidia,hp-det-gpios = <&gpio TEGRA_GPIO(W, 2) GPIO_ACTIVE_HIGH>; ++ nvidia,hp-det-gpios = <&gpio TEGRA_GPIO(W, 2) GPIO_ACTIVE_LOW>; + + clocks = <&tegra_car TEGRA20_CLK_PLL_A>, + <&tegra_car TEGRA20_CLK_PLL_A_OUT0>, +diff --git a/arch/arm/boot/dts/tegra20-seaboard.dts b/arch/arm/boot/dts/tegra20-seaboard.dts +index c24d4a37613e9..92d494b8c3d25 100644 +--- a/arch/arm/boot/dts/tegra20-seaboard.dts ++++ b/arch/arm/boot/dts/tegra20-seaboard.dts +@@ -911,7 +911,7 @@ + nvidia,audio-codec = <&wm8903>; + + nvidia,spkr-en-gpios = <&wm8903 2 GPIO_ACTIVE_HIGH>; +- nvidia,hp-det-gpios = <&gpio TEGRA_GPIO(X, 1) GPIO_ACTIVE_HIGH>; ++ nvidia,hp-det-gpios = <&gpio TEGRA_GPIO(X, 1) GPIO_ACTIVE_LOW>; + + clocks = <&tegra_car TEGRA20_CLK_PLL_A>, + <&tegra_car TEGRA20_CLK_PLL_A_OUT0>, +diff --git a/arch/arm/boot/dts/tegra20-tec.dts b/arch/arm/boot/dts/tegra20-tec.dts +index 44ced60315de1..10ff09d86efa7 100644 +--- a/arch/arm/boot/dts/tegra20-tec.dts ++++ b/arch/arm/boot/dts/tegra20-tec.dts +@@ -61,7 +61,7 @@ + + nvidia,spkr-en-gpios = <&wm8903 2 GPIO_ACTIVE_HIGH>; + nvidia,hp-det-gpios = <&gpio TEGRA_GPIO(W, 2) +- GPIO_ACTIVE_HIGH>; ++ GPIO_ACTIVE_LOW>; + + clocks = <&tegra_car TEGRA20_CLK_PLL_A>, + <&tegra_car TEGRA20_CLK_PLL_A_OUT0>, +diff --git a/arch/arm/boot/dts/tegra20-ventana.dts b/arch/arm/boot/dts/tegra20-ventana.dts +index 99a356c1ccec3..5a2578b3707f4 100644 +--- a/arch/arm/boot/dts/tegra20-ventana.dts ++++ b/arch/arm/boot/dts/tegra20-ventana.dts +@@ -709,7 +709,7 @@ + nvidia,audio-codec = <&wm8903>; + + nvidia,spkr-en-gpios = <&wm8903 2 GPIO_ACTIVE_HIGH>; +- nvidia,hp-det-gpios = <&gpio TEGRA_GPIO(W, 2) GPIO_ACTIVE_HIGH>; ++ nvidia,hp-det-gpios = <&gpio TEGRA_GPIO(W, 2) GPIO_ACTIVE_LOW>; + nvidia,int-mic-en-gpios = <&gpio TEGRA_GPIO(X, 0) + GPIO_ACTIVE_HIGH>; + nvidia,ext-mic-en-gpios = <&gpio TEGRA_GPIO(X, 1) +diff --git a/arch/arm/boot/dts/tegra30-asus-nexus7-grouper-ti-pmic.dtsi b/arch/arm/boot/dts/tegra30-asus-nexus7-grouper-ti-pmic.dtsi +index b97da45ebdb48..e1325ee0a3c46 100644 +--- a/arch/arm/boot/dts/tegra30-asus-nexus7-grouper-ti-pmic.dtsi ++++ b/arch/arm/boot/dts/tegra30-asus-nexus7-grouper-ti-pmic.dtsi +@@ -144,7 +144,7 @@ + }; + + vdd_3v3_sys: regulator@1 { +- gpio = <&pmic 7 GPIO_ACTIVE_HIGH>; ++ gpio = <&pmic 6 GPIO_ACTIVE_HIGH>; + enable-active-high; + }; + }; +diff --git a/arch/arm/boot/dts/tegra30-cardhu.dtsi b/arch/arm/boot/dts/tegra30-cardhu.dtsi +index 2dff14b87f3e6..d9dd11569d4b2 100644 +--- a/arch/arm/boot/dts/tegra30-cardhu.dtsi ++++ b/arch/arm/boot/dts/tegra30-cardhu.dtsi +@@ -630,7 +630,7 @@ + + nvidia,spkr-en-gpios = <&wm8903 2 GPIO_ACTIVE_HIGH>; + nvidia,hp-det-gpios = <&gpio TEGRA_GPIO(W, 2) +- GPIO_ACTIVE_HIGH>; ++ GPIO_ACTIVE_LOW>; + + clocks = <&tegra_car TEGRA30_CLK_PLL_A>, + <&tegra_car TEGRA30_CLK_PLL_A_OUT0>, +diff --git a/arch/arm/mach-imx/suspend-imx53.S b/arch/arm/mach-imx/suspend-imx53.S +index 41b8aad653634..46570ec2fbcfe 100644 +--- a/arch/arm/mach-imx/suspend-imx53.S ++++ b/arch/arm/mach-imx/suspend-imx53.S +@@ -28,11 +28,11 @@ + * ^ + * ^ + * imx53_suspend code +- * PM_INFO structure(imx53_suspend_info) ++ * PM_INFO structure(imx5_cpu_suspend_info) + * ======================== low address ======================= + */ + +-/* Offsets of members of struct imx53_suspend_info */ ++/* Offsets of members of struct imx5_cpu_suspend_info */ + #define SUSPEND_INFO_MX53_M4IF_V_OFFSET 0x0 + #define SUSPEND_INFO_MX53_IOMUXC_V_OFFSET 0x4 + #define SUSPEND_INFO_MX53_IO_COUNT_OFFSET 0x8 +diff --git a/arch/arm/mach-omap2/pm33xx-core.c b/arch/arm/mach-omap2/pm33xx-core.c +index 56f2c0bcae5a3..bf0d25fd2cea4 100644 +--- a/arch/arm/mach-omap2/pm33xx-core.c ++++ b/arch/arm/mach-omap2/pm33xx-core.c +@@ -8,6 +8,7 @@ + + #include <linux/cpuidle.h> + #include <linux/platform_data/pm33xx.h> ++#include <linux/suspend.h> + #include <asm/cpuidle.h> + #include <asm/smp_scu.h> + #include <asm/suspend.h> +@@ -324,6 +325,44 @@ static struct am33xx_pm_platform_data *am33xx_pm_get_pdata(void) + return NULL; + } + ++#ifdef CONFIG_SUSPEND ++/* ++ * Block system suspend initially. Later on pm33xx sets up it's own ++ * platform_suspend_ops after probe. That depends also on loaded ++ * wkup_m3_ipc and booted am335x-pm-firmware.elf. ++ */ ++static int amx3_suspend_block(suspend_state_t state) ++{ ++ pr_warn("PM not initialized for pm33xx, wkup_m3_ipc, or am335x-pm-firmware.elf\n"); ++ ++ return -EINVAL; ++} ++ ++static int amx3_pm_valid(suspend_state_t state) ++{ ++ switch (state) { ++ case PM_SUSPEND_STANDBY: ++ return 1; ++ default: ++ return 0; ++ } ++} ++ ++static const struct platform_suspend_ops amx3_blocked_pm_ops = { ++ .begin = amx3_suspend_block, ++ .valid = amx3_pm_valid, ++}; ++ ++static void __init amx3_block_suspend(void) ++{ ++ suspend_set_ops(&amx3_blocked_pm_ops); ++} ++#else ++static inline void amx3_block_suspend(void) ++{ ++} ++#endif /* CONFIG_SUSPEND */ ++ + int __init amx3_common_pm_init(void) + { + struct am33xx_pm_platform_data *pdata; +@@ -337,6 +376,7 @@ int __init amx3_common_pm_init(void) + devinfo.size_data = sizeof(*pdata); + devinfo.id = -1; + platform_device_register_full(&devinfo); ++ amx3_block_suspend(); + + return 0; + } +diff --git a/arch/arm64/boot/dts/arm/juno-base.dtsi b/arch/arm64/boot/dts/arm/juno-base.dtsi +index 1cc7fdcec51bc..8e7a66943b018 100644 +--- a/arch/arm64/boot/dts/arm/juno-base.dtsi ++++ b/arch/arm64/boot/dts/arm/juno-base.dtsi +@@ -568,13 +568,13 @@ + clocks { + compatible = "arm,scpi-clocks"; + +- scpi_dvfs: scpi-dvfs { ++ scpi_dvfs: clocks-0 { + compatible = "arm,scpi-dvfs-clocks"; + #clock-cells = <1>; + clock-indices = <0>, <1>, <2>; + clock-output-names = "atlclk", "aplclk","gpuclk"; + }; +- scpi_clk: scpi-clk { ++ scpi_clk: clocks-1 { + compatible = "arm,scpi-variable-clocks"; + #clock-cells = <1>; + clock-indices = <3>; +@@ -582,7 +582,7 @@ + }; + }; + +- scpi_devpd: scpi-power-domains { ++ scpi_devpd: power-controller { + compatible = "arm,scpi-power-domains"; + num-domains = <2>; + #power-domain-cells = <1>; +diff --git a/arch/arm64/boot/dts/broadcom/bcm4908/bcm4908.dtsi b/arch/arm64/boot/dts/broadcom/bcm4908/bcm4908.dtsi +index 8060178b365d8..a5a64d17d9ea6 100644 +--- a/arch/arm64/boot/dts/broadcom/bcm4908/bcm4908.dtsi ++++ b/arch/arm64/boot/dts/broadcom/bcm4908/bcm4908.dtsi +@@ -306,7 +306,7 @@ + interrupt-names = "nand"; + status = "okay"; + +- nandcs: nandcs@0 { ++ nandcs: nand@0 { + compatible = "brcm,nandcs"; + reg = <0>; + }; +diff --git a/arch/arm64/boot/dts/freescale/fsl-ls208xa.dtsi b/arch/arm64/boot/dts/freescale/fsl-ls208xa.dtsi +index 135ac82108714..801ba9612d361 100644 +--- a/arch/arm64/boot/dts/freescale/fsl-ls208xa.dtsi ++++ b/arch/arm64/boot/dts/freescale/fsl-ls208xa.dtsi +@@ -929,7 +929,6 @@ + QORIQ_CLK_PLL_DIV(4)>; + clock-names = "dspi"; + spi-num-chipselects = <5>; +- bus-num = <0>; + }; + + esdhc: esdhc@2140000 { +diff --git a/arch/arm64/boot/dts/freescale/imx8-ss-conn.dtsi b/arch/arm64/boot/dts/freescale/imx8-ss-conn.dtsi +index e1e81ca0ca698..a79f42a9618ec 100644 +--- a/arch/arm64/boot/dts/freescale/imx8-ss-conn.dtsi ++++ b/arch/arm64/boot/dts/freescale/imx8-ss-conn.dtsi +@@ -77,9 +77,12 @@ conn_subsys: bus@5b000000 { + <GIC_SPI 259 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&enet0_lpcg IMX_LPCG_CLK_4>, + <&enet0_lpcg IMX_LPCG_CLK_2>, +- <&enet0_lpcg IMX_LPCG_CLK_1>, ++ <&enet0_lpcg IMX_LPCG_CLK_3>, + <&enet0_lpcg IMX_LPCG_CLK_0>; + clock-names = "ipg", "ahb", "enet_clk_ref", "ptp"; ++ assigned-clocks = <&clk IMX_SC_R_ENET_0 IMX_SC_PM_CLK_PER>, ++ <&clk IMX_SC_R_ENET_0 IMX_SC_C_CLKDIV>; ++ assigned-clock-rates = <250000000>, <125000000>; + fsl,num-tx-queues=<3>; + fsl,num-rx-queues=<3>; + power-domains = <&pd IMX_SC_R_ENET_0>; +@@ -94,9 +97,12 @@ conn_subsys: bus@5b000000 { + <GIC_SPI 263 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&enet1_lpcg IMX_LPCG_CLK_4>, + <&enet1_lpcg IMX_LPCG_CLK_2>, +- <&enet1_lpcg IMX_LPCG_CLK_1>, ++ <&enet1_lpcg IMX_LPCG_CLK_3>, + <&enet1_lpcg IMX_LPCG_CLK_0>; + clock-names = "ipg", "ahb", "enet_clk_ref", "ptp"; ++ assigned-clocks = <&clk IMX_SC_R_ENET_1 IMX_SC_PM_CLK_PER>, ++ <&clk IMX_SC_R_ENET_1 IMX_SC_C_CLKDIV>; ++ assigned-clock-rates = <250000000>, <125000000>; + fsl,num-tx-queues=<3>; + fsl,num-rx-queues=<3>; + power-domains = <&pd IMX_SC_R_ENET_1>; +@@ -152,15 +158,19 @@ conn_subsys: bus@5b000000 { + #clock-cells = <1>; + clocks = <&clk IMX_SC_R_ENET_0 IMX_SC_PM_CLK_PER>, + <&clk IMX_SC_R_ENET_0 IMX_SC_PM_CLK_PER>, +- <&conn_axi_clk>, <&conn_ipg_clk>, <&conn_ipg_clk>; ++ <&conn_axi_clk>, ++ <&clk IMX_SC_R_ENET_0 IMX_SC_C_TXCLK>, ++ <&conn_ipg_clk>, ++ <&conn_ipg_clk>; + clock-indices = <IMX_LPCG_CLK_0>, <IMX_LPCG_CLK_1>, +- <IMX_LPCG_CLK_2>, <IMX_LPCG_CLK_4>, +- <IMX_LPCG_CLK_5>; +- clock-output-names = "enet0_ipg_root_clk", +- "enet0_tx_clk", +- "enet0_ahb_clk", +- "enet0_ipg_clk", +- "enet0_ipg_s_clk"; ++ <IMX_LPCG_CLK_2>, <IMX_LPCG_CLK_3>, ++ <IMX_LPCG_CLK_4>, <IMX_LPCG_CLK_5>; ++ clock-output-names = "enet0_lpcg_timer_clk", ++ "enet0_lpcg_txc_sampling_clk", ++ "enet0_lpcg_ahb_clk", ++ "enet0_lpcg_rgmii_txc_clk", ++ "enet0_lpcg_ipg_clk", ++ "enet0_lpcg_ipg_s_clk"; + power-domains = <&pd IMX_SC_R_ENET_0>; + }; + +@@ -170,15 +180,19 @@ conn_subsys: bus@5b000000 { + #clock-cells = <1>; + clocks = <&clk IMX_SC_R_ENET_1 IMX_SC_PM_CLK_PER>, + <&clk IMX_SC_R_ENET_1 IMX_SC_PM_CLK_PER>, +- <&conn_axi_clk>, <&conn_ipg_clk>, <&conn_ipg_clk>; ++ <&conn_axi_clk>, ++ <&clk IMX_SC_R_ENET_1 IMX_SC_C_TXCLK>, ++ <&conn_ipg_clk>, ++ <&conn_ipg_clk>; + clock-indices = <IMX_LPCG_CLK_0>, <IMX_LPCG_CLK_1>, +- <IMX_LPCG_CLK_2>, <IMX_LPCG_CLK_4>, +- <IMX_LPCG_CLK_5>; +- clock-output-names = "enet1_ipg_root_clk", +- "enet1_tx_clk", +- "enet1_ahb_clk", +- "enet1_ipg_clk", +- "enet1_ipg_s_clk"; ++ <IMX_LPCG_CLK_2>, <IMX_LPCG_CLK_3>, ++ <IMX_LPCG_CLK_4>, <IMX_LPCG_CLK_5>; ++ clock-output-names = "enet1_lpcg_timer_clk", ++ "enet1_lpcg_txc_sampling_clk", ++ "enet1_lpcg_ahb_clk", ++ "enet1_lpcg_rgmii_txc_clk", ++ "enet1_lpcg_ipg_clk", ++ "enet1_lpcg_ipg_s_clk"; + power-domains = <&pd IMX_SC_R_ENET_1>; + }; + }; +diff --git a/arch/arm64/boot/dts/freescale/imx8mn-beacon-som.dtsi b/arch/arm64/boot/dts/freescale/imx8mn-beacon-som.dtsi +index c35eeaff958f5..54eaf3d6055b1 100644 +--- a/arch/arm64/boot/dts/freescale/imx8mn-beacon-som.dtsi ++++ b/arch/arm64/boot/dts/freescale/imx8mn-beacon-som.dtsi +@@ -120,6 +120,9 @@ + interrupt-parent = <&gpio1>; + interrupts = <3 IRQ_TYPE_LEVEL_LOW>; + rohm,reset-snvs-powered; ++ #clock-cells = <0>; ++ clocks = <&osc_32k 0>; ++ clock-output-names = "clk-32k-out"; + + regulators { + buck1_reg: BUCK1 { +diff --git a/arch/arm64/boot/dts/freescale/imx8mq.dtsi b/arch/arm64/boot/dts/freescale/imx8mq.dtsi +index 17c449e12c2e5..91df9c5350ae5 100644 +--- a/arch/arm64/boot/dts/freescale/imx8mq.dtsi ++++ b/arch/arm64/boot/dts/freescale/imx8mq.dtsi +@@ -1383,6 +1383,14 @@ + <&src IMX8MQ_RESET_PCIE_CTRL_APPS_EN>, + <&src IMX8MQ_RESET_PCIE_CTRL_APPS_TURNOFF>; + reset-names = "pciephy", "apps", "turnoff"; ++ assigned-clocks = <&clk IMX8MQ_CLK_PCIE1_CTRL>, ++ <&clk IMX8MQ_CLK_PCIE1_PHY>, ++ <&clk IMX8MQ_CLK_PCIE1_AUX>; ++ assigned-clock-parents = <&clk IMX8MQ_SYS2_PLL_250M>, ++ <&clk IMX8MQ_SYS2_PLL_100M>, ++ <&clk IMX8MQ_SYS1_PLL_80M>; ++ assigned-clock-rates = <250000000>, <100000000>, ++ <10000000>; + status = "disabled"; + }; + +@@ -1413,6 +1421,14 @@ + <&src IMX8MQ_RESET_PCIE2_CTRL_APPS_EN>, + <&src IMX8MQ_RESET_PCIE2_CTRL_APPS_TURNOFF>; + reset-names = "pciephy", "apps", "turnoff"; ++ assigned-clocks = <&clk IMX8MQ_CLK_PCIE2_CTRL>, ++ <&clk IMX8MQ_CLK_PCIE2_PHY>, ++ <&clk IMX8MQ_CLK_PCIE2_AUX>; ++ assigned-clock-parents = <&clk IMX8MQ_SYS2_PLL_250M>, ++ <&clk IMX8MQ_SYS2_PLL_100M>, ++ <&clk IMX8MQ_SYS1_PLL_80M>; ++ assigned-clock-rates = <250000000>, <100000000>, ++ <10000000>; + status = "disabled"; + }; + +diff --git a/arch/arm64/boot/dts/marvell/armada-3720-turris-mox.dts b/arch/arm64/boot/dts/marvell/armada-3720-turris-mox.dts +index 53e817c5f6f36..ce2bcddf396f8 100644 +--- a/arch/arm64/boot/dts/marvell/armada-3720-turris-mox.dts ++++ b/arch/arm64/boot/dts/marvell/armada-3720-turris-mox.dts +@@ -109,10 +109,8 @@ + }; + + firmware { +- turris-mox-rwtm { +- compatible = "cznic,turris-mox-rwtm"; +- mboxes = <&rwtm 0>; +- status = "okay"; ++ armada-3700-rwtm { ++ compatible = "marvell,armada-3700-rwtm-firmware", "cznic,turris-mox-rwtm"; + }; + }; + }; +diff --git a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi +index 6ffbb099fcac7..5db81a416cd65 100644 +--- a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi ++++ b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi +@@ -504,4 +504,12 @@ + }; + }; + }; ++ ++ firmware { ++ armada-3700-rwtm { ++ compatible = "marvell,armada-3700-rwtm-firmware"; ++ mboxes = <&rwtm 0>; ++ status = "okay"; ++ }; ++ }; + }; +diff --git a/arch/arm64/boot/dts/marvell/cn9130-db.dts b/arch/arm64/boot/dts/marvell/cn9130-db.dts +index 2c2af001619b0..9758609541c7b 100644 +--- a/arch/arm64/boot/dts/marvell/cn9130-db.dts ++++ b/arch/arm64/boot/dts/marvell/cn9130-db.dts +@@ -260,7 +260,7 @@ + }; + partition@200000 { + label = "Linux"; +- reg = <0x200000 0xd00000>; ++ reg = <0x200000 0xe00000>; + }; + partition@1000000 { + label = "Filesystem"; +diff --git a/arch/arm64/boot/dts/nvidia/tegra194.dtsi b/arch/arm64/boot/dts/nvidia/tegra194.dtsi +index 9449156fae391..2e40b60472833 100644 +--- a/arch/arm64/boot/dts/nvidia/tegra194.dtsi ++++ b/arch/arm64/boot/dts/nvidia/tegra194.dtsi +@@ -2345,6 +2345,20 @@ + }; + }; + ++ pmu { ++ compatible = "arm,armv8-pmuv3"; ++ interrupts = <GIC_SPI 384 IRQ_TYPE_LEVEL_HIGH>, ++ <GIC_SPI 385 IRQ_TYPE_LEVEL_HIGH>, ++ <GIC_SPI 386 IRQ_TYPE_LEVEL_HIGH>, ++ <GIC_SPI 387 IRQ_TYPE_LEVEL_HIGH>, ++ <GIC_SPI 388 IRQ_TYPE_LEVEL_HIGH>, ++ <GIC_SPI 389 IRQ_TYPE_LEVEL_HIGH>, ++ <GIC_SPI 390 IRQ_TYPE_LEVEL_HIGH>, ++ <GIC_SPI 391 IRQ_TYPE_LEVEL_HIGH>; ++ interrupt-affinity = <&cpu0_0 &cpu0_1 &cpu1_0 &cpu1_1 ++ &cpu2_0 &cpu2_1 &cpu3_0 &cpu3_1>; ++ }; ++ + psci { + compatible = "arm,psci-1.0"; + status = "okay"; +diff --git a/arch/arm64/boot/dts/qcom/sc7180-idp.dts b/arch/arm64/boot/dts/qcom/sc7180-idp.dts +index e77a7926034a7..afe0f9c258164 100644 +--- a/arch/arm64/boot/dts/qcom/sc7180-idp.dts ++++ b/arch/arm64/boot/dts/qcom/sc7180-idp.dts +@@ -45,7 +45,7 @@ + + /* Increase the size from 2MB to 8MB */ + &rmtfs_mem { +- reg = <0x0 0x84400000 0x0 0x800000>; ++ reg = <0x0 0x94600000 0x0 0x800000>; + }; + + / { +diff --git a/arch/arm64/boot/dts/qcom/sc7180-trogdor-coachz.dtsi b/arch/arm64/boot/dts/qcom/sc7180-trogdor-coachz.dtsi +index 4c6e433c8226a..3eb8550da1fc5 100644 +--- a/arch/arm64/boot/dts/qcom/sc7180-trogdor-coachz.dtsi ++++ b/arch/arm64/boot/dts/qcom/sc7180-trogdor-coachz.dtsi +@@ -23,6 +23,7 @@ ap_h1_spi: &spi0 {}; + adau7002: audio-codec-1 { + compatible = "adi,adau7002"; + IOVDD-supply = <&pp1800_l15a>; ++ wakeup-delay-ms = <15>; + #sound-dai-cells = <0>; + }; + }; +diff --git a/arch/arm64/boot/dts/qcom/sm8150-hdk.dts b/arch/arm64/boot/dts/qcom/sm8150-hdk.dts +index fb2cf3d987a18..50ee3bb97325a 100644 +--- a/arch/arm64/boot/dts/qcom/sm8150-hdk.dts ++++ b/arch/arm64/boot/dts/qcom/sm8150-hdk.dts +@@ -354,7 +354,11 @@ + }; + }; + +-&qupv3_id_1 { ++&gmu { ++ status = "okay"; ++}; ++ ++&gpu { + status = "okay"; + }; + +@@ -372,6 +376,10 @@ + }; + }; + ++&qupv3_id_1 { ++ status = "okay"; ++}; ++ + &remoteproc_adsp { + status = "okay"; + +diff --git a/arch/arm64/boot/dts/qcom/sm8150-mtp.dts b/arch/arm64/boot/dts/qcom/sm8150-mtp.dts +index 3774f8e634164..7de54b2e497e8 100644 +--- a/arch/arm64/boot/dts/qcom/sm8150-mtp.dts ++++ b/arch/arm64/boot/dts/qcom/sm8150-mtp.dts +@@ -349,7 +349,11 @@ + }; + }; + +-&qupv3_id_1 { ++&gmu { ++ status = "okay"; ++}; ++ ++&gpu { + status = "okay"; + }; + +@@ -367,6 +371,10 @@ + }; + }; + ++&qupv3_id_1 { ++ status = "okay"; ++}; ++ + &remoteproc_adsp { + status = "okay"; + firmware-name = "qcom/sm8150/adsp.mdt"; +diff --git a/arch/arm64/boot/dts/qcom/sm8150.dtsi b/arch/arm64/boot/dts/qcom/sm8150.dtsi +index 51235a9521c24..618a1e64f8080 100644 +--- a/arch/arm64/boot/dts/qcom/sm8150.dtsi ++++ b/arch/arm64/boot/dts/qcom/sm8150.dtsi +@@ -1082,6 +1082,8 @@ + + qcom,gmu = <&gmu>; + ++ status = "disabled"; ++ + zap-shader { + memory-region = <&gpu_mem>; + }; +@@ -1149,6 +1151,8 @@ + + operating-points-v2 = <&gmu_opp_table>; + ++ status = "disabled"; ++ + gmu_opp_table: opp-table { + compatible = "operating-points-v2"; + +@@ -1496,6 +1500,8 @@ + qcom,smem-states = <&modem_smp2p_out 0>; + qcom,smem-state-names = "stop"; + ++ status = "disabled"; ++ + glink-edge { + interrupts = <GIC_SPI 449 IRQ_TYPE_EDGE_RISING>; + label = "modem"; +diff --git a/arch/arm64/boot/dts/qcom/sm8250.dtsi b/arch/arm64/boot/dts/qcom/sm8250.dtsi +index 4c0de12aaba6f..09b5523965579 100644 +--- a/arch/arm64/boot/dts/qcom/sm8250.dtsi ++++ b/arch/arm64/boot/dts/qcom/sm8250.dtsi +@@ -1470,7 +1470,7 @@ + + status = "disabled"; + +- pcie2_lane: lanes@1c0e200 { ++ pcie2_lane: lanes@1c16200 { + reg = <0 0x1c16200 0 0x170>, /* tx0 */ + <0 0x1c16400 0 0x200>, /* rx0 */ + <0 0x1c16a00 0 0x1f0>, /* pcs */ +@@ -2370,7 +2370,7 @@ + }; + + mdss: mdss@ae00000 { +- compatible = "qcom,sdm845-mdss"; ++ compatible = "qcom,sm8250-mdss"; + reg = <0 0x0ae00000 0 0x1000>; + reg-names = "mdss"; + +@@ -2402,7 +2402,7 @@ + ranges; + + mdss_mdp: mdp@ae01000 { +- compatible = "qcom,sdm845-dpu"; ++ compatible = "qcom,sm8250-dpu"; + reg = <0 0x0ae01000 0 0x8f000>, + <0 0x0aeb0000 0 0x2008>; + reg-names = "mdp", "vbif"; +diff --git a/arch/arm64/boot/dts/qcom/sm8350.dtsi b/arch/arm64/boot/dts/qcom/sm8350.dtsi +index ed0b51bc03ea7..a2382eb8619ba 100644 +--- a/arch/arm64/boot/dts/qcom/sm8350.dtsi ++++ b/arch/arm64/boot/dts/qcom/sm8350.dtsi +@@ -689,7 +689,7 @@ + interrupt-controller; + }; + +- tsens0: thermal-sensor@c222000 { ++ tsens0: thermal-sensor@c263000 { + compatible = "qcom,sm8350-tsens", "qcom,tsens-v2"; + reg = <0 0x0c263000 0 0x1ff>, /* TM */ + <0 0x0c222000 0 0x8>; /* SROT */ +@@ -700,7 +700,7 @@ + #thermal-sensor-cells = <1>; + }; + +- tsens1: thermal-sensor@c223000 { ++ tsens1: thermal-sensor@c265000 { + compatible = "qcom,sm8350-tsens", "qcom,tsens-v2"; + reg = <0 0x0c265000 0 0x1ff>, /* TM */ + <0 0x0c223000 0 0x8>; /* SROT */ +@@ -1176,7 +1176,7 @@ + }; + }; + +- dc_noc: interconnect@90e0000 { ++ dc_noc: interconnect@90c0000 { + compatible = "qcom,sm8350-dc-noc"; + reg = <0 0x090c0000 0 0x4200>; + #interconnect-cells = <1>; +diff --git a/arch/arm64/boot/dts/renesas/beacon-renesom-baseboard.dtsi b/arch/arm64/boot/dts/renesas/beacon-renesom-baseboard.dtsi +index d8046fedf9c12..e3c8b2fe143ea 100644 +--- a/arch/arm64/boot/dts/renesas/beacon-renesom-baseboard.dtsi ++++ b/arch/arm64/boot/dts/renesas/beacon-renesom-baseboard.dtsi +@@ -271,12 +271,12 @@ + &ehci0 { + dr_mode = "otg"; + status = "okay"; +- clocks = <&cpg CPG_MOD 703>, <&cpg CPG_MOD 704>; ++ clocks = <&cpg CPG_MOD 703>, <&cpg CPG_MOD 704>, <&usb2_clksel>, <&versaclock5 3>; + }; + + &ehci1 { + status = "okay"; +- clocks = <&cpg CPG_MOD 703>, <&cpg CPG_MOD 704>; ++ clocks = <&cpg CPG_MOD 703>, <&cpg CPG_MOD 704>, <&usb2_clksel>, <&versaclock5 3>; + }; + + &hdmi0 { +diff --git a/arch/arm64/boot/dts/renesas/beacon-renesom-som.dtsi b/arch/arm64/boot/dts/renesas/beacon-renesom-som.dtsi +index 8d3a4d6ee8853..bd3d26b2a2bb8 100644 +--- a/arch/arm64/boot/dts/renesas/beacon-renesom-som.dtsi ++++ b/arch/arm64/boot/dts/renesas/beacon-renesom-som.dtsi +@@ -319,8 +319,10 @@ + status = "okay"; + }; + +-&usb_extal_clk { +- clock-frequency = <50000000>; ++&usb2_clksel { ++ clocks = <&cpg CPG_MOD 703>, <&cpg CPG_MOD 704>, ++ <&versaclock5 3>, <&usb3s0_clk>; ++ status = "okay"; + }; + + &usb3s0_clk { +diff --git a/arch/arm64/boot/dts/rockchip/px30.dtsi b/arch/arm64/boot/dts/rockchip/px30.dtsi +index 09baa8a167ce6..2b43c3d72dd92 100644 +--- a/arch/arm64/boot/dts/rockchip/px30.dtsi ++++ b/arch/arm64/boot/dts/rockchip/px30.dtsi +@@ -244,20 +244,20 @@ + #size-cells = <0>; + + /* These power domains are grouped by VD_LOGIC */ +- pd_usb@PX30_PD_USB { ++ power-domain@PX30_PD_USB { + reg = <PX30_PD_USB>; + clocks = <&cru HCLK_HOST>, + <&cru HCLK_OTG>, + <&cru SCLK_OTG_ADP>; + pm_qos = <&qos_usb_host>, <&qos_usb_otg>; + }; +- pd_sdcard@PX30_PD_SDCARD { ++ power-domain@PX30_PD_SDCARD { + reg = <PX30_PD_SDCARD>; + clocks = <&cru HCLK_SDMMC>, + <&cru SCLK_SDMMC>; + pm_qos = <&qos_sdmmc>; + }; +- pd_gmac@PX30_PD_GMAC { ++ power-domain@PX30_PD_GMAC { + reg = <PX30_PD_GMAC>; + clocks = <&cru ACLK_GMAC>, + <&cru PCLK_GMAC>, +@@ -265,7 +265,7 @@ + <&cru SCLK_GMAC_RX_TX>; + pm_qos = <&qos_gmac>; + }; +- pd_mmc_nand@PX30_PD_MMC_NAND { ++ power-domain@PX30_PD_MMC_NAND { + reg = <PX30_PD_MMC_NAND>; + clocks = <&cru HCLK_NANDC>, + <&cru HCLK_EMMC>, +@@ -278,14 +278,14 @@ + pm_qos = <&qos_emmc>, <&qos_nand>, + <&qos_sdio>, <&qos_sfc>; + }; +- pd_vpu@PX30_PD_VPU { ++ power-domain@PX30_PD_VPU { + reg = <PX30_PD_VPU>; + clocks = <&cru ACLK_VPU>, + <&cru HCLK_VPU>, + <&cru SCLK_CORE_VPU>; + pm_qos = <&qos_vpu>, <&qos_vpu_r128>; + }; +- pd_vo@PX30_PD_VO { ++ power-domain@PX30_PD_VO { + reg = <PX30_PD_VO>; + clocks = <&cru ACLK_RGA>, + <&cru ACLK_VOPB>, +@@ -301,7 +301,7 @@ + pm_qos = <&qos_rga_rd>, <&qos_rga_wr>, + <&qos_vop_m0>, <&qos_vop_m1>; + }; +- pd_vi@PX30_PD_VI { ++ power-domain@PX30_PD_VI { + reg = <PX30_PD_VI>; + clocks = <&cru ACLK_CIF>, + <&cru ACLK_ISP>, +@@ -312,7 +312,7 @@ + <&qos_isp_wr>, <&qos_isp_m1>, + <&qos_vip>; + }; +- pd_gpu@PX30_PD_GPU { ++ power-domain@PX30_PD_GPU { + reg = <PX30_PD_GPU>; + clocks = <&cru SCLK_GPU>; + pm_qos = <&qos_gpu>; +diff --git a/arch/arm64/boot/dts/rockchip/rk3308-roc-cc.dts b/arch/arm64/boot/dts/rockchip/rk3308-roc-cc.dts +index 3dddd4742c3a0..665b2e69455dd 100644 +--- a/arch/arm64/boot/dts/rockchip/rk3308-roc-cc.dts ++++ b/arch/arm64/boot/dts/rockchip/rk3308-roc-cc.dts +@@ -84,8 +84,8 @@ + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <3300000>; + gpios = <&gpio0 RK_PA7 GPIO_ACTIVE_HIGH>; +- states = <1800000 0x0 +- 3300000 0x1>; ++ states = <1800000 0x0>, ++ <3300000 0x1>; + vin-supply = <&vcc5v0_sys>; + }; + +diff --git a/arch/arm64/boot/dts/rockchip/rk3328-nanopi-r2s.dts b/arch/arm64/boot/dts/rockchip/rk3328-nanopi-r2s.dts +index f807bc066ccb9..d5001d13e3746 100644 +--- a/arch/arm64/boot/dts/rockchip/rk3328-nanopi-r2s.dts ++++ b/arch/arm64/boot/dts/rockchip/rk3328-nanopi-r2s.dts +@@ -76,8 +76,8 @@ + regulator-settling-time-us = <5000>; + regulator-type = "voltage"; + startup-delay-us = <2000>; +- states = <1800000 0x1 +- 3300000 0x0>; ++ states = <1800000 0x1>, ++ <3300000 0x0>; + vin-supply = <&vcc_io_33>; + }; + +diff --git a/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts b/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts +index a05732b59f380..a99979afd3739 100644 +--- a/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts ++++ b/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts +@@ -50,8 +50,8 @@ + vcc_sdio: sdmmcio-regulator { + compatible = "regulator-gpio"; + gpios = <&grf_gpio 0 GPIO_ACTIVE_HIGH>; +- states = <1800000 0x1 +- 3300000 0x0>; ++ states = <1800000 0x1>, ++ <3300000 0x0>; + regulator-name = "vcc_sdio"; + regulator-type = "voltage"; + regulator-min-microvolt = <1800000>; +diff --git a/arch/arm64/boot/dts/rockchip/rk3328.dtsi b/arch/arm64/boot/dts/rockchip/rk3328.dtsi +index 3ed69ecbcf3ce..d2d8b675c9e94 100644 +--- a/arch/arm64/boot/dts/rockchip/rk3328.dtsi ++++ b/arch/arm64/boot/dts/rockchip/rk3328.dtsi +@@ -300,13 +300,13 @@ + #address-cells = <1>; + #size-cells = <0>; + +- pd_hevc@RK3328_PD_HEVC { ++ power-domain@RK3328_PD_HEVC { + reg = <RK3328_PD_HEVC>; + }; +- pd_video@RK3328_PD_VIDEO { ++ power-domain@RK3328_PD_VIDEO { + reg = <RK3328_PD_VIDEO>; + }; +- pd_vpu@RK3328_PD_VPU { ++ power-domain@RK3328_PD_VPU { + reg = <RK3328_PD_VPU>; + clocks = <&cru ACLK_VPU>, <&cru HCLK_VPU>; + }; +diff --git a/arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet.dtsi +index beee5fbb34437..5d7a9d96d1633 100644 +--- a/arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet.dtsi ++++ b/arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet.dtsi +@@ -245,7 +245,7 @@ pp1800_pcie: &pp1800_s0 { + }; + + &ppvar_sd_card_io { +- states = <1800000 0x0 3300000 0x1>; ++ states = <1800000 0x0>, <3300000 0x1>; + regulator-max-microvolt = <3300000>; + }; + +diff --git a/arch/arm64/boot/dts/rockchip/rk3399-gru.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-gru.dtsi +index 4002742fed4c1..c1bcc8ca3769d 100644 +--- a/arch/arm64/boot/dts/rockchip/rk3399-gru.dtsi ++++ b/arch/arm64/boot/dts/rockchip/rk3399-gru.dtsi +@@ -252,8 +252,8 @@ + enable-active-high; + enable-gpio = <&gpio2 2 GPIO_ACTIVE_HIGH>; + gpios = <&gpio2 28 GPIO_ACTIVE_HIGH>; +- states = <1800000 0x1 +- 3000000 0x0>; ++ states = <1800000 0x1>, ++ <3000000 0x0>; + + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <3000000>; +diff --git a/arch/arm64/boot/dts/rockchip/rk3399-nanopi4.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-nanopi4.dtsi +index 16fd58c4a80f3..8c0ff6c96e037 100644 +--- a/arch/arm64/boot/dts/rockchip/rk3399-nanopi4.dtsi ++++ b/arch/arm64/boot/dts/rockchip/rk3399-nanopi4.dtsi +@@ -510,7 +510,6 @@ + }; + + &pcie0 { +- max-link-speed = <2>; + num-lanes = <2>; + vpcie0v9-supply = <&vcca0v9_s3>; + vpcie1v8-supply = <&vcca1v8_s3>; +diff --git a/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi +index 7d0a7c6977039..b28888ea9262e 100644 +--- a/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi ++++ b/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi +@@ -474,7 +474,6 @@ + + &pcie0 { + ep-gpios = <&gpio4 RK_PD3 GPIO_ACTIVE_HIGH>; +- max-link-speed = <2>; + num-lanes = <4>; + pinctrl-0 = <&pcie_clkreqnb_cpm>; + pinctrl-names = "default"; +diff --git a/arch/arm64/boot/dts/rockchip/rk3399.dtsi b/arch/arm64/boot/dts/rockchip/rk3399.dtsi +index 634a91af8e83b..7f8081f9e30ee 100644 +--- a/arch/arm64/boot/dts/rockchip/rk3399.dtsi ++++ b/arch/arm64/boot/dts/rockchip/rk3399.dtsi +@@ -227,7 +227,7 @@ + <&pcie_phy 2>, <&pcie_phy 3>; + phy-names = "pcie-phy-0", "pcie-phy-1", + "pcie-phy-2", "pcie-phy-3"; +- ranges = <0x83000000 0x0 0xfa000000 0x0 0xfa000000 0x0 0x1e00000>, ++ ranges = <0x82000000 0x0 0xfa000000 0x0 0xfa000000 0x0 0x1e00000>, + <0x81000000 0x0 0xfbe00000 0x0 0xfbe00000 0x0 0x100000>; + resets = <&cru SRST_PCIE_CORE>, <&cru SRST_PCIE_MGMT>, + <&cru SRST_PCIE_MGMT_STICKY>, <&cru SRST_PCIE_PIPE>, +@@ -968,26 +968,26 @@ + #size-cells = <0>; + + /* These power domains are grouped by VD_CENTER */ +- pd_iep@RK3399_PD_IEP { ++ power-domain@RK3399_PD_IEP { + reg = <RK3399_PD_IEP>; + clocks = <&cru ACLK_IEP>, + <&cru HCLK_IEP>; + pm_qos = <&qos_iep>; + }; +- pd_rga@RK3399_PD_RGA { ++ power-domain@RK3399_PD_RGA { + reg = <RK3399_PD_RGA>; + clocks = <&cru ACLK_RGA>, + <&cru HCLK_RGA>; + pm_qos = <&qos_rga_r>, + <&qos_rga_w>; + }; +- pd_vcodec@RK3399_PD_VCODEC { ++ power-domain@RK3399_PD_VCODEC { + reg = <RK3399_PD_VCODEC>; + clocks = <&cru ACLK_VCODEC>, + <&cru HCLK_VCODEC>; + pm_qos = <&qos_video_m0>; + }; +- pd_vdu@RK3399_PD_VDU { ++ power-domain@RK3399_PD_VDU { + reg = <RK3399_PD_VDU>; + clocks = <&cru ACLK_VDU>, + <&cru HCLK_VDU>; +@@ -996,94 +996,94 @@ + }; + + /* These power domains are grouped by VD_GPU */ +- pd_gpu@RK3399_PD_GPU { ++ power-domain@RK3399_PD_GPU { + reg = <RK3399_PD_GPU>; + clocks = <&cru ACLK_GPU>; + pm_qos = <&qos_gpu>; + }; + + /* These power domains are grouped by VD_LOGIC */ +- pd_edp@RK3399_PD_EDP { ++ power-domain@RK3399_PD_EDP { + reg = <RK3399_PD_EDP>; + clocks = <&cru PCLK_EDP_CTRL>; + }; +- pd_emmc@RK3399_PD_EMMC { ++ power-domain@RK3399_PD_EMMC { + reg = <RK3399_PD_EMMC>; + clocks = <&cru ACLK_EMMC>; + pm_qos = <&qos_emmc>; + }; +- pd_gmac@RK3399_PD_GMAC { ++ power-domain@RK3399_PD_GMAC { + reg = <RK3399_PD_GMAC>; + clocks = <&cru ACLK_GMAC>, + <&cru PCLK_GMAC>; + pm_qos = <&qos_gmac>; + }; +- pd_sd@RK3399_PD_SD { ++ power-domain@RK3399_PD_SD { + reg = <RK3399_PD_SD>; + clocks = <&cru HCLK_SDMMC>, + <&cru SCLK_SDMMC>; + pm_qos = <&qos_sd>; + }; +- pd_sdioaudio@RK3399_PD_SDIOAUDIO { ++ power-domain@RK3399_PD_SDIOAUDIO { + reg = <RK3399_PD_SDIOAUDIO>; + clocks = <&cru HCLK_SDIO>; + pm_qos = <&qos_sdioaudio>; + }; +- pd_tcpc0@RK3399_PD_TCPD0 { ++ power-domain@RK3399_PD_TCPD0 { + reg = <RK3399_PD_TCPD0>; + clocks = <&cru SCLK_UPHY0_TCPDCORE>, + <&cru SCLK_UPHY0_TCPDPHY_REF>; + }; +- pd_tcpc1@RK3399_PD_TCPD1 { ++ power-domain@RK3399_PD_TCPD1 { + reg = <RK3399_PD_TCPD1>; + clocks = <&cru SCLK_UPHY1_TCPDCORE>, + <&cru SCLK_UPHY1_TCPDPHY_REF>; + }; +- pd_usb3@RK3399_PD_USB3 { ++ power-domain@RK3399_PD_USB3 { + reg = <RK3399_PD_USB3>; + clocks = <&cru ACLK_USB3>; + pm_qos = <&qos_usb_otg0>, + <&qos_usb_otg1>; + }; +- pd_vio@RK3399_PD_VIO { ++ power-domain@RK3399_PD_VIO { + reg = <RK3399_PD_VIO>; + #address-cells = <1>; + #size-cells = <0>; + +- pd_hdcp@RK3399_PD_HDCP { ++ power-domain@RK3399_PD_HDCP { + reg = <RK3399_PD_HDCP>; + clocks = <&cru ACLK_HDCP>, + <&cru HCLK_HDCP>, + <&cru PCLK_HDCP>; + pm_qos = <&qos_hdcp>; + }; +- pd_isp0@RK3399_PD_ISP0 { ++ power-domain@RK3399_PD_ISP0 { + reg = <RK3399_PD_ISP0>; + clocks = <&cru ACLK_ISP0>, + <&cru HCLK_ISP0>; + pm_qos = <&qos_isp0_m0>, + <&qos_isp0_m1>; + }; +- pd_isp1@RK3399_PD_ISP1 { ++ power-domain@RK3399_PD_ISP1 { + reg = <RK3399_PD_ISP1>; + clocks = <&cru ACLK_ISP1>, + <&cru HCLK_ISP1>; + pm_qos = <&qos_isp1_m0>, + <&qos_isp1_m1>; + }; +- pd_vo@RK3399_PD_VO { ++ power-domain@RK3399_PD_VO { + reg = <RK3399_PD_VO>; + #address-cells = <1>; + #size-cells = <0>; + +- pd_vopb@RK3399_PD_VOPB { ++ power-domain@RK3399_PD_VOPB { + reg = <RK3399_PD_VOPB>; + clocks = <&cru ACLK_VOP0>, + <&cru HCLK_VOP0>; + pm_qos = <&qos_vop_big_r>, + <&qos_vop_big_w>; + }; +- pd_vopl@RK3399_PD_VOPL { ++ power-domain@RK3399_PD_VOPL { + reg = <RK3399_PD_VOPL>; + clocks = <&cru ACLK_VOP1>, + <&cru HCLK_VOP1>; +@@ -2354,7 +2354,7 @@ + }; + }; + +- sleep { ++ suspend { + ap_pwroff: ap-pwroff { + rockchip,pins = <1 RK_PA5 1 &pcfg_pull_none>; + }; +diff --git a/arch/arm64/boot/dts/rockchip/rk3399pro-vmarc-som.dtsi b/arch/arm64/boot/dts/rockchip/rk3399pro-vmarc-som.dtsi +index c0074b3ed4af7..01d1a75c8b4d3 100644 +--- a/arch/arm64/boot/dts/rockchip/rk3399pro-vmarc-som.dtsi ++++ b/arch/arm64/boot/dts/rockchip/rk3399pro-vmarc-som.dtsi +@@ -329,7 +329,6 @@ + + &pcie0 { + ep-gpios = <&gpio0 RK_PB4 GPIO_ACTIVE_HIGH>; +- max-link-speed = <2>; + num-lanes = <4>; + pinctrl-0 = <&pcie_clkreqnb_cpm>; + pinctrl-names = "default"; +diff --git a/arch/arm64/boot/dts/ti/k3-am654-base-board.dts b/arch/arm64/boot/dts/ti/k3-am654-base-board.dts +index 1b947e2c2e74f..faa8e280cf2b9 100644 +--- a/arch/arm64/boot/dts/ti/k3-am654-base-board.dts ++++ b/arch/arm64/boot/dts/ti/k3-am654-base-board.dts +@@ -136,7 +136,7 @@ + AM65X_WKUP_IOPAD(0x007c, PIN_INPUT, 0) /* (L5) MCU_RGMII1_RD2 */ + AM65X_WKUP_IOPAD(0x0080, PIN_INPUT, 0) /* (M6) MCU_RGMII1_RD1 */ + AM65X_WKUP_IOPAD(0x0084, PIN_INPUT, 0) /* (L6) MCU_RGMII1_RD0 */ +- AM65X_WKUP_IOPAD(0x0070, PIN_INPUT, 0) /* (N1) MCU_RGMII1_TXC */ ++ AM65X_WKUP_IOPAD(0x0070, PIN_OUTPUT, 0) /* (N1) MCU_RGMII1_TXC */ + AM65X_WKUP_IOPAD(0x0074, PIN_INPUT, 0) /* (M1) MCU_RGMII1_RXC */ + >; + }; +diff --git a/arch/arm64/boot/dts/ti/k3-j7200-common-proc-board.dts b/arch/arm64/boot/dts/ti/k3-j7200-common-proc-board.dts +index bedd01b7a32ce..d14f3c18b65fc 100644 +--- a/arch/arm64/boot/dts/ti/k3-j7200-common-proc-board.dts ++++ b/arch/arm64/boot/dts/ti/k3-j7200-common-proc-board.dts +@@ -90,7 +90,7 @@ + J721E_WKUP_IOPAD(0x008c, PIN_INPUT, 0) /* MCU_RGMII1_RD2 */ + J721E_WKUP_IOPAD(0x0090, PIN_INPUT, 0) /* MCU_RGMII1_RD1 */ + J721E_WKUP_IOPAD(0x0094, PIN_INPUT, 0) /* MCU_RGMII1_RD0 */ +- J721E_WKUP_IOPAD(0x0080, PIN_INPUT, 0) /* MCU_RGMII1_TXC */ ++ J721E_WKUP_IOPAD(0x0080, PIN_OUTPUT, 0) /* MCU_RGMII1_TXC */ + J721E_WKUP_IOPAD(0x0084, PIN_INPUT, 0) /* MCU_RGMII1_RXC */ + >; + }; +diff --git a/arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts b/arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts +index ffccbc53f1e75..de3c3f7f2b7a7 100644 +--- a/arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts ++++ b/arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts +@@ -238,7 +238,7 @@ + J721E_WKUP_IOPAD(0x007c, PIN_INPUT, 0) /* MCU_RGMII1_RD2 */ + J721E_WKUP_IOPAD(0x0080, PIN_INPUT, 0) /* MCU_RGMII1_RD1 */ + J721E_WKUP_IOPAD(0x0084, PIN_INPUT, 0) /* MCU_RGMII1_RD0 */ +- J721E_WKUP_IOPAD(0x0070, PIN_INPUT, 0) /* MCU_RGMII1_TXC */ ++ J721E_WKUP_IOPAD(0x0070, PIN_OUTPUT, 0) /* MCU_RGMII1_TXC */ + J721E_WKUP_IOPAD(0x0074, PIN_INPUT, 0) /* MCU_RGMII1_RXC */ + >; + }; +diff --git a/arch/s390/include/asm/stacktrace.h b/arch/s390/include/asm/stacktrace.h +index 76c6034428be8..b4d936580fbf9 100644 +--- a/arch/s390/include/asm/stacktrace.h ++++ b/arch/s390/include/asm/stacktrace.h +@@ -129,6 +129,103 @@ struct stack_frame { + r2; \ + }) + ++#define CALL_LARGS_0(...) \ ++ long dummy = 0 ++#define CALL_LARGS_1(t1, a1) \ ++ long arg1 = (long)(t1)(a1) ++#define CALL_LARGS_2(t1, a1, t2, a2) \ ++ CALL_LARGS_1(t1, a1); \ ++ long arg2 = (long)(t2)(a2) ++#define CALL_LARGS_3(t1, a1, t2, a2, t3, a3) \ ++ CALL_LARGS_2(t1, a1, t2, a2); \ ++ long arg3 = (long)(t3)(a3) ++#define CALL_LARGS_4(t1, a1, t2, a2, t3, a3, t4, a4) \ ++ CALL_LARGS_3(t1, a1, t2, a2, t3, a3); \ ++ long arg4 = (long)(t4)(a4) ++#define CALL_LARGS_5(t1, a1, t2, a2, t3, a3, t4, a4, t5, a5) \ ++ CALL_LARGS_4(t1, a1, t2, a2, t3, a3, t4, a4); \ ++ long arg5 = (long)(t5)(a5) ++ ++#define CALL_REGS_0 \ ++ register long r2 asm("2") = dummy ++#define CALL_REGS_1 \ ++ register long r2 asm("2") = arg1 ++#define CALL_REGS_2 \ ++ CALL_REGS_1; \ ++ register long r3 asm("3") = arg2 ++#define CALL_REGS_3 \ ++ CALL_REGS_2; \ ++ register long r4 asm("4") = arg3 ++#define CALL_REGS_4 \ ++ CALL_REGS_3; \ ++ register long r5 asm("5") = arg4 ++#define CALL_REGS_5 \ ++ CALL_REGS_4; \ ++ register long r6 asm("6") = arg5 ++ ++#define CALL_TYPECHECK_0(...) ++#define CALL_TYPECHECK_1(t, a, ...) \ ++ typecheck(t, a) ++#define CALL_TYPECHECK_2(t, a, ...) \ ++ CALL_TYPECHECK_1(__VA_ARGS__); \ ++ typecheck(t, a) ++#define CALL_TYPECHECK_3(t, a, ...) \ ++ CALL_TYPECHECK_2(__VA_ARGS__); \ ++ typecheck(t, a) ++#define CALL_TYPECHECK_4(t, a, ...) \ ++ CALL_TYPECHECK_3(__VA_ARGS__); \ ++ typecheck(t, a) ++#define CALL_TYPECHECK_5(t, a, ...) \ ++ CALL_TYPECHECK_4(__VA_ARGS__); \ ++ typecheck(t, a) ++ ++#define CALL_PARM_0(...) void ++#define CALL_PARM_1(t, a, ...) t ++#define CALL_PARM_2(t, a, ...) t, CALL_PARM_1(__VA_ARGS__) ++#define CALL_PARM_3(t, a, ...) t, CALL_PARM_2(__VA_ARGS__) ++#define CALL_PARM_4(t, a, ...) t, CALL_PARM_3(__VA_ARGS__) ++#define CALL_PARM_5(t, a, ...) t, CALL_PARM_4(__VA_ARGS__) ++#define CALL_PARM_6(t, a, ...) t, CALL_PARM_5(__VA_ARGS__) ++ ++/* ++ * Use call_on_stack() to call a function switching to a specified ++ * stack. Proper sign and zero extension of function arguments is ++ * done. Usage: ++ * ++ * rc = call_on_stack(nr, stack, rettype, fn, t1, a1, t2, a2, ...) ++ * ++ * - nr specifies the number of function arguments of fn. ++ * - stack specifies the stack to be used. ++ * - fn is the function to be called. ++ * - rettype is the return type of fn. ++ * - t1, a1, ... are pairs, where t1 must match the type of the first ++ * argument of fn, t2 the second, etc. a1 is the corresponding ++ * first function argument (not name), etc. ++ */ ++#define call_on_stack(nr, stack, rettype, fn, ...) \ ++({ \ ++ rettype (*__fn)(CALL_PARM_##nr(__VA_ARGS__)) = fn; \ ++ unsigned long frame = current_frame_address(); \ ++ unsigned long __stack = stack; \ ++ unsigned long prev; \ ++ CALL_LARGS_##nr(__VA_ARGS__); \ ++ CALL_REGS_##nr; \ ++ \ ++ CALL_TYPECHECK_##nr(__VA_ARGS__); \ ++ asm volatile( \ ++ " lgr %[_prev],15\n" \ ++ " lg 15,%[_stack]\n" \ ++ " stg %[_frame],%[_bc](15)\n" \ ++ " brasl 14,%[_fn]\n" \ ++ " lgr 15,%[_prev]\n" \ ++ : [_prev] "=&d" (prev), CALL_FMT_##nr \ ++ : [_stack] "R" (__stack), \ ++ [_bc] "i" (offsetof(struct stack_frame, back_chain)), \ ++ [_frame] "d" (frame), \ ++ [_fn] "X" (__fn) : CALL_CLOBBER_##nr); \ ++ (rettype)r2; \ ++}) ++ + #define CALL_ON_STACK_NORETURN(fn, stack) \ + ({ \ + asm volatile( \ +diff --git a/arch/s390/kernel/traps.c b/arch/s390/kernel/traps.c +index 8dd23c703718b..662f52eb76392 100644 +--- a/arch/s390/kernel/traps.c ++++ b/arch/s390/kernel/traps.c +@@ -277,6 +277,8 @@ static void __init test_monitor_call(void) + { + int val = 1; + ++ if (!IS_ENABLED(CONFIG_BUG)) ++ return; + asm volatile( + " mc 0,0\n" + "0: xgr %0,%0\n" +diff --git a/arch/x86/events/intel/uncore_snbep.c b/arch/x86/events/intel/uncore_snbep.c +index 3a75a2c601c2a..1f7bb4898a9d2 100644 +--- a/arch/x86/events/intel/uncore_snbep.c ++++ b/arch/x86/events/intel/uncore_snbep.c +@@ -3789,11 +3789,11 @@ static int skx_iio_set_mapping(struct intel_uncore_type *type) + /* One more for NULL. */ + attrs = kcalloc((uncore_max_dies() + 1), sizeof(*attrs), GFP_KERNEL); + if (!attrs) +- goto err; ++ goto clear_topology; + + eas = kcalloc(uncore_max_dies(), sizeof(*eas), GFP_KERNEL); + if (!eas) +- goto err; ++ goto clear_attrs; + + for (die = 0; die < uncore_max_dies(); die++) { + sprintf(buf, "die%ld", die); +@@ -3814,7 +3814,9 @@ err: + for (; die >= 0; die--) + kfree(eas[die].attr.attr.name); + kfree(eas); ++clear_attrs: + kfree(attrs); ++clear_topology: + kfree(type->topology); + clear_attr_update: + type->attr_update = NULL; +diff --git a/arch/x86/net/bpf_jit_comp.c b/arch/x86/net/bpf_jit_comp.c +index a3d867f221531..66e304a84deb0 100644 +--- a/arch/x86/net/bpf_jit_comp.c ++++ b/arch/x86/net/bpf_jit_comp.c +@@ -576,6 +576,9 @@ static void bpf_tail_call_direct_fixup(struct bpf_prog *prog) + + for (i = 0; i < prog->aux->size_poke_tab; i++) { + poke = &prog->aux->poke_tab[i]; ++ if (poke->aux && poke->aux != prog->aux) ++ continue; ++ + WARN_ON_ONCE(READ_ONCE(poke->tailcall_target_stable)); + + if (poke->reason != BPF_POKE_REASON_TAIL_CALL) +diff --git a/drivers/dma-buf/sync_file.c b/drivers/dma-buf/sync_file.c +index 20d9bddbb985b..394e6e1e96860 100644 +--- a/drivers/dma-buf/sync_file.c ++++ b/drivers/dma-buf/sync_file.c +@@ -211,8 +211,8 @@ static struct sync_file *sync_file_merge(const char *name, struct sync_file *a, + struct sync_file *b) + { + struct sync_file *sync_file; +- struct dma_fence **fences, **nfences, **a_fences, **b_fences; +- int i, i_a, i_b, num_fences, a_num_fences, b_num_fences; ++ struct dma_fence **fences = NULL, **nfences, **a_fences, **b_fences; ++ int i = 0, i_a, i_b, num_fences, a_num_fences, b_num_fences; + + sync_file = sync_file_alloc(); + if (!sync_file) +@@ -236,7 +236,7 @@ static struct sync_file *sync_file_merge(const char *name, struct sync_file *a, + * If a sync_file can only be created with sync_file_merge + * and sync_file_create, this is a reasonable assumption. + */ +- for (i = i_a = i_b = 0; i_a < a_num_fences && i_b < b_num_fences; ) { ++ for (i_a = i_b = 0; i_a < a_num_fences && i_b < b_num_fences; ) { + struct dma_fence *pt_a = a_fences[i_a]; + struct dma_fence *pt_b = b_fences[i_b]; + +@@ -277,15 +277,16 @@ static struct sync_file *sync_file_merge(const char *name, struct sync_file *a, + fences = nfences; + } + +- if (sync_file_set_fence(sync_file, fences, i) < 0) { +- kfree(fences); ++ if (sync_file_set_fence(sync_file, fences, i) < 0) + goto err; +- } + + strlcpy(sync_file->user_name, name, sizeof(sync_file->user_name)); + return sync_file; + + err: ++ while (i) ++ dma_fence_put(fences[--i]); ++ kfree(fences); + fput(sync_file->file); + return NULL; + +diff --git a/drivers/firmware/Kconfig b/drivers/firmware/Kconfig +index db0ea2d2d75a2..a9c613c32282b 100644 +--- a/drivers/firmware/Kconfig ++++ b/drivers/firmware/Kconfig +@@ -9,7 +9,7 @@ menu "Firmware Drivers" + config ARM_SCMI_PROTOCOL + tristate "ARM System Control and Management Interface (SCMI) Message Protocol" + depends on ARM || ARM64 || COMPILE_TEST +- depends on MAILBOX ++ depends on MAILBOX || HAVE_ARM_SMCCC_DISCOVERY + help + ARM System Control and Management Interface (SCMI) protocol is a + set of operating system-independent software interfaces that are +diff --git a/drivers/firmware/arm_scmi/common.h b/drivers/firmware/arm_scmi/common.h +index 228bf4a71d237..8685619d38f96 100644 +--- a/drivers/firmware/arm_scmi/common.h ++++ b/drivers/firmware/arm_scmi/common.h +@@ -331,7 +331,7 @@ struct scmi_desc { + }; + + extern const struct scmi_desc scmi_mailbox_desc; +-#ifdef CONFIG_HAVE_ARM_SMCCC ++#ifdef CONFIG_HAVE_ARM_SMCCC_DISCOVERY + extern const struct scmi_desc scmi_smc_desc; + #endif + +diff --git a/drivers/firmware/arm_scmi/driver.c b/drivers/firmware/arm_scmi/driver.c +index c2983ed534949..74986bf96656f 100644 +--- a/drivers/firmware/arm_scmi/driver.c ++++ b/drivers/firmware/arm_scmi/driver.c +@@ -1575,7 +1575,9 @@ ATTRIBUTE_GROUPS(versions); + + /* Each compatible listed below must have descriptor associated with it */ + static const struct of_device_id scmi_of_match[] = { ++#ifdef CONFIG_MAILBOX + { .compatible = "arm,scmi", .data = &scmi_mailbox_desc }, ++#endif + #ifdef CONFIG_HAVE_ARM_SMCCC_DISCOVERY + { .compatible = "arm,scmi-smc", .data = &scmi_smc_desc}, + #endif +diff --git a/drivers/firmware/arm_scmi/sensors.c b/drivers/firmware/arm_scmi/sensors.c +index 2c88aa2215597..308471586381f 100644 +--- a/drivers/firmware/arm_scmi/sensors.c ++++ b/drivers/firmware/arm_scmi/sensors.c +@@ -166,7 +166,8 @@ struct scmi_msg_sensor_reading_get { + + struct scmi_resp_sensor_reading_complete { + __le32 id; +- __le64 readings; ++ __le32 readings_low; ++ __le32 readings_high; + }; + + struct scmi_sensor_reading_resp { +@@ -717,7 +718,8 @@ static int scmi_sensor_reading_get(const struct scmi_protocol_handle *ph, + + resp = t->rx.buf; + if (le32_to_cpu(resp->id) == sensor_id) +- *value = get_unaligned_le64(&resp->readings); ++ *value = ++ get_unaligned_le64(&resp->readings_low); + else + ret = -EPROTO; + } +diff --git a/drivers/firmware/tegra/Makefile b/drivers/firmware/tegra/Makefile +index 49c87e00fafb3..620cf3fdd6074 100644 +--- a/drivers/firmware/tegra/Makefile ++++ b/drivers/firmware/tegra/Makefile +@@ -3,6 +3,7 @@ tegra-bpmp-y = bpmp.o + tegra-bpmp-$(CONFIG_ARCH_TEGRA_210_SOC) += bpmp-tegra210.o + tegra-bpmp-$(CONFIG_ARCH_TEGRA_186_SOC) += bpmp-tegra186.o + tegra-bpmp-$(CONFIG_ARCH_TEGRA_194_SOC) += bpmp-tegra186.o ++tegra-bpmp-$(CONFIG_ARCH_TEGRA_234_SOC) += bpmp-tegra186.o + tegra-bpmp-$(CONFIG_DEBUG_FS) += bpmp-debugfs.o + obj-$(CONFIG_TEGRA_BPMP) += tegra-bpmp.o + obj-$(CONFIG_TEGRA_IVC) += ivc.o +diff --git a/drivers/firmware/tegra/bpmp-private.h b/drivers/firmware/tegra/bpmp-private.h +index 54d560c48398e..182bfe3965161 100644 +--- a/drivers/firmware/tegra/bpmp-private.h ++++ b/drivers/firmware/tegra/bpmp-private.h +@@ -24,7 +24,8 @@ struct tegra_bpmp_ops { + }; + + #if IS_ENABLED(CONFIG_ARCH_TEGRA_186_SOC) || \ +- IS_ENABLED(CONFIG_ARCH_TEGRA_194_SOC) ++ IS_ENABLED(CONFIG_ARCH_TEGRA_194_SOC) || \ ++ IS_ENABLED(CONFIG_ARCH_TEGRA_234_SOC) + extern const struct tegra_bpmp_ops tegra186_bpmp_ops; + #endif + #if IS_ENABLED(CONFIG_ARCH_TEGRA_210_SOC) +diff --git a/drivers/firmware/tegra/bpmp.c b/drivers/firmware/tegra/bpmp.c +index 0742a90cb844e..5654c5e9862b1 100644 +--- a/drivers/firmware/tegra/bpmp.c ++++ b/drivers/firmware/tegra/bpmp.c +@@ -809,7 +809,8 @@ static const struct dev_pm_ops tegra_bpmp_pm_ops = { + }; + + #if IS_ENABLED(CONFIG_ARCH_TEGRA_186_SOC) || \ +- IS_ENABLED(CONFIG_ARCH_TEGRA_194_SOC) ++ IS_ENABLED(CONFIG_ARCH_TEGRA_194_SOC) || \ ++ IS_ENABLED(CONFIG_ARCH_TEGRA_234_SOC) + static const struct tegra_bpmp_soc tegra186_soc = { + .channels = { + .cpu_tx = { +diff --git a/drivers/firmware/turris-mox-rwtm.c b/drivers/firmware/turris-mox-rwtm.c +index 1cf4f10874923..c2d34dc8ba462 100644 +--- a/drivers/firmware/turris-mox-rwtm.c ++++ b/drivers/firmware/turris-mox-rwtm.c +@@ -569,6 +569,7 @@ static int turris_mox_rwtm_remove(struct platform_device *pdev) + + static const struct of_device_id turris_mox_rwtm_match[] = { + { .compatible = "cznic,turris-mox-rwtm", }, ++ { .compatible = "marvell,armada-3700-rwtm-firmware", }, + { }, + }; + +diff --git a/drivers/gpu/drm/panel/panel-novatek-nt35510.c b/drivers/gpu/drm/panel/panel-novatek-nt35510.c +index ef70140c5b09d..873cbd38e6d3a 100644 +--- a/drivers/gpu/drm/panel/panel-novatek-nt35510.c ++++ b/drivers/gpu/drm/panel/panel-novatek-nt35510.c +@@ -706,9 +706,7 @@ static int nt35510_power_on(struct nt35510 *nt) + if (ret) + return ret; + +- ret = nt35510_read_id(nt); +- if (ret) +- return ret; ++ nt35510_read_id(nt); + + /* Set up stuff in manufacturer control, page 1 */ + ret = nt35510_send_long(nt, dsi, MCS_CMD_MAUCCTR, +diff --git a/drivers/i3c/master/svc-i3c-master.c b/drivers/i3c/master/svc-i3c-master.c +index 1f6ba42218173..eeb49b5d90efc 100644 +--- a/drivers/i3c/master/svc-i3c-master.c ++++ b/drivers/i3c/master/svc-i3c-master.c +@@ -1448,7 +1448,6 @@ static int svc_i3c_master_remove(struct platform_device *pdev) + if (ret) + return ret; + +- free_irq(master->irq, master); + clk_disable_unprepare(master->pclk); + clk_disable_unprepare(master->fclk); + clk_disable_unprepare(master->sclk); +diff --git a/drivers/memory/tegra/tegra124-emc.c b/drivers/memory/tegra/tegra124-emc.c +index 5699d909abc22..a21ca8e0841aa 100644 +--- a/drivers/memory/tegra/tegra124-emc.c ++++ b/drivers/memory/tegra/tegra124-emc.c +@@ -272,8 +272,8 @@ + #define EMC_PUTERM_ADJ 0x574 + + #define DRAM_DEV_SEL_ALL 0 +-#define DRAM_DEV_SEL_0 (2 << 30) +-#define DRAM_DEV_SEL_1 (1 << 30) ++#define DRAM_DEV_SEL_0 BIT(31) ++#define DRAM_DEV_SEL_1 BIT(30) + + #define EMC_CFG_POWER_FEATURES_MASK \ + (EMC_CFG_DYN_SREF | EMC_CFG_DRAM_ACPD | EMC_CFG_DRAM_CLKSTOP_SR | \ +diff --git a/drivers/memory/tegra/tegra30-emc.c b/drivers/memory/tegra/tegra30-emc.c +index 829f6d673c961..a2f2738ccb942 100644 +--- a/drivers/memory/tegra/tegra30-emc.c ++++ b/drivers/memory/tegra/tegra30-emc.c +@@ -150,8 +150,8 @@ + #define EMC_SELF_REF_CMD_ENABLED BIT(0) + + #define DRAM_DEV_SEL_ALL (0 << 30) +-#define DRAM_DEV_SEL_0 (2 << 30) +-#define DRAM_DEV_SEL_1 (1 << 30) ++#define DRAM_DEV_SEL_0 BIT(31) ++#define DRAM_DEV_SEL_1 BIT(30) + #define DRAM_BROADCAST(num) \ + ((num) > 1 ? DRAM_DEV_SEL_ALL : DRAM_DEV_SEL_0) + +diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c +index 961fa6b75cad8..beb41572d04ea 100644 +--- a/drivers/net/dsa/mv88e6xxx/chip.c ++++ b/drivers/net/dsa/mv88e6xxx/chip.c +@@ -3583,6 +3583,7 @@ static const struct mv88e6xxx_ops mv88e6141_ops = { + .port_set_speed_duplex = mv88e6341_port_set_speed_duplex, + .port_max_speed_mode = mv88e6341_port_max_speed_mode, + .port_tag_remap = mv88e6095_port_tag_remap, ++ .port_set_policy = mv88e6352_port_set_policy, + .port_set_frame_mode = mv88e6351_port_set_frame_mode, + .port_set_ucast_flood = mv88e6352_port_set_ucast_flood, + .port_set_mcast_flood = mv88e6352_port_set_mcast_flood, +@@ -3596,7 +3597,7 @@ static const struct mv88e6xxx_ops mv88e6141_ops = { + .port_set_cmode = mv88e6341_port_set_cmode, + .port_setup_message_port = mv88e6xxx_setup_message_port, + .stats_snapshot = mv88e6390_g1_stats_snapshot, +- .stats_set_histogram = mv88e6095_g1_stats_set_histogram, ++ .stats_set_histogram = mv88e6390_g1_stats_set_histogram, + .stats_get_sset_count = mv88e6320_stats_get_sset_count, + .stats_get_strings = mv88e6320_stats_get_strings, + .stats_get_stats = mv88e6390_stats_get_stats, +@@ -3606,6 +3607,9 @@ static const struct mv88e6xxx_ops mv88e6141_ops = { + .mgmt_rsvd2cpu = mv88e6390_g1_mgmt_rsvd2cpu, + .pot_clear = mv88e6xxx_g2_pot_clear, + .reset = mv88e6352_g1_reset, ++ .rmu_disable = mv88e6390_g1_rmu_disable, ++ .atu_get_hash = mv88e6165_g1_atu_get_hash, ++ .atu_set_hash = mv88e6165_g1_atu_set_hash, + .vtu_getnext = mv88e6352_g1_vtu_getnext, + .vtu_loadpurge = mv88e6352_g1_vtu_loadpurge, + .serdes_power = mv88e6390_serdes_power, +@@ -3619,6 +3623,11 @@ static const struct mv88e6xxx_ops mv88e6141_ops = { + .serdes_irq_enable = mv88e6390_serdes_irq_enable, + .serdes_irq_status = mv88e6390_serdes_irq_status, + .gpio_ops = &mv88e6352_gpio_ops, ++ .serdes_get_sset_count = mv88e6390_serdes_get_sset_count, ++ .serdes_get_strings = mv88e6390_serdes_get_strings, ++ .serdes_get_stats = mv88e6390_serdes_get_stats, ++ .serdes_get_regs_len = mv88e6390_serdes_get_regs_len, ++ .serdes_get_regs = mv88e6390_serdes_get_regs, + .phylink_validate = mv88e6341_phylink_validate, + }; + +@@ -4383,6 +4392,7 @@ static const struct mv88e6xxx_ops mv88e6341_ops = { + .port_set_speed_duplex = mv88e6341_port_set_speed_duplex, + .port_max_speed_mode = mv88e6341_port_max_speed_mode, + .port_tag_remap = mv88e6095_port_tag_remap, ++ .port_set_policy = mv88e6352_port_set_policy, + .port_set_frame_mode = mv88e6351_port_set_frame_mode, + .port_set_ucast_flood = mv88e6352_port_set_ucast_flood, + .port_set_mcast_flood = mv88e6352_port_set_mcast_flood, +@@ -4396,7 +4406,7 @@ static const struct mv88e6xxx_ops mv88e6341_ops = { + .port_set_cmode = mv88e6341_port_set_cmode, + .port_setup_message_port = mv88e6xxx_setup_message_port, + .stats_snapshot = mv88e6390_g1_stats_snapshot, +- .stats_set_histogram = mv88e6095_g1_stats_set_histogram, ++ .stats_set_histogram = mv88e6390_g1_stats_set_histogram, + .stats_get_sset_count = mv88e6320_stats_get_sset_count, + .stats_get_strings = mv88e6320_stats_get_strings, + .stats_get_stats = mv88e6390_stats_get_stats, +@@ -4406,6 +4416,9 @@ static const struct mv88e6xxx_ops mv88e6341_ops = { + .mgmt_rsvd2cpu = mv88e6390_g1_mgmt_rsvd2cpu, + .pot_clear = mv88e6xxx_g2_pot_clear, + .reset = mv88e6352_g1_reset, ++ .rmu_disable = mv88e6390_g1_rmu_disable, ++ .atu_get_hash = mv88e6165_g1_atu_get_hash, ++ .atu_set_hash = mv88e6165_g1_atu_set_hash, + .vtu_getnext = mv88e6352_g1_vtu_getnext, + .vtu_loadpurge = mv88e6352_g1_vtu_loadpurge, + .serdes_power = mv88e6390_serdes_power, +@@ -4421,6 +4434,11 @@ static const struct mv88e6xxx_ops mv88e6341_ops = { + .gpio_ops = &mv88e6352_gpio_ops, + .avb_ops = &mv88e6390_avb_ops, + .ptp_ops = &mv88e6352_ptp_ops, ++ .serdes_get_sset_count = mv88e6390_serdes_get_sset_count, ++ .serdes_get_strings = mv88e6390_serdes_get_strings, ++ .serdes_get_stats = mv88e6390_serdes_get_stats, ++ .serdes_get_regs_len = mv88e6390_serdes_get_regs_len, ++ .serdes_get_regs = mv88e6390_serdes_get_regs, + .phylink_validate = mv88e6341_phylink_validate, + }; + +diff --git a/drivers/net/dsa/mv88e6xxx/serdes.c b/drivers/net/dsa/mv88e6xxx/serdes.c +index e4fbef81bc52d..b1d46dd8eaabc 100644 +--- a/drivers/net/dsa/mv88e6xxx/serdes.c ++++ b/drivers/net/dsa/mv88e6xxx/serdes.c +@@ -722,7 +722,7 @@ static struct mv88e6390_serdes_hw_stat mv88e6390_serdes_hw_stats[] = { + + int mv88e6390_serdes_get_sset_count(struct mv88e6xxx_chip *chip, int port) + { +- if (mv88e6390_serdes_get_lane(chip, port) < 0) ++ if (mv88e6xxx_serdes_get_lane(chip, port) < 0) + return 0; + + return ARRAY_SIZE(mv88e6390_serdes_hw_stats); +@@ -734,7 +734,7 @@ int mv88e6390_serdes_get_strings(struct mv88e6xxx_chip *chip, + struct mv88e6390_serdes_hw_stat *stat; + int i; + +- if (mv88e6390_serdes_get_lane(chip, port) < 0) ++ if (mv88e6xxx_serdes_get_lane(chip, port) < 0) + return 0; + + for (i = 0; i < ARRAY_SIZE(mv88e6390_serdes_hw_stats); i++) { +@@ -770,7 +770,7 @@ int mv88e6390_serdes_get_stats(struct mv88e6xxx_chip *chip, int port, + int lane; + int i; + +- lane = mv88e6390_serdes_get_lane(chip, port); ++ lane = mv88e6xxx_serdes_get_lane(chip, port); + if (lane < 0) + return 0; + +diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.c b/drivers/net/ethernet/broadcom/genet/bcmgenet.c +index 41f7f078cd27c..db74241935ab4 100644 +--- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c ++++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c +@@ -1640,7 +1640,8 @@ static void bcmgenet_power_up(struct bcmgenet_priv *priv, + + switch (mode) { + case GENET_POWER_PASSIVE: +- reg &= ~(EXT_PWR_DOWN_DLL | EXT_PWR_DOWN_BIAS); ++ reg &= ~(EXT_PWR_DOWN_DLL | EXT_PWR_DOWN_BIAS | ++ EXT_ENERGY_DET_MASK); + if (GENET_IS_V5(priv)) { + reg &= ~(EXT_PWR_DOWN_PHY_EN | + EXT_PWR_DOWN_PHY_RD | +@@ -3237,15 +3238,21 @@ static void bcmgenet_get_hw_addr(struct bcmgenet_priv *priv, + /* Returns a reusable dma control register value */ + static u32 bcmgenet_dma_disable(struct bcmgenet_priv *priv) + { ++ unsigned int i; + u32 reg; + u32 dma_ctrl; + + /* disable DMA */ + dma_ctrl = 1 << (DESC_INDEX + DMA_RING_BUF_EN_SHIFT) | DMA_EN; ++ for (i = 0; i < priv->hw_params->tx_queues; i++) ++ dma_ctrl |= (1 << (i + DMA_RING_BUF_EN_SHIFT)); + reg = bcmgenet_tdma_readl(priv, DMA_CTRL); + reg &= ~dma_ctrl; + bcmgenet_tdma_writel(priv, reg, DMA_CTRL); + ++ dma_ctrl = 1 << (DESC_INDEX + DMA_RING_BUF_EN_SHIFT) | DMA_EN; ++ for (i = 0; i < priv->hw_params->rx_queues; i++) ++ dma_ctrl |= (1 << (i + DMA_RING_BUF_EN_SHIFT)); + reg = bcmgenet_rdma_readl(priv, DMA_CTRL); + reg &= ~dma_ctrl; + bcmgenet_rdma_writel(priv, reg, DMA_CTRL); +@@ -3292,7 +3299,6 @@ static int bcmgenet_open(struct net_device *dev) + { + struct bcmgenet_priv *priv = netdev_priv(dev); + unsigned long dma_ctrl; +- u32 reg; + int ret; + + netif_dbg(priv, ifup, dev, "bcmgenet_open\n"); +@@ -3318,12 +3324,6 @@ static int bcmgenet_open(struct net_device *dev) + + bcmgenet_set_hw_addr(priv, dev->dev_addr); + +- if (priv->internal_phy) { +- reg = bcmgenet_ext_readl(priv, EXT_EXT_PWR_MGMT); +- reg |= EXT_ENERGY_DET_MASK; +- bcmgenet_ext_writel(priv, reg, EXT_EXT_PWR_MGMT); +- } +- + /* Disable RX/TX DMA and flush TX queues */ + dma_ctrl = bcmgenet_dma_disable(priv); + +@@ -4139,7 +4139,6 @@ static int bcmgenet_resume(struct device *d) + struct bcmgenet_priv *priv = netdev_priv(dev); + struct bcmgenet_rxnfc_rule *rule; + unsigned long dma_ctrl; +- u32 reg; + int ret; + + if (!netif_running(dev)) +@@ -4176,12 +4175,6 @@ static int bcmgenet_resume(struct device *d) + if (rule->state != BCMGENET_RXNFC_STATE_UNUSED) + bcmgenet_hfb_create_rxnfc_filter(priv, rule); + +- if (priv->internal_phy) { +- reg = bcmgenet_ext_readl(priv, EXT_EXT_PWR_MGMT); +- reg |= EXT_ENERGY_DET_MASK; +- bcmgenet_ext_writel(priv, reg, EXT_EXT_PWR_MGMT); +- } +- + /* Disable RX/TX DMA and flush TX queues */ + dma_ctrl = bcmgenet_dma_disable(priv); + +diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet_wol.c b/drivers/net/ethernet/broadcom/genet/bcmgenet_wol.c +index facde824bcaab..e31a5a397f114 100644 +--- a/drivers/net/ethernet/broadcom/genet/bcmgenet_wol.c ++++ b/drivers/net/ethernet/broadcom/genet/bcmgenet_wol.c +@@ -186,12 +186,6 @@ int bcmgenet_wol_power_down_cfg(struct bcmgenet_priv *priv, + reg |= CMD_RX_EN; + bcmgenet_umac_writel(priv, reg, UMAC_CMD); + +- if (priv->hw_params->flags & GENET_HAS_EXT) { +- reg = bcmgenet_ext_readl(priv, EXT_EXT_PWR_MGMT); +- reg &= ~EXT_ENERGY_DET_MASK; +- bcmgenet_ext_writel(priv, reg, EXT_EXT_PWR_MGMT); +- } +- + reg = UMAC_IRQ_MPD_R; + if (hfb_enable) + reg |= UMAC_IRQ_HFB_SM | UMAC_IRQ_HFB_MM; +diff --git a/drivers/net/ethernet/marvell/mvneta.c b/drivers/net/ethernet/marvell/mvneta.c +index 7d5cd9bc6c99d..6186230141800 100644 +--- a/drivers/net/ethernet/marvell/mvneta.c ++++ b/drivers/net/ethernet/marvell/mvneta.c +@@ -2303,19 +2303,19 @@ mvneta_swbm_add_rx_fragment(struct mvneta_port *pp, + skb_frag_off_set(frag, pp->rx_offset_correction); + skb_frag_size_set(frag, data_len); + __skb_frag_set_page(frag, page); +- +- /* last fragment */ +- if (len == *size) { +- struct skb_shared_info *sinfo; +- +- sinfo = xdp_get_shared_info_from_buff(xdp); +- sinfo->nr_frags = xdp_sinfo->nr_frags; +- memcpy(sinfo->frags, xdp_sinfo->frags, +- sinfo->nr_frags * sizeof(skb_frag_t)); +- } + } else { + page_pool_put_full_page(rxq->page_pool, page, true); + } ++ ++ /* last fragment */ ++ if (len == *size) { ++ struct skb_shared_info *sinfo; ++ ++ sinfo = xdp_get_shared_info_from_buff(xdp); ++ sinfo->nr_frags = xdp_sinfo->nr_frags; ++ memcpy(sinfo->frags, xdp_sinfo->frags, ++ sinfo->nr_frags * sizeof(skb_frag_t)); ++ } + *size -= len; + } + +diff --git a/drivers/net/ethernet/moxa/moxart_ether.c b/drivers/net/ethernet/moxa/moxart_ether.c +index 5249b64f4fc54..49def6934cad1 100644 +--- a/drivers/net/ethernet/moxa/moxart_ether.c ++++ b/drivers/net/ethernet/moxa/moxart_ether.c +@@ -540,10 +540,8 @@ static int moxart_mac_probe(struct platform_device *pdev) + SET_NETDEV_DEV(ndev, &pdev->dev); + + ret = register_netdev(ndev); +- if (ret) { +- free_netdev(ndev); ++ if (ret) + goto init_fail; +- } + + netdev_dbg(ndev, "%s: IRQ=%d address=%pM\n", + __func__, ndev->irq, ndev->dev_addr); +diff --git a/drivers/net/ethernet/qualcomm/emac/emac.c b/drivers/net/ethernet/qualcomm/emac/emac.c +index 8543bf3c34840..ad655f0a4965c 100644 +--- a/drivers/net/ethernet/qualcomm/emac/emac.c ++++ b/drivers/net/ethernet/qualcomm/emac/emac.c +@@ -735,12 +735,13 @@ static int emac_remove(struct platform_device *pdev) + + put_device(&adpt->phydev->mdio.dev); + mdiobus_unregister(adpt->mii_bus); +- free_netdev(netdev); + + if (adpt->phy.digital) + iounmap(adpt->phy.digital); + iounmap(adpt->phy.base); + ++ free_netdev(netdev); ++ + return 0; + } + +diff --git a/drivers/net/ethernet/ti/tlan.c b/drivers/net/ethernet/ti/tlan.c +index 0b2ce4bdc2c3d..e0cb713193ea4 100644 +--- a/drivers/net/ethernet/ti/tlan.c ++++ b/drivers/net/ethernet/ti/tlan.c +@@ -313,9 +313,8 @@ static void tlan_remove_one(struct pci_dev *pdev) + pci_release_regions(pdev); + #endif + +- free_netdev(dev); +- + cancel_work_sync(&priv->tlan_tqueue); ++ free_netdev(dev); + } + + static void tlan_start(struct net_device *dev) +diff --git a/drivers/net/fddi/defza.c b/drivers/net/fddi/defza.c +index 14f07050b6b1b..0de2c4552f5eb 100644 +--- a/drivers/net/fddi/defza.c ++++ b/drivers/net/fddi/defza.c +@@ -1504,9 +1504,8 @@ err_out_resource: + release_mem_region(start, len); + + err_out_kfree: +- free_netdev(dev); +- + pr_err("%s: initialization failure, aborting!\n", fp->name); ++ free_netdev(dev); + return ret; + } + +diff --git a/drivers/net/netdevsim/ipsec.c b/drivers/net/netdevsim/ipsec.c +index 3811f1bde84e7..b80ed2ffd45eb 100644 +--- a/drivers/net/netdevsim/ipsec.c ++++ b/drivers/net/netdevsim/ipsec.c +@@ -85,7 +85,7 @@ static int nsim_ipsec_parse_proto_keys(struct xfrm_state *xs, + u32 *mykey, u32 *mysalt) + { + const char aes_gcm_name[] = "rfc4106(gcm(aes))"; +- struct net_device *dev = xs->xso.dev; ++ struct net_device *dev = xs->xso.real_dev; + unsigned char *key_data; + char *alg_name = NULL; + int key_len; +@@ -134,7 +134,7 @@ static int nsim_ipsec_add_sa(struct xfrm_state *xs) + u16 sa_idx; + int ret; + +- dev = xs->xso.dev; ++ dev = xs->xso.real_dev; + ns = netdev_priv(dev); + ipsec = &ns->ipsec; + +@@ -194,7 +194,7 @@ static int nsim_ipsec_add_sa(struct xfrm_state *xs) + + static void nsim_ipsec_del_sa(struct xfrm_state *xs) + { +- struct netdevsim *ns = netdev_priv(xs->xso.dev); ++ struct netdevsim *ns = netdev_priv(xs->xso.real_dev); + struct nsim_ipsec *ipsec = &ns->ipsec; + u16 sa_idx; + +@@ -211,7 +211,7 @@ static void nsim_ipsec_del_sa(struct xfrm_state *xs) + + static bool nsim_ipsec_offload_ok(struct sk_buff *skb, struct xfrm_state *xs) + { +- struct netdevsim *ns = netdev_priv(xs->xso.dev); ++ struct netdevsim *ns = netdev_priv(xs->xso.real_dev); + struct nsim_ipsec *ipsec = &ns->ipsec; + + ipsec->ok++; +diff --git a/drivers/net/vmxnet3/vmxnet3_ethtool.c b/drivers/net/vmxnet3/vmxnet3_ethtool.c +index c0bd9cbc43b1d..1b483cf2b1ca2 100644 +--- a/drivers/net/vmxnet3/vmxnet3_ethtool.c ++++ b/drivers/net/vmxnet3/vmxnet3_ethtool.c +@@ -1,7 +1,7 @@ + /* + * Linux driver for VMware's vmxnet3 ethernet NIC. + * +- * Copyright (C) 2008-2020, VMware, Inc. All Rights Reserved. ++ * Copyright (C) 2008-2021, VMware, Inc. All Rights Reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the +@@ -26,6 +26,10 @@ + + + #include "vmxnet3_int.h" ++#include <net/vxlan.h> ++#include <net/geneve.h> ++ ++#define VXLAN_UDP_PORT 8472 + + struct vmxnet3_stat_desc { + char desc[ETH_GSTRING_LEN]; +@@ -262,6 +266,8 @@ netdev_features_t vmxnet3_features_check(struct sk_buff *skb, + if (VMXNET3_VERSION_GE_4(adapter) && + skb->encapsulation && skb->ip_summed == CHECKSUM_PARTIAL) { + u8 l4_proto = 0; ++ u16 port; ++ struct udphdr *udph; + + switch (vlan_get_protocol(skb)) { + case htons(ETH_P_IP): +@@ -274,8 +280,20 @@ netdev_features_t vmxnet3_features_check(struct sk_buff *skb, + return features & ~(NETIF_F_CSUM_MASK | NETIF_F_GSO_MASK); + } + +- if (l4_proto != IPPROTO_UDP) ++ switch (l4_proto) { ++ case IPPROTO_UDP: ++ udph = udp_hdr(skb); ++ port = be16_to_cpu(udph->dest); ++ /* Check if offloaded port is supported */ ++ if (port != GENEVE_UDP_PORT && ++ port != IANA_VXLAN_UDP_PORT && ++ port != VXLAN_UDP_PORT) { ++ return features & ~(NETIF_F_CSUM_MASK | NETIF_F_GSO_MASK); ++ } ++ break; ++ default: + return features & ~(NETIF_F_CSUM_MASK | NETIF_F_GSO_MASK); ++ } + } + return features; + } +diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c b/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c +index ee6cf189103f7..47843b055959b 100644 +--- a/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c ++++ b/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c +@@ -921,7 +921,7 @@ static int mt7921_load_firmware(struct mt7921_dev *dev) + ret = mt76_get_field(dev, MT_CONN_ON_MISC, MT_TOP_MISC2_FW_N9_RDY); + if (ret) { + dev_dbg(dev->mt76.dev, "Firmware is already download\n"); +- return -EIO; ++ goto fw_loaded; + } + + ret = mt7921_load_patch(dev); +@@ -939,6 +939,7 @@ static int mt7921_load_firmware(struct mt7921_dev *dev) + return -EIO; + } + ++fw_loaded: + mt76_queue_tx_cleanup(dev, dev->mt76.q_mcu[MT_MCUQ_FWDL], false); + + #ifdef CONFIG_PM +diff --git a/drivers/reset/reset-ti-syscon.c b/drivers/reset/reset-ti-syscon.c +index 218370faf37b5..2b92775d58f0c 100644 +--- a/drivers/reset/reset-ti-syscon.c ++++ b/drivers/reset/reset-ti-syscon.c +@@ -58,8 +58,8 @@ struct ti_syscon_reset_data { + unsigned int nr_controls; + }; + +-#define to_ti_syscon_reset_data(rcdev) \ +- container_of(rcdev, struct ti_syscon_reset_data, rcdev) ++#define to_ti_syscon_reset_data(_rcdev) \ ++ container_of(_rcdev, struct ti_syscon_reset_data, rcdev) + + /** + * ti_syscon_reset_assert() - assert device reset +diff --git a/drivers/rtc/rtc-max77686.c b/drivers/rtc/rtc-max77686.c +index d51cc12114cbe..eae7cb9faf1eb 100644 +--- a/drivers/rtc/rtc-max77686.c ++++ b/drivers/rtc/rtc-max77686.c +@@ -717,8 +717,8 @@ static int max77686_init_rtc_regmap(struct max77686_rtc_info *info) + + add_rtc_irq: + ret = regmap_add_irq_chip(info->rtc_regmap, info->rtc_irq, +- IRQF_TRIGGER_FALLING | IRQF_ONESHOT | +- IRQF_SHARED, 0, info->drv_data->rtc_irq_chip, ++ IRQF_ONESHOT | IRQF_SHARED, ++ 0, info->drv_data->rtc_irq_chip, + &info->rtc_irq_data); + if (ret < 0) { + dev_err(info->dev, "Failed to add RTC irq chip: %d\n", ret); +diff --git a/drivers/rtc/rtc-mxc_v2.c b/drivers/rtc/rtc-mxc_v2.c +index a577a74aaf75a..5e03834016294 100644 +--- a/drivers/rtc/rtc-mxc_v2.c ++++ b/drivers/rtc/rtc-mxc_v2.c +@@ -372,6 +372,7 @@ static const struct of_device_id mxc_ids[] = { + { .compatible = "fsl,imx53-rtc", }, + {} + }; ++MODULE_DEVICE_TABLE(of, mxc_ids); + + static struct platform_driver mxc_rtc_driver = { + .driver = { +diff --git a/drivers/scsi/aic7xxx/aic7xxx_core.c b/drivers/scsi/aic7xxx/aic7xxx_core.c +index 4b04ab8908f85..a396f048a031e 100644 +--- a/drivers/scsi/aic7xxx/aic7xxx_core.c ++++ b/drivers/scsi/aic7xxx/aic7xxx_core.c +@@ -493,7 +493,7 @@ ahc_inq(struct ahc_softc *ahc, u_int port) + return ((ahc_inb(ahc, port)) + | (ahc_inb(ahc, port+1) << 8) + | (ahc_inb(ahc, port+2) << 16) +- | (ahc_inb(ahc, port+3) << 24) ++ | (((uint64_t)ahc_inb(ahc, port+3)) << 24) + | (((uint64_t)ahc_inb(ahc, port+4)) << 32) + | (((uint64_t)ahc_inb(ahc, port+5)) << 40) + | (((uint64_t)ahc_inb(ahc, port+6)) << 48) +diff --git a/drivers/scsi/aic94xx/aic94xx_init.c b/drivers/scsi/aic94xx/aic94xx_init.c +index a195bfe9eccc0..7a78606598c4b 100644 +--- a/drivers/scsi/aic94xx/aic94xx_init.c ++++ b/drivers/scsi/aic94xx/aic94xx_init.c +@@ -53,6 +53,7 @@ static struct scsi_host_template aic94xx_sht = { + .max_sectors = SCSI_DEFAULT_MAX_SECTORS, + .eh_device_reset_handler = sas_eh_device_reset_handler, + .eh_target_reset_handler = sas_eh_target_reset_handler, ++ .slave_alloc = sas_slave_alloc, + .target_destroy = sas_target_destroy, + .ioctl = sas_ioctl, + #ifdef CONFIG_COMPAT +diff --git a/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c b/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c +index 3cba7bfba2965..30199663c7d80 100644 +--- a/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c ++++ b/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c +@@ -1771,6 +1771,7 @@ static struct scsi_host_template sht_v1_hw = { + .max_sectors = SCSI_DEFAULT_MAX_SECTORS, + .eh_device_reset_handler = sas_eh_device_reset_handler, + .eh_target_reset_handler = sas_eh_target_reset_handler, ++ .slave_alloc = sas_slave_alloc, + .target_destroy = sas_target_destroy, + .ioctl = sas_ioctl, + #ifdef CONFIG_COMPAT +diff --git a/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c b/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c +index 46f60fc2a069d..9df1639ffa656 100644 +--- a/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c ++++ b/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c +@@ -3584,6 +3584,7 @@ static struct scsi_host_template sht_v2_hw = { + .max_sectors = SCSI_DEFAULT_MAX_SECTORS, + .eh_device_reset_handler = sas_eh_device_reset_handler, + .eh_target_reset_handler = sas_eh_target_reset_handler, ++ .slave_alloc = sas_slave_alloc, + .target_destroy = sas_target_destroy, + .ioctl = sas_ioctl, + #ifdef CONFIG_COMPAT +diff --git a/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c b/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c +index e954083140786..36ec3901cfd48 100644 +--- a/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c ++++ b/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c +@@ -3155,6 +3155,7 @@ static struct scsi_host_template sht_v3_hw = { + .max_sectors = SCSI_DEFAULT_MAX_SECTORS, + .eh_device_reset_handler = sas_eh_device_reset_handler, + .eh_target_reset_handler = sas_eh_target_reset_handler, ++ .slave_alloc = sas_slave_alloc, + .target_destroy = sas_target_destroy, + .ioctl = sas_ioctl, + #ifdef CONFIG_COMPAT +diff --git a/drivers/scsi/isci/init.c b/drivers/scsi/isci/init.c +index c452849e7bb43..ffd33e5decae8 100644 +--- a/drivers/scsi/isci/init.c ++++ b/drivers/scsi/isci/init.c +@@ -167,6 +167,7 @@ static struct scsi_host_template isci_sht = { + .eh_abort_handler = sas_eh_abort_handler, + .eh_device_reset_handler = sas_eh_device_reset_handler, + .eh_target_reset_handler = sas_eh_target_reset_handler, ++ .slave_alloc = sas_slave_alloc, + .target_destroy = sas_target_destroy, + .ioctl = sas_ioctl, + #ifdef CONFIG_COMPAT +diff --git a/drivers/scsi/libfc/fc_rport.c b/drivers/scsi/libfc/fc_rport.c +index cd0fb8ca2425d..33da3c1085f06 100644 +--- a/drivers/scsi/libfc/fc_rport.c ++++ b/drivers/scsi/libfc/fc_rport.c +@@ -1162,6 +1162,7 @@ static void fc_rport_prli_resp(struct fc_seq *sp, struct fc_frame *fp, + resp_code = (pp->spp.spp_flags & FC_SPP_RESP_MASK); + FC_RPORT_DBG(rdata, "PRLI spp_flags = 0x%x spp_type 0x%x\n", + pp->spp.spp_flags, pp->spp.spp_type); ++ + rdata->spp_type = pp->spp.spp_type; + if (resp_code != FC_SPP_RESP_ACK) { + if (resp_code == FC_SPP_RESP_CONF) +@@ -1184,11 +1185,13 @@ static void fc_rport_prli_resp(struct fc_seq *sp, struct fc_frame *fp, + /* + * Call prli provider if we should act as a target + */ +- prov = fc_passive_prov[rdata->spp_type]; +- if (prov) { +- memset(&temp_spp, 0, sizeof(temp_spp)); +- prov->prli(rdata, pp->prli.prli_spp_len, +- &pp->spp, &temp_spp); ++ if (rdata->spp_type < FC_FC4_PROV_SIZE) { ++ prov = fc_passive_prov[rdata->spp_type]; ++ if (prov) { ++ memset(&temp_spp, 0, sizeof(temp_spp)); ++ prov->prli(rdata, pp->prli.prli_spp_len, ++ &pp->spp, &temp_spp); ++ } + } + /* + * Check if the image pair could be established +diff --git a/drivers/scsi/libsas/sas_scsi_host.c b/drivers/scsi/libsas/sas_scsi_host.c +index 1bf939818c981..ee44a0d7730b4 100644 +--- a/drivers/scsi/libsas/sas_scsi_host.c ++++ b/drivers/scsi/libsas/sas_scsi_host.c +@@ -911,6 +911,14 @@ void sas_task_abort(struct sas_task *task) + blk_abort_request(sc->request); + } + ++int sas_slave_alloc(struct scsi_device *sdev) ++{ ++ if (dev_is_sata(sdev_to_domain_dev(sdev)) && sdev->lun) ++ return -ENXIO; ++ ++ return 0; ++} ++ + void sas_target_destroy(struct scsi_target *starget) + { + struct domain_device *found_dev = starget->hostdata; +@@ -957,5 +965,6 @@ EXPORT_SYMBOL_GPL(sas_task_abort); + EXPORT_SYMBOL_GPL(sas_phy_reset); + EXPORT_SYMBOL_GPL(sas_eh_device_reset_handler); + EXPORT_SYMBOL_GPL(sas_eh_target_reset_handler); ++EXPORT_SYMBOL_GPL(sas_slave_alloc); + EXPORT_SYMBOL_GPL(sas_target_destroy); + EXPORT_SYMBOL_GPL(sas_ioctl); +diff --git a/drivers/scsi/mvsas/mv_init.c b/drivers/scsi/mvsas/mv_init.c +index 6aa2697c4a15d..b03c0f35d7b04 100644 +--- a/drivers/scsi/mvsas/mv_init.c ++++ b/drivers/scsi/mvsas/mv_init.c +@@ -46,6 +46,7 @@ static struct scsi_host_template mvs_sht = { + .max_sectors = SCSI_DEFAULT_MAX_SECTORS, + .eh_device_reset_handler = sas_eh_device_reset_handler, + .eh_target_reset_handler = sas_eh_target_reset_handler, ++ .slave_alloc = sas_slave_alloc, + .target_destroy = sas_target_destroy, + .ioctl = sas_ioctl, + #ifdef CONFIG_COMPAT +diff --git a/drivers/scsi/pm8001/pm8001_init.c b/drivers/scsi/pm8001/pm8001_init.c +index af09bd282cb94..313248c7bab99 100644 +--- a/drivers/scsi/pm8001/pm8001_init.c ++++ b/drivers/scsi/pm8001/pm8001_init.c +@@ -101,6 +101,7 @@ static struct scsi_host_template pm8001_sht = { + .max_sectors = SCSI_DEFAULT_MAX_SECTORS, + .eh_device_reset_handler = sas_eh_device_reset_handler, + .eh_target_reset_handler = sas_eh_target_reset_handler, ++ .slave_alloc = sas_slave_alloc, + .target_destroy = sas_target_destroy, + .ioctl = sas_ioctl, + #ifdef CONFIG_COMPAT +diff --git a/drivers/scsi/qedf/qedf_io.c b/drivers/scsi/qedf/qedf_io.c +index 4869ef813dc4f..63f99f4eeed97 100644 +--- a/drivers/scsi/qedf/qedf_io.c ++++ b/drivers/scsi/qedf/qedf_io.c +@@ -1520,9 +1520,19 @@ void qedf_process_error_detect(struct qedf_ctx *qedf, struct fcoe_cqe *cqe, + { + int rval; + ++ if (io_req == NULL) { ++ QEDF_INFO(NULL, QEDF_LOG_IO, "io_req is NULL.\n"); ++ return; ++ } ++ ++ if (io_req->fcport == NULL) { ++ QEDF_INFO(NULL, QEDF_LOG_IO, "fcport is NULL.\n"); ++ return; ++ } ++ + if (!cqe) { + QEDF_INFO(&qedf->dbg_ctx, QEDF_LOG_IO, +- "cqe is NULL for io_req %p\n", io_req); ++ "cqe is NULL for io_req %p\n", io_req); + return; + } + +@@ -1538,6 +1548,16 @@ void qedf_process_error_detect(struct qedf_ctx *qedf, struct fcoe_cqe *cqe, + le32_to_cpu(cqe->cqe_info.err_info.rx_buf_off), + le32_to_cpu(cqe->cqe_info.err_info.rx_id)); + ++ /* When flush is active, let the cmds be flushed out from the cleanup context */ ++ if (test_bit(QEDF_RPORT_IN_TARGET_RESET, &io_req->fcport->flags) || ++ (test_bit(QEDF_RPORT_IN_LUN_RESET, &io_req->fcport->flags) && ++ io_req->sc_cmd->device->lun == (u64)io_req->fcport->lun_reset_lun)) { ++ QEDF_ERR(&qedf->dbg_ctx, ++ "Dropping EQE for xid=0x%x as fcport is flushing", ++ io_req->xid); ++ return; ++ } ++ + if (qedf->stop_io_on_error) { + qedf_stop_all_io(qedf); + return; +diff --git a/drivers/soc/bcm/brcmstb/common.c b/drivers/soc/bcm/brcmstb/common.c +index e87dfc6660f31..2a010881f4b61 100644 +--- a/drivers/soc/bcm/brcmstb/common.c ++++ b/drivers/soc/bcm/brcmstb/common.c +@@ -14,11 +14,6 @@ + static u32 family_id; + static u32 product_id; + +-static const struct of_device_id brcmstb_machine_match[] = { +- { .compatible = "brcm,brcmstb", }, +- { } +-}; +- + u32 brcmstb_get_family_id(void) + { + return family_id; +diff --git a/drivers/soc/mediatek/mtk-devapc.c b/drivers/soc/mediatek/mtk-devapc.c +index f1cea041dc5a8..7c65ad3d1f8a3 100644 +--- a/drivers/soc/mediatek/mtk-devapc.c ++++ b/drivers/soc/mediatek/mtk-devapc.c +@@ -234,6 +234,7 @@ static const struct of_device_id mtk_devapc_dt_match[] = { + }, { + }, + }; ++MODULE_DEVICE_TABLE(of, mtk_devapc_dt_match); + + static int mtk_devapc_probe(struct platform_device *pdev) + { +diff --git a/drivers/soc/tegra/fuse/fuse-tegra30.c b/drivers/soc/tegra/fuse/fuse-tegra30.c +index 9ea7f01684573..c1aa7815bd6ec 100644 +--- a/drivers/soc/tegra/fuse/fuse-tegra30.c ++++ b/drivers/soc/tegra/fuse/fuse-tegra30.c +@@ -37,7 +37,8 @@ + defined(CONFIG_ARCH_TEGRA_132_SOC) || \ + defined(CONFIG_ARCH_TEGRA_210_SOC) || \ + defined(CONFIG_ARCH_TEGRA_186_SOC) || \ +- defined(CONFIG_ARCH_TEGRA_194_SOC) ++ defined(CONFIG_ARCH_TEGRA_194_SOC) || \ ++ defined(CONFIG_ARCH_TEGRA_234_SOC) + static u32 tegra30_fuse_read_early(struct tegra_fuse *fuse, unsigned int offset) + { + if (WARN_ON(!fuse->base)) +diff --git a/drivers/thermal/imx_sc_thermal.c b/drivers/thermal/imx_sc_thermal.c +index b01d28eca7eec..8d76dbfde6a9f 100644 +--- a/drivers/thermal/imx_sc_thermal.c ++++ b/drivers/thermal/imx_sc_thermal.c +@@ -93,6 +93,7 @@ static int imx_sc_thermal_probe(struct platform_device *pdev) + for_each_available_child_of_node(np, child) { + sensor = devm_kzalloc(&pdev->dev, sizeof(*sensor), GFP_KERNEL); + if (!sensor) { ++ of_node_put(child); + of_node_put(sensor_np); + return -ENOMEM; + } +@@ -104,6 +105,7 @@ static int imx_sc_thermal_probe(struct platform_device *pdev) + dev_err(&pdev->dev, + "failed to get valid sensor resource id: %d\n", + ret); ++ of_node_put(child); + break; + } + +@@ -114,6 +116,7 @@ static int imx_sc_thermal_probe(struct platform_device *pdev) + if (IS_ERR(sensor->tzd)) { + dev_err(&pdev->dev, "failed to register thermal zone\n"); + ret = PTR_ERR(sensor->tzd); ++ of_node_put(child); + break; + } + +diff --git a/drivers/thermal/rcar_gen3_thermal.c b/drivers/thermal/rcar_gen3_thermal.c +index 1a60adb1d30a0..fdf16aa34eb47 100644 +--- a/drivers/thermal/rcar_gen3_thermal.c ++++ b/drivers/thermal/rcar_gen3_thermal.c +@@ -307,7 +307,7 @@ static int rcar_gen3_thermal_probe(struct platform_device *pdev) + { + struct rcar_gen3_thermal_priv *priv; + struct device *dev = &pdev->dev; +- const int *rcar_gen3_ths_tj_1 = of_device_get_match_data(dev); ++ const int *ths_tj_1 = of_device_get_match_data(dev); + struct resource *res; + struct thermal_zone_device *zone; + int ret, i; +@@ -352,8 +352,7 @@ static int rcar_gen3_thermal_probe(struct platform_device *pdev) + priv->tscs[i] = tsc; + + priv->thermal_init(tsc); +- rcar_gen3_thermal_calc_coefs(tsc, ptat, thcodes[i], +- *rcar_gen3_ths_tj_1); ++ rcar_gen3_thermal_calc_coefs(tsc, ptat, thcodes[i], *ths_tj_1); + + zone = devm_thermal_zone_of_sensor_register(dev, i, tsc, + &rcar_gen3_tz_of_ops); +diff --git a/drivers/thermal/sprd_thermal.c b/drivers/thermal/sprd_thermal.c +index fe06cccf14b38..fff80fc180028 100644 +--- a/drivers/thermal/sprd_thermal.c ++++ b/drivers/thermal/sprd_thermal.c +@@ -388,7 +388,7 @@ static int sprd_thm_probe(struct platform_device *pdev) + sen = devm_kzalloc(&pdev->dev, sizeof(*sen), GFP_KERNEL); + if (!sen) { + ret = -ENOMEM; +- goto disable_clk; ++ goto of_put; + } + + sen->data = thm; +@@ -397,13 +397,13 @@ static int sprd_thm_probe(struct platform_device *pdev) + ret = of_property_read_u32(sen_child, "reg", &sen->id); + if (ret) { + dev_err(&pdev->dev, "get sensor reg failed"); +- goto disable_clk; ++ goto of_put; + } + + ret = sprd_thm_sensor_calibration(sen_child, thm, sen); + if (ret) { + dev_err(&pdev->dev, "efuse cal analysis failed"); +- goto disable_clk; ++ goto of_put; + } + + sprd_thm_sensor_init(thm, sen); +@@ -416,19 +416,20 @@ static int sprd_thm_probe(struct platform_device *pdev) + dev_err(&pdev->dev, "register thermal zone failed %d\n", + sen->id); + ret = PTR_ERR(sen->tzd); +- goto disable_clk; ++ goto of_put; + } + + thm->sensor[sen->id] = sen; + } ++ /* sen_child set to NULL at this point */ + + ret = sprd_thm_set_ready(thm); + if (ret) +- goto disable_clk; ++ goto of_put; + + ret = sprd_thm_wait_temp_ready(thm); + if (ret) +- goto disable_clk; ++ goto of_put; + + for (i = 0; i < thm->nr_sensors; i++) + sprd_thm_toggle_sensor(thm->sensor[i], true); +@@ -436,6 +437,8 @@ static int sprd_thm_probe(struct platform_device *pdev) + platform_set_drvdata(pdev, thm); + return 0; + ++of_put: ++ of_node_put(sen_child); + disable_clk: + clk_disable_unprepare(thm->clk); + return ret; +diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c +index d20b25f40d19e..142dcf5e4a18f 100644 +--- a/drivers/thermal/thermal_core.c ++++ b/drivers/thermal/thermal_core.c +@@ -1369,7 +1369,7 @@ free_tz: + EXPORT_SYMBOL_GPL(thermal_zone_device_register); + + /** +- * thermal_device_unregister - removes the registered thermal zone device ++ * thermal_zone_device_unregister - removes the registered thermal zone device + * @tz: the thermal zone device to remove + */ + void thermal_zone_device_unregister(struct thermal_zone_device *tz) +diff --git a/drivers/thermal/thermal_of.c b/drivers/thermal/thermal_of.c +index 5b76f9a1280d5..6379f26a335f6 100644 +--- a/drivers/thermal/thermal_of.c ++++ b/drivers/thermal/thermal_of.c +@@ -559,6 +559,9 @@ void thermal_zone_of_sensor_unregister(struct device *dev, + if (!tz) + return; + ++ /* stop temperature polling */ ++ thermal_zone_device_disable(tzd); ++ + mutex_lock(&tzd->lock); + tzd->ops->get_temp = NULL; + tzd->ops->get_trend = NULL; +diff --git a/fs/cifs/cifs_dfs_ref.c b/fs/cifs/cifs_dfs_ref.c +index 8dec4edc8a9fe..35a6007d88a9b 100644 +--- a/fs/cifs/cifs_dfs_ref.c ++++ b/fs/cifs/cifs_dfs_ref.c +@@ -151,6 +151,9 @@ char *cifs_compose_mount_options(const char *sb_mountdata, + return ERR_PTR(-EINVAL); + + if (ref) { ++ if (WARN_ON_ONCE(!ref->node_name || ref->path_consumed < 0)) ++ return ERR_PTR(-EINVAL); ++ + if (strlen(fullpath) - ref->path_consumed) { + prepath = fullpath + ref->path_consumed; + /* skip initial delimiter */ +diff --git a/fs/f2fs/sysfs.c b/fs/f2fs/sysfs.c +index e5dbe87e65b45..08c9348cf9ed6 100644 +--- a/fs/f2fs/sysfs.c ++++ b/fs/f2fs/sysfs.c +@@ -708,7 +708,9 @@ F2FS_FEATURE_RO_ATTR(lost_found, FEAT_LOST_FOUND); + F2FS_FEATURE_RO_ATTR(verity, FEAT_VERITY); + #endif + F2FS_FEATURE_RO_ATTR(sb_checksum, FEAT_SB_CHECKSUM); ++#ifdef CONFIG_UNICODE + F2FS_FEATURE_RO_ATTR(casefold, FEAT_CASEFOLD); ++#endif + #ifdef CONFIG_F2FS_FS_COMPRESSION + F2FS_FEATURE_RO_ATTR(compression, FEAT_COMPRESSION); + F2FS_RW_ATTR(F2FS_SBI, f2fs_sb_info, compr_written_block, compr_written_block); +@@ -810,7 +812,9 @@ static struct attribute *f2fs_feat_attrs[] = { + ATTR_LIST(verity), + #endif + ATTR_LIST(sb_checksum), ++#ifdef CONFIG_UNICODE + ATTR_LIST(casefold), ++#endif + #ifdef CONFIG_F2FS_FS_COMPRESSION + ATTR_LIST(compression), + #endif +diff --git a/fs/vboxsf/dir.c b/fs/vboxsf/dir.c +index eac6788fc6cff..c4769a9396c50 100644 +--- a/fs/vboxsf/dir.c ++++ b/fs/vboxsf/dir.c +@@ -253,7 +253,7 @@ static int vboxsf_dir_instantiate(struct inode *parent, struct dentry *dentry, + } + + static int vboxsf_dir_create(struct inode *parent, struct dentry *dentry, +- umode_t mode, int is_dir) ++ umode_t mode, bool is_dir, bool excl, u64 *handle_ret) + { + struct vboxsf_inode *sf_parent_i = VBOXSF_I(parent); + struct vboxsf_sbi *sbi = VBOXSF_SBI(parent->i_sb); +@@ -261,10 +261,12 @@ static int vboxsf_dir_create(struct inode *parent, struct dentry *dentry, + int err; + + params.handle = SHFL_HANDLE_NIL; +- params.create_flags = SHFL_CF_ACT_CREATE_IF_NEW | +- SHFL_CF_ACT_FAIL_IF_EXISTS | +- SHFL_CF_ACCESS_READWRITE | +- (is_dir ? SHFL_CF_DIRECTORY : 0); ++ params.create_flags = SHFL_CF_ACT_CREATE_IF_NEW | SHFL_CF_ACCESS_READWRITE; ++ if (is_dir) ++ params.create_flags |= SHFL_CF_DIRECTORY; ++ if (excl) ++ params.create_flags |= SHFL_CF_ACT_FAIL_IF_EXISTS; ++ + params.info.attr.mode = (mode & 0777) | + (is_dir ? SHFL_TYPE_DIRECTORY : SHFL_TYPE_FILE); + params.info.attr.additional = SHFLFSOBJATTRADD_NOTHING; +@@ -276,30 +278,81 @@ static int vboxsf_dir_create(struct inode *parent, struct dentry *dentry, + if (params.result != SHFL_FILE_CREATED) + return -EPERM; + +- vboxsf_close(sbi->root, params.handle); +- + err = vboxsf_dir_instantiate(parent, dentry, ¶ms.info); + if (err) +- return err; ++ goto out; + + /* parent directory access/change time changed */ + sf_parent_i->force_restat = 1; + +- return 0; ++out: ++ if (err == 0 && handle_ret) ++ *handle_ret = params.handle; ++ else ++ vboxsf_close(sbi->root, params.handle); ++ ++ return err; + } + + static int vboxsf_dir_mkfile(struct user_namespace *mnt_userns, + struct inode *parent, struct dentry *dentry, + umode_t mode, bool excl) + { +- return vboxsf_dir_create(parent, dentry, mode, 0); ++ return vboxsf_dir_create(parent, dentry, mode, false, excl, NULL); + } + + static int vboxsf_dir_mkdir(struct user_namespace *mnt_userns, + struct inode *parent, struct dentry *dentry, + umode_t mode) + { +- return vboxsf_dir_create(parent, dentry, mode, 1); ++ return vboxsf_dir_create(parent, dentry, mode, true, true, NULL); ++} ++ ++static int vboxsf_dir_atomic_open(struct inode *parent, struct dentry *dentry, ++ struct file *file, unsigned int flags, umode_t mode) ++{ ++ struct vboxsf_sbi *sbi = VBOXSF_SBI(parent->i_sb); ++ struct vboxsf_handle *sf_handle; ++ struct dentry *res = NULL; ++ u64 handle; ++ int err; ++ ++ if (d_in_lookup(dentry)) { ++ res = vboxsf_dir_lookup(parent, dentry, 0); ++ if (IS_ERR(res)) ++ return PTR_ERR(res); ++ ++ if (res) ++ dentry = res; ++ } ++ ++ /* Only creates */ ++ if (!(flags & O_CREAT) || d_really_is_positive(dentry)) ++ return finish_no_open(file, res); ++ ++ err = vboxsf_dir_create(parent, dentry, mode, false, flags & O_EXCL, &handle); ++ if (err) ++ goto out; ++ ++ sf_handle = vboxsf_create_sf_handle(d_inode(dentry), handle, SHFL_CF_ACCESS_READWRITE); ++ if (IS_ERR(sf_handle)) { ++ vboxsf_close(sbi->root, handle); ++ err = PTR_ERR(sf_handle); ++ goto out; ++ } ++ ++ err = finish_open(file, dentry, generic_file_open); ++ if (err) { ++ /* This also closes the handle passed to vboxsf_create_sf_handle() */ ++ vboxsf_release_sf_handle(d_inode(dentry), sf_handle); ++ goto out; ++ } ++ ++ file->private_data = sf_handle; ++ file->f_mode |= FMODE_CREATED; ++out: ++ dput(res); ++ return err; + } + + static int vboxsf_dir_unlink(struct inode *parent, struct dentry *dentry) +@@ -422,6 +475,7 @@ const struct inode_operations vboxsf_dir_iops = { + .lookup = vboxsf_dir_lookup, + .create = vboxsf_dir_mkfile, + .mkdir = vboxsf_dir_mkdir, ++ .atomic_open = vboxsf_dir_atomic_open, + .rmdir = vboxsf_dir_unlink, + .unlink = vboxsf_dir_unlink, + .rename = vboxsf_dir_rename, +diff --git a/fs/vboxsf/file.c b/fs/vboxsf/file.c +index c4ab5996d97a8..864c2fad23beb 100644 +--- a/fs/vboxsf/file.c ++++ b/fs/vboxsf/file.c +@@ -20,17 +20,39 @@ struct vboxsf_handle { + struct list_head head; + }; + +-static int vboxsf_file_open(struct inode *inode, struct file *file) ++struct vboxsf_handle *vboxsf_create_sf_handle(struct inode *inode, ++ u64 handle, u32 access_flags) + { + struct vboxsf_inode *sf_i = VBOXSF_I(inode); +- struct shfl_createparms params = {}; + struct vboxsf_handle *sf_handle; +- u32 access_flags = 0; +- int err; + + sf_handle = kmalloc(sizeof(*sf_handle), GFP_KERNEL); + if (!sf_handle) +- return -ENOMEM; ++ return ERR_PTR(-ENOMEM); ++ ++ /* the host may have given us different attr then requested */ ++ sf_i->force_restat = 1; ++ ++ /* init our handle struct and add it to the inode's handles list */ ++ sf_handle->handle = handle; ++ sf_handle->root = VBOXSF_SBI(inode->i_sb)->root; ++ sf_handle->access_flags = access_flags; ++ kref_init(&sf_handle->refcount); ++ ++ mutex_lock(&sf_i->handle_list_mutex); ++ list_add(&sf_handle->head, &sf_i->handle_list); ++ mutex_unlock(&sf_i->handle_list_mutex); ++ ++ return sf_handle; ++} ++ ++static int vboxsf_file_open(struct inode *inode, struct file *file) ++{ ++ struct vboxsf_sbi *sbi = VBOXSF_SBI(inode->i_sb); ++ struct shfl_createparms params = {}; ++ struct vboxsf_handle *sf_handle; ++ u32 access_flags = 0; ++ int err; + + /* + * We check the value of params.handle afterwards to find out if +@@ -83,23 +105,14 @@ static int vboxsf_file_open(struct inode *inode, struct file *file) + err = vboxsf_create_at_dentry(file_dentry(file), ¶ms); + if (err == 0 && params.handle == SHFL_HANDLE_NIL) + err = (params.result == SHFL_FILE_EXISTS) ? -EEXIST : -ENOENT; +- if (err) { +- kfree(sf_handle); ++ if (err) + return err; +- } +- +- /* the host may have given us different attr then requested */ +- sf_i->force_restat = 1; + +- /* init our handle struct and add it to the inode's handles list */ +- sf_handle->handle = params.handle; +- sf_handle->root = VBOXSF_SBI(inode->i_sb)->root; +- sf_handle->access_flags = access_flags; +- kref_init(&sf_handle->refcount); +- +- mutex_lock(&sf_i->handle_list_mutex); +- list_add(&sf_handle->head, &sf_i->handle_list); +- mutex_unlock(&sf_i->handle_list_mutex); ++ sf_handle = vboxsf_create_sf_handle(inode, params.handle, access_flags); ++ if (IS_ERR(sf_handle)) { ++ vboxsf_close(sbi->root, params.handle); ++ return PTR_ERR(sf_handle); ++ } + + file->private_data = sf_handle; + return 0; +@@ -114,22 +127,26 @@ static void vboxsf_handle_release(struct kref *refcount) + kfree(sf_handle); + } + +-static int vboxsf_file_release(struct inode *inode, struct file *file) ++void vboxsf_release_sf_handle(struct inode *inode, struct vboxsf_handle *sf_handle) + { + struct vboxsf_inode *sf_i = VBOXSF_I(inode); +- struct vboxsf_handle *sf_handle = file->private_data; + ++ mutex_lock(&sf_i->handle_list_mutex); ++ list_del(&sf_handle->head); ++ mutex_unlock(&sf_i->handle_list_mutex); ++ ++ kref_put(&sf_handle->refcount, vboxsf_handle_release); ++} ++ ++static int vboxsf_file_release(struct inode *inode, struct file *file) ++{ + /* + * When a file is closed on our (the guest) side, we want any subsequent + * accesses done on the host side to see all changes done from our side. + */ + filemap_write_and_wait(inode->i_mapping); + +- mutex_lock(&sf_i->handle_list_mutex); +- list_del(&sf_handle->head); +- mutex_unlock(&sf_i->handle_list_mutex); +- +- kref_put(&sf_handle->refcount, vboxsf_handle_release); ++ vboxsf_release_sf_handle(inode, file->private_data); + return 0; + } + +diff --git a/fs/vboxsf/vfsmod.h b/fs/vboxsf/vfsmod.h +index 6a7a9cedebc6e..9047befa66c5a 100644 +--- a/fs/vboxsf/vfsmod.h ++++ b/fs/vboxsf/vfsmod.h +@@ -18,6 +18,8 @@ + #define VBOXSF_SBI(sb) ((struct vboxsf_sbi *)(sb)->s_fs_info) + #define VBOXSF_I(i) container_of(i, struct vboxsf_inode, vfs_inode) + ++struct vboxsf_handle; ++ + struct vboxsf_options { + unsigned long ttl; + kuid_t uid; +@@ -80,6 +82,11 @@ extern const struct file_operations vboxsf_reg_fops; + extern const struct address_space_operations vboxsf_reg_aops; + extern const struct dentry_operations vboxsf_dentry_ops; + ++/* from file.c */ ++struct vboxsf_handle *vboxsf_create_sf_handle(struct inode *inode, ++ u64 handle, u32 access_flags); ++void vboxsf_release_sf_handle(struct inode *inode, struct vboxsf_handle *sf_handle); ++ + /* from utils.c */ + struct inode *vboxsf_new_inode(struct super_block *sb); + int vboxsf_init_inode(struct vboxsf_sbi *sbi, struct inode *inode, +diff --git a/include/linux/bpf.h b/include/linux/bpf.h +index 02b02cb29ce29..a7532cb3493ad 100644 +--- a/include/linux/bpf.h ++++ b/include/linux/bpf.h +@@ -777,6 +777,7 @@ struct bpf_jit_poke_descriptor { + void *tailcall_target; + void *tailcall_bypass; + void *bypass_addr; ++ void *aux; + union { + struct { + struct bpf_map *map; +diff --git a/include/linux/huge_mm.h b/include/linux/huge_mm.h +index b4e1ebaae825a..939f21b69ead3 100644 +--- a/include/linux/huge_mm.h ++++ b/include/linux/huge_mm.h +@@ -10,7 +10,7 @@ + vm_fault_t do_huge_pmd_anonymous_page(struct vm_fault *vmf); + int copy_huge_pmd(struct mm_struct *dst_mm, struct mm_struct *src_mm, + pmd_t *dst_pmd, pmd_t *src_pmd, unsigned long addr, +- struct vm_area_struct *vma); ++ struct vm_area_struct *dst_vma, struct vm_area_struct *src_vma); + void huge_pmd_set_accessed(struct vm_fault *vmf, pmd_t orig_pmd); + int copy_huge_pud(struct mm_struct *dst_mm, struct mm_struct *src_mm, + pud_t *dst_pud, pud_t *src_pud, unsigned long addr, +diff --git a/include/linux/swap.h b/include/linux/swap.h +index a84f76db50702..144727041e78b 100644 +--- a/include/linux/swap.h ++++ b/include/linux/swap.h +@@ -526,15 +526,6 @@ static inline struct swap_info_struct *swp_swap_info(swp_entry_t entry) + return NULL; + } + +-static inline struct swap_info_struct *get_swap_device(swp_entry_t entry) +-{ +- return NULL; +-} +- +-static inline void put_swap_device(struct swap_info_struct *si) +-{ +-} +- + #define swap_address_space(entry) (NULL) + #define get_nr_swap_pages() 0L + #define total_swap_pages 0L +diff --git a/include/linux/swapops.h b/include/linux/swapops.h +index 6430a94c69818..0d429a102d417 100644 +--- a/include/linux/swapops.h ++++ b/include/linux/swapops.h +@@ -265,6 +265,8 @@ static inline swp_entry_t pmd_to_swp_entry(pmd_t pmd) + + if (pmd_swp_soft_dirty(pmd)) + pmd = pmd_swp_clear_soft_dirty(pmd); ++ if (pmd_swp_uffd_wp(pmd)) ++ pmd = pmd_swp_clear_uffd_wp(pmd); + arch_entry = __pmd_to_swp_entry(pmd); + return swp_entry(__swp_type(arch_entry), __swp_offset(arch_entry)); + } +diff --git a/include/net/dst_metadata.h b/include/net/dst_metadata.h +index 56cb3c38569a7..14efa0ded75dd 100644 +--- a/include/net/dst_metadata.h ++++ b/include/net/dst_metadata.h +@@ -45,7 +45,9 @@ skb_tunnel_info(const struct sk_buff *skb) + return &md_dst->u.tun_info; + + dst = skb_dst(skb); +- if (dst && dst->lwtstate) ++ if (dst && dst->lwtstate && ++ (dst->lwtstate->type == LWTUNNEL_ENCAP_IP || ++ dst->lwtstate->type == LWTUNNEL_ENCAP_IP6)) + return lwt_tun_info(dst->lwtstate); + + return NULL; +diff --git a/include/net/ip6_route.h b/include/net/ip6_route.h +index f14149df5a654..625a38ccb5d94 100644 +--- a/include/net/ip6_route.h ++++ b/include/net/ip6_route.h +@@ -263,7 +263,7 @@ static inline bool ipv6_anycast_destination(const struct dst_entry *dst, + int ip6_fragment(struct net *net, struct sock *sk, struct sk_buff *skb, + int (*output)(struct net *, struct sock *, struct sk_buff *)); + +-static inline int ip6_skb_dst_mtu(struct sk_buff *skb) ++static inline unsigned int ip6_skb_dst_mtu(struct sk_buff *skb) + { + int mtu; + +diff --git a/include/net/tcp.h b/include/net/tcp.h +index d05193cb0d990..b42b3e6731ed4 100644 +--- a/include/net/tcp.h ++++ b/include/net/tcp.h +@@ -682,6 +682,10 @@ static inline u32 __tcp_set_rto(const struct tcp_sock *tp) + + static inline void __tcp_fast_path_on(struct tcp_sock *tp, u32 snd_wnd) + { ++ /* mptcp hooks are only on the slow path */ ++ if (sk_is_mptcp((struct sock *)tp)) ++ return; ++ + tp->pred_flags = htonl((tp->tcp_header_len << 26) | + ntohl(TCP_FLAG_ACK) | + snd_wnd); +diff --git a/kernel/bpf/core.c b/kernel/bpf/core.c +index 034ad93a1ad71..9b15774983738 100644 +--- a/kernel/bpf/core.c ++++ b/kernel/bpf/core.c +@@ -2236,8 +2236,14 @@ static void bpf_prog_free_deferred(struct work_struct *work) + #endif + if (aux->dst_trampoline) + bpf_trampoline_put(aux->dst_trampoline); +- for (i = 0; i < aux->func_cnt; i++) ++ for (i = 0; i < aux->func_cnt; i++) { ++ /* We can just unlink the subprog poke descriptor table as ++ * it was originally linked to the main program and is also ++ * released along with it. ++ */ ++ aux->func[i]->aux->poke_tab = NULL; + bpf_jit_free(aux->func[i]); ++ } + if (aux->func_cnt) { + kfree(aux->func); + bpf_prog_unlock_free(aux->prog); +diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c +index 6e2ebcb0d66f0..d8a6fcd28e39e 100644 +--- a/kernel/bpf/verifier.c ++++ b/kernel/bpf/verifier.c +@@ -12106,33 +12106,19 @@ static int jit_subprogs(struct bpf_verifier_env *env) + goto out_free; + func[i]->is_func = 1; + func[i]->aux->func_idx = i; +- /* the btf and func_info will be freed only at prog->aux */ ++ /* Below members will be freed only at prog->aux */ + func[i]->aux->btf = prog->aux->btf; + func[i]->aux->func_info = prog->aux->func_info; ++ func[i]->aux->poke_tab = prog->aux->poke_tab; ++ func[i]->aux->size_poke_tab = prog->aux->size_poke_tab; + + for (j = 0; j < prog->aux->size_poke_tab; j++) { +- u32 insn_idx = prog->aux->poke_tab[j].insn_idx; +- int ret; ++ struct bpf_jit_poke_descriptor *poke; + +- if (!(insn_idx >= subprog_start && +- insn_idx <= subprog_end)) +- continue; +- +- ret = bpf_jit_add_poke_descriptor(func[i], +- &prog->aux->poke_tab[j]); +- if (ret < 0) { +- verbose(env, "adding tail call poke descriptor failed\n"); +- goto out_free; +- } +- +- func[i]->insnsi[insn_idx - subprog_start].imm = ret + 1; +- +- map_ptr = func[i]->aux->poke_tab[ret].tail_call.map; +- ret = map_ptr->ops->map_poke_track(map_ptr, func[i]->aux); +- if (ret < 0) { +- verbose(env, "tracking tail call prog failed\n"); +- goto out_free; +- } ++ poke = &prog->aux->poke_tab[j]; ++ if (poke->insn_idx < subprog_end && ++ poke->insn_idx >= subprog_start) ++ poke->aux = func[i]->aux; + } + + /* Use bpf_prog_F_tag to indicate functions in stack traces. +@@ -12163,18 +12149,6 @@ static int jit_subprogs(struct bpf_verifier_env *env) + cond_resched(); + } + +- /* Untrack main program's aux structs so that during map_poke_run() +- * we will not stumble upon the unfilled poke descriptors; each +- * of the main program's poke descs got distributed across subprogs +- * and got tracked onto map, so we are sure that none of them will +- * be missed after the operation below +- */ +- for (i = 0; i < prog->aux->size_poke_tab; i++) { +- map_ptr = prog->aux->poke_tab[i].tail_call.map; +- +- map_ptr->ops->map_poke_untrack(map_ptr, prog->aux); +- } +- + /* at this point all bpf functions were successfully JITed + * now populate all bpf_calls with correct addresses and + * run last pass of JIT +@@ -12252,14 +12226,22 @@ static int jit_subprogs(struct bpf_verifier_env *env) + bpf_prog_jit_attempt_done(prog); + return 0; + out_free: ++ /* We failed JIT'ing, so at this point we need to unregister poke ++ * descriptors from subprogs, so that kernel is not attempting to ++ * patch it anymore as we're freeing the subprog JIT memory. ++ */ ++ for (i = 0; i < prog->aux->size_poke_tab; i++) { ++ map_ptr = prog->aux->poke_tab[i].tail_call.map; ++ map_ptr->ops->map_poke_untrack(map_ptr, prog->aux); ++ } ++ /* At this point we're guaranteed that poke descriptors are not ++ * live anymore. We can just unlink its descriptor table as it's ++ * released with the main prog. ++ */ + for (i = 0; i < env->subprog_cnt; i++) { + if (!func[i]) + continue; +- +- for (j = 0; j < func[i]->aux->size_poke_tab; j++) { +- map_ptr = func[i]->aux->poke_tab[j].tail_call.map; +- map_ptr->ops->map_poke_untrack(map_ptr, func[i]->aux); +- } ++ func[i]->aux->poke_tab = NULL; + bpf_jit_free(func[i]); + } + kfree(func); +diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c +index 7dd0d859d95bb..f60ef0b4ec330 100644 +--- a/kernel/sched/fair.c ++++ b/kernel/sched/fair.c +@@ -5108,7 +5108,7 @@ static const u64 cfs_bandwidth_slack_period = 5 * NSEC_PER_MSEC; + static int runtime_refresh_within(struct cfs_bandwidth *cfs_b, u64 min_expire) + { + struct hrtimer *refresh_timer = &cfs_b->period_timer; +- u64 remaining; ++ s64 remaining; + + /* if the call-back is running a quota refresh is already occurring */ + if (hrtimer_callback_running(refresh_timer)) +@@ -5116,7 +5116,7 @@ static int runtime_refresh_within(struct cfs_bandwidth *cfs_b, u64 min_expire) + + /* is a quota refresh about to occur? */ + remaining = ktime_to_ns(hrtimer_expires_remaining(refresh_timer)); +- if (remaining < min_expire) ++ if (remaining < (s64)min_expire) + return 1; + + return 0; +diff --git a/mm/huge_memory.c b/mm/huge_memory.c +index 8857ef1543eb6..9aaf4a8ebeeb9 100644 +--- a/mm/huge_memory.c ++++ b/mm/huge_memory.c +@@ -1026,7 +1026,7 @@ struct page *follow_devmap_pmd(struct vm_area_struct *vma, unsigned long addr, + + int copy_huge_pmd(struct mm_struct *dst_mm, struct mm_struct *src_mm, + pmd_t *dst_pmd, pmd_t *src_pmd, unsigned long addr, +- struct vm_area_struct *vma) ++ struct vm_area_struct *dst_vma, struct vm_area_struct *src_vma) + { + spinlock_t *dst_ptl, *src_ptl; + struct page *src_page; +@@ -1035,7 +1035,7 @@ int copy_huge_pmd(struct mm_struct *dst_mm, struct mm_struct *src_mm, + int ret = -ENOMEM; + + /* Skip if can be re-fill on fault */ +- if (!vma_is_anonymous(vma)) ++ if (!vma_is_anonymous(dst_vma)) + return 0; + + pgtable = pte_alloc_one(dst_mm); +@@ -1049,14 +1049,6 @@ int copy_huge_pmd(struct mm_struct *dst_mm, struct mm_struct *src_mm, + ret = -EAGAIN; + pmd = *src_pmd; + +- /* +- * Make sure the _PAGE_UFFD_WP bit is cleared if the new VMA +- * does not have the VM_UFFD_WP, which means that the uffd +- * fork event is not enabled. +- */ +- if (!(vma->vm_flags & VM_UFFD_WP)) +- pmd = pmd_clear_uffd_wp(pmd); +- + #ifdef CONFIG_ARCH_ENABLE_THP_MIGRATION + if (unlikely(is_swap_pmd(pmd))) { + swp_entry_t entry = pmd_to_swp_entry(pmd); +@@ -1067,11 +1059,15 @@ int copy_huge_pmd(struct mm_struct *dst_mm, struct mm_struct *src_mm, + pmd = swp_entry_to_pmd(entry); + if (pmd_swp_soft_dirty(*src_pmd)) + pmd = pmd_swp_mksoft_dirty(pmd); ++ if (pmd_swp_uffd_wp(*src_pmd)) ++ pmd = pmd_swp_mkuffd_wp(pmd); + set_pmd_at(src_mm, addr, src_pmd, pmd); + } + add_mm_counter(dst_mm, MM_ANONPAGES, HPAGE_PMD_NR); + mm_inc_nr_ptes(dst_mm); + pgtable_trans_huge_deposit(dst_mm, dst_pmd, pgtable); ++ if (!userfaultfd_wp(dst_vma)) ++ pmd = pmd_swp_clear_uffd_wp(pmd); + set_pmd_at(dst_mm, addr, dst_pmd, pmd); + ret = 0; + goto out_unlock; +@@ -1088,17 +1084,13 @@ int copy_huge_pmd(struct mm_struct *dst_mm, struct mm_struct *src_mm, + * a page table. + */ + if (is_huge_zero_pmd(pmd)) { +- struct page *zero_page; + /* + * get_huge_zero_page() will never allocate a new page here, + * since we already have a zero page to copy. It just takes a + * reference. + */ +- zero_page = mm_get_huge_zero_page(dst_mm); +- set_huge_zero_page(pgtable, dst_mm, vma, addr, dst_pmd, +- zero_page); +- ret = 0; +- goto out_unlock; ++ mm_get_huge_zero_page(dst_mm); ++ goto out_zero_page; + } + + src_page = pmd_page(pmd); +@@ -1111,21 +1103,23 @@ int copy_huge_pmd(struct mm_struct *dst_mm, struct mm_struct *src_mm, + * best effort that the pinned pages won't be replaced by another + * random page during the coming copy-on-write. + */ +- if (unlikely(page_needs_cow_for_dma(vma, src_page))) { ++ if (unlikely(page_needs_cow_for_dma(src_vma, src_page))) { + pte_free(dst_mm, pgtable); + spin_unlock(src_ptl); + spin_unlock(dst_ptl); +- __split_huge_pmd(vma, src_pmd, addr, false, NULL); ++ __split_huge_pmd(src_vma, src_pmd, addr, false, NULL); + return -EAGAIN; + } + + get_page(src_page); + page_dup_rmap(src_page, true); + add_mm_counter(dst_mm, MM_ANONPAGES, HPAGE_PMD_NR); ++out_zero_page: + mm_inc_nr_ptes(dst_mm); + pgtable_trans_huge_deposit(dst_mm, dst_pmd, pgtable); +- + pmdp_set_wrprotect(src_mm, addr, src_pmd); ++ if (!userfaultfd_wp(dst_vma)) ++ pmd = pmd_clear_uffd_wp(pmd); + pmd = pmd_mkold(pmd_wrprotect(pmd)); + set_pmd_at(dst_mm, addr, dst_pmd, pmd); + +@@ -1841,6 +1835,8 @@ int change_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd, + newpmd = swp_entry_to_pmd(entry); + if (pmd_swp_soft_dirty(*pmd)) + newpmd = pmd_swp_mksoft_dirty(newpmd); ++ if (pmd_swp_uffd_wp(*pmd)) ++ newpmd = pmd_swp_mkuffd_wp(newpmd); + set_pmd_at(mm, addr, pmd, newpmd); + } + goto unlock; +@@ -3251,6 +3247,8 @@ void remove_migration_pmd(struct page_vma_mapped_walk *pvmw, struct page *new) + pmde = pmd_mksoft_dirty(pmde); + if (is_write_migration_entry(entry)) + pmde = maybe_pmd_mkwrite(pmde, vma); ++ if (pmd_swp_uffd_wp(*pvmw->pmd)) ++ pmde = pmd_wrprotect(pmd_mkuffd_wp(pmde)); + + flush_cache_range(vma, mmun_start, mmun_start + HPAGE_PMD_SIZE); + if (PageAnon(new)) +diff --git a/mm/memory.c b/mm/memory.c +index b15367c285bde..3fdba3ec69c8b 100644 +--- a/mm/memory.c ++++ b/mm/memory.c +@@ -708,10 +708,10 @@ out: + + static unsigned long + copy_nonpresent_pte(struct mm_struct *dst_mm, struct mm_struct *src_mm, +- pte_t *dst_pte, pte_t *src_pte, struct vm_area_struct *vma, +- unsigned long addr, int *rss) ++ pte_t *dst_pte, pte_t *src_pte, struct vm_area_struct *dst_vma, ++ struct vm_area_struct *src_vma, unsigned long addr, int *rss) + { +- unsigned long vm_flags = vma->vm_flags; ++ unsigned long vm_flags = dst_vma->vm_flags; + pte_t pte = *src_pte; + struct page *page; + swp_entry_t entry = pte_to_swp_entry(pte); +@@ -780,6 +780,8 @@ copy_nonpresent_pte(struct mm_struct *dst_mm, struct mm_struct *src_mm, + set_pte_at(src_mm, addr, src_pte, pte); + } + } ++ if (!userfaultfd_wp(dst_vma)) ++ pte = pte_swp_clear_uffd_wp(pte); + set_pte_at(dst_mm, addr, dst_pte, pte); + return 0; + } +@@ -845,6 +847,9 @@ copy_present_page(struct vm_area_struct *dst_vma, struct vm_area_struct *src_vma + /* All done, just insert the new page copy in the child */ + pte = mk_pte(new_page, dst_vma->vm_page_prot); + pte = maybe_mkwrite(pte_mkdirty(pte), dst_vma); ++ if (userfaultfd_pte_wp(dst_vma, *src_pte)) ++ /* Uffd-wp needs to be delivered to dest pte as well */ ++ pte = pte_wrprotect(pte_mkuffd_wp(pte)); + set_pte_at(dst_vma->vm_mm, addr, dst_pte, pte); + return 0; + } +@@ -894,12 +899,7 @@ copy_present_pte(struct vm_area_struct *dst_vma, struct vm_area_struct *src_vma, + pte = pte_mkclean(pte); + pte = pte_mkold(pte); + +- /* +- * Make sure the _PAGE_UFFD_WP bit is cleared if the new VMA +- * does not have the VM_UFFD_WP, which means that the uffd +- * fork event is not enabled. +- */ +- if (!(vm_flags & VM_UFFD_WP)) ++ if (!userfaultfd_wp(dst_vma)) + pte = pte_clear_uffd_wp(pte); + + set_pte_at(dst_vma->vm_mm, addr, dst_pte, pte); +@@ -974,7 +974,8 @@ again: + if (unlikely(!pte_present(*src_pte))) { + entry.val = copy_nonpresent_pte(dst_mm, src_mm, + dst_pte, src_pte, +- src_vma, addr, rss); ++ dst_vma, src_vma, ++ addr, rss); + if (entry.val) + break; + progress += 8; +@@ -1051,8 +1052,8 @@ copy_pmd_range(struct vm_area_struct *dst_vma, struct vm_area_struct *src_vma, + || pmd_devmap(*src_pmd)) { + int err; + VM_BUG_ON_VMA(next-addr != HPAGE_PMD_SIZE, src_vma); +- err = copy_huge_pmd(dst_mm, src_mm, +- dst_pmd, src_pmd, addr, src_vma); ++ err = copy_huge_pmd(dst_mm, src_mm, dst_pmd, src_pmd, ++ addr, dst_vma, src_vma); + if (err == -ENOMEM) + return -ENOMEM; + if (!err) +@@ -3353,7 +3354,6 @@ vm_fault_t do_swap_page(struct vm_fault *vmf) + { + struct vm_area_struct *vma = vmf->vma; + struct page *page = NULL, *swapcache; +- struct swap_info_struct *si = NULL; + swp_entry_t entry; + pte_t pte; + int locked; +@@ -3381,16 +3381,14 @@ vm_fault_t do_swap_page(struct vm_fault *vmf) + goto out; + } + +- /* Prevent swapoff from happening to us. */ +- si = get_swap_device(entry); +- if (unlikely(!si)) +- goto out; + + delayacct_set_flag(current, DELAYACCT_PF_SWAPIN); + page = lookup_swap_cache(entry, vma, vmf->address); + swapcache = page; + + if (!page) { ++ struct swap_info_struct *si = swp_swap_info(entry); ++ + if (data_race(si->flags & SWP_SYNCHRONOUS_IO) && + __swap_count(entry) == 1) { + /* skip swapcache */ +@@ -3559,8 +3557,6 @@ vm_fault_t do_swap_page(struct vm_fault *vmf) + unlock: + pte_unmap_unlock(vmf->pte, vmf->ptl); + out: +- if (si) +- put_swap_device(si); + return ret; + out_nomap: + pte_unmap_unlock(vmf->pte, vmf->ptl); +@@ -3572,8 +3568,6 @@ out_release: + unlock_page(swapcache); + put_page(swapcache); + } +- if (si) +- put_swap_device(si); + return ret; + } + +diff --git a/mm/shmem.c b/mm/shmem.c +index 5fa21d66af203..680d83cab0775 100644 +--- a/mm/shmem.c ++++ b/mm/shmem.c +@@ -1696,8 +1696,7 @@ static int shmem_swapin_page(struct inode *inode, pgoff_t index, + struct address_space *mapping = inode->i_mapping; + struct shmem_inode_info *info = SHMEM_I(inode); + struct mm_struct *charge_mm = vma ? vma->vm_mm : current->mm; +- struct swap_info_struct *si; +- struct page *page = NULL; ++ struct page *page; + swp_entry_t swap; + int error; + +@@ -1705,12 +1704,6 @@ static int shmem_swapin_page(struct inode *inode, pgoff_t index, + swap = radix_to_swp_entry(*pagep); + *pagep = NULL; + +- /* Prevent swapoff from happening to us. */ +- si = get_swap_device(swap); +- if (!si) { +- error = EINVAL; +- goto failed; +- } + /* Look it up and read it in.. */ + page = lookup_swap_cache(swap, NULL, 0); + if (!page) { +@@ -1772,8 +1765,6 @@ static int shmem_swapin_page(struct inode *inode, pgoff_t index, + swap_free(swap); + + *pagep = page; +- if (si) +- put_swap_device(si); + return 0; + failed: + if (!shmem_confirm_swap(mapping, index, swap)) +@@ -1784,9 +1775,6 @@ unlock: + put_page(page); + } + +- if (si) +- put_swap_device(si); +- + return error; + } + +diff --git a/net/bridge/br_if.c b/net/bridge/br_if.c +index f7d2f472ae24f..6e4a32354a138 100644 +--- a/net/bridge/br_if.c ++++ b/net/bridge/br_if.c +@@ -562,7 +562,7 @@ int br_add_if(struct net_bridge *br, struct net_device *dev, + struct net_bridge_port *p; + int err = 0; + unsigned br_hr, dev_hr; +- bool changed_addr; ++ bool changed_addr, fdb_synced = false; + + /* Don't allow bridging non-ethernet like devices. */ + if ((dev->flags & IFF_LOOPBACK) || +@@ -652,6 +652,19 @@ int br_add_if(struct net_bridge *br, struct net_device *dev, + list_add_rcu(&p->list, &br->port_list); + + nbp_update_port_count(br); ++ if (!br_promisc_port(p) && (p->dev->priv_flags & IFF_UNICAST_FLT)) { ++ /* When updating the port count we also update all ports' ++ * promiscuous mode. ++ * A port leaving promiscuous mode normally gets the bridge's ++ * fdb synced to the unicast filter (if supported), however, ++ * `br_port_clear_promisc` does not distinguish between ++ * non-promiscuous ports and *new* ports, so we need to ++ * sync explicitly here. ++ */ ++ fdb_synced = br_fdb_sync_static(br, p) == 0; ++ if (!fdb_synced) ++ netdev_err(dev, "failed to sync bridge static fdb addresses to this port\n"); ++ } + + netdev_update_features(br->dev); + +@@ -701,6 +714,8 @@ int br_add_if(struct net_bridge *br, struct net_device *dev, + return 0; + + err7: ++ if (fdb_synced) ++ br_fdb_unsync_static(br, p); + list_del_rcu(&p->list); + br_fdb_delete_by_port(br, p, 0, 1); + nbp_update_port_count(br); +diff --git a/net/core/dev.c b/net/core/dev.c +index 50531a2d0b20d..4f29dde4ed0a7 100644 +--- a/net/core/dev.c ++++ b/net/core/dev.c +@@ -6194,6 +6194,8 @@ static gro_result_t napi_skb_finish(struct napi_struct *napi, + case GRO_MERGED_FREE: + if (NAPI_GRO_CB(skb)->free == NAPI_GRO_FREE_STOLEN_HEAD) + napi_skb_free_stolen_head(skb); ++ else if (skb->fclone != SKB_FCLONE_UNAVAILABLE) ++ __kfree_skb(skb); + else + __kfree_skb_defer(skb); + break; +diff --git a/net/dsa/switch.c b/net/dsa/switch.c +index 9bf8e20ecdf38..dfd74cd7b5f37 100644 +--- a/net/dsa/switch.c ++++ b/net/dsa/switch.c +@@ -110,11 +110,11 @@ static int dsa_switch_bridge_leave(struct dsa_switch *ds, + int err, port; + + if (dst->index == info->tree_index && ds->index == info->sw_index && +- ds->ops->port_bridge_join) ++ ds->ops->port_bridge_leave) + ds->ops->port_bridge_leave(ds, info->port, info->br); + + if ((dst->index != info->tree_index || ds->index != info->sw_index) && +- ds->ops->crosschip_bridge_join) ++ ds->ops->crosschip_bridge_leave) + ds->ops->crosschip_bridge_leave(ds, info->tree_index, + info->sw_index, info->port, + info->br); +diff --git a/net/ipv4/ip_tunnel.c b/net/ipv4/ip_tunnel.c +index f6cc26de5ed30..0dca00745ac3c 100644 +--- a/net/ipv4/ip_tunnel.c ++++ b/net/ipv4/ip_tunnel.c +@@ -317,7 +317,7 @@ static int ip_tunnel_bind_dev(struct net_device *dev) + } + + dev->needed_headroom = t_hlen + hlen; +- mtu -= t_hlen; ++ mtu -= t_hlen + (dev->type == ARPHRD_ETHER ? dev->hard_header_len : 0); + + if (mtu < IPV4_MIN_MTU) + mtu = IPV4_MIN_MTU; +@@ -348,6 +348,9 @@ static struct ip_tunnel *ip_tunnel_create(struct net *net, + t_hlen = nt->hlen + sizeof(struct iphdr); + dev->min_mtu = ETH_MIN_MTU; + dev->max_mtu = IP_MAX_MTU - t_hlen; ++ if (dev->type == ARPHRD_ETHER) ++ dev->max_mtu -= dev->hard_header_len; ++ + ip_tunnel_add(itn, nt); + return nt; + +@@ -489,11 +492,14 @@ static int tnl_update_pmtu(struct net_device *dev, struct sk_buff *skb, + + tunnel_hlen = md ? tunnel_hlen : tunnel->hlen; + pkt_size = skb->len - tunnel_hlen; ++ pkt_size -= dev->type == ARPHRD_ETHER ? dev->hard_header_len : 0; + +- if (df) ++ if (df) { + mtu = dst_mtu(&rt->dst) - (sizeof(struct iphdr) + tunnel_hlen); +- else ++ mtu -= dev->type == ARPHRD_ETHER ? dev->hard_header_len : 0; ++ } else { + mtu = skb_valid_dst(skb) ? dst_mtu(skb_dst(skb)) : dev->mtu; ++ } + + if (skb_valid_dst(skb)) + skb_dst_update_pmtu_no_confirm(skb, mtu); +@@ -972,6 +978,9 @@ int __ip_tunnel_change_mtu(struct net_device *dev, int new_mtu, bool strict) + int t_hlen = tunnel->hlen + sizeof(struct iphdr); + int max_mtu = IP_MAX_MTU - t_hlen; + ++ if (dev->type == ARPHRD_ETHER) ++ max_mtu -= dev->hard_header_len; ++ + if (new_mtu < ETH_MIN_MTU) + return -EINVAL; + +@@ -1149,6 +1158,9 @@ int ip_tunnel_newlink(struct net_device *dev, struct nlattr *tb[], + if (tb[IFLA_MTU]) { + unsigned int max = IP_MAX_MTU - (nt->hlen + sizeof(struct iphdr)); + ++ if (dev->type == ARPHRD_ETHER) ++ max -= dev->hard_header_len; ++ + mtu = clamp(dev->mtu, (unsigned int)ETH_MIN_MTU, max); + } + +diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c +index f1c1f9e3de723..4c9a5b99bf7fd 100644 +--- a/net/ipv4/tcp.c ++++ b/net/ipv4/tcp.c +@@ -1375,6 +1375,9 @@ new_segment: + } + pfrag->offset += copy; + } else { ++ if (!sk_wmem_schedule(sk, copy)) ++ goto wait_for_space; ++ + err = skb_zerocopy_iter_stream(sk, skb, msg, copy, uarg); + if (err == -EMSGSIZE || err == -EEXIST) { + tcp_mark_push(tp, skb); +diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c +index bc266514ce589..6bd628f08ded2 100644 +--- a/net/ipv4/tcp_input.c ++++ b/net/ipv4/tcp_input.c +@@ -5921,8 +5921,8 @@ void tcp_init_transfer(struct sock *sk, int bpf_op, struct sk_buff *skb) + tp->snd_cwnd = tcp_init_cwnd(tp, __sk_dst_get(sk)); + tp->snd_cwnd_stamp = tcp_jiffies32; + +- icsk->icsk_ca_initialized = 0; + bpf_skops_established(sk, bpf_op, skb); ++ /* Initialize congestion control unless BPF initialized it already: */ + if (!icsk->icsk_ca_initialized) + tcp_init_congestion_control(sk); + tcp_init_buffer_space(sk); +diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c +index 312184cead57e..e409f2de5dc4f 100644 +--- a/net/ipv4/tcp_ipv4.c ++++ b/net/ipv4/tcp_ipv4.c +@@ -342,7 +342,7 @@ void tcp_v4_mtu_reduced(struct sock *sk) + + if ((1 << sk->sk_state) & (TCPF_LISTEN | TCPF_CLOSE)) + return; +- mtu = tcp_sk(sk)->mtu_info; ++ mtu = READ_ONCE(tcp_sk(sk)->mtu_info); + dst = inet_csk_update_pmtu(sk, mtu); + if (!dst) + return; +@@ -546,7 +546,7 @@ int tcp_v4_err(struct sk_buff *skb, u32 info) + if (sk->sk_state == TCP_LISTEN) + goto out; + +- tp->mtu_info = info; ++ WRITE_ONCE(tp->mtu_info, info); + if (!sock_owned_by_user(sk)) { + tcp_v4_mtu_reduced(sk); + } else { +diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c +index bde781f46b41a..29553fce85028 100644 +--- a/net/ipv4/tcp_output.c ++++ b/net/ipv4/tcp_output.c +@@ -1732,6 +1732,7 @@ int tcp_mtu_to_mss(struct sock *sk, int pmtu) + return __tcp_mtu_to_mss(sk, pmtu) - + (tcp_sk(sk)->tcp_header_len - sizeof(struct tcphdr)); + } ++EXPORT_SYMBOL(tcp_mtu_to_mss); + + /* Inverse of above */ + int tcp_mss_to_mtu(struct sock *sk, int mss) +diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c +index 8091276cb85b8..ca9cf1051b1e1 100644 +--- a/net/ipv4/udp.c ++++ b/net/ipv4/udp.c +@@ -1102,7 +1102,7 @@ int udp_sendmsg(struct sock *sk, struct msghdr *msg, size_t len) + } + + ipcm_init_sk(&ipc, inet); +- ipc.gso_size = up->gso_size; ++ ipc.gso_size = READ_ONCE(up->gso_size); + + if (msg->msg_controllen) { + err = udp_cmsg_send(sk, msg, &ipc.gso_size); +@@ -2695,7 +2695,7 @@ int udp_lib_setsockopt(struct sock *sk, int level, int optname, + case UDP_SEGMENT: + if (val < 0 || val > USHRT_MAX) + return -EINVAL; +- up->gso_size = val; ++ WRITE_ONCE(up->gso_size, val); + break; + + case UDP_GRO: +@@ -2790,7 +2790,7 @@ int udp_lib_getsockopt(struct sock *sk, int level, int optname, + break; + + case UDP_SEGMENT: +- val = up->gso_size; ++ val = READ_ONCE(up->gso_size); + break; + + case UDP_GRO: +diff --git a/net/ipv4/udp_offload.c b/net/ipv4/udp_offload.c +index 54e06b88af69a..9dde1e5fb449b 100644 +--- a/net/ipv4/udp_offload.c ++++ b/net/ipv4/udp_offload.c +@@ -525,8 +525,10 @@ struct sk_buff *udp_gro_receive(struct list_head *head, struct sk_buff *skb, + + if ((!sk && (skb->dev->features & NETIF_F_GRO_UDP_FWD)) || + (sk && udp_sk(sk)->gro_enabled) || NAPI_GRO_CB(skb)->is_flist) +- pp = call_gro_receive(udp_gro_receive_segment, head, skb); +- return pp; ++ return call_gro_receive(udp_gro_receive_segment, head, skb); ++ ++ /* no GRO, be sure flush the current packet */ ++ goto out; + } + + if (NAPI_GRO_CB(skb)->encap_mark || +diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c +index 5f47c0b6e3de8..22d7ed08b92d9 100644 +--- a/net/ipv6/tcp_ipv6.c ++++ b/net/ipv6/tcp_ipv6.c +@@ -348,11 +348,20 @@ failure: + static void tcp_v6_mtu_reduced(struct sock *sk) + { + struct dst_entry *dst; ++ u32 mtu; + + if ((1 << sk->sk_state) & (TCPF_LISTEN | TCPF_CLOSE)) + return; + +- dst = inet6_csk_update_pmtu(sk, tcp_sk(sk)->mtu_info); ++ mtu = READ_ONCE(tcp_sk(sk)->mtu_info); ++ ++ /* Drop requests trying to increase our current mss. ++ * Check done in __ip6_rt_update_pmtu() is too late. ++ */ ++ if (tcp_mtu_to_mss(sk, mtu) >= tcp_sk(sk)->mss_cache) ++ return; ++ ++ dst = inet6_csk_update_pmtu(sk, mtu); + if (!dst) + return; + +@@ -433,6 +442,8 @@ static int tcp_v6_err(struct sk_buff *skb, struct inet6_skb_parm *opt, + } + + if (type == ICMPV6_PKT_TOOBIG) { ++ u32 mtu = ntohl(info); ++ + /* We are not interested in TCP_LISTEN and open_requests + * (SYN-ACKs send out by Linux are always <576bytes so + * they should go through unfragmented). +@@ -443,7 +454,11 @@ static int tcp_v6_err(struct sk_buff *skb, struct inet6_skb_parm *opt, + if (!ip6_sk_accept_pmtu(sk)) + goto out; + +- tp->mtu_info = ntohl(info); ++ if (mtu < IPV6_MIN_MTU) ++ goto out; ++ ++ WRITE_ONCE(tp->mtu_info, mtu); ++ + if (!sock_owned_by_user(sk)) + tcp_v6_mtu_reduced(sk); + else if (!test_and_set_bit(TCP_MTU_REDUCED_DEFERRED, +@@ -540,7 +555,7 @@ static int tcp_v6_send_synack(const struct sock *sk, struct dst_entry *dst, + opt = ireq->ipv6_opt; + if (!opt) + opt = rcu_dereference(np->opt); +- err = ip6_xmit(sk, skb, fl6, sk->sk_mark, opt, ++ err = ip6_xmit(sk, skb, fl6, skb->mark ? : sk->sk_mark, opt, + tclass, sk->sk_priority); + rcu_read_unlock(); + err = net_xmit_eval(err); +diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c +index 3fcd86f4dfdca..6774e776228ce 100644 +--- a/net/ipv6/udp.c ++++ b/net/ipv6/udp.c +@@ -1296,7 +1296,7 @@ int udpv6_sendmsg(struct sock *sk, struct msghdr *msg, size_t len) + int (*getfrag)(void *, char *, int, int, int, struct sk_buff *); + + ipcm6_init(&ipc6); +- ipc6.gso_size = up->gso_size; ++ ipc6.gso_size = READ_ONCE(up->gso_size); + ipc6.sockc.tsflags = sk->sk_tsflags; + ipc6.sockc.mark = sk->sk_mark; + +diff --git a/net/ipv6/xfrm6_output.c b/net/ipv6/xfrm6_output.c +index 8b84d534b19d8..6abb45a671994 100644 +--- a/net/ipv6/xfrm6_output.c ++++ b/net/ipv6/xfrm6_output.c +@@ -56,7 +56,7 @@ static int __xfrm6_output(struct net *net, struct sock *sk, struct sk_buff *skb) + { + struct dst_entry *dst = skb_dst(skb); + struct xfrm_state *x = dst->xfrm; +- int mtu; ++ unsigned int mtu; + bool toobig; + + #ifdef CONFIG_NETFILTER +diff --git a/net/netfilter/nf_conntrack_netlink.c b/net/netfilter/nf_conntrack_netlink.c +index 8690fc07030fc..f3e8e6ce82c4b 100644 +--- a/net/netfilter/nf_conntrack_netlink.c ++++ b/net/netfilter/nf_conntrack_netlink.c +@@ -218,6 +218,7 @@ static int ctnetlink_dump_helpinfo(struct sk_buff *skb, + if (!help) + return 0; + ++ rcu_read_lock(); + helper = rcu_dereference(help->helper); + if (!helper) + goto out; +@@ -233,9 +234,11 @@ static int ctnetlink_dump_helpinfo(struct sk_buff *skb, + + nla_nest_end(skb, nest_helper); + out: ++ rcu_read_unlock(); + return 0; + + nla_put_failure: ++ rcu_read_unlock(); + return -1; + } + +diff --git a/net/netfilter/nf_tables_api.c b/net/netfilter/nf_tables_api.c +index fcb15b8904e87..a5db7c59ad4e4 100644 +--- a/net/netfilter/nf_tables_api.c ++++ b/net/netfilter/nf_tables_api.c +@@ -3453,7 +3453,8 @@ static int nf_tables_newrule(struct sk_buff *skb, const struct nfnl_info *info, + return 0; + + err_destroy_flow_rule: +- nft_flow_rule_destroy(flow); ++ if (flow) ++ nft_flow_rule_destroy(flow); + err_release_rule: + nf_tables_rule_release(&ctx, rule); + err_release_expr: +diff --git a/net/sched/act_ct.c b/net/sched/act_ct.c +index a656baa321fe1..1b4b3514c94f2 100644 +--- a/net/sched/act_ct.c ++++ b/net/sched/act_ct.c +@@ -322,11 +322,22 @@ err_alloc: + + static void tcf_ct_flow_table_cleanup_work(struct work_struct *work) + { ++ struct flow_block_cb *block_cb, *tmp_cb; + struct tcf_ct_flow_table *ct_ft; ++ struct flow_block *block; + + ct_ft = container_of(to_rcu_work(work), struct tcf_ct_flow_table, + rwork); + nf_flow_table_free(&ct_ft->nf_ft); ++ ++ /* Remove any remaining callbacks before cleanup */ ++ block = &ct_ft->nf_ft.flow_block; ++ down_write(&ct_ft->nf_ft.flow_block_lock); ++ list_for_each_entry_safe(block_cb, tmp_cb, &block->cb_list, list) { ++ list_del(&block_cb->list); ++ flow_block_cb_free(block_cb); ++ } ++ up_write(&ct_ft->nf_ft.flow_block_lock); + kfree(ct_ft); + + module_put(THIS_MODULE); +@@ -1026,7 +1037,8 @@ do_nat: + /* This will take care of sending queued events + * even if the connection is already confirmed. + */ +- nf_conntrack_confirm(skb); ++ if (nf_conntrack_confirm(skb) != NF_ACCEPT) ++ goto drop; + } + + if (!skip_add) +diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include +index 82dd1b65b7a8f..f247e691562d4 100644 +--- a/scripts/Kbuild.include ++++ b/scripts/Kbuild.include +@@ -90,8 +90,13 @@ clean := -f $(srctree)/scripts/Makefile.clean obj + echo-cmd = $(if $($(quiet)cmd_$(1)),\ + echo ' $(call escsq,$($(quiet)cmd_$(1)))$(echo-why)';) + ++# sink stdout for 'make -s' ++ redirect := ++ quiet_redirect := ++silent_redirect := exec >/dev/null; ++ + # printing commands +-cmd = @set -e; $(echo-cmd) $(cmd_$(1)) ++cmd = @set -e; $(echo-cmd) $($(quiet)redirect) $(cmd_$(1)) + + ### + # if_changed - execute command if any prerequisite is newer than +diff --git a/scripts/mkcompile_h b/scripts/mkcompile_h +index 4ae735039daf2..a72b154de7b01 100755 +--- a/scripts/mkcompile_h ++++ b/scripts/mkcompile_h +@@ -70,15 +70,23 @@ UTS_VERSION="$(echo $UTS_VERSION $CONFIG_FLAGS $TIMESTAMP | cut -b -$UTS_LEN)" + # Only replace the real compile.h if the new one is different, + # in order to preserve the timestamp and avoid unnecessary + # recompilations. +-# We don't consider the file changed if only the date/time changed. ++# We don't consider the file changed if only the date/time changed, ++# unless KBUILD_BUILD_TIMESTAMP was explicitly set (e.g. for ++# reproducible builds with that value referring to a commit timestamp). + # A kernel config change will increase the generation number, thus + # causing compile.h to be updated (including date/time) due to the + # changed comment in the + # first line. + ++if [ -z "$KBUILD_BUILD_TIMESTAMP" ]; then ++ IGNORE_PATTERN="UTS_VERSION" ++else ++ IGNORE_PATTERN="NOT_A_PATTERN_TO_BE_MATCHED" ++fi ++ + if [ -r $TARGET ] && \ +- grep -v 'UTS_VERSION' $TARGET > .tmpver.1 && \ +- grep -v 'UTS_VERSION' .tmpcompile > .tmpver.2 && \ ++ grep -v $IGNORE_PATTERN $TARGET > .tmpver.1 && \ ++ grep -v $IGNORE_PATTERN .tmpcompile > .tmpver.2 && \ + cmp -s .tmpver.1 .tmpver.2; then + rm -f .tmpcompile + else +diff --git a/tools/bpf/Makefile b/tools/bpf/Makefile +index 39bb322707b4b..b11cfc86a3d02 100644 +--- a/tools/bpf/Makefile ++++ b/tools/bpf/Makefile +@@ -97,7 +97,7 @@ clean: bpftool_clean runqslower_clean resolve_btfids_clean + $(Q)$(RM) -- $(OUTPUT)FEATURE-DUMP.bpf + $(Q)$(RM) -r -- $(OUTPUT)feature + +-install: $(PROGS) bpftool_install runqslower_install ++install: $(PROGS) bpftool_install + $(call QUIET_INSTALL, bpf_jit_disasm) + $(Q)$(INSTALL) -m 0755 -d $(DESTDIR)$(prefix)/bin + $(Q)$(INSTALL) $(OUTPUT)bpf_jit_disasm $(DESTDIR)$(prefix)/bin/bpf_jit_disasm +@@ -118,9 +118,6 @@ bpftool_clean: + runqslower: + $(call descend,runqslower) + +-runqslower_install: +- $(call descend,runqslower,install) +- + runqslower_clean: + $(call descend,runqslower,clean) + +@@ -131,5 +128,5 @@ resolve_btfids_clean: + $(call descend,resolve_btfids,clean) + + .PHONY: all install clean bpftool bpftool_install bpftool_clean \ +- runqslower runqslower_install runqslower_clean \ ++ runqslower runqslower_clean \ + resolve_btfids resolve_btfids_clean +diff --git a/tools/bpf/bpftool/jit_disasm.c b/tools/bpf/bpftool/jit_disasm.c +index e7e7eee9f1725..24734f2249d6e 100644 +--- a/tools/bpf/bpftool/jit_disasm.c ++++ b/tools/bpf/bpftool/jit_disasm.c +@@ -43,11 +43,13 @@ static int fprintf_json(void *out, const char *fmt, ...) + { + va_list ap; + char *s; ++ int err; + + va_start(ap, fmt); +- if (vasprintf(&s, fmt, ap) < 0) +- return -1; ++ err = vasprintf(&s, fmt, ap); + va_end(ap); ++ if (err < 0) ++ return -1; + + if (!oper_count) { + int i; +diff --git a/tools/perf/tests/bpf.c b/tools/perf/tests/bpf.c +index c72adbd67386e..081e445f7725e 100644 +--- a/tools/perf/tests/bpf.c ++++ b/tools/perf/tests/bpf.c +@@ -1,6 +1,7 @@ + // SPDX-License-Identifier: GPL-2.0 + #include <errno.h> + #include <stdio.h> ++#include <stdlib.h> + #include <sys/epoll.h> + #include <sys/types.h> + #include <sys/stat.h> +@@ -276,6 +277,7 @@ static int __test__bpf(int idx) + } + + out: ++ free(obj_buf); + bpf__clear(); + return ret; + } |