lkml.org 
[lkml]   [2021]   [Jul]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    SubjectRe: Linux 5.13.5
    Date
    diff --git a/Makefile b/Makefile
    index 975acb16046d..41be12f806e0 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 3ea286180382..1103a2cb836f 100644
    --- a/arch/arm/boot/dts/am335x-baltos.dtsi
    +++ b/arch/arm/boot/dts/am335x-baltos.dtsi
    @@ -393,10 +393,10 @@ &aes {
    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 d5f8d5e2eb5d..45bf0273ecd8 100644
    --- a/arch/arm/boot/dts/am335x-evmsk.dts
    +++ b/arch/arm/boot/dts/am335x-evmsk.dts
    @@ -646,7 +646,7 @@ &aes {
    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 4e90f9c23d2e..8121a199607c 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 @@ &aes {
    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 98d8ed4ad967..39e5d2ce600a 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 @@ &aes {
    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 039a9ab4c7ea..dcce5e3e001e 100644
    --- a/arch/arm/boot/dts/am33xx-l4.dtsi
    +++ b/arch/arm/boot/dts/am33xx-l4.dtsi
    @@ -1789,7 +1789,7 @@ gpio2: gpio@0 {
    };
    };

    - 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 6e4d05d649e9..033b984ff637 100644
    --- a/arch/arm/boot/dts/am437x-gp-evm.dts
    +++ b/arch/arm/boot/dts/am437x-gp-evm.dts
    @@ -813,11 +813,14 @@ &gpio4 {
    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 e217ffc09770..a6f19ae7d3e6 100644
    --- a/arch/arm/boot/dts/am437x-l4.dtsi
    +++ b/arch/arm/boot/dts/am437x-l4.dtsi
    @@ -2070,7 +2070,7 @@ gpio4: gpio@0 {
    };
    };

    - 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 0d5fe2bfb683..aed81568a297 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 @@ &sata {

    &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 @@ &mcasp3 {
    >;
    };

    -&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 3295c8c7c05c..c619047f6bb1 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 @@ gpio@15 {

    &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 @@ gpio@9 {
    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 @@ gpio@11 {

    };

    -};
    -
    -&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 @@ &pinctrl_emmc_default {

    &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 941c0489479a..481d0ee1f85f 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 @@ &gpio0 {
    /*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 c1478d2db602..ebe69cbd6609 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 @@ &gpio0 {
    /*W0-W7*/ "","","","","","","","",
    /*X0-X7*/ "","","","","","","","",
    /*Y0-Y7*/ "","","","","","","","",
    - /*Z0-Z7*/ "","","","","","","","",
    - /*AA0-AA7*/ "","","","","","","","",
    - /*AB0-AB7*/ "","","","","","","","",
    - /*AC0-AC7*/ "","","","","","","","";
    + /*Z0-Z7*/ "","","","","","","","";
    };

    &fmc {
    @@ -189,6 +186,7 @@ &emmc_controller {

    &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 0025c88f660c..8ecb7861ce10 100644
    --- a/arch/arm/boot/dts/bcm-cygnus.dtsi
    +++ b/arch/arm/boot/dts/bcm-cygnus.dtsi
    @@ -460,7 +460,7 @@ sdhci1: sdhci@18043000 {
    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 e8df458aad39..84cda16f68a2 100644
    --- a/arch/arm/boot/dts/bcm-hr2.dtsi
    +++ b/arch/arm/boot/dts/bcm-hr2.dtsi
    @@ -179,7 +179,7 @@ amac0: ethernet@22000 {
    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 b4d2cc70afb1..748df7955ae6 100644
    --- a/arch/arm/boot/dts/bcm-nsp.dtsi
    +++ b/arch/arm/boot/dts/bcm-nsp.dtsi
    @@ -269,7 +269,7 @@ mailbox: mailbox@25c00 {
    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 3b4ab947492a..27d2f859adfc 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 @@ aliases {
    };

    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 720beec54d61..d872064db761 100644
    --- a/arch/arm/boot/dts/bcm2711.dtsi
    +++ b/arch/arm/boot/dts/bcm2711.dtsi
    @@ -413,7 +413,7 @@ emmc2bus: emmc2bus {
    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 6c8ce39833bf..40b9405f1a8e 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 @@ memory@0 {
    };

    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 17fdd48346ff..11edb581dbaf 100644
    --- a/arch/arm/boot/dts/bcm2835-rpi-a.dts
    +++ b/arch/arm/boot/dts/bcm2835-rpi-a.dts
    @@ -14,7 +14,7 @@ memory@0 {
    };

    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 b0355c229cdc..1b435c64bd9c 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 @@ memory@0 {
    };

    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 33b3b5c02521..a23c25c00eea 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 @@ memory@0 {
    };

    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 2b69957e0113..1b63d6b19750 100644
    --- a/arch/arm/boot/dts/bcm2835-rpi-b.dts
    +++ b/arch/arm/boot/dts/bcm2835-rpi-b.dts
    @@ -15,7 +15,7 @@ memory@0 {
    };

    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 58059c2ce129..e4e6b6abbfc1 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 f65448c01e31..33b2b77aa47d 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 @@ chosen {
    };

    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 6dd93c6f4966..6f9b3a908f28 100644
    --- a/arch/arm/boot/dts/bcm2835-rpi-zero.dts
    +++ b/arch/arm/boot/dts/bcm2835-rpi-zero.dts
    @@ -18,7 +18,7 @@ memory@0 {
    };

    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 d94357b21f7e..87ddcad76083 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 0455a680394a..d8af8eeac7b6 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 @@ memory@0 {
    };

    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 28be0332c1c8..77099a7871b0 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 @@ memory@0 {
    };

    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 37343148643d..61010266ca9a 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 @@ memory@0 {
    };

    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 054ecaa355c9..dd4a48604097 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 @@ memory@0 {
    };

    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 925cb37c22f0..828a20561b96 100644
    --- a/arch/arm/boot/dts/bcm2837-rpi-cm3.dtsi
    +++ b/arch/arm/boot/dts/bcm2837-rpi-cm3.dtsi
    @@ -14,7 +14,7 @@ leds {
    * 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 b83a864e2e8b..0f3be55201a5 100644
    --- a/arch/arm/boot/dts/bcm283x.dtsi
    +++ b/arch/arm/boot/dts/bcm283x.dtsi
    @@ -420,7 +420,7 @@ pwm: pwm@7e20c000 {
    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 8636600385fd..c81944cd6d0b 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 @@ memory@0 {
    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 e635a15041dd..a6e2aeb28675 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 @@ memory@0 {
    <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 2a8f7312d1be..6282363313e1 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 925a7c9ce5b7..be9a00ff752d 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 86872e12c355..f92089290ccd 100644
    --- a/arch/arm/boot/dts/bcm5301x.dtsi
    +++ b/arch/arm/boot/dts/bcm5301x.dtsi
    @@ -458,18 +458,18 @@ spi-pins {
    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 @@ rng: rng@18004000 {
    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 9c0325cf9e22..cca49a2e2d62 100644
    --- a/arch/arm/boot/dts/bcm63138.dtsi
    +++ b/arch/arm/boot/dts/bcm63138.dtsi
    @@ -203,7 +203,7 @@ serial1: serial@620 {
    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 8313b7cad542..f92d2cf85972 100644
    --- a/arch/arm/boot/dts/bcm7445-bcm97445svmb.dts
    +++ b/arch/arm/boot/dts/bcm7445-bcm97445svmb.dts
    @@ -14,10 +14,10 @@ memory@0 {
    };
    };

    -&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 58f67c9b830b..5ac2042515b8 100644
    --- a/arch/arm/boot/dts/bcm7445.dtsi
    +++ b/arch/arm/boot/dts/bcm7445.dtsi
    @@ -148,7 +148,7 @@ aon-ctrl@410000 {
    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 b2d323f4a5ab..a76c74b44bba 100644
    --- a/arch/arm/boot/dts/bcm911360_entphn.dts
    +++ b/arch/arm/boot/dts/bcm911360_entphn.dts
    @@ -82,8 +82,8 @@ &uart3 {
    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 046c59fb4846..de40bd59a5fa 100644
    --- a/arch/arm/boot/dts/bcm953012k.dts
    +++ b/arch/arm/boot/dts/bcm953012k.dts
    @@ -49,8 +49,8 @@ memory@80000000 {
    };
    };

    -&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 b4a1392bd5a6..dda3e11b711f 100644
    --- a/arch/arm/boot/dts/bcm958300k.dts
    +++ b/arch/arm/boot/dts/bcm958300k.dts
    @@ -60,8 +60,8 @@ &uart3 {
    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 3378683321d3..ea3c6b88b313 100644
    --- a/arch/arm/boot/dts/bcm958305k.dts
    +++ b/arch/arm/boot/dts/bcm958305k.dts
    @@ -68,8 +68,8 @@ &uart3 {
    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 5443fc079e6e..1f73885ec274 100644
    --- a/arch/arm/boot/dts/bcm958522er.dts
    +++ b/arch/arm/boot/dts/bcm958522er.dts
    @@ -74,8 +74,8 @@ &ehci0 {
    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 e1e3c26cef19..b6b9ca8b0972 100644
    --- a/arch/arm/boot/dts/bcm958525er.dts
    +++ b/arch/arm/boot/dts/bcm958525er.dts
    @@ -74,8 +74,8 @@ &ehci0 {
    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 f161ba2e7e5e..ecf426f6ad5d 100644
    --- a/arch/arm/boot/dts/bcm958525xmc.dts
    +++ b/arch/arm/boot/dts/bcm958525xmc.dts
    @@ -90,8 +90,8 @@ rtc@68 {
    };
    };

    -&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 83cb877d63db..8ca18da981ad 100644
    --- a/arch/arm/boot/dts/bcm958622hr.dts
    +++ b/arch/arm/boot/dts/bcm958622hr.dts
    @@ -78,8 +78,8 @@ &ehci0 {
    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 4e106ce1384a..9747378db531 100644
    --- a/arch/arm/boot/dts/bcm958623hr.dts
    +++ b/arch/arm/boot/dts/bcm958623hr.dts
    @@ -78,8 +78,8 @@ &ehci0 {
    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 cda6cc281e18..0f92b773afb8 100644
    --- a/arch/arm/boot/dts/bcm958625hr.dts
    +++ b/arch/arm/boot/dts/bcm958625hr.dts
    @@ -89,8 +89,8 @@ &ehci0 {
    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 ffbff0014c65..9e984ca0e6df 100644
    --- a/arch/arm/boot/dts/bcm958625k.dts
    +++ b/arch/arm/boot/dts/bcm958625k.dts
    @@ -68,8 +68,8 @@ &ehci0 {
    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 5b177274f182..df5c8ab90627 100644
    --- a/arch/arm/boot/dts/bcm963138dvt.dts
    +++ b/arch/arm/boot/dts/bcm963138dvt.dts
    @@ -31,10 +31,10 @@ &serial1 {
    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 3fd39c479a3c..5475dab8181d 100644
    --- a/arch/arm/boot/dts/bcm988312hr.dts
    +++ b/arch/arm/boot/dts/bcm988312hr.dts
    @@ -74,8 +74,8 @@ &ehci0 {
    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 3551a64963f8..1825d912b8ab 100644
    --- a/arch/arm/boot/dts/dm816x.dtsi
    +++ b/arch/arm/boot/dts/dm816x.dtsi
    @@ -351,7 +351,7 @@ mailbox: mailbox@480c8000 {
    #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 a25749a1c365..a5bdc6431d8d 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 648d23f7f748..06e26182eabf 100644
    --- a/arch/arm/boot/dts/dra7-l4.dtsi
    +++ b/arch/arm/boot/dts/dra7-l4.dtsi
    @@ -1343,7 +1343,7 @@ gpio8: gpio@0 {
    };
    };

    - 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 @@ gpio2: gpio@0 {
    };
    };

    - 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 f3e934ef7d3e..90617261373c 100644
    --- a/arch/arm/boot/dts/dra72x.dtsi
    +++ b/arch/arm/boot/dts/dra72x.dtsi
    @@ -77,12 +77,12 @@ &dss {
    };

    &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 @@ mbox_dsp1_ipc3x: mbox_dsp1_ipc3x {
    };

    &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 b1147a4b77f9..3256631510c5 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 b4e07d99ffde..cfb39dde4930 100644
    --- a/arch/arm/boot/dts/dra74x.dtsi
    +++ b/arch/arm/boot/dts/dra74x.dtsi
    @@ -145,12 +145,12 @@ &dss {
    };

    &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 @@ mbox_dsp1_ipc3x: mbox_dsp1_ipc3x {
    };

    &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 c6f3d90e3e90..b8acc6eaaa6d 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 @@ map1 {
    };
    };

    - 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 43c45f7e1e0a..13112a8a5dd8 100644
    --- a/arch/arm/boot/dts/gemini-nas4220b.dts
    +++ b/arch/arm/boot/dts/gemini-nas4220b.dts
    @@ -62,7 +62,7 @@ led-green-os {
    };
    };

    - 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 08091d2a64e1..0ebda4efd9d0 100644
    --- a/arch/arm/boot/dts/gemini-rut1xx.dts
    +++ b/arch/arm/boot/dts/gemini-rut1xx.dts
    @@ -56,7 +56,7 @@ led-power {
    };
    };

    - 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 3a2761dd460f..5602ba8f30f2 100644
    --- a/arch/arm/boot/dts/gemini-wbd111.dts
    +++ b/arch/arm/boot/dts/gemini-wbd111.dts
    @@ -68,7 +68,7 @@ led-greeb-l3 {
    };
    };

    - 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 52b4dbc0c072..a4a260c36d75 100644
    --- a/arch/arm/boot/dts/gemini-wbd222.dts
    +++ b/arch/arm/boot/dts/gemini-wbd222.dts
    @@ -67,7 +67,7 @@ led-green-l3 {
    };
    };

    - 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 065ed10a79fa..07448c03dac9 100644
    --- a/arch/arm/boot/dts/gemini.dtsi
    +++ b/arch/arm/boot/dts/gemini.dtsi
    @@ -286,6 +286,7 @@ pci@50000000 {
    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 065d3ab0f50a..e7d9bfbfd0e4 100644
    --- a/arch/arm/boot/dts/imx6dl-riotboard.dts
    +++ b/arch/arm/boot/dts/imx6dl-riotboard.dts
    @@ -106,6 +106,8 @@ rgmii_phy: ethernet-phy@4 {
    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 7bd658b7bdda..f3236204cb5a 100644
    --- a/arch/arm/boot/dts/imx6qdl-phytec-pfla02.dtsi
    +++ b/arch/arm/boot/dts/imx6qdl-phytec-pfla02.dtsi
    @@ -322,8 +322,8 @@ pinctrl_uart3: uart3grp {
    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 @@ &reg_soc {
    &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 99721673d7af..46b8f9efd413 100644
    --- a/arch/arm/boot/dts/omap4-l4.dtsi
    +++ b/arch/arm/boot/dts/omap4-l4.dtsi
    @@ -600,11 +600,11 @@ mailbox: mailbox@0 {
    #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 b148b289e830..06cc3a19ddaa 100644
    --- a/arch/arm/boot/dts/omap5-l4.dtsi
    +++ b/arch/arm/boot/dts/omap5-l4.dtsi
    @@ -616,11 +616,11 @@ mailbox: mailbox@0 {
    #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 7154b827ea2f..e817eba8c622 100644
    --- a/arch/arm/boot/dts/rk3036-kylin.dts
    +++ b/arch/arm/boot/dts/rk3036-kylin.dts
    @@ -390,7 +390,7 @@ sdmmc_pwr: sdmmc-pwr {
    };
    };

    - 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 252750c97f97..bbc3bff50856 100644
    --- a/arch/arm/boot/dts/rk3066a.dtsi
    +++ b/arch/arm/boot/dts/rk3066a.dtsi
    @@ -755,7 +755,7 @@ power: power-controller {
    #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 @@ pd_vio@RK3066_PD_VIO {
    <&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 @@ pd_video@RK3066_PD_VIDEO {
    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 2298a8d840ba..b6bde9d12c2b 100644
    --- a/arch/arm/boot/dts/rk3188.dtsi
    +++ b/arch/arm/boot/dts/rk3188.dtsi
    @@ -150,16 +150,16 @@ timer3: timer@2000e000 {
    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 @@ power: power-controller {
    #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 @@ pd_vio@RK3188_PD_VIO {
    <&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 @@ pd_video@RK3188_PD_VIDEO {
    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 208f21245095..25f83f2f5618 100644
    --- a/arch/arm/boot/dts/rk322x.dtsi
    +++ b/arch/arm/boot/dts/rk322x.dtsi
    @@ -517,7 +517,7 @@ tsadc: tsadc@11150000 {
    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 @@ vpu_mmu: iommu@20020800 {
    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 @@ vdec_mmu: iommu@20030480 {
    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 @@ vop_mmu: iommu@20053f00 {
    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 @@ iep_mmu: iommu@20070800 {
    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 44bb5e6f83b1..76363b8afcb9 100644
    --- a/arch/arm/boot/dts/rk3288-rock2-som.dtsi
    +++ b/arch/arm/boot/dts/rk3288-rock2-som.dtsi
    @@ -218,7 +218,7 @@ &io_domains {
    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 aa50f8ed4ca0..b156a83eb7d7 100644
    --- a/arch/arm/boot/dts/rk3288-vyasa.dts
    +++ b/arch/arm/boot/dts/rk3288-vyasa.dts
    @@ -379,10 +379,10 @@ &io_domains {
    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 05557ad02b33..d6dbfbd99568 100644
    --- a/arch/arm/boot/dts/rk3288.dtsi
    +++ b/arch/arm/boot/dts/rk3288.dtsi
    @@ -196,8 +196,8 @@ timer: timer@ff810000 {
    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 @@ power: power-controller {
    * *_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 @@ pd_vio@RK3288_PD_VIO {
    * 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 @@ pd_hevc@RK3288_PD_HEVC {
    * (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 @@ pd_video@RK3288_PD_VIDEO {
    * 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 @@ pcfg_pull_none_12ma: pcfg-pull-none-12ma {
    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 a16a00fb5fa5..d0fe3f9aa183 100644
    --- a/arch/arm/boot/dts/ste-ab8500.dtsi
    +++ b/arch/arm/boot/dts/ste-ab8500.dtsi
    @@ -34,7 +34,7 @@ ab8500_clock: clock-controller {
    #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_gpio: ab8500-gpio {

    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_chargalg {

    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_usb {

    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 cc045b2fc217..0defc15b9bbc 100644
    --- a/arch/arm/boot/dts/ste-ab8505.dtsi
    +++ b/arch/arm/boot/dts/ste-ab8505.dtsi
    @@ -31,7 +31,7 @@ ab8500_clock: clock-controller {
    #clock-cells = <1>;
    };

    - ab8505_gpio: ab8505-gpio {
    + ab8505_gpio: ab8505-gpiocontroller {
    compatible = "stericsson,ab8505-gpio";
    gpio-controller;
    #gpio-cells = <2>;
    @@ -39,8 +39,8 @@ ab8505_gpio: ab8505-gpio {

    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_chargalg {

    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_usb: ab8500_usb {

    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 4946743de7b9..3ccb7b5c7162 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 70f058352efc..511e097cc33e 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 @@ accelerometer@19 {
    <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 13d216192904..c97e8d29004f 100644
    --- a/arch/arm/boot/dts/ste-href.dtsi
    +++ b/arch/arm/boot/dts/ste-href.dtsi
    @@ -209,7 +209,7 @@ msp3: msp@80125000 {

    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 b344b3748143..40f1d7c9c1d4 100644
    --- a/arch/arm/boot/dts/ste-snowball.dts
    +++ b/arch/arm/boot/dts/ste-snowball.dts
    @@ -376,7 +376,7 @@ spi@80002000 {

    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 0d43ee6583cf..40df7c61bf69 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 @@ mmc@80118000 {
    #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 @@ uart@80120000 {
    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 f24369873ce2..25af066f6f3a 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 @@ mmc@80118000 {
    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 @@ uart@80120000 {
    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 @@ i2c-gate {
    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 d28a00757d0b..94afd7a0fe1f 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 @@ mmc@80118000 {
    #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 @@ uart@80120000 {

    /* 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 7e10ae744c9d..9ac1ffe53413 100644
    --- a/arch/arm/boot/dts/stm32429i-eval.dts
    +++ b/arch/arm/boot/dts/stm32429i-eval.dts
    @@ -119,17 +119,15 @@ led-blue {
    };
    };

    - 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 ca8c192449ee..327613fd9666 100644
    --- a/arch/arm/boot/dts/stm32746g-eval.dts
    +++ b/arch/arm/boot/dts/stm32746g-eval.dts
    @@ -81,12 +81,10 @@ led-blue {
    };
    };

    - 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 3dc068b91ca1..075ac57d0bf4 100644
    --- a/arch/arm/boot/dts/stm32f429-disco.dts
    +++ b/arch/arm/boot/dts/stm32f429-disco.dts
    @@ -81,12 +81,10 @@ led-green {
    };
    };

    - 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 f6530d724d00..8748d5850298 100644
    --- a/arch/arm/boot/dts/stm32f429.dtsi
    +++ b/arch/arm/boot/dts/stm32f429.dtsi
    @@ -283,8 +283,6 @@ timer@11 {
    };

    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 @@ pwm {
    };

    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 @@ timer@8 {
    };

    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 @@ pwm {
    };

    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 @@ crc: crc@40023000 {
    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 2e1b3bbbe4b5..8c982ae79f43 100644
    --- a/arch/arm/boot/dts/stm32f469-disco.dts
    +++ b/arch/arm/boot/dts/stm32f469-disco.dts
    @@ -104,12 +104,10 @@ led-blue {
    };
    };

    - 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 e1df603fc981..014b416f57e6 100644
    --- a/arch/arm/boot/dts/stm32f746.dtsi
    +++ b/arch/arm/boot/dts/stm32f746.dtsi
    @@ -265,8 +265,6 @@ timer@11 {
    };

    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 @@ pwm {
    };

    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 @@ i2c2: i2c@40005800 {
    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 @@ timer@8 {
    };

    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 @@ pwm {
    };

    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 0ce7fbc20fa4..be943b701980 100644
    --- a/arch/arm/boot/dts/stm32f769-disco.dts
    +++ b/arch/arm/boot/dts/stm32f769-disco.dts
    @@ -75,12 +75,10 @@ led-red {
    };
    };

    - 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 05ecdf9ff03a..6e42ca2dada2 100644
    --- a/arch/arm/boot/dts/stm32h743.dtsi
    +++ b/arch/arm/boot/dts/stm32h743.dtsi
    @@ -485,8 +485,6 @@ trigger@2 {
    };

    lptimer4: timer@58002c00 {
    - #address-cells = <1>;
    - #size-cells = <0>;
    compatible = "st,stm32-lptimer";
    reg = <0x58002c00 0x400>;
    clocks = <&rcc LPTIM4_CK>;
    @@ -501,8 +499,6 @@ pwm {
    };

    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 fcd3230c469b..23234f950de6 100644
    --- a/arch/arm/boot/dts/stm32mp151.dtsi
    +++ b/arch/arm/boot/dts/stm32mp151.dtsi
    @@ -1416,12 +1416,6 @@ crc1: crc@58009000 {
    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 @@ ethernet0: ethernet@5800a000 {
    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 674b2d330dc4..5670b23812a2 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 @@ ltdc_ep0_out: endpoint@0 {
    };

    &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 113c48b2ef93..a4b14ef3caee 100644
    --- a/arch/arm/boot/dts/stm32mp157a-stinger96.dtsi
    +++ b/arch/arm/boot/dts/stm32mp157a-stinger96.dtsi
    @@ -184,8 +184,6 @@ vtt_ddr: ldo3 {

    vdd_usb: ldo4 {
    regulator-name = "vdd_usb";
    - regulator-min-microvolt = <3300000>;
    - regulator-max-microvolt = <3300000>;
    interrupts = <IT_CURLIM_LDO4 0>;
    };

    @@ -208,7 +206,6 @@ v1v8: ldo6 {
    vref_ddr: vref_ddr {
    regulator-name = "vref_ddr";
    regulator-always-on;
    - regulator-over-current-protection;
    };

    bst_out: boost {
    @@ -219,13 +216,13 @@ bst_out: boost {
    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 6cf49a0a9e69..2d9461006810 100644
    --- a/arch/arm/boot/dts/stm32mp157c-odyssey-som.dtsi
    +++ b/arch/arm/boot/dts/stm32mp157c-odyssey-som.dtsi
    @@ -173,8 +173,6 @@ vtt_ddr: ldo3 {

    vdd_usb: ldo4 {
    regulator-name = "vdd_usb";
    - regulator-min-microvolt = <3300000>;
    - regulator-max-microvolt = <3300000>;
    interrupts = <IT_CURLIM_LDO4 0>;
    };

    @@ -197,7 +195,6 @@ v1v2_hdmi: ldo6 {
    vref_ddr: vref_ddr {
    regulator-name = "vref_ddr";
    regulator-always-on;
    - regulator-over-current-protection;
    };

    bst_out: boost {
    @@ -213,7 +210,7 @@ vbus_otg: pwr_sw1 {
    vbus_sw: pwr_sw2 {
    regulator-name = "vbus_sw";
    interrupts = <IT_OCP_SWOUT 0>;
    - regulator-active-discharge;
    + regulator-active-discharge = <1>;
    };
    };

    @@ -269,7 +266,7 @@ &sdmmc2 {
    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 a7ffec8f1516..be1dd5e9e744 100644
    --- a/arch/arm/boot/dts/stm32mp157c-odyssey.dts
    +++ b/arch/arm/boot/dts/stm32mp157c-odyssey.dts
    @@ -64,7 +64,7 @@ &sdmmc1 {
    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 5523f4138fd6..c5ea08fec535 100644
    --- a/arch/arm/boot/dts/stm32mp15xx-dhcom-pdk2.dtsi
    +++ b/arch/arm/boot/dts/stm32mp15xx-dhcom-pdk2.dtsi
    @@ -34,7 +34,6 @@ display_bl: display-bl {

    gpio-keys-polled {
    compatible = "gpio-keys-polled";
    - #size-cells = <0>;
    poll-interval = <20>;

    /*
    @@ -60,7 +59,6 @@ button-2 {

    gpio-keys {
    compatible = "gpio-keys";
    - #size-cells = <0>;

    button-1 {
    label = "TA2-GPIO-B";
    @@ -184,12 +182,11 @@ sgtl5000_rx_endpoint: endpoint@1 {

    };

    - 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 31d08423a32f..2af0a6752674 100644
    --- a/arch/arm/boot/dts/stm32mp15xx-dhcom-som.dtsi
    +++ b/arch/arm/boot/dts/stm32mp15xx-dhcom-som.dtsi
    @@ -150,7 +150,7 @@ &fmc {
    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 @@ vtt_ddr: ldo3 {

    vdd_usb: ldo4 {
    regulator-name = "vdd_usb";
    - regulator-min-microvolt = <3300000>;
    - regulator-max-microvolt = <3300000>;
    interrupts = <IT_CURLIM_LDO4 0>;
    };

    @@ -356,7 +354,6 @@ v1v8: ldo6 {
    vref_ddr: vref_ddr {
    regulator-name = "vref_ddr";
    regulator-always-on;
    - regulator-over-current-protection;
    };

    bst_out: boost {
    @@ -372,7 +369,7 @@ vbus_otg: pwr_sw1 {
    vbus_sw: pwr_sw2 {
    regulator-name = "vbus_sw";
    interrupts = <IT_OCP_SWOUT 0>;
    - regulator-active-discharge;
    + regulator-active-discharge = <1>;
    };
    };

    @@ -437,7 +434,7 @@ &qspi {
    #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 013ae369791d..2b0ac605549d 100644
    --- a/arch/arm/boot/dts/stm32mp15xx-dhcor-som.dtsi
    +++ b/arch/arm/boot/dts/stm32mp15xx-dhcor-som.dtsi
    @@ -198,7 +198,7 @@ &qspi {
    #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 713485a95795..6706d8311a66 100644
    --- a/arch/arm/boot/dts/stm32mp15xx-osd32.dtsi
    +++ b/arch/arm/boot/dts/stm32mp15xx-osd32.dtsi
    @@ -146,8 +146,6 @@ vtt_ddr: ldo3 {

    vdd_usb: ldo4 {
    regulator-name = "vdd_usb";
    - regulator-min-microvolt = <3300000>;
    - regulator-max-microvolt = <3300000>;
    interrupts = <IT_CURLIM_LDO4 0>;
    };

    @@ -171,7 +169,6 @@ v1v2_hdmi: ldo6 {
    vref_ddr: vref_ddr {
    regulator-name = "vref_ddr";
    regulator-always-on;
    - regulator-over-current-protection;
    };

    bst_out: boost {
    @@ -182,13 +179,13 @@ bst_out: boost {
    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 2298fc034183..14cd3238355b 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 @@ sound {
    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 86494cb4d5a1..ae4312eedcbd 100644
    --- a/arch/arm/boot/dts/tegra20-harmony.dts
    +++ b/arch/arm/boot/dts/tegra20-harmony.dts
    @@ -748,7 +748,7 @@ sound {

    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 a348ca30e522..b31c9bca16e6 100644
    --- a/arch/arm/boot/dts/tegra20-medcom-wide.dts
    +++ b/arch/arm/boot/dts/tegra20-medcom-wide.dts
    @@ -84,7 +84,7 @@ sound {
    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 378f23b2958b..5811b7006a9b 100644
    --- a/arch/arm/boot/dts/tegra20-plutux.dts
    +++ b/arch/arm/boot/dts/tegra20-plutux.dts
    @@ -52,7 +52,7 @@ sound {
    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 c24d4a37613e..92d494b8c3d2 100644
    --- a/arch/arm/boot/dts/tegra20-seaboard.dts
    +++ b/arch/arm/boot/dts/tegra20-seaboard.dts
    @@ -911,7 +911,7 @@ sound {
    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 44ced60315de..10ff09d86efa 100644
    --- a/arch/arm/boot/dts/tegra20-tec.dts
    +++ b/arch/arm/boot/dts/tegra20-tec.dts
    @@ -61,7 +61,7 @@ sound {

    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 99a356c1ccec..5a2578b3707f 100644
    --- a/arch/arm/boot/dts/tegra20-ventana.dts
    +++ b/arch/arm/boot/dts/tegra20-ventana.dts
    @@ -709,7 +709,7 @@ sound {
    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 b97da45ebdb4..e1325ee0a3c4 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_core: core-regulator@60 {
    };

    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 2dff14b87f3e..d9dd11569d4b 100644
    --- a/arch/arm/boot/dts/tegra30-cardhu.dtsi
    +++ b/arch/arm/boot/dts/tegra30-cardhu.dtsi
    @@ -630,7 +630,7 @@ sound {

    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 41b8aad65363..46570ec2fbcf 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 56f2c0bcae5a..bf0d25fd2cea 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 1cc7fdcec51b..8e7a66943b01 100644
    --- a/arch/arm64/boot/dts/arm/juno-base.dtsi
    +++ b/arch/arm64/boot/dts/arm/juno-base.dtsi
    @@ -568,13 +568,13 @@ scpi {
    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_clk: scpi-clk {
    };
    };

    - 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 8060178b365d..a5a64d17d9ea 100644
    --- a/arch/arm64/boot/dts/broadcom/bcm4908/bcm4908.dtsi
    +++ b/arch/arm64/boot/dts/broadcom/bcm4908/bcm4908.dtsi
    @@ -306,7 +306,7 @@ nand@1800 {
    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 135ac8210871..801ba9612d36 100644
    --- a/arch/arm64/boot/dts/freescale/fsl-ls208xa.dtsi
    +++ b/arch/arm64/boot/dts/freescale/fsl-ls208xa.dtsi
    @@ -929,7 +929,6 @@ dspi: spi@2100000 {
    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 e1e81ca0ca69..a79f42a9618e 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 @@ fec1: ethernet@5b040000 {
    <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 @@ fec2: ethernet@5b050000 {
    <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 @@ enet0_lpcg: clock-controller@5b230000 {
    #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 @@ enet1_lpcg: clock-controller@5b240000 {
    #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 c35eeaff958f..54eaf3d6055b 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 @@ pmic@4b {
    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 17c449e12c2e..91df9c5350ae 100644
    --- a/arch/arm64/boot/dts/freescale/imx8mq.dtsi
    +++ b/arch/arm64/boot/dts/freescale/imx8mq.dtsi
    @@ -1383,6 +1383,14 @@ pcie0: pcie@33800000 {
    <&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 @@ pcie1: pcie@33c00000 {
    <&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 53e817c5f6f3..ce2bcddf396f 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 @@ sfp: sfp {
    };

    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 6ffbb099fcac..5db81a416cd6 100644
    --- a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
    +++ b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
    @@ -504,4 +504,12 @@ pcie_intc: interrupt-controller {
    };
    };
    };
    +
    + 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 2c2af001619b..9758609541c7 100644
    --- a/arch/arm64/boot/dts/marvell/cn9130-db.dts
    +++ b/arch/arm64/boot/dts/marvell/cn9130-db.dts
    @@ -260,7 +260,7 @@ partition@0 {
    };
    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 9449156fae39..2e40b6047283 100644
    --- a/arch/arm64/boot/dts/nvidia/tegra194.dtsi
    +++ b/arch/arm64/boot/dts/nvidia/tegra194.dtsi
    @@ -2345,6 +2345,20 @@ l3c: l3-cache {
    };
    };

    + 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 e77a7926034a..afe0f9c25816 100644
    --- a/arch/arm64/boot/dts/qcom/sc7180-idp.dts
    +++ b/arch/arm64/boot/dts/qcom/sc7180-idp.dts
    @@ -45,7 +45,7 @@ chosen {

    /* 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 4c6e433c8226..3eb8550da1fc 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 @@ / {
    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 fb2cf3d987a1..50ee3bb97325 100644
    --- a/arch/arm64/boot/dts/qcom/sm8150-hdk.dts
    +++ b/arch/arm64/boot/dts/qcom/sm8150-hdk.dts
    @@ -354,7 +354,11 @@ vreg_l6f_2p85: ldo6 {
    };
    };

    -&qupv3_id_1 {
    +&gmu {
    + status = "okay";
    +};
    +
    +&gpu {
    status = "okay";
    };

    @@ -372,6 +376,10 @@ resin {
    };
    };

    +&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 3774f8e63416..7de54b2e497e 100644
    --- a/arch/arm64/boot/dts/qcom/sm8150-mtp.dts
    +++ b/arch/arm64/boot/dts/qcom/sm8150-mtp.dts
    @@ -349,7 +349,11 @@ vreg_l6f_2p85: ldo6 {
    };
    };

    -&qupv3_id_1 {
    +&gmu {
    + status = "okay";
    +};
    +
    +&gpu {
    status = "okay";
    };

    @@ -367,6 +371,10 @@ resin {
    };
    };

    +&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 51235a9521c2..618a1e64f808 100644
    --- a/arch/arm64/boot/dts/qcom/sm8150.dtsi
    +++ b/arch/arm64/boot/dts/qcom/sm8150.dtsi
    @@ -1082,6 +1082,8 @@ gpu: gpu@2c00000 {

    qcom,gmu = <&gmu>;

    + status = "disabled";
    +
    zap-shader {
    memory-region = <&gpu_mem>;
    };
    @@ -1149,6 +1151,8 @@ gmu: gmu@2c6a000 {

    operating-points-v2 = <&gmu_opp_table>;

    + status = "disabled";
    +
    gmu_opp_table: opp-table {
    compatible = "operating-points-v2";

    @@ -1496,6 +1500,8 @@ remoteproc_mpss: remoteproc@4080000 {
    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 4c0de12aaba6..09b552396557 100644
    --- a/arch/arm64/boot/dts/qcom/sm8250.dtsi
    +++ b/arch/arm64/boot/dts/qcom/sm8250.dtsi
    @@ -1470,7 +1470,7 @@ pcie2_phy: phy@1c16000 {

    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 @@ videocc: clock-controller@abf0000 {
    };

    mdss: mdss@ae00000 {
    - compatible = "qcom,sdm845-mdss";
    + compatible = "qcom,sm8250-mdss";
    reg = <0 0x0ae00000 0 0x1000>;
    reg-names = "mdss";

    @@ -2402,7 +2402,7 @@ mdss: mdss@ae00000 {
    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 ed0b51bc03ea..a2382eb8619b 100644
    --- a/arch/arm64/boot/dts/qcom/sm8350.dtsi
    +++ b/arch/arm64/boot/dts/qcom/sm8350.dtsi
    @@ -689,7 +689,7 @@ pdc: interrupt-controller@b220000 {
    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 @@ tsens0: thermal-sensor@c222000 {
    #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 @@ usb_2_ssphy: phy@88ebe00 {
    };
    };

    - 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 d8046fedf9c1..e3c8b2fe143e 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 @@ &du_out_rgb {
    &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 8d3a4d6ee885..bd3d26b2a2bb 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 @@ &sdhi3 {
    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 09baa8a167ce..2b43c3d72dd9 100644
    --- a/arch/arm64/boot/dts/rockchip/px30.dtsi
    +++ b/arch/arm64/boot/dts/rockchip/px30.dtsi
    @@ -244,20 +244,20 @@ power: power-controller {
    #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 @@ pd_gmac@PX30_PD_GMAC {
    <&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 @@ pd_mmc_nand@PX30_PD_MMC_NAND {
    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 @@ pd_vo@PX30_PD_VO {
    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 @@ pd_vi@PX30_PD_VI {
    <&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 3dddd4742c3a..665b2e69455d 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 @@ vcc_sdmmc: vcc-sdmmc {
    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 f807bc066ccb..d5001d13e374 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 @@ vcc_io_sdio: sdmmcio-regulator {
    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 a05732b59f38..a99979afd373 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_sd: sdmmc-regulator {
    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 3ed69ecbcf3c..d2d8b675c9e9 100644
    --- a/arch/arm64/boot/dts/rockchip/rk3328.dtsi
    +++ b/arch/arm64/boot/dts/rockchip/rk3328.dtsi
    @@ -300,13 +300,13 @@ power: power-controller {
    #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 beee5fbb3443..5d7a9d96d163 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 @@ &ppvar_gpu_pwm {
    };

    &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 4002742fed4c..c1bcc8ca3769 100644
    --- a/arch/arm64/boot/dts/rockchip/rk3399-gru.dtsi
    +++ b/arch/arm64/boot/dts/rockchip/rk3399-gru.dtsi
    @@ -252,8 +252,8 @@ ppvar_sd_card_io: ppvar-sd-card-io {
    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 16fd58c4a80f..8c0ff6c96e03 100644
    --- a/arch/arm64/boot/dts/rockchip/rk3399-nanopi4.dtsi
    +++ b/arch/arm64/boot/dts/rockchip/rk3399-nanopi4.dtsi
    @@ -510,7 +510,6 @@ &pcie_phy {
    };

    &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 7d0a7c697703..b28888ea9262 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 @@ &pcie_phy {

    &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 634a91af8e83..7f8081f9e30e 100644
    --- a/arch/arm64/boot/dts/rockchip/rk3399.dtsi
    +++ b/arch/arm64/boot/dts/rockchip/rk3399.dtsi
    @@ -227,7 +227,7 @@ pcie0: pcie@f8000000 {
    <&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 @@ power: power-controller {
    #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 @@ pd_vdu@RK3399_PD_VDU {
    };

    /* 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 @@ sdmmc_wp: sdmmc-wp {
    };
    };

    - 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 c0074b3ed4af..01d1a75c8b4d 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 @@ &pcie_phy {

    &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 1b947e2c2e74..faa8e280cf2b 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(0x0078, PIN_INPUT, 0) /* (L2) MCU_RGMII1_RD3 */
    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 bedd01b7a32c..d14f3c18b65f 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(0x0088, PIN_INPUT, 0) /* MCU_RGMII1_RD3 */
    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 ffccbc53f1e7..de3c3f7f2b7a 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(0x0078, PIN_INPUT, 0) /* MCU_RGMII1_RD3 */
    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 76c6034428be..b4d936580fbf 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 8dd23c703718..662f52eb7639 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 3a75a2c601c2..1f7bb4898a9d 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 @@ static int skx_iio_set_mapping(struct intel_uncore_type *type)
    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 a3d867f22153..66e304a84deb 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 20d9bddbb985..394e6e1e9686 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 db0ea2d2d75a..a9c613c32282 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 228bf4a71d23..8685619d38f9 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 c2983ed53494..74986bf96656 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 2c88aa221559..308471586381 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 49c87e00fafb..620cf3fdd607 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 54d560c48398..182bfe396516 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 0742a90cb844..5654c5e9862b 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 1cf4f1087492..c2d34dc8ba46 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 ef70140c5b09..873cbd38e6d3 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 1f6ba4221817..eeb49b5d90ef 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 5699d909abc2..a21ca8e0841a 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 829f6d673c96..a2f2738ccb94 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 961fa6b75cad..beb41572d04e 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 e4fbef81bc52..b1d46dd8eaab 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 41f7f078cd27..db74241935ab 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 facde824bcaa..e31a5a397f11 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 7d5cd9bc6c99..618623014180 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 5249b64f4fc5..49def6934cad 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 8543bf3c3484..ad655f0a4965 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 0b2ce4bdc2c3..e0cb713193ea 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 14f07050b6b1..0de2c4552f5e 100644
    --- a/drivers/net/fddi/defza.c
    +++ b/drivers/net/fddi/defza.c
    @@ -1504,9 +1504,8 @@ static int fza_probe(struct device *bdev)
    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 3811f1bde84e..b80ed2ffd45e 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 c0bd9cbc43b1..1b483cf2b1ca 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 ee6cf189103f..47843b055959 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 218370faf37b..2b92775d58f0 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 d51cc12114cb..eae7cb9faf1e 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 a577a74aaf75..5e0383401629 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 4b04ab8908f8..a396f048a031 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 a195bfe9eccc..7a78606598c4 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 3cba7bfba296..30199663c7d8 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 46f60fc2a069..9df1639ffa65 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 e95408314078..36ec3901cfd4 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 c452849e7bb4..ffd33e5decae 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 cd0fb8ca2425..33da3c1085f0 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 1bf939818c98..ee44a0d7730b 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 6aa2697c4a15..b03c0f35d7b0 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 af09bd282cb9..313248c7bab9 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 4869ef813dc4..63f99f4eeed9 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 e87dfc6660f3..2a010881f4b6 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 f1cea041dc5a..7c65ad3d1f8a 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 9ea7f0168457..c1aa7815bd6e 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 b01d28eca7ee..8d76dbfde6a9 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 1a60adb1d30a..fdf16aa34eb4 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 fe06cccf14b3..fff80fc18002 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 d20b25f40d19..142dcf5e4a18 100644
    --- a/drivers/thermal/thermal_core.c
    +++ b/drivers/thermal/thermal_core.c
    @@ -1369,7 +1369,7 @@ thermal_zone_device_register(const char *type, int trips, int mask,
    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 5b76f9a1280d..6379f26a335f 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 8dec4edc8a9f..35a6007d88a9 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 e5dbe87e65b4..08c9348cf9ed 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 eac6788fc6cf..c4769a9396c5 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, &params.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 c4ab5996d97a..864c2fad23be 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), &params);
    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 6a7a9cedebc6..9047befa66c5 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 02b02cb29ce2..a7532cb3493a 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 b4e1ebaae825..939f21b69ead 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 a84f76db5070..144727041e78 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 6430a94c6981..0d429a102d41 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 56cb3c38569a..14efa0ded75d 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 f14149df5a65..625a38ccb5d9 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 d05193cb0d99..b42b3e6731ed 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 034ad93a1ad7..9b1577498373 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 6e2ebcb0d66f..d8a6fcd28e39 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 7dd0d859d95b..f60ef0b4ec33 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 8857ef1543eb..9aaf4a8ebeeb 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 b15367c285bd..3fdba3ec69c8 100644
    --- a/mm/memory.c
    +++ b/mm/memory.c
    @@ -708,10 +708,10 @@ struct page *vm_normal_page_pmd(struct vm_area_struct *vma, unsigned long addr,

    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 @@ copy_pte_range(struct vm_area_struct *dst_vma, struct vm_area_struct *src_vma,
    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 @@ vm_fault_t do_swap_page(struct vm_fault *vmf)
    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 5fa21d66af20..680d83cab077 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 @@ static int shmem_swapin_page(struct inode *inode, pgoff_t index,
    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 f7d2f472ae24..6e4a32354a13 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 50531a2d0b20..4f29dde4ed0a 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 9bf8e20ecdf3..dfd74cd7b5f3 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 f6cc26de5ed3..0dca00745ac3 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 f1c1f9e3de72..4c9a5b99bf7f 100644
    --- a/net/ipv4/tcp.c
    +++ b/net/ipv4/tcp.c
    @@ -1375,6 +1375,9 @@ int tcp_sendmsg_locked(struct sock *sk, struct msghdr *msg, size_t size)
    }
    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 bc266514ce58..6bd628f08ded 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 312184cead57..e409f2de5dc4 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 bde781f46b41..29553fce8502 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 8091276cb85b..ca9cf1051b1e 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 54e06b88af69..9dde1e5fb449 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 5f47c0b6e3de..22d7ed08b92d 100644
    --- a/net/ipv6/tcp_ipv6.c
    +++ b/net/ipv6/tcp_ipv6.c
    @@ -348,11 +348,20 @@ static int tcp_v6_connect(struct sock *sk, struct sockaddr *uaddr,
    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 3fcd86f4dfdc..6774e776228c 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 8b84d534b19d..6abb45a67199 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 8690fc07030f..f3e8e6ce82c4 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 fcb15b8904e8..a5db7c59ad4e 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 a656baa321fe..1b4b3514c94f 100644
    --- a/net/sched/act_ct.c
    +++ b/net/sched/act_ct.c
    @@ -322,11 +322,22 @@ static int tcf_ct_flow_table_get(struct tcf_ct_params *params)

    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 @@ static int tcf_ct_act(struct sk_buff *skb, const struct tc_action *a,
    /* 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 82dd1b65b7a8..f247e691562d 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 4ae735039daf..a72b154de7b0 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 39bb322707b4..b11cfc86a3d0 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 e7e7eee9f172..24734f2249d6 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 c72adbd67386..081e445f7725 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;
    }
    \
     
     \ /
      Last update: 2021-07-25 15:17    [W:7.311 / U:0.048 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site