- reenable 8723ds on K5.13 and remove deprecated wifi patches - adjust rockchip audio and vdec patches in 5.13.y as in 5.10.y
4920 lines
154 KiB
Diff
4920 lines
154 KiB
Diff
diff --git a/Makefile b/Makefile
|
|
index 23d656936d405..aab88519cb0ed 100644
|
|
--- a/Makefile
|
|
+++ b/Makefile
|
|
@@ -1,7 +1,7 @@
|
|
# SPDX-License-Identifier: GPL-2.0
|
|
VERSION = 5
|
|
PATCHLEVEL = 10
|
|
-SUBLEVEL = 52
|
|
+SUBLEVEL = 53
|
|
EXTRAVERSION =
|
|
NAME = Dare mighty things
|
|
|
|
@@ -704,11 +704,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 b7f64c7ba83d3..77e23e7368541 100644
|
|
--- a/arch/arm/boot/dts/am335x-baltos.dtsi
|
|
+++ b/arch/arm/boot/dts/am335x-baltos.dtsi
|
|
@@ -393,10 +393,10 @@
|
|
status = "okay";
|
|
};
|
|
|
|
-&gpio0 {
|
|
+&gpio0_target {
|
|
ti,no-reset-on-init;
|
|
};
|
|
|
|
-&gpio3 {
|
|
+&gpio3_target {
|
|
ti,no-reset-on-init;
|
|
};
|
|
diff --git a/arch/arm/boot/dts/am335x-evmsk.dts b/arch/arm/boot/dts/am335x-evmsk.dts
|
|
index b43b94122d3c5..bf05b68274c25 100644
|
|
--- a/arch/arm/boot/dts/am335x-evmsk.dts
|
|
+++ b/arch/arm/boot/dts/am335x-evmsk.dts
|
|
@@ -648,7 +648,7 @@
|
|
status = "okay";
|
|
};
|
|
|
|
-&gpio0 {
|
|
+&gpio0_target {
|
|
ti,no-reset-on-init;
|
|
};
|
|
|
|
diff --git a/arch/arm/boot/dts/am335x-moxa-uc-2100-common.dtsi b/arch/arm/boot/dts/am335x-moxa-uc-2100-common.dtsi
|
|
index 4e90f9c23d2e5..8121a199607cc 100644
|
|
--- a/arch/arm/boot/dts/am335x-moxa-uc-2100-common.dtsi
|
|
+++ b/arch/arm/boot/dts/am335x-moxa-uc-2100-common.dtsi
|
|
@@ -150,7 +150,7 @@
|
|
status = "okay";
|
|
};
|
|
|
|
-&gpio0 {
|
|
+&gpio0_target {
|
|
ti,no-reset-on-init;
|
|
};
|
|
|
|
diff --git a/arch/arm/boot/dts/am335x-moxa-uc-8100-common.dtsi b/arch/arm/boot/dts/am335x-moxa-uc-8100-common.dtsi
|
|
index 98d8ed4ad9677..39e5d2ce600a1 100644
|
|
--- a/arch/arm/boot/dts/am335x-moxa-uc-8100-common.dtsi
|
|
+++ b/arch/arm/boot/dts/am335x-moxa-uc-8100-common.dtsi
|
|
@@ -353,7 +353,7 @@
|
|
status = "okay";
|
|
};
|
|
|
|
-&gpio0 {
|
|
+&gpio0_target {
|
|
ti,no-reset-on-init;
|
|
};
|
|
|
|
diff --git a/arch/arm/boot/dts/am33xx-l4.dtsi b/arch/arm/boot/dts/am33xx-l4.dtsi
|
|
index ea20e4bdf040e..29fafb67cfaad 100644
|
|
--- a/arch/arm/boot/dts/am33xx-l4.dtsi
|
|
+++ b/arch/arm/boot/dts/am33xx-l4.dtsi
|
|
@@ -1723,7 +1723,7 @@
|
|
};
|
|
};
|
|
|
|
- target-module@ae000 { /* 0x481ae000, ap 56 3a.0 */
|
|
+ gpio3_target: target-module@ae000 { /* 0x481ae000, ap 56 3a.0 */
|
|
compatible = "ti,sysc-omap2", "ti,sysc";
|
|
reg = <0xae000 0x4>,
|
|
<0xae010 0x4>,
|
|
diff --git a/arch/arm/boot/dts/am437x-gp-evm.dts b/arch/arm/boot/dts/am437x-gp-evm.dts
|
|
index 6e4d05d649e98..033b984ff637d 100644
|
|
--- a/arch/arm/boot/dts/am437x-gp-evm.dts
|
|
+++ b/arch/arm/boot/dts/am437x-gp-evm.dts
|
|
@@ -813,11 +813,14 @@
|
|
status = "okay";
|
|
};
|
|
|
|
+&gpio5_target {
|
|
+ ti,no-reset-on-init;
|
|
+};
|
|
+
|
|
&gpio5 {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&display_mux_pins>;
|
|
status = "okay";
|
|
- ti,no-reset-on-init;
|
|
|
|
p8 {
|
|
/*
|
|
diff --git a/arch/arm/boot/dts/am437x-l4.dtsi b/arch/arm/boot/dts/am437x-l4.dtsi
|
|
index 243e35f7a56c7..370c4e64676f6 100644
|
|
--- a/arch/arm/boot/dts/am437x-l4.dtsi
|
|
+++ b/arch/arm/boot/dts/am437x-l4.dtsi
|
|
@@ -2033,7 +2033,7 @@
|
|
};
|
|
};
|
|
|
|
- target-module@22000 { /* 0x48322000, ap 116 64.0 */
|
|
+ gpio5_target: target-module@22000 { /* 0x48322000, ap 116 64.0 */
|
|
compatible = "ti,sysc-omap2", "ti,sysc";
|
|
reg = <0x22000 0x4>,
|
|
<0x22010 0x4>,
|
|
diff --git a/arch/arm/boot/dts/am57xx-cl-som-am57x.dts b/arch/arm/boot/dts/am57xx-cl-som-am57x.dts
|
|
index 0d5fe2bfb683a..aed81568a297d 100644
|
|
--- a/arch/arm/boot/dts/am57xx-cl-som-am57x.dts
|
|
+++ b/arch/arm/boot/dts/am57xx-cl-som-am57x.dts
|
|
@@ -454,20 +454,20 @@
|
|
|
|
&mailbox5 {
|
|
status = "okay";
|
|
- mbox_ipu1_ipc3x: mbox_ipu1_ipc3x {
|
|
+ mbox_ipu1_ipc3x: mbox-ipu1-ipc3x {
|
|
status = "okay";
|
|
};
|
|
- mbox_dsp1_ipc3x: mbox_dsp1_ipc3x {
|
|
+ mbox_dsp1_ipc3x: mbox-dsp1-ipc3x {
|
|
status = "okay";
|
|
};
|
|
};
|
|
|
|
&mailbox6 {
|
|
status = "okay";
|
|
- mbox_ipu2_ipc3x: mbox_ipu2_ipc3x {
|
|
+ mbox_ipu2_ipc3x: mbox-ipu2-ipc3x {
|
|
status = "okay";
|
|
};
|
|
- mbox_dsp2_ipc3x: mbox_dsp2_ipc3x {
|
|
+ mbox_dsp2_ipc3x: mbox-dsp2-ipc3x {
|
|
status = "okay";
|
|
};
|
|
};
|
|
@@ -610,12 +610,11 @@
|
|
>;
|
|
};
|
|
|
|
-&gpio3 {
|
|
- status = "okay";
|
|
+&gpio3_target {
|
|
ti,no-reset-on-init;
|
|
};
|
|
|
|
-&gpio2 {
|
|
+&gpio2_target {
|
|
status = "okay";
|
|
ti,no-reset-on-init;
|
|
};
|
|
diff --git a/arch/arm/boot/dts/aspeed-bmc-ibm-rainier.dts b/arch/arm/boot/dts/aspeed-bmc-ibm-rainier.dts
|
|
index c76b0046b4028..5a4e137fec210 100644
|
|
--- a/arch/arm/boot/dts/aspeed-bmc-ibm-rainier.dts
|
|
+++ b/arch/arm/boot/dts/aspeed-bmc-ibm-rainier.dts
|
|
@@ -156,10 +156,7 @@
|
|
/*W0-W7*/ "","","","","","","","",
|
|
/*X0-X7*/ "","","","","","","","",
|
|
/*Y0-Y7*/ "","","","","","","","",
|
|
- /*Z0-Z7*/ "","","","","","","","",
|
|
- /*AA0-AA7*/ "","","","","","","","",
|
|
- /*AB0-AB7*/ "","","","","","","","",
|
|
- /*AC0-AC7*/ "","","","","","","","";
|
|
+ /*Z0-Z7*/ "","","","","","","","";
|
|
|
|
pin_mclr_vpp {
|
|
gpio-hog;
|
|
diff --git a/arch/arm/boot/dts/aspeed-bmc-opp-tacoma.dts b/arch/arm/boot/dts/aspeed-bmc-opp-tacoma.dts
|
|
index e86c22ce6d123..0e8851cec979e 100644
|
|
--- a/arch/arm/boot/dts/aspeed-bmc-opp-tacoma.dts
|
|
+++ b/arch/arm/boot/dts/aspeed-bmc-opp-tacoma.dts
|
|
@@ -127,10 +127,7 @@
|
|
/*W0-W7*/ "","","","","","","","",
|
|
/*X0-X7*/ "","","","","","","","",
|
|
/*Y0-Y7*/ "","","","","","","","",
|
|
- /*Z0-Z7*/ "","","","","","","","",
|
|
- /*AA0-AA7*/ "","","","","","","","",
|
|
- /*AB0-AB7*/ "","","","","","","","",
|
|
- /*AC0-AC7*/ "","","","","","","","";
|
|
+ /*Z0-Z7*/ "","","","","","","","";
|
|
};
|
|
|
|
&fmc {
|
|
@@ -180,6 +177,7 @@
|
|
|
|
&emmc {
|
|
status = "okay";
|
|
+ clk-phase-mmc-hs200 = <36>, <270>;
|
|
};
|
|
|
|
&fsim0 {
|
|
diff --git a/arch/arm/boot/dts/bcm-cygnus.dtsi b/arch/arm/boot/dts/bcm-cygnus.dtsi
|
|
index dacaef2c14caa..ea3dc128b764b 100644
|
|
--- a/arch/arm/boot/dts/bcm-cygnus.dtsi
|
|
+++ b/arch/arm/boot/dts/bcm-cygnus.dtsi
|
|
@@ -460,7 +460,7 @@
|
|
status = "disabled";
|
|
};
|
|
|
|
- nand: nand@18046000 {
|
|
+ nand_controller: nand-controller@18046000 {
|
|
compatible = "brcm,nand-iproc", "brcm,brcmnand-v6.1";
|
|
reg = <0x18046000 0x600>, <0xf8105408 0x600>,
|
|
<0x18046f00 0x20>;
|
|
diff --git a/arch/arm/boot/dts/bcm-hr2.dtsi b/arch/arm/boot/dts/bcm-hr2.dtsi
|
|
index e8df458aad392..84cda16f68a23 100644
|
|
--- a/arch/arm/boot/dts/bcm-hr2.dtsi
|
|
+++ b/arch/arm/boot/dts/bcm-hr2.dtsi
|
|
@@ -179,7 +179,7 @@
|
|
status = "disabled";
|
|
};
|
|
|
|
- nand: nand@26000 {
|
|
+ nand_controller: nand-controller@26000 {
|
|
compatible = "brcm,nand-iproc", "brcm,brcmnand-v6.1";
|
|
reg = <0x26000 0x600>,
|
|
<0x11b408 0x600>,
|
|
diff --git a/arch/arm/boot/dts/bcm-nsp.dtsi b/arch/arm/boot/dts/bcm-nsp.dtsi
|
|
index e895f7cb8c9f2..605b6d2f4a569 100644
|
|
--- a/arch/arm/boot/dts/bcm-nsp.dtsi
|
|
+++ b/arch/arm/boot/dts/bcm-nsp.dtsi
|
|
@@ -269,7 +269,7 @@
|
|
dma-coherent;
|
|
};
|
|
|
|
- nand: nand@26000 {
|
|
+ nand_controller: nand-controller@26000 {
|
|
compatible = "brcm,nand-iproc", "brcm,brcmnand-v6.1";
|
|
reg = <0x026000 0x600>,
|
|
<0x11b408 0x600>,
|
|
diff --git a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts
|
|
index 09a1182c29363..5395e8c2484e0 100644
|
|
--- a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts
|
|
+++ b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts
|
|
@@ -28,11 +28,11 @@
|
|
};
|
|
|
|
leds {
|
|
- act {
|
|
+ led-act {
|
|
gpios = <&gpio 42 GPIO_ACTIVE_HIGH>;
|
|
};
|
|
|
|
- pwr {
|
|
+ led-pwr {
|
|
label = "PWR";
|
|
gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
|
|
default-state = "keep";
|
|
diff --git a/arch/arm/boot/dts/bcm2711.dtsi b/arch/arm/boot/dts/bcm2711.dtsi
|
|
index 4847dd305317a..3d040f6e2a20f 100644
|
|
--- a/arch/arm/boot/dts/bcm2711.dtsi
|
|
+++ b/arch/arm/boot/dts/bcm2711.dtsi
|
|
@@ -395,7 +395,7 @@
|
|
ranges = <0x0 0x7e000000 0x0 0xfe000000 0x01800000>;
|
|
dma-ranges = <0x0 0xc0000000 0x0 0x00000000 0x40000000>;
|
|
|
|
- emmc2: emmc2@7e340000 {
|
|
+ emmc2: mmc@7e340000 {
|
|
compatible = "brcm,bcm2711-emmc2";
|
|
reg = <0x0 0x7e340000 0x100>;
|
|
interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>;
|
|
diff --git a/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts b/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts
|
|
index 6c8ce39833bf6..40b9405f1a8e4 100644
|
|
--- a/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts
|
|
+++ b/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts
|
|
@@ -14,11 +14,11 @@
|
|
};
|
|
|
|
leds {
|
|
- act {
|
|
+ led-act {
|
|
gpios = <&gpio 47 GPIO_ACTIVE_HIGH>;
|
|
};
|
|
|
|
- pwr {
|
|
+ led-pwr {
|
|
label = "PWR";
|
|
gpios = <&gpio 35 GPIO_ACTIVE_HIGH>;
|
|
default-state = "keep";
|
|
diff --git a/arch/arm/boot/dts/bcm2835-rpi-a.dts b/arch/arm/boot/dts/bcm2835-rpi-a.dts
|
|
index 17fdd48346ffb..11edb581dbaf0 100644
|
|
--- a/arch/arm/boot/dts/bcm2835-rpi-a.dts
|
|
+++ b/arch/arm/boot/dts/bcm2835-rpi-a.dts
|
|
@@ -14,7 +14,7 @@
|
|
};
|
|
|
|
leds {
|
|
- act {
|
|
+ led-act {
|
|
gpios = <&gpio 16 GPIO_ACTIVE_LOW>;
|
|
};
|
|
};
|
|
diff --git a/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts b/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts
|
|
index b0355c229cdc2..1b435c64bd9c1 100644
|
|
--- a/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts
|
|
+++ b/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts
|
|
@@ -15,11 +15,11 @@
|
|
};
|
|
|
|
leds {
|
|
- act {
|
|
+ led-act {
|
|
gpios = <&gpio 47 GPIO_ACTIVE_HIGH>;
|
|
};
|
|
|
|
- pwr {
|
|
+ led-pwr {
|
|
label = "PWR";
|
|
gpios = <&gpio 35 GPIO_ACTIVE_HIGH>;
|
|
default-state = "keep";
|
|
diff --git a/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts b/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts
|
|
index 33b3b5c025219..a23c25c00eea7 100644
|
|
--- a/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts
|
|
+++ b/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts
|
|
@@ -15,7 +15,7 @@
|
|
};
|
|
|
|
leds {
|
|
- act {
|
|
+ led-act {
|
|
gpios = <&gpio 16 GPIO_ACTIVE_LOW>;
|
|
};
|
|
};
|
|
diff --git a/arch/arm/boot/dts/bcm2835-rpi-b.dts b/arch/arm/boot/dts/bcm2835-rpi-b.dts
|
|
index 2b69957e0113e..1b63d6b19750b 100644
|
|
--- a/arch/arm/boot/dts/bcm2835-rpi-b.dts
|
|
+++ b/arch/arm/boot/dts/bcm2835-rpi-b.dts
|
|
@@ -15,7 +15,7 @@
|
|
};
|
|
|
|
leds {
|
|
- act {
|
|
+ led-act {
|
|
gpios = <&gpio 16 GPIO_ACTIVE_LOW>;
|
|
};
|
|
};
|
|
diff --git a/arch/arm/boot/dts/bcm2835-rpi-cm1.dtsi b/arch/arm/boot/dts/bcm2835-rpi-cm1.dtsi
|
|
index 58059c2ce1294..e4e6b6abbfc13 100644
|
|
--- a/arch/arm/boot/dts/bcm2835-rpi-cm1.dtsi
|
|
+++ b/arch/arm/boot/dts/bcm2835-rpi-cm1.dtsi
|
|
@@ -5,7 +5,7 @@
|
|
|
|
/ {
|
|
leds {
|
|
- act {
|
|
+ led-act {
|
|
gpios = <&gpio 47 GPIO_ACTIVE_LOW>;
|
|
};
|
|
};
|
|
diff --git a/arch/arm/boot/dts/bcm2835-rpi-zero-w.dts b/arch/arm/boot/dts/bcm2835-rpi-zero-w.dts
|
|
index f65448c01e317..33b2b77aa47db 100644
|
|
--- a/arch/arm/boot/dts/bcm2835-rpi-zero-w.dts
|
|
+++ b/arch/arm/boot/dts/bcm2835-rpi-zero-w.dts
|
|
@@ -23,7 +23,7 @@
|
|
};
|
|
|
|
leds {
|
|
- act {
|
|
+ led-act {
|
|
gpios = <&gpio 47 GPIO_ACTIVE_LOW>;
|
|
};
|
|
};
|
|
diff --git a/arch/arm/boot/dts/bcm2835-rpi-zero.dts b/arch/arm/boot/dts/bcm2835-rpi-zero.dts
|
|
index 6dd93c6f49666..6f9b3a908f287 100644
|
|
--- a/arch/arm/boot/dts/bcm2835-rpi-zero.dts
|
|
+++ b/arch/arm/boot/dts/bcm2835-rpi-zero.dts
|
|
@@ -18,7 +18,7 @@
|
|
};
|
|
|
|
leds {
|
|
- act {
|
|
+ led-act {
|
|
gpios = <&gpio 47 GPIO_ACTIVE_HIGH>;
|
|
};
|
|
};
|
|
diff --git a/arch/arm/boot/dts/bcm2835-rpi.dtsi b/arch/arm/boot/dts/bcm2835-rpi.dtsi
|
|
index d94357b21f7e9..87ddcad760834 100644
|
|
--- a/arch/arm/boot/dts/bcm2835-rpi.dtsi
|
|
+++ b/arch/arm/boot/dts/bcm2835-rpi.dtsi
|
|
@@ -4,7 +4,7 @@
|
|
leds {
|
|
compatible = "gpio-leds";
|
|
|
|
- act {
|
|
+ led-act {
|
|
label = "ACT";
|
|
default-state = "keep";
|
|
linux,default-trigger = "heartbeat";
|
|
diff --git a/arch/arm/boot/dts/bcm2836-rpi-2-b.dts b/arch/arm/boot/dts/bcm2836-rpi-2-b.dts
|
|
index 0455a680394a2..d8af8eeac7b6f 100644
|
|
--- a/arch/arm/boot/dts/bcm2836-rpi-2-b.dts
|
|
+++ b/arch/arm/boot/dts/bcm2836-rpi-2-b.dts
|
|
@@ -15,11 +15,11 @@
|
|
};
|
|
|
|
leds {
|
|
- act {
|
|
+ led-act {
|
|
gpios = <&gpio 47 GPIO_ACTIVE_HIGH>;
|
|
};
|
|
|
|
- pwr {
|
|
+ led-pwr {
|
|
label = "PWR";
|
|
gpios = <&gpio 35 GPIO_ACTIVE_HIGH>;
|
|
default-state = "keep";
|
|
diff --git a/arch/arm/boot/dts/bcm2837-rpi-3-a-plus.dts b/arch/arm/boot/dts/bcm2837-rpi-3-a-plus.dts
|
|
index 28be0332c1c81..77099a7871b03 100644
|
|
--- a/arch/arm/boot/dts/bcm2837-rpi-3-a-plus.dts
|
|
+++ b/arch/arm/boot/dts/bcm2837-rpi-3-a-plus.dts
|
|
@@ -19,11 +19,11 @@
|
|
};
|
|
|
|
leds {
|
|
- act {
|
|
+ led-act {
|
|
gpios = <&gpio 29 GPIO_ACTIVE_HIGH>;
|
|
};
|
|
|
|
- pwr {
|
|
+ led-pwr {
|
|
label = "PWR";
|
|
gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
|
|
default-state = "keep";
|
|
diff --git a/arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts b/arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts
|
|
index 37343148643db..61010266ca9a3 100644
|
|
--- a/arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts
|
|
+++ b/arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts
|
|
@@ -20,11 +20,11 @@
|
|
};
|
|
|
|
leds {
|
|
- act {
|
|
+ led-act {
|
|
gpios = <&gpio 29 GPIO_ACTIVE_HIGH>;
|
|
};
|
|
|
|
- pwr {
|
|
+ led-pwr {
|
|
label = "PWR";
|
|
gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
|
|
default-state = "keep";
|
|
diff --git a/arch/arm/boot/dts/bcm2837-rpi-3-b.dts b/arch/arm/boot/dts/bcm2837-rpi-3-b.dts
|
|
index 054ecaa355c9a..dd4a486040971 100644
|
|
--- a/arch/arm/boot/dts/bcm2837-rpi-3-b.dts
|
|
+++ b/arch/arm/boot/dts/bcm2837-rpi-3-b.dts
|
|
@@ -20,7 +20,7 @@
|
|
};
|
|
|
|
leds {
|
|
- act {
|
|
+ led-act {
|
|
gpios = <&expgpio 2 GPIO_ACTIVE_HIGH>;
|
|
};
|
|
};
|
|
diff --git a/arch/arm/boot/dts/bcm2837-rpi-cm3.dtsi b/arch/arm/boot/dts/bcm2837-rpi-cm3.dtsi
|
|
index 925cb37c22f06..828a20561b969 100644
|
|
--- a/arch/arm/boot/dts/bcm2837-rpi-cm3.dtsi
|
|
+++ b/arch/arm/boot/dts/bcm2837-rpi-cm3.dtsi
|
|
@@ -14,7 +14,7 @@
|
|
* Since there is no upstream GPIO driver yet,
|
|
* remove the incomplete node.
|
|
*/
|
|
- /delete-node/ act;
|
|
+ /delete-node/ led-act;
|
|
};
|
|
|
|
reg_3v3: fixed-regulator {
|
|
diff --git a/arch/arm/boot/dts/bcm283x.dtsi b/arch/arm/boot/dts/bcm283x.dtsi
|
|
index b83a864e2e8ba..0f3be55201a5b 100644
|
|
--- a/arch/arm/boot/dts/bcm283x.dtsi
|
|
+++ b/arch/arm/boot/dts/bcm283x.dtsi
|
|
@@ -420,7 +420,7 @@
|
|
status = "disabled";
|
|
};
|
|
|
|
- sdhci: sdhci@7e300000 {
|
|
+ sdhci: mmc@7e300000 {
|
|
compatible = "brcm,bcm2835-sdhci";
|
|
reg = <0x7e300000 0x100>;
|
|
interrupts = <2 30>;
|
|
diff --git a/arch/arm/boot/dts/bcm63138.dtsi b/arch/arm/boot/dts/bcm63138.dtsi
|
|
index 9c0325cf9e22e..cca49a2e2d623 100644
|
|
--- a/arch/arm/boot/dts/bcm63138.dtsi
|
|
+++ b/arch/arm/boot/dts/bcm63138.dtsi
|
|
@@ -203,7 +203,7 @@
|
|
status = "disabled";
|
|
};
|
|
|
|
- nand: nand@2000 {
|
|
+ nand_controller: nand-controller@2000 {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
compatible = "brcm,nand-bcm63138", "brcm,brcmnand-v7.0", "brcm,brcmnand";
|
|
diff --git a/arch/arm/boot/dts/bcm7445-bcm97445svmb.dts b/arch/arm/boot/dts/bcm7445-bcm97445svmb.dts
|
|
index 8313b7cad5427..f92d2cf859726 100644
|
|
--- a/arch/arm/boot/dts/bcm7445-bcm97445svmb.dts
|
|
+++ b/arch/arm/boot/dts/bcm7445-bcm97445svmb.dts
|
|
@@ -14,10 +14,10 @@
|
|
};
|
|
};
|
|
|
|
-&nand {
|
|
+&nand_controller {
|
|
status = "okay";
|
|
|
|
- nandcs@1 {
|
|
+ nand@1 {
|
|
compatible = "brcm,nandcs";
|
|
reg = <1>;
|
|
nand-ecc-step-size = <512>;
|
|
diff --git a/arch/arm/boot/dts/bcm7445.dtsi b/arch/arm/boot/dts/bcm7445.dtsi
|
|
index 58f67c9b830b8..5ac2042515b8f 100644
|
|
--- a/arch/arm/boot/dts/bcm7445.dtsi
|
|
+++ b/arch/arm/boot/dts/bcm7445.dtsi
|
|
@@ -148,7 +148,7 @@
|
|
reg-names = "aon-ctrl", "aon-sram";
|
|
};
|
|
|
|
- nand: nand@3e2800 {
|
|
+ nand_controller: nand-controller@3e2800 {
|
|
status = "disabled";
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
diff --git a/arch/arm/boot/dts/bcm911360_entphn.dts b/arch/arm/boot/dts/bcm911360_entphn.dts
|
|
index b2d323f4a5aba..a76c74b44bbaf 100644
|
|
--- a/arch/arm/boot/dts/bcm911360_entphn.dts
|
|
+++ b/arch/arm/boot/dts/bcm911360_entphn.dts
|
|
@@ -82,8 +82,8 @@
|
|
status = "okay";
|
|
};
|
|
|
|
-&nand {
|
|
- nandcs@1 {
|
|
+&nand_controller {
|
|
+ nand@1 {
|
|
compatible = "brcm,nandcs";
|
|
reg = <0>;
|
|
nand-on-flash-bbt;
|
|
diff --git a/arch/arm/boot/dts/bcm958300k.dts b/arch/arm/boot/dts/bcm958300k.dts
|
|
index b4a1392bd5a6c..dda3e11b711f6 100644
|
|
--- a/arch/arm/boot/dts/bcm958300k.dts
|
|
+++ b/arch/arm/boot/dts/bcm958300k.dts
|
|
@@ -60,8 +60,8 @@
|
|
status = "okay";
|
|
};
|
|
|
|
-&nand {
|
|
- nandcs@1 {
|
|
+&nand_controller {
|
|
+ nand@1 {
|
|
compatible = "brcm,nandcs";
|
|
reg = <0>;
|
|
nand-on-flash-bbt;
|
|
diff --git a/arch/arm/boot/dts/bcm958305k.dts b/arch/arm/boot/dts/bcm958305k.dts
|
|
index 3378683321d3c..ea3c6b88b313b 100644
|
|
--- a/arch/arm/boot/dts/bcm958305k.dts
|
|
+++ b/arch/arm/boot/dts/bcm958305k.dts
|
|
@@ -68,8 +68,8 @@
|
|
status = "okay";
|
|
};
|
|
|
|
-&nand {
|
|
- nandcs@1 {
|
|
+&nand_controller {
|
|
+ nand@1 {
|
|
compatible = "brcm,nandcs";
|
|
reg = <0>;
|
|
nand-on-flash-bbt;
|
|
diff --git a/arch/arm/boot/dts/bcm958522er.dts b/arch/arm/boot/dts/bcm958522er.dts
|
|
index 7be4c4e628e02..5dd1001255c64 100644
|
|
--- a/arch/arm/boot/dts/bcm958522er.dts
|
|
+++ b/arch/arm/boot/dts/bcm958522er.dts
|
|
@@ -74,8 +74,8 @@
|
|
status = "okay";
|
|
};
|
|
|
|
-&nand {
|
|
- nandcs@0 {
|
|
+&nand_controller {
|
|
+ nand@0 {
|
|
compatible = "brcm,nandcs";
|
|
reg = <0>;
|
|
nand-on-flash-bbt;
|
|
diff --git a/arch/arm/boot/dts/bcm958525er.dts b/arch/arm/boot/dts/bcm958525er.dts
|
|
index e58ed7e953460..0e624c57b5854 100644
|
|
--- a/arch/arm/boot/dts/bcm958525er.dts
|
|
+++ b/arch/arm/boot/dts/bcm958525er.dts
|
|
@@ -74,8 +74,8 @@
|
|
status = "okay";
|
|
};
|
|
|
|
-&nand {
|
|
- nandcs@0 {
|
|
+&nand_controller {
|
|
+ nand@0 {
|
|
compatible = "brcm,nandcs";
|
|
reg = <0>;
|
|
nand-on-flash-bbt;
|
|
diff --git a/arch/arm/boot/dts/bcm958525xmc.dts b/arch/arm/boot/dts/bcm958525xmc.dts
|
|
index 21f922dc60196..2ac6d61ad297e 100644
|
|
--- a/arch/arm/boot/dts/bcm958525xmc.dts
|
|
+++ b/arch/arm/boot/dts/bcm958525xmc.dts
|
|
@@ -90,8 +90,8 @@
|
|
};
|
|
};
|
|
|
|
-&nand {
|
|
- nandcs@0 {
|
|
+&nand_controller {
|
|
+ nand@0 {
|
|
compatible = "brcm,nandcs";
|
|
reg = <0>;
|
|
nand-on-flash-bbt;
|
|
diff --git a/arch/arm/boot/dts/bcm958622hr.dts b/arch/arm/boot/dts/bcm958622hr.dts
|
|
index a49c2fd21f4a8..e072fa83537a1 100644
|
|
--- a/arch/arm/boot/dts/bcm958622hr.dts
|
|
+++ b/arch/arm/boot/dts/bcm958622hr.dts
|
|
@@ -78,8 +78,8 @@
|
|
status = "okay";
|
|
};
|
|
|
|
-&nand {
|
|
- nandcs@0 {
|
|
+&nand_controller {
|
|
+ nand@0 {
|
|
compatible = "brcm,nandcs";
|
|
reg = <0>;
|
|
nand-on-flash-bbt;
|
|
diff --git a/arch/arm/boot/dts/bcm958623hr.dts b/arch/arm/boot/dts/bcm958623hr.dts
|
|
index dd6dff6452b87..835f4765efbc1 100644
|
|
--- a/arch/arm/boot/dts/bcm958623hr.dts
|
|
+++ b/arch/arm/boot/dts/bcm958623hr.dts
|
|
@@ -78,8 +78,8 @@
|
|
status = "okay";
|
|
};
|
|
|
|
-&nand {
|
|
- nandcs@0 {
|
|
+&nand_controller {
|
|
+ nand@0 {
|
|
compatible = "brcm,nandcs";
|
|
reg = <0>;
|
|
nand-on-flash-bbt;
|
|
diff --git a/arch/arm/boot/dts/bcm958625hr.dts b/arch/arm/boot/dts/bcm958625hr.dts
|
|
index a71371b4065ed..57974b8fab86f 100644
|
|
--- a/arch/arm/boot/dts/bcm958625hr.dts
|
|
+++ b/arch/arm/boot/dts/bcm958625hr.dts
|
|
@@ -89,8 +89,8 @@
|
|
status = "okay";
|
|
};
|
|
|
|
-&nand {
|
|
- nandcs@0 {
|
|
+&nand_controller {
|
|
+ nand@0 {
|
|
compatible = "brcm,nandcs";
|
|
reg = <0>;
|
|
nand-on-flash-bbt;
|
|
diff --git a/arch/arm/boot/dts/bcm958625k.dts b/arch/arm/boot/dts/bcm958625k.dts
|
|
index 7782b61c51a16..45a043ea77ce5 100644
|
|
--- a/arch/arm/boot/dts/bcm958625k.dts
|
|
+++ b/arch/arm/boot/dts/bcm958625k.dts
|
|
@@ -68,8 +68,8 @@
|
|
status = "okay";
|
|
};
|
|
|
|
-&nand {
|
|
- nandcs@0 {
|
|
+&nand_controller {
|
|
+ nand@0 {
|
|
compatible = "brcm,nandcs";
|
|
reg = <0>;
|
|
nand-on-flash-bbt;
|
|
diff --git a/arch/arm/boot/dts/bcm963138dvt.dts b/arch/arm/boot/dts/bcm963138dvt.dts
|
|
index 5b177274f1826..df5c8ab906273 100644
|
|
--- a/arch/arm/boot/dts/bcm963138dvt.dts
|
|
+++ b/arch/arm/boot/dts/bcm963138dvt.dts
|
|
@@ -31,10 +31,10 @@
|
|
status = "okay";
|
|
};
|
|
|
|
-&nand {
|
|
+&nand_controller {
|
|
status = "okay";
|
|
|
|
- nandcs@0 {
|
|
+ nand@0 {
|
|
compatible = "brcm,nandcs";
|
|
reg = <0>;
|
|
nand-ecc-strength = <4>;
|
|
diff --git a/arch/arm/boot/dts/bcm988312hr.dts b/arch/arm/boot/dts/bcm988312hr.dts
|
|
index edd0f630e0251..16b212cc8a2a0 100644
|
|
--- a/arch/arm/boot/dts/bcm988312hr.dts
|
|
+++ b/arch/arm/boot/dts/bcm988312hr.dts
|
|
@@ -74,8 +74,8 @@
|
|
status = "okay";
|
|
};
|
|
|
|
-&nand {
|
|
- nandcs@0 {
|
|
+&nand_controller {
|
|
+ nand@0 {
|
|
compatible = "brcm,nandcs";
|
|
reg = <0>;
|
|
nand-on-flash-bbt;
|
|
diff --git a/arch/arm/boot/dts/dm816x.dtsi b/arch/arm/boot/dts/dm816x.dtsi
|
|
index 3551a64963f8d..1825d912b8ab4 100644
|
|
--- a/arch/arm/boot/dts/dm816x.dtsi
|
|
+++ b/arch/arm/boot/dts/dm816x.dtsi
|
|
@@ -351,7 +351,7 @@
|
|
#mbox-cells = <1>;
|
|
ti,mbox-num-users = <4>;
|
|
ti,mbox-num-fifos = <12>;
|
|
- mbox_dsp: mbox_dsp {
|
|
+ mbox_dsp: mbox-dsp {
|
|
ti,mbox-tx = <3 0 0>;
|
|
ti,mbox-rx = <0 0 0>;
|
|
};
|
|
diff --git a/arch/arm/boot/dts/dra7-ipu-dsp-common.dtsi b/arch/arm/boot/dts/dra7-ipu-dsp-common.dtsi
|
|
index a25749a1c3659..a5bdc6431d8d0 100644
|
|
--- a/arch/arm/boot/dts/dra7-ipu-dsp-common.dtsi
|
|
+++ b/arch/arm/boot/dts/dra7-ipu-dsp-common.dtsi
|
|
@@ -5,17 +5,17 @@
|
|
|
|
&mailbox5 {
|
|
status = "okay";
|
|
- mbox_ipu1_ipc3x: mbox_ipu1_ipc3x {
|
|
+ mbox_ipu1_ipc3x: mbox-ipu1-ipc3x {
|
|
status = "okay";
|
|
};
|
|
- mbox_dsp1_ipc3x: mbox_dsp1_ipc3x {
|
|
+ mbox_dsp1_ipc3x: mbox-dsp1-ipc3x {
|
|
status = "okay";
|
|
};
|
|
};
|
|
|
|
&mailbox6 {
|
|
status = "okay";
|
|
- mbox_ipu2_ipc3x: mbox_ipu2_ipc3x {
|
|
+ mbox_ipu2_ipc3x: mbox-ipu2-ipc3x {
|
|
status = "okay";
|
|
};
|
|
};
|
|
diff --git a/arch/arm/boot/dts/dra7-l4.dtsi b/arch/arm/boot/dts/dra7-l4.dtsi
|
|
index 1dafce92fc767..30b72f4318501 100644
|
|
--- a/arch/arm/boot/dts/dra7-l4.dtsi
|
|
+++ b/arch/arm/boot/dts/dra7-l4.dtsi
|
|
@@ -1315,7 +1315,7 @@
|
|
};
|
|
};
|
|
|
|
- target-module@55000 { /* 0x48055000, ap 13 0e.0 */
|
|
+ gpio2_target: target-module@55000 { /* 0x48055000, ap 13 0e.0 */
|
|
compatible = "ti,sysc-omap2", "ti,sysc";
|
|
reg = <0x55000 0x4>,
|
|
<0x55010 0x4>,
|
|
@@ -1348,7 +1348,7 @@
|
|
};
|
|
};
|
|
|
|
- target-module@57000 { /* 0x48057000, ap 15 06.0 */
|
|
+ gpio3_target: target-module@57000 { /* 0x48057000, ap 15 06.0 */
|
|
compatible = "ti,sysc-omap2", "ti,sysc";
|
|
reg = <0x57000 0x4>,
|
|
<0x57010 0x4>,
|
|
diff --git a/arch/arm/boot/dts/dra72x.dtsi b/arch/arm/boot/dts/dra72x.dtsi
|
|
index f3e934ef7d3e2..90617261373cf 100644
|
|
--- a/arch/arm/boot/dts/dra72x.dtsi
|
|
+++ b/arch/arm/boot/dts/dra72x.dtsi
|
|
@@ -77,12 +77,12 @@
|
|
};
|
|
|
|
&mailbox5 {
|
|
- mbox_ipu1_ipc3x: mbox_ipu1_ipc3x {
|
|
+ mbox_ipu1_ipc3x: mbox-ipu1-ipc3x {
|
|
ti,mbox-tx = <6 2 2>;
|
|
ti,mbox-rx = <4 2 2>;
|
|
status = "disabled";
|
|
};
|
|
- mbox_dsp1_ipc3x: mbox_dsp1_ipc3x {
|
|
+ mbox_dsp1_ipc3x: mbox-dsp1-ipc3x {
|
|
ti,mbox-tx = <5 2 2>;
|
|
ti,mbox-rx = <1 2 2>;
|
|
status = "disabled";
|
|
@@ -90,7 +90,7 @@
|
|
};
|
|
|
|
&mailbox6 {
|
|
- mbox_ipu2_ipc3x: mbox_ipu2_ipc3x {
|
|
+ mbox_ipu2_ipc3x: mbox-ipu2-ipc3x {
|
|
ti,mbox-tx = <6 2 2>;
|
|
ti,mbox-rx = <4 2 2>;
|
|
status = "disabled";
|
|
diff --git a/arch/arm/boot/dts/dra74-ipu-dsp-common.dtsi b/arch/arm/boot/dts/dra74-ipu-dsp-common.dtsi
|
|
index b1147a4b77f9d..3256631510c56 100644
|
|
--- a/arch/arm/boot/dts/dra74-ipu-dsp-common.dtsi
|
|
+++ b/arch/arm/boot/dts/dra74-ipu-dsp-common.dtsi
|
|
@@ -6,7 +6,7 @@
|
|
#include "dra7-ipu-dsp-common.dtsi"
|
|
|
|
&mailbox6 {
|
|
- mbox_dsp2_ipc3x: mbox_dsp2_ipc3x {
|
|
+ mbox_dsp2_ipc3x: mbox-dsp2-ipc3x {
|
|
status = "okay";
|
|
};
|
|
};
|
|
diff --git a/arch/arm/boot/dts/dra74x.dtsi b/arch/arm/boot/dts/dra74x.dtsi
|
|
index b4e07d99ffde1..cfb39dde49300 100644
|
|
--- a/arch/arm/boot/dts/dra74x.dtsi
|
|
+++ b/arch/arm/boot/dts/dra74x.dtsi
|
|
@@ -145,12 +145,12 @@
|
|
};
|
|
|
|
&mailbox5 {
|
|
- mbox_ipu1_ipc3x: mbox_ipu1_ipc3x {
|
|
+ mbox_ipu1_ipc3x: mbox-ipu1-ipc3x {
|
|
ti,mbox-tx = <6 2 2>;
|
|
ti,mbox-rx = <4 2 2>;
|
|
status = "disabled";
|
|
};
|
|
- mbox_dsp1_ipc3x: mbox_dsp1_ipc3x {
|
|
+ mbox_dsp1_ipc3x: mbox-dsp1-ipc3x {
|
|
ti,mbox-tx = <5 2 2>;
|
|
ti,mbox-rx = <1 2 2>;
|
|
status = "disabled";
|
|
@@ -158,12 +158,12 @@
|
|
};
|
|
|
|
&mailbox6 {
|
|
- mbox_ipu2_ipc3x: mbox_ipu2_ipc3x {
|
|
+ mbox_ipu2_ipc3x: mbox-ipu2-ipc3x {
|
|
ti,mbox-tx = <6 2 2>;
|
|
ti,mbox-rx = <4 2 2>;
|
|
status = "disabled";
|
|
};
|
|
- mbox_dsp2_ipc3x: mbox_dsp2_ipc3x {
|
|
+ mbox_dsp2_ipc3x: mbox-dsp2-ipc3x {
|
|
ti,mbox-tx = <5 2 2>;
|
|
ti,mbox-rx = <1 2 2>;
|
|
status = "disabled";
|
|
diff --git a/arch/arm/boot/dts/gemini-dlink-dns-313.dts b/arch/arm/boot/dts/gemini-dlink-dns-313.dts
|
|
index c6f3d90e3e90c..b8acc6eaaa6d7 100644
|
|
--- a/arch/arm/boot/dts/gemini-dlink-dns-313.dts
|
|
+++ b/arch/arm/boot/dts/gemini-dlink-dns-313.dts
|
|
@@ -140,7 +140,7 @@
|
|
};
|
|
};
|
|
|
|
- mdio0: ethernet-phy {
|
|
+ mdio0: mdio {
|
|
compatible = "virtual,mdio-gpio";
|
|
/* Uses MDC and MDIO */
|
|
gpios = <&gpio0 22 GPIO_ACTIVE_HIGH>, /* MDC */
|
|
diff --git a/arch/arm/boot/dts/gemini-nas4220b.dts b/arch/arm/boot/dts/gemini-nas4220b.dts
|
|
index 43c45f7e1e0a3..13112a8a5dd88 100644
|
|
--- a/arch/arm/boot/dts/gemini-nas4220b.dts
|
|
+++ b/arch/arm/boot/dts/gemini-nas4220b.dts
|
|
@@ -62,7 +62,7 @@
|
|
};
|
|
};
|
|
|
|
- mdio0: ethernet-phy {
|
|
+ mdio0: mdio {
|
|
compatible = "virtual,mdio-gpio";
|
|
gpios = <&gpio0 22 GPIO_ACTIVE_HIGH>, /* MDC */
|
|
<&gpio0 21 GPIO_ACTIVE_HIGH>; /* MDIO */
|
|
diff --git a/arch/arm/boot/dts/gemini-rut1xx.dts b/arch/arm/boot/dts/gemini-rut1xx.dts
|
|
index 08091d2a64e15..0ebda4efd9d0f 100644
|
|
--- a/arch/arm/boot/dts/gemini-rut1xx.dts
|
|
+++ b/arch/arm/boot/dts/gemini-rut1xx.dts
|
|
@@ -56,7 +56,7 @@
|
|
};
|
|
};
|
|
|
|
- mdio0: ethernet-phy {
|
|
+ mdio0: mdio {
|
|
compatible = "virtual,mdio-gpio";
|
|
gpios = <&gpio0 22 GPIO_ACTIVE_HIGH>, /* MDC */
|
|
<&gpio0 21 GPIO_ACTIVE_HIGH>; /* MDIO */
|
|
diff --git a/arch/arm/boot/dts/gemini-wbd111.dts b/arch/arm/boot/dts/gemini-wbd111.dts
|
|
index 3a2761dd460f9..5602ba8f30f2f 100644
|
|
--- a/arch/arm/boot/dts/gemini-wbd111.dts
|
|
+++ b/arch/arm/boot/dts/gemini-wbd111.dts
|
|
@@ -68,7 +68,7 @@
|
|
};
|
|
};
|
|
|
|
- mdio0: ethernet-phy {
|
|
+ mdio0: mdio {
|
|
compatible = "virtual,mdio-gpio";
|
|
gpios = <&gpio0 22 GPIO_ACTIVE_HIGH>, /* MDC */
|
|
<&gpio0 21 GPIO_ACTIVE_HIGH>; /* MDIO */
|
|
diff --git a/arch/arm/boot/dts/gemini-wbd222.dts b/arch/arm/boot/dts/gemini-wbd222.dts
|
|
index 52b4dbc0c0723..a4a260c36d752 100644
|
|
--- a/arch/arm/boot/dts/gemini-wbd222.dts
|
|
+++ b/arch/arm/boot/dts/gemini-wbd222.dts
|
|
@@ -67,7 +67,7 @@
|
|
};
|
|
};
|
|
|
|
- mdio0: ethernet-phy {
|
|
+ mdio0: mdio {
|
|
compatible = "virtual,mdio-gpio";
|
|
gpios = <&gpio0 22 GPIO_ACTIVE_HIGH>, /* MDC */
|
|
<&gpio0 21 GPIO_ACTIVE_HIGH>; /* MDIO */
|
|
diff --git a/arch/arm/boot/dts/gemini.dtsi b/arch/arm/boot/dts/gemini.dtsi
|
|
index 065ed10a79fa7..07448c03dac9e 100644
|
|
--- a/arch/arm/boot/dts/gemini.dtsi
|
|
+++ b/arch/arm/boot/dts/gemini.dtsi
|
|
@@ -286,6 +286,7 @@
|
|
clock-names = "PCLK", "PCICLK";
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&pci_default_pins>;
|
|
+ device_type = "pci";
|
|
#address-cells = <3>;
|
|
#size-cells = <2>;
|
|
#interrupt-cells = <1>;
|
|
diff --git a/arch/arm/boot/dts/imx6dl-riotboard.dts b/arch/arm/boot/dts/imx6dl-riotboard.dts
|
|
index 065d3ab0f50a7..e7d9bfbfd0e4d 100644
|
|
--- a/arch/arm/boot/dts/imx6dl-riotboard.dts
|
|
+++ b/arch/arm/boot/dts/imx6dl-riotboard.dts
|
|
@@ -106,6 +106,8 @@
|
|
reset-gpios = <&gpio3 31 GPIO_ACTIVE_LOW>;
|
|
reset-assert-us = <10000>;
|
|
reset-deassert-us = <1000>;
|
|
+ qca,smarteee-tw-us-1g = <24>;
|
|
+ qca,clk-out-frequency = <125000000>;
|
|
};
|
|
};
|
|
};
|
|
diff --git a/arch/arm/boot/dts/imx6qdl-phytec-pfla02.dtsi b/arch/arm/boot/dts/imx6qdl-phytec-pfla02.dtsi
|
|
index 5f84e9f2b5767..33a70f436aa3b 100644
|
|
--- a/arch/arm/boot/dts/imx6qdl-phytec-pfla02.dtsi
|
|
+++ b/arch/arm/boot/dts/imx6qdl-phytec-pfla02.dtsi
|
|
@@ -315,8 +315,8 @@
|
|
fsl,pins = <
|
|
MX6QDL_PAD_EIM_D24__UART3_TX_DATA 0x1b0b1
|
|
MX6QDL_PAD_EIM_D25__UART3_RX_DATA 0x1b0b1
|
|
- MX6QDL_PAD_EIM_D30__UART3_RTS_B 0x1b0b1
|
|
- MX6QDL_PAD_EIM_D31__UART3_CTS_B 0x1b0b1
|
|
+ MX6QDL_PAD_EIM_D31__UART3_RTS_B 0x1b0b1
|
|
+ MX6QDL_PAD_EIM_D30__UART3_CTS_B 0x1b0b1
|
|
>;
|
|
};
|
|
|
|
@@ -403,6 +403,7 @@
|
|
&uart3 {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&pinctrl_uart3>;
|
|
+ uart-has-rtscts;
|
|
status = "disabled";
|
|
};
|
|
|
|
diff --git a/arch/arm/boot/dts/omap4-l4.dtsi b/arch/arm/boot/dts/omap4-l4.dtsi
|
|
index de742bf84efb0..5015df4d876c2 100644
|
|
--- a/arch/arm/boot/dts/omap4-l4.dtsi
|
|
+++ b/arch/arm/boot/dts/omap4-l4.dtsi
|
|
@@ -597,11 +597,11 @@
|
|
#mbox-cells = <1>;
|
|
ti,mbox-num-users = <3>;
|
|
ti,mbox-num-fifos = <8>;
|
|
- mbox_ipu: mbox_ipu {
|
|
+ mbox_ipu: mbox-ipu {
|
|
ti,mbox-tx = <0 0 0>;
|
|
ti,mbox-rx = <1 0 0>;
|
|
};
|
|
- mbox_dsp: mbox_dsp {
|
|
+ mbox_dsp: mbox-dsp {
|
|
ti,mbox-tx = <3 0 0>;
|
|
ti,mbox-rx = <2 0 0>;
|
|
};
|
|
diff --git a/arch/arm/boot/dts/omap5-l4.dtsi b/arch/arm/boot/dts/omap5-l4.dtsi
|
|
index f3d3a16b7c64e..c67c8698cc30d 100644
|
|
--- a/arch/arm/boot/dts/omap5-l4.dtsi
|
|
+++ b/arch/arm/boot/dts/omap5-l4.dtsi
|
|
@@ -613,11 +613,11 @@
|
|
#mbox-cells = <1>;
|
|
ti,mbox-num-users = <3>;
|
|
ti,mbox-num-fifos = <8>;
|
|
- mbox_ipu: mbox_ipu {
|
|
+ mbox_ipu: mbox-ipu {
|
|
ti,mbox-tx = <0 0 0>;
|
|
ti,mbox-rx = <1 0 0>;
|
|
};
|
|
- mbox_dsp: mbox_dsp {
|
|
+ mbox_dsp: mbox-dsp {
|
|
ti,mbox-tx = <3 0 0>;
|
|
ti,mbox-rx = <2 0 0>;
|
|
};
|
|
diff --git a/arch/arm/boot/dts/rk3036-kylin.dts b/arch/arm/boot/dts/rk3036-kylin.dts
|
|
index 7154b827ea2f0..e817eba8c622b 100644
|
|
--- a/arch/arm/boot/dts/rk3036-kylin.dts
|
|
+++ b/arch/arm/boot/dts/rk3036-kylin.dts
|
|
@@ -390,7 +390,7 @@
|
|
};
|
|
};
|
|
|
|
- sleep {
|
|
+ suspend {
|
|
global_pwroff: global-pwroff {
|
|
rockchip,pins = <2 RK_PA7 1 &pcfg_pull_none>;
|
|
};
|
|
diff --git a/arch/arm/boot/dts/rk3066a.dtsi b/arch/arm/boot/dts/rk3066a.dtsi
|
|
index 252750c97f97f..bbc3bff508560 100644
|
|
--- a/arch/arm/boot/dts/rk3066a.dtsi
|
|
+++ b/arch/arm/boot/dts/rk3066a.dtsi
|
|
@@ -755,7 +755,7 @@
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
- pd_vio@RK3066_PD_VIO {
|
|
+ power-domain@RK3066_PD_VIO {
|
|
reg = <RK3066_PD_VIO>;
|
|
clocks = <&cru ACLK_LCDC0>,
|
|
<&cru ACLK_LCDC1>,
|
|
@@ -782,7 +782,7 @@
|
|
<&qos_rga>;
|
|
};
|
|
|
|
- pd_video@RK3066_PD_VIDEO {
|
|
+ power-domain@RK3066_PD_VIDEO {
|
|
reg = <RK3066_PD_VIDEO>;
|
|
clocks = <&cru ACLK_VDPU>,
|
|
<&cru ACLK_VEPU>,
|
|
@@ -791,7 +791,7 @@
|
|
pm_qos = <&qos_vpu>;
|
|
};
|
|
|
|
- pd_gpu@RK3066_PD_GPU {
|
|
+ power-domain@RK3066_PD_GPU {
|
|
reg = <RK3066_PD_GPU>;
|
|
clocks = <&cru ACLK_GPU>;
|
|
pm_qos = <&qos_gpu>;
|
|
diff --git a/arch/arm/boot/dts/rk3188.dtsi b/arch/arm/boot/dts/rk3188.dtsi
|
|
index 2298a8d840ba3..b6bde9d12c2be 100644
|
|
--- a/arch/arm/boot/dts/rk3188.dtsi
|
|
+++ b/arch/arm/boot/dts/rk3188.dtsi
|
|
@@ -150,16 +150,16 @@
|
|
compatible = "rockchip,rk3188-timer", "rockchip,rk3288-timer";
|
|
reg = <0x2000e000 0x20>;
|
|
interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
|
|
- clocks = <&cru SCLK_TIMER3>, <&cru PCLK_TIMER3>;
|
|
- clock-names = "timer", "pclk";
|
|
+ clocks = <&cru PCLK_TIMER3>, <&cru SCLK_TIMER3>;
|
|
+ clock-names = "pclk", "timer";
|
|
};
|
|
|
|
timer6: timer@200380a0 {
|
|
compatible = "rockchip,rk3188-timer", "rockchip,rk3288-timer";
|
|
reg = <0x200380a0 0x20>;
|
|
interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
|
|
- clocks = <&cru SCLK_TIMER6>, <&cru PCLK_TIMER0>;
|
|
- clock-names = "timer", "pclk";
|
|
+ clocks = <&cru PCLK_TIMER0>, <&cru SCLK_TIMER6>;
|
|
+ clock-names = "pclk", "timer";
|
|
};
|
|
|
|
i2s0: i2s@1011a000 {
|
|
@@ -699,7 +699,7 @@
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
- pd_vio@RK3188_PD_VIO {
|
|
+ power-domain@RK3188_PD_VIO {
|
|
reg = <RK3188_PD_VIO>;
|
|
clocks = <&cru ACLK_LCDC0>,
|
|
<&cru ACLK_LCDC1>,
|
|
@@ -721,7 +721,7 @@
|
|
<&qos_rga>;
|
|
};
|
|
|
|
- pd_video@RK3188_PD_VIDEO {
|
|
+ power-domain@RK3188_PD_VIDEO {
|
|
reg = <RK3188_PD_VIDEO>;
|
|
clocks = <&cru ACLK_VDPU>,
|
|
<&cru ACLK_VEPU>,
|
|
@@ -730,7 +730,7 @@
|
|
pm_qos = <&qos_vpu>;
|
|
};
|
|
|
|
- pd_gpu@RK3188_PD_GPU {
|
|
+ power-domain@RK3188_PD_GPU {
|
|
reg = <RK3188_PD_GPU>;
|
|
clocks = <&cru ACLK_GPU>;
|
|
pm_qos = <&qos_gpu>;
|
|
diff --git a/arch/arm/boot/dts/rk322x.dtsi b/arch/arm/boot/dts/rk322x.dtsi
|
|
index 48e6e8d44a1a5..7de8b006ca13a 100644
|
|
--- a/arch/arm/boot/dts/rk322x.dtsi
|
|
+++ b/arch/arm/boot/dts/rk322x.dtsi
|
|
@@ -524,7 +524,7 @@
|
|
pinctrl-0 = <&otp_pin>;
|
|
pinctrl-1 = <&otp_out>;
|
|
pinctrl-2 = <&otp_pin>;
|
|
- #thermal-sensor-cells = <0>;
|
|
+ #thermal-sensor-cells = <1>;
|
|
rockchip,hw-tshut-temp = <95000>;
|
|
status = "disabled";
|
|
};
|
|
@@ -565,10 +565,9 @@
|
|
compatible = "rockchip,iommu";
|
|
reg = <0x20020800 0x100>;
|
|
interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
|
|
- interrupt-names = "vpu_mmu";
|
|
clocks = <&cru ACLK_VPU>, <&cru HCLK_VPU>;
|
|
clock-names = "aclk", "iface";
|
|
- iommu-cells = <0>;
|
|
+ #iommu-cells = <0>;
|
|
status = "disabled";
|
|
};
|
|
|
|
@@ -576,10 +575,9 @@
|
|
compatible = "rockchip,iommu";
|
|
reg = <0x20030480 0x40>, <0x200304c0 0x40>;
|
|
interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
|
|
- interrupt-names = "vdec_mmu";
|
|
clocks = <&cru ACLK_RKVDEC>, <&cru HCLK_RKVDEC>;
|
|
clock-names = "aclk", "iface";
|
|
- iommu-cells = <0>;
|
|
+ #iommu-cells = <0>;
|
|
status = "disabled";
|
|
};
|
|
|
|
@@ -609,7 +607,6 @@
|
|
compatible = "rockchip,iommu";
|
|
reg = <0x20053f00 0x100>;
|
|
interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
|
|
- interrupt-names = "vop_mmu";
|
|
clocks = <&cru ACLK_VOP>, <&cru HCLK_VOP>;
|
|
clock-names = "aclk", "iface";
|
|
#iommu-cells = <0>;
|
|
@@ -630,10 +627,9 @@
|
|
compatible = "rockchip,iommu";
|
|
reg = <0x20070800 0x100>;
|
|
interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
|
|
- interrupt-names = "iep_mmu";
|
|
clocks = <&cru ACLK_IEP>, <&cru HCLK_IEP>;
|
|
clock-names = "aclk", "iface";
|
|
- iommu-cells = <0>;
|
|
+ #iommu-cells = <0>;
|
|
status = "disabled";
|
|
};
|
|
|
|
diff --git a/arch/arm/boot/dts/rk3288-rock2-som.dtsi b/arch/arm/boot/dts/rk3288-rock2-som.dtsi
|
|
index 44bb5e6f83b12..76363b8afcb9b 100644
|
|
--- a/arch/arm/boot/dts/rk3288-rock2-som.dtsi
|
|
+++ b/arch/arm/boot/dts/rk3288-rock2-som.dtsi
|
|
@@ -218,7 +218,7 @@
|
|
flash0-supply = <&vcc_flash>;
|
|
flash1-supply = <&vccio_pmu>;
|
|
gpio30-supply = <&vccio_pmu>;
|
|
- gpio1830 = <&vcc_io>;
|
|
+ gpio1830-supply = <&vcc_io>;
|
|
lcdc-supply = <&vcc_io>;
|
|
sdcard-supply = <&vccio_sd>;
|
|
wifi-supply = <&vcc_18>;
|
|
diff --git a/arch/arm/boot/dts/rk3288-vyasa.dts b/arch/arm/boot/dts/rk3288-vyasa.dts
|
|
index aa50f8ed4ca0a..b156a83eb7d78 100644
|
|
--- a/arch/arm/boot/dts/rk3288-vyasa.dts
|
|
+++ b/arch/arm/boot/dts/rk3288-vyasa.dts
|
|
@@ -379,10 +379,10 @@
|
|
audio-supply = <&vcc_18>;
|
|
bb-supply = <&vcc_io>;
|
|
dvp-supply = <&vcc_io>;
|
|
- flash0-suuply = <&vcc_18>;
|
|
+ flash0-supply = <&vcc_18>;
|
|
flash1-supply = <&vcc_lan>;
|
|
gpio30-supply = <&vcc_io>;
|
|
- gpio1830 = <&vcc_io>;
|
|
+ gpio1830-supply = <&vcc_io>;
|
|
lcdc-supply = <&vcc_io>;
|
|
sdcard-supply = <&vccio_sd>;
|
|
wifi-supply = <&vcc_18>;
|
|
diff --git a/arch/arm/boot/dts/rk3288.dtsi b/arch/arm/boot/dts/rk3288.dtsi
|
|
index 68d5a58cfe889..0d89ad274268b 100644
|
|
--- a/arch/arm/boot/dts/rk3288.dtsi
|
|
+++ b/arch/arm/boot/dts/rk3288.dtsi
|
|
@@ -240,8 +240,8 @@
|
|
compatible = "rockchip,rk3288-timer";
|
|
reg = <0x0 0xff810000 0x0 0x20>;
|
|
interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
|
|
- clocks = <&xin24m>, <&cru PCLK_TIMER>;
|
|
- clock-names = "timer", "pclk";
|
|
+ clocks = <&cru PCLK_TIMER>, <&xin24m>;
|
|
+ clock-names = "pclk", "timer";
|
|
};
|
|
|
|
display-subsystem {
|
|
@@ -788,7 +788,7 @@
|
|
* *_HDMI HDMI
|
|
* *_MIPI_* MIPI
|
|
*/
|
|
- pd_vio@RK3288_PD_VIO {
|
|
+ power-domain@RK3288_PD_VIO {
|
|
reg = <RK3288_PD_VIO>;
|
|
clocks = <&cru ACLK_IEP>,
|
|
<&cru ACLK_ISP>,
|
|
@@ -830,7 +830,7 @@
|
|
* Note: The following 3 are HEVC(H.265) clocks,
|
|
* and on the ACLK_HEVC_NIU (NOC).
|
|
*/
|
|
- pd_hevc@RK3288_PD_HEVC {
|
|
+ power-domain@RK3288_PD_HEVC {
|
|
reg = <RK3288_PD_HEVC>;
|
|
clocks = <&cru ACLK_HEVC>,
|
|
<&cru SCLK_HEVC_CABAC>,
|
|
@@ -844,7 +844,7 @@
|
|
* (video endecoder & decoder) clocks that on the
|
|
* ACLK_VCODEC_NIU and HCLK_VCODEC_NIU (NOC).
|
|
*/
|
|
- pd_video@RK3288_PD_VIDEO {
|
|
+ power-domain@RK3288_PD_VIDEO {
|
|
reg = <RK3288_PD_VIDEO>;
|
|
clocks = <&cru ACLK_VCODEC>,
|
|
<&cru HCLK_VCODEC>;
|
|
@@ -855,7 +855,7 @@
|
|
* Note: ACLK_GPU is the GPU clock,
|
|
* and on the ACLK_GPU_NIU (NOC).
|
|
*/
|
|
- pd_gpu@RK3288_PD_GPU {
|
|
+ power-domain@RK3288_PD_GPU {
|
|
reg = <RK3288_PD_GPU>;
|
|
clocks = <&cru ACLK_GPU>;
|
|
pm_qos = <&qos_gpu_r>,
|
|
@@ -1593,7 +1593,7 @@
|
|
drive-strength = <12>;
|
|
};
|
|
|
|
- sleep {
|
|
+ suspend {
|
|
global_pwroff: global-pwroff {
|
|
rockchip,pins = <0 RK_PA0 1 &pcfg_pull_none>;
|
|
};
|
|
diff --git a/arch/arm/boot/dts/ste-ab8500.dtsi b/arch/arm/boot/dts/ste-ab8500.dtsi
|
|
index aab5719cc1a93..16d50369226af 100644
|
|
--- a/arch/arm/boot/dts/ste-ab8500.dtsi
|
|
+++ b/arch/arm/boot/dts/ste-ab8500.dtsi
|
|
@@ -34,7 +34,7 @@
|
|
#clock-cells = <1>;
|
|
};
|
|
|
|
- ab8500_gpio: ab8500-gpio {
|
|
+ ab8500_gpio: ab8500-gpiocontroller {
|
|
compatible = "stericsson,ab8500-gpio";
|
|
gpio-controller;
|
|
#gpio-cells = <2>;
|
|
@@ -42,15 +42,15 @@
|
|
|
|
ab8500-rtc {
|
|
compatible = "stericsson,ab8500-rtc";
|
|
- interrupts = <17 IRQ_TYPE_LEVEL_HIGH
|
|
- 18 IRQ_TYPE_LEVEL_HIGH>;
|
|
+ interrupts = <17 IRQ_TYPE_LEVEL_HIGH>,
|
|
+ <18 IRQ_TYPE_LEVEL_HIGH>;
|
|
interrupt-names = "60S", "ALARM";
|
|
};
|
|
|
|
gpadc: ab8500-gpadc {
|
|
compatible = "stericsson,ab8500-gpadc";
|
|
- interrupts = <32 IRQ_TYPE_LEVEL_HIGH
|
|
- 39 IRQ_TYPE_LEVEL_HIGH>;
|
|
+ interrupts = <32 IRQ_TYPE_LEVEL_HIGH>,
|
|
+ <39 IRQ_TYPE_LEVEL_HIGH>;
|
|
interrupt-names = "HW_CONV_END", "SW_CONV_END";
|
|
vddadc-supply = <&ab8500_ldo_tvout_reg>;
|
|
#address-cells = <1>;
|
|
@@ -169,13 +169,13 @@
|
|
|
|
ab8500_usb {
|
|
compatible = "stericsson,ab8500-usb";
|
|
- interrupts = < 90 IRQ_TYPE_LEVEL_HIGH
|
|
- 96 IRQ_TYPE_LEVEL_HIGH
|
|
- 14 IRQ_TYPE_LEVEL_HIGH
|
|
- 15 IRQ_TYPE_LEVEL_HIGH
|
|
- 79 IRQ_TYPE_LEVEL_HIGH
|
|
- 74 IRQ_TYPE_LEVEL_HIGH
|
|
- 75 IRQ_TYPE_LEVEL_HIGH>;
|
|
+ interrupts = <90 IRQ_TYPE_LEVEL_HIGH>,
|
|
+ <96 IRQ_TYPE_LEVEL_HIGH>,
|
|
+ <14 IRQ_TYPE_LEVEL_HIGH>,
|
|
+ <15 IRQ_TYPE_LEVEL_HIGH>,
|
|
+ <79 IRQ_TYPE_LEVEL_HIGH>,
|
|
+ <74 IRQ_TYPE_LEVEL_HIGH>,
|
|
+ <75 IRQ_TYPE_LEVEL_HIGH>;
|
|
interrupt-names = "ID_WAKEUP_R",
|
|
"ID_WAKEUP_F",
|
|
"VBUS_DET_F",
|
|
@@ -192,8 +192,8 @@
|
|
|
|
ab8500-ponkey {
|
|
compatible = "stericsson,ab8500-poweron-key";
|
|
- interrupts = <6 IRQ_TYPE_LEVEL_HIGH
|
|
- 7 IRQ_TYPE_LEVEL_HIGH>;
|
|
+ interrupts = <6 IRQ_TYPE_LEVEL_HIGH>,
|
|
+ <7 IRQ_TYPE_LEVEL_HIGH>;
|
|
interrupt-names = "ONKEY_DBF", "ONKEY_DBR";
|
|
};
|
|
|
|
diff --git a/arch/arm/boot/dts/ste-ab8505.dtsi b/arch/arm/boot/dts/ste-ab8505.dtsi
|
|
index 67bc69e67b330..8d2cda0b4d622 100644
|
|
--- a/arch/arm/boot/dts/ste-ab8505.dtsi
|
|
+++ b/arch/arm/boot/dts/ste-ab8505.dtsi
|
|
@@ -30,7 +30,7 @@
|
|
#clock-cells = <1>;
|
|
};
|
|
|
|
- ab8505_gpio: ab8505-gpio {
|
|
+ ab8505_gpio: ab8505-gpiocontroller {
|
|
compatible = "stericsson,ab8505-gpio";
|
|
gpio-controller;
|
|
#gpio-cells = <2>;
|
|
@@ -38,8 +38,8 @@
|
|
|
|
ab8500-rtc {
|
|
compatible = "stericsson,ab8500-rtc";
|
|
- interrupts = <17 IRQ_TYPE_LEVEL_HIGH
|
|
- 18 IRQ_TYPE_LEVEL_HIGH>;
|
|
+ interrupts = <17 IRQ_TYPE_LEVEL_HIGH>,
|
|
+ <18 IRQ_TYPE_LEVEL_HIGH>;
|
|
interrupt-names = "60S", "ALARM";
|
|
};
|
|
|
|
@@ -131,13 +131,13 @@
|
|
|
|
ab8500_usb: ab8500_usb {
|
|
compatible = "stericsson,ab8500-usb";
|
|
- interrupts = < 90 IRQ_TYPE_LEVEL_HIGH
|
|
- 96 IRQ_TYPE_LEVEL_HIGH
|
|
- 14 IRQ_TYPE_LEVEL_HIGH
|
|
- 15 IRQ_TYPE_LEVEL_HIGH
|
|
- 79 IRQ_TYPE_LEVEL_HIGH
|
|
- 74 IRQ_TYPE_LEVEL_HIGH
|
|
- 75 IRQ_TYPE_LEVEL_HIGH>;
|
|
+ interrupts = <90 IRQ_TYPE_LEVEL_HIGH>,
|
|
+ <96 IRQ_TYPE_LEVEL_HIGH>,
|
|
+ <14 IRQ_TYPE_LEVEL_HIGH>,
|
|
+ <15 IRQ_TYPE_LEVEL_HIGH>,
|
|
+ <79 IRQ_TYPE_LEVEL_HIGH>,
|
|
+ <74 IRQ_TYPE_LEVEL_HIGH>,
|
|
+ <75 IRQ_TYPE_LEVEL_HIGH>;
|
|
interrupt-names = "ID_WAKEUP_R",
|
|
"ID_WAKEUP_F",
|
|
"VBUS_DET_F",
|
|
@@ -154,8 +154,8 @@
|
|
|
|
ab8500-ponkey {
|
|
compatible = "stericsson,ab8500-poweron-key";
|
|
- interrupts = <6 IRQ_TYPE_LEVEL_HIGH
|
|
- 7 IRQ_TYPE_LEVEL_HIGH>;
|
|
+ interrupts = <6 IRQ_TYPE_LEVEL_HIGH>,
|
|
+ <7 IRQ_TYPE_LEVEL_HIGH>;
|
|
interrupt-names = "ONKEY_DBF", "ONKEY_DBR";
|
|
};
|
|
|
|
diff --git a/arch/arm/boot/dts/ste-href-ab8500.dtsi b/arch/arm/boot/dts/ste-href-ab8500.dtsi
|
|
index 4946743de7b9b..3ccb7b5c71625 100644
|
|
--- a/arch/arm/boot/dts/ste-href-ab8500.dtsi
|
|
+++ b/arch/arm/boot/dts/ste-href-ab8500.dtsi
|
|
@@ -9,7 +9,7 @@
|
|
soc {
|
|
prcmu@80157000 {
|
|
ab8500 {
|
|
- ab8500-gpio {
|
|
+ ab8500-gpiocontroller {
|
|
/* Hog a few default settings */
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&gpio2_default_mode>,
|
|
diff --git a/arch/arm/boot/dts/ste-href-tvk1281618-r3.dtsi b/arch/arm/boot/dts/ste-href-tvk1281618-r3.dtsi
|
|
index c0de1337bdaad..457bddabc32c2 100644
|
|
--- a/arch/arm/boot/dts/ste-href-tvk1281618-r3.dtsi
|
|
+++ b/arch/arm/boot/dts/ste-href-tvk1281618-r3.dtsi
|
|
@@ -19,6 +19,9 @@
|
|
<19 IRQ_TYPE_EDGE_RISING>;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&accel_tvk_mode>;
|
|
+ mount-matrix = "0", "-1", "0",
|
|
+ "-1", "0", "0",
|
|
+ "0", "0", "-1";
|
|
};
|
|
magnetometer@1e {
|
|
compatible = "st,lsm303dlm-magn";
|
|
diff --git a/arch/arm/boot/dts/ste-href.dtsi b/arch/arm/boot/dts/ste-href.dtsi
|
|
index 359c1219b0bab..3586b5d7876a4 100644
|
|
--- a/arch/arm/boot/dts/ste-href.dtsi
|
|
+++ b/arch/arm/boot/dts/ste-href.dtsi
|
|
@@ -224,7 +224,7 @@
|
|
|
|
prcmu@80157000 {
|
|
ab8500 {
|
|
- ab8500-gpio {
|
|
+ ab8500-gpiocontroller {
|
|
};
|
|
|
|
ab8500_usb {
|
|
diff --git a/arch/arm/boot/dts/ste-snowball.dts b/arch/arm/boot/dts/ste-snowball.dts
|
|
index 27d8a07718a00..f6e0d71f6c09f 100644
|
|
--- a/arch/arm/boot/dts/ste-snowball.dts
|
|
+++ b/arch/arm/boot/dts/ste-snowball.dts
|
|
@@ -376,7 +376,7 @@
|
|
|
|
prcmu@80157000 {
|
|
ab8500 {
|
|
- ab8500-gpio {
|
|
+ ab8500-gpiocontroller {
|
|
/*
|
|
* AB8500 GPIOs are numbered starting from 1, so the first
|
|
* index 0 is what in the datasheet is called "GPIO1", and
|
|
diff --git a/arch/arm/boot/dts/stm32429i-eval.dts b/arch/arm/boot/dts/stm32429i-eval.dts
|
|
index 67e7648de41ef..8b0ead46ef9be 100644
|
|
--- a/arch/arm/boot/dts/stm32429i-eval.dts
|
|
+++ b/arch/arm/boot/dts/stm32429i-eval.dts
|
|
@@ -119,17 +119,15 @@
|
|
};
|
|
};
|
|
|
|
- gpio_keys {
|
|
+ gpio-keys {
|
|
compatible = "gpio-keys";
|
|
- #address-cells = <1>;
|
|
- #size-cells = <0>;
|
|
autorepeat;
|
|
- button@0 {
|
|
+ button-0 {
|
|
label = "Wake up";
|
|
linux,code = <KEY_WAKEUP>;
|
|
gpios = <&gpioa 0 0>;
|
|
};
|
|
- button@1 {
|
|
+ button-1 {
|
|
label = "Tamper";
|
|
linux,code = <KEY_RESTART>;
|
|
gpios = <&gpioc 13 0>;
|
|
diff --git a/arch/arm/boot/dts/stm32746g-eval.dts b/arch/arm/boot/dts/stm32746g-eval.dts
|
|
index ca8c192449ee9..327613fd9666c 100644
|
|
--- a/arch/arm/boot/dts/stm32746g-eval.dts
|
|
+++ b/arch/arm/boot/dts/stm32746g-eval.dts
|
|
@@ -81,12 +81,10 @@
|
|
};
|
|
};
|
|
|
|
- gpio_keys {
|
|
+ gpio-keys {
|
|
compatible = "gpio-keys";
|
|
- #address-cells = <1>;
|
|
- #size-cells = <0>;
|
|
autorepeat;
|
|
- button@0 {
|
|
+ button-0 {
|
|
label = "Wake up";
|
|
linux,code = <KEY_WAKEUP>;
|
|
gpios = <&gpioc 13 0>;
|
|
diff --git a/arch/arm/boot/dts/stm32f429-disco.dts b/arch/arm/boot/dts/stm32f429-disco.dts
|
|
index 3dc068b91ca15..075ac57d0bf4a 100644
|
|
--- a/arch/arm/boot/dts/stm32f429-disco.dts
|
|
+++ b/arch/arm/boot/dts/stm32f429-disco.dts
|
|
@@ -81,12 +81,10 @@
|
|
};
|
|
};
|
|
|
|
- gpio_keys {
|
|
+ gpio-keys {
|
|
compatible = "gpio-keys";
|
|
- #address-cells = <1>;
|
|
- #size-cells = <0>;
|
|
autorepeat;
|
|
- button@0 {
|
|
+ button-0 {
|
|
label = "User";
|
|
linux,code = <KEY_HOME>;
|
|
gpios = <&gpioa 0 0>;
|
|
diff --git a/arch/arm/boot/dts/stm32f429.dtsi b/arch/arm/boot/dts/stm32f429.dtsi
|
|
index ad715a0e1c9a9..0dc5fa94dbdf8 100644
|
|
--- a/arch/arm/boot/dts/stm32f429.dtsi
|
|
+++ b/arch/arm/boot/dts/stm32f429.dtsi
|
|
@@ -283,8 +283,6 @@
|
|
};
|
|
|
|
timers13: timers@40001c00 {
|
|
- #address-cells = <1>;
|
|
- #size-cells = <0>;
|
|
compatible = "st,stm32-timers";
|
|
reg = <0x40001C00 0x400>;
|
|
clocks = <&rcc 0 STM32F4_APB1_CLOCK(TIM13)>;
|
|
@@ -299,8 +297,6 @@
|
|
};
|
|
|
|
timers14: timers@40002000 {
|
|
- #address-cells = <1>;
|
|
- #size-cells = <0>;
|
|
compatible = "st,stm32-timers";
|
|
reg = <0x40002000 0x400>;
|
|
clocks = <&rcc 0 STM32F4_APB1_CLOCK(TIM14)>;
|
|
@@ -633,8 +629,6 @@
|
|
};
|
|
|
|
timers10: timers@40014400 {
|
|
- #address-cells = <1>;
|
|
- #size-cells = <0>;
|
|
compatible = "st,stm32-timers";
|
|
reg = <0x40014400 0x400>;
|
|
clocks = <&rcc 0 STM32F4_APB2_CLOCK(TIM10)>;
|
|
@@ -649,8 +643,6 @@
|
|
};
|
|
|
|
timers11: timers@40014800 {
|
|
- #address-cells = <1>;
|
|
- #size-cells = <0>;
|
|
compatible = "st,stm32-timers";
|
|
reg = <0x40014800 0x400>;
|
|
clocks = <&rcc 0 STM32F4_APB2_CLOCK(TIM11)>;
|
|
@@ -709,7 +701,7 @@
|
|
status = "disabled";
|
|
};
|
|
|
|
- rcc: rcc@40023810 {
|
|
+ rcc: rcc@40023800 {
|
|
#reset-cells = <1>;
|
|
#clock-cells = <2>;
|
|
compatible = "st,stm32f42xx-rcc", "st,stm32-rcc";
|
|
diff --git a/arch/arm/boot/dts/stm32f469-disco.dts b/arch/arm/boot/dts/stm32f469-disco.dts
|
|
index 2e1b3bbbe4b5b..8c982ae79f432 100644
|
|
--- a/arch/arm/boot/dts/stm32f469-disco.dts
|
|
+++ b/arch/arm/boot/dts/stm32f469-disco.dts
|
|
@@ -104,12 +104,10 @@
|
|
};
|
|
};
|
|
|
|
- gpio_keys {
|
|
+ gpio-keys {
|
|
compatible = "gpio-keys";
|
|
- #address-cells = <1>;
|
|
- #size-cells = <0>;
|
|
autorepeat;
|
|
- button@0 {
|
|
+ button-0 {
|
|
label = "User";
|
|
linux,code = <KEY_WAKEUP>;
|
|
gpios = <&gpioa 0 GPIO_ACTIVE_HIGH>;
|
|
diff --git a/arch/arm/boot/dts/stm32f746.dtsi b/arch/arm/boot/dts/stm32f746.dtsi
|
|
index 640ff54ed00ca..d49e481b3aa62 100644
|
|
--- a/arch/arm/boot/dts/stm32f746.dtsi
|
|
+++ b/arch/arm/boot/dts/stm32f746.dtsi
|
|
@@ -265,8 +265,6 @@
|
|
};
|
|
|
|
timers13: timers@40001c00 {
|
|
- #address-cells = <1>;
|
|
- #size-cells = <0>;
|
|
compatible = "st,stm32-timers";
|
|
reg = <0x40001C00 0x400>;
|
|
clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM13)>;
|
|
@@ -281,8 +279,6 @@
|
|
};
|
|
|
|
timers14: timers@40002000 {
|
|
- #address-cells = <1>;
|
|
- #size-cells = <0>;
|
|
compatible = "st,stm32-timers";
|
|
reg = <0x40002000 0x400>;
|
|
clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM14)>;
|
|
@@ -364,9 +360,9 @@
|
|
status = "disabled";
|
|
};
|
|
|
|
- i2c3: i2c@40005C00 {
|
|
+ i2c3: i2c@40005c00 {
|
|
compatible = "st,stm32f7-i2c";
|
|
- reg = <0x40005C00 0x400>;
|
|
+ reg = <0x40005c00 0x400>;
|
|
interrupts = <72>,
|
|
<73>;
|
|
resets = <&rcc STM32F7_APB1_RESET(I2C3)>;
|
|
@@ -531,8 +527,6 @@
|
|
};
|
|
|
|
timers10: timers@40014400 {
|
|
- #address-cells = <1>;
|
|
- #size-cells = <0>;
|
|
compatible = "st,stm32-timers";
|
|
reg = <0x40014400 0x400>;
|
|
clocks = <&rcc 0 STM32F7_APB2_CLOCK(TIM10)>;
|
|
@@ -547,8 +541,6 @@
|
|
};
|
|
|
|
timers11: timers@40014800 {
|
|
- #address-cells = <1>;
|
|
- #size-cells = <0>;
|
|
compatible = "st,stm32-timers";
|
|
reg = <0x40014800 0x400>;
|
|
clocks = <&rcc 0 STM32F7_APB2_CLOCK(TIM11)>;
|
|
diff --git a/arch/arm/boot/dts/stm32f769-disco.dts b/arch/arm/boot/dts/stm32f769-disco.dts
|
|
index 0ce7fbc20fa4d..be943b7019806 100644
|
|
--- a/arch/arm/boot/dts/stm32f769-disco.dts
|
|
+++ b/arch/arm/boot/dts/stm32f769-disco.dts
|
|
@@ -75,12 +75,10 @@
|
|
};
|
|
};
|
|
|
|
- gpio_keys {
|
|
+ gpio-keys {
|
|
compatible = "gpio-keys";
|
|
- #address-cells = <1>;
|
|
- #size-cells = <0>;
|
|
autorepeat;
|
|
- button@0 {
|
|
+ button-0 {
|
|
label = "User";
|
|
linux,code = <KEY_HOME>;
|
|
gpios = <&gpioa 0 GPIO_ACTIVE_HIGH>;
|
|
diff --git a/arch/arm/boot/dts/stm32h743.dtsi b/arch/arm/boot/dts/stm32h743.dtsi
|
|
index 7febe19e780d2..1579707ea566d 100644
|
|
--- a/arch/arm/boot/dts/stm32h743.dtsi
|
|
+++ b/arch/arm/boot/dts/stm32h743.dtsi
|
|
@@ -454,8 +454,6 @@
|
|
};
|
|
|
|
lptimer4: timer@58002c00 {
|
|
- #address-cells = <1>;
|
|
- #size-cells = <0>;
|
|
compatible = "st,stm32-lptimer";
|
|
reg = <0x58002c00 0x400>;
|
|
clocks = <&rcc LPTIM4_CK>;
|
|
@@ -470,8 +468,6 @@
|
|
};
|
|
|
|
lptimer5: timer@58003000 {
|
|
- #address-cells = <1>;
|
|
- #size-cells = <0>;
|
|
compatible = "st,stm32-lptimer";
|
|
reg = <0x58003000 0x400>;
|
|
clocks = <&rcc LPTIM5_CK>;
|
|
diff --git a/arch/arm/boot/dts/stm32mp151.dtsi b/arch/arm/boot/dts/stm32mp151.dtsi
|
|
index 84757901cd8df..b479016fef008 100644
|
|
--- a/arch/arm/boot/dts/stm32mp151.dtsi
|
|
+++ b/arch/arm/boot/dts/stm32mp151.dtsi
|
|
@@ -1395,12 +1395,6 @@
|
|
status = "disabled";
|
|
};
|
|
|
|
- stmmac_axi_config_0: stmmac-axi-config {
|
|
- snps,wr_osr_lmt = <0x7>;
|
|
- snps,rd_osr_lmt = <0x7>;
|
|
- snps,blen = <0 0 0 0 16 8 4>;
|
|
- };
|
|
-
|
|
ethernet0: ethernet@5800a000 {
|
|
compatible = "st,stm32mp1-dwmac", "snps,dwmac-4.20a";
|
|
reg = <0x5800a000 0x2000>;
|
|
@@ -1424,6 +1418,12 @@
|
|
snps,axi-config = <&stmmac_axi_config_0>;
|
|
snps,tso;
|
|
status = "disabled";
|
|
+
|
|
+ stmmac_axi_config_0: stmmac-axi-config {
|
|
+ snps,wr_osr_lmt = <0x7>;
|
|
+ snps,rd_osr_lmt = <0x7>;
|
|
+ snps,blen = <0 0 0 0 16 8 4>;
|
|
+ };
|
|
};
|
|
|
|
usbh_ohci: usbh-ohci@5800c000 {
|
|
diff --git a/arch/arm/boot/dts/stm32mp157a-stinger96.dtsi b/arch/arm/boot/dts/stm32mp157a-stinger96.dtsi
|
|
index 58275bcf9e26e..4dd138d691c7c 100644
|
|
--- a/arch/arm/boot/dts/stm32mp157a-stinger96.dtsi
|
|
+++ b/arch/arm/boot/dts/stm32mp157a-stinger96.dtsi
|
|
@@ -184,8 +184,6 @@
|
|
|
|
vdd_usb: ldo4 {
|
|
regulator-name = "vdd_usb";
|
|
- regulator-min-microvolt = <3300000>;
|
|
- regulator-max-microvolt = <3300000>;
|
|
interrupts = <IT_CURLIM_LDO4 0>;
|
|
};
|
|
|
|
@@ -208,7 +206,6 @@
|
|
vref_ddr: vref_ddr {
|
|
regulator-name = "vref_ddr";
|
|
regulator-always-on;
|
|
- regulator-over-current-protection;
|
|
};
|
|
|
|
bst_out: boost {
|
|
@@ -219,13 +216,13 @@
|
|
vbus_otg: pwr_sw1 {
|
|
regulator-name = "vbus_otg";
|
|
interrupts = <IT_OCP_OTG 0>;
|
|
- regulator-active-discharge;
|
|
+ regulator-active-discharge = <1>;
|
|
};
|
|
|
|
vbus_sw: pwr_sw2 {
|
|
regulator-name = "vbus_sw";
|
|
interrupts = <IT_OCP_SWOUT 0>;
|
|
- regulator-active-discharge;
|
|
+ regulator-active-discharge = <1>;
|
|
};
|
|
};
|
|
|
|
diff --git a/arch/arm/boot/dts/stm32mp157c-odyssey-som.dtsi b/arch/arm/boot/dts/stm32mp157c-odyssey-som.dtsi
|
|
index 6cf49a0a9e694..2d9461006810c 100644
|
|
--- a/arch/arm/boot/dts/stm32mp157c-odyssey-som.dtsi
|
|
+++ b/arch/arm/boot/dts/stm32mp157c-odyssey-som.dtsi
|
|
@@ -173,8 +173,6 @@
|
|
|
|
vdd_usb: ldo4 {
|
|
regulator-name = "vdd_usb";
|
|
- regulator-min-microvolt = <3300000>;
|
|
- regulator-max-microvolt = <3300000>;
|
|
interrupts = <IT_CURLIM_LDO4 0>;
|
|
};
|
|
|
|
@@ -197,7 +195,6 @@
|
|
vref_ddr: vref_ddr {
|
|
regulator-name = "vref_ddr";
|
|
regulator-always-on;
|
|
- regulator-over-current-protection;
|
|
};
|
|
|
|
bst_out: boost {
|
|
@@ -213,7 +210,7 @@
|
|
vbus_sw: pwr_sw2 {
|
|
regulator-name = "vbus_sw";
|
|
interrupts = <IT_OCP_SWOUT 0>;
|
|
- regulator-active-discharge;
|
|
+ regulator-active-discharge = <1>;
|
|
};
|
|
};
|
|
|
|
@@ -269,7 +266,7 @@
|
|
st,neg-edge;
|
|
bus-width = <8>;
|
|
vmmc-supply = <&v3v3>;
|
|
- vqmmc-supply = <&v3v3>;
|
|
+ vqmmc-supply = <&vdd>;
|
|
mmc-ddr-3_3v;
|
|
status = "okay";
|
|
};
|
|
diff --git a/arch/arm/boot/dts/stm32mp157c-odyssey.dts b/arch/arm/boot/dts/stm32mp157c-odyssey.dts
|
|
index a7ffec8f15164..be1dd5e9e7443 100644
|
|
--- a/arch/arm/boot/dts/stm32mp157c-odyssey.dts
|
|
+++ b/arch/arm/boot/dts/stm32mp157c-odyssey.dts
|
|
@@ -64,7 +64,7 @@
|
|
pinctrl-0 = <&sdmmc1_b4_pins_a>;
|
|
pinctrl-1 = <&sdmmc1_b4_od_pins_a>;
|
|
pinctrl-2 = <&sdmmc1_b4_sleep_pins_a>;
|
|
- cd-gpios = <&gpiob 7 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
|
|
+ cd-gpios = <&gpioi 3 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
|
|
disable-wp;
|
|
st,neg-edge;
|
|
bus-width = <4>;
|
|
diff --git a/arch/arm/boot/dts/stm32mp15xx-dhcom-pdk2.dtsi b/arch/arm/boot/dts/stm32mp15xx-dhcom-pdk2.dtsi
|
|
index 8456f172d4b1b..59b3239bcd763 100644
|
|
--- a/arch/arm/boot/dts/stm32mp15xx-dhcom-pdk2.dtsi
|
|
+++ b/arch/arm/boot/dts/stm32mp15xx-dhcom-pdk2.dtsi
|
|
@@ -34,7 +34,6 @@
|
|
|
|
gpio-keys-polled {
|
|
compatible = "gpio-keys-polled";
|
|
- #size-cells = <0>;
|
|
poll-interval = <20>;
|
|
|
|
/*
|
|
@@ -60,7 +59,6 @@
|
|
|
|
gpio-keys {
|
|
compatible = "gpio-keys";
|
|
- #size-cells = <0>;
|
|
|
|
button-1 {
|
|
label = "TA2-GPIO-B";
|
|
@@ -184,12 +182,11 @@
|
|
|
|
};
|
|
|
|
- polytouch@38 {
|
|
- compatible = "edt,edt-ft5x06";
|
|
+ touchscreen@38 {
|
|
+ compatible = "edt,edt-ft5406";
|
|
reg = <0x38>;
|
|
interrupt-parent = <&gpiog>;
|
|
interrupts = <2 IRQ_TYPE_EDGE_FALLING>; /* GPIO E */
|
|
- linux,wakeup;
|
|
};
|
|
};
|
|
|
|
diff --git a/arch/arm/boot/dts/stm32mp15xx-dhcom-som.dtsi b/arch/arm/boot/dts/stm32mp15xx-dhcom-som.dtsi
|
|
index 27f19575fada6..8221bf69fefeb 100644
|
|
--- a/arch/arm/boot/dts/stm32mp15xx-dhcom-som.dtsi
|
|
+++ b/arch/arm/boot/dts/stm32mp15xx-dhcom-som.dtsi
|
|
@@ -234,8 +234,6 @@
|
|
|
|
vdd_usb: ldo4 {
|
|
regulator-name = "vdd_usb";
|
|
- regulator-min-microvolt = <3300000>;
|
|
- regulator-max-microvolt = <3300000>;
|
|
interrupts = <IT_CURLIM_LDO4 0>;
|
|
};
|
|
|
|
@@ -257,7 +255,6 @@
|
|
vref_ddr: vref_ddr {
|
|
regulator-name = "vref_ddr";
|
|
regulator-always-on;
|
|
- regulator-over-current-protection;
|
|
};
|
|
|
|
bst_out: boost {
|
|
@@ -273,7 +270,7 @@
|
|
vbus_sw: pwr_sw2 {
|
|
regulator-name = "vbus_sw";
|
|
interrupts = <IT_OCP_SWOUT 0>;
|
|
- regulator-active-discharge;
|
|
+ regulator-active-discharge = <1>;
|
|
};
|
|
};
|
|
|
|
@@ -338,7 +335,7 @@
|
|
#size-cells = <0>;
|
|
status = "okay";
|
|
|
|
- flash0: mx66l51235l@0 {
|
|
+ flash0: flash@0 {
|
|
compatible = "jedec,spi-nor";
|
|
reg = <0>;
|
|
spi-rx-bus-width = <4>;
|
|
diff --git a/arch/arm/boot/dts/stm32mp15xx-dhcor-som.dtsi b/arch/arm/boot/dts/stm32mp15xx-dhcor-som.dtsi
|
|
index 803eb8bc9c85c..a9eb82b2f1704 100644
|
|
--- a/arch/arm/boot/dts/stm32mp15xx-dhcor-som.dtsi
|
|
+++ b/arch/arm/boot/dts/stm32mp15xx-dhcor-som.dtsi
|
|
@@ -194,7 +194,7 @@
|
|
#size-cells = <0>;
|
|
status = "okay";
|
|
|
|
- flash0: spi-flash@0 {
|
|
+ flash0: flash@0 {
|
|
compatible = "jedec,spi-nor";
|
|
reg = <0>;
|
|
spi-rx-bus-width = <4>;
|
|
diff --git a/arch/arm/boot/dts/stm32mp15xx-osd32.dtsi b/arch/arm/boot/dts/stm32mp15xx-osd32.dtsi
|
|
index 713485a95795a..6706d8311a665 100644
|
|
--- a/arch/arm/boot/dts/stm32mp15xx-osd32.dtsi
|
|
+++ b/arch/arm/boot/dts/stm32mp15xx-osd32.dtsi
|
|
@@ -146,8 +146,6 @@
|
|
|
|
vdd_usb: ldo4 {
|
|
regulator-name = "vdd_usb";
|
|
- regulator-min-microvolt = <3300000>;
|
|
- regulator-max-microvolt = <3300000>;
|
|
interrupts = <IT_CURLIM_LDO4 0>;
|
|
};
|
|
|
|
@@ -171,7 +169,6 @@
|
|
vref_ddr: vref_ddr {
|
|
regulator-name = "vref_ddr";
|
|
regulator-always-on;
|
|
- regulator-over-current-protection;
|
|
};
|
|
|
|
bst_out: boost {
|
|
@@ -182,13 +179,13 @@
|
|
vbus_otg: pwr_sw1 {
|
|
regulator-name = "vbus_otg";
|
|
interrupts = <IT_OCP_OTG 0>;
|
|
- regulator-active-discharge;
|
|
+ regulator-active-discharge = <1>;
|
|
};
|
|
|
|
vbus_sw: pwr_sw2 {
|
|
regulator-name = "vbus_sw";
|
|
interrupts = <IT_OCP_SWOUT 0>;
|
|
- regulator-active-discharge;
|
|
+ regulator-active-discharge = <1>;
|
|
};
|
|
};
|
|
|
|
diff --git a/arch/arm/boot/dts/tegra20-acer-a500-picasso.dts b/arch/arm/boot/dts/tegra20-acer-a500-picasso.dts
|
|
index 068aabcffb13b..5d0f0fbba1d2e 100644
|
|
--- a/arch/arm/boot/dts/tegra20-acer-a500-picasso.dts
|
|
+++ b/arch/arm/boot/dts/tegra20-acer-a500-picasso.dts
|
|
@@ -1009,7 +1009,7 @@
|
|
nvidia,audio-codec = <&wm8903>;
|
|
|
|
nvidia,spkr-en-gpios = <&wm8903 2 GPIO_ACTIVE_HIGH>;
|
|
- nvidia,hp-det-gpios = <&gpio TEGRA_GPIO(W, 2) GPIO_ACTIVE_HIGH>;
|
|
+ nvidia,hp-det-gpios = <&gpio TEGRA_GPIO(W, 2) GPIO_ACTIVE_LOW>;
|
|
nvidia,int-mic-en-gpios = <&wm8903 1 GPIO_ACTIVE_HIGH>;
|
|
nvidia,headset;
|
|
|
|
diff --git a/arch/arm/boot/dts/tegra20-harmony.dts b/arch/arm/boot/dts/tegra20-harmony.dts
|
|
index 86494cb4d5a1d..ae4312eedcbd5 100644
|
|
--- a/arch/arm/boot/dts/tegra20-harmony.dts
|
|
+++ b/arch/arm/boot/dts/tegra20-harmony.dts
|
|
@@ -748,7 +748,7 @@
|
|
|
|
nvidia,spkr-en-gpios = <&wm8903 2 GPIO_ACTIVE_HIGH>;
|
|
nvidia,hp-det-gpios = <&gpio TEGRA_GPIO(W, 2)
|
|
- GPIO_ACTIVE_HIGH>;
|
|
+ GPIO_ACTIVE_LOW>;
|
|
nvidia,int-mic-en-gpios = <&gpio TEGRA_GPIO(X, 0)
|
|
GPIO_ACTIVE_HIGH>;
|
|
nvidia,ext-mic-en-gpios = <&gpio TEGRA_GPIO(X, 1)
|
|
diff --git a/arch/arm/boot/dts/tegra20-medcom-wide.dts b/arch/arm/boot/dts/tegra20-medcom-wide.dts
|
|
index a348ca30e522b..b31c9bca16e6a 100644
|
|
--- a/arch/arm/boot/dts/tegra20-medcom-wide.dts
|
|
+++ b/arch/arm/boot/dts/tegra20-medcom-wide.dts
|
|
@@ -84,7 +84,7 @@
|
|
nvidia,audio-codec = <&wm8903>;
|
|
|
|
nvidia,spkr-en-gpios = <&wm8903 2 GPIO_ACTIVE_HIGH>;
|
|
- nvidia,hp-det-gpios = <&gpio TEGRA_GPIO(W, 2) GPIO_ACTIVE_HIGH>;
|
|
+ nvidia,hp-det-gpios = <&gpio TEGRA_GPIO(W, 2) GPIO_ACTIVE_LOW>;
|
|
|
|
clocks = <&tegra_car TEGRA20_CLK_PLL_A>,
|
|
<&tegra_car TEGRA20_CLK_PLL_A_OUT0>,
|
|
diff --git a/arch/arm/boot/dts/tegra20-plutux.dts b/arch/arm/boot/dts/tegra20-plutux.dts
|
|
index 378f23b2958b1..5811b7006a9bf 100644
|
|
--- a/arch/arm/boot/dts/tegra20-plutux.dts
|
|
+++ b/arch/arm/boot/dts/tegra20-plutux.dts
|
|
@@ -52,7 +52,7 @@
|
|
nvidia,audio-codec = <&wm8903>;
|
|
|
|
nvidia,spkr-en-gpios = <&wm8903 2 GPIO_ACTIVE_HIGH>;
|
|
- nvidia,hp-det-gpios = <&gpio TEGRA_GPIO(W, 2) GPIO_ACTIVE_HIGH>;
|
|
+ nvidia,hp-det-gpios = <&gpio TEGRA_GPIO(W, 2) GPIO_ACTIVE_LOW>;
|
|
|
|
clocks = <&tegra_car TEGRA20_CLK_PLL_A>,
|
|
<&tegra_car TEGRA20_CLK_PLL_A_OUT0>,
|
|
diff --git a/arch/arm/boot/dts/tegra20-seaboard.dts b/arch/arm/boot/dts/tegra20-seaboard.dts
|
|
index c24d4a37613e9..92d494b8c3d25 100644
|
|
--- a/arch/arm/boot/dts/tegra20-seaboard.dts
|
|
+++ b/arch/arm/boot/dts/tegra20-seaboard.dts
|
|
@@ -911,7 +911,7 @@
|
|
nvidia,audio-codec = <&wm8903>;
|
|
|
|
nvidia,spkr-en-gpios = <&wm8903 2 GPIO_ACTIVE_HIGH>;
|
|
- nvidia,hp-det-gpios = <&gpio TEGRA_GPIO(X, 1) GPIO_ACTIVE_HIGH>;
|
|
+ nvidia,hp-det-gpios = <&gpio TEGRA_GPIO(X, 1) GPIO_ACTIVE_LOW>;
|
|
|
|
clocks = <&tegra_car TEGRA20_CLK_PLL_A>,
|
|
<&tegra_car TEGRA20_CLK_PLL_A_OUT0>,
|
|
diff --git a/arch/arm/boot/dts/tegra20-tec.dts b/arch/arm/boot/dts/tegra20-tec.dts
|
|
index 44ced60315de1..10ff09d86efa7 100644
|
|
--- a/arch/arm/boot/dts/tegra20-tec.dts
|
|
+++ b/arch/arm/boot/dts/tegra20-tec.dts
|
|
@@ -61,7 +61,7 @@
|
|
|
|
nvidia,spkr-en-gpios = <&wm8903 2 GPIO_ACTIVE_HIGH>;
|
|
nvidia,hp-det-gpios = <&gpio TEGRA_GPIO(W, 2)
|
|
- GPIO_ACTIVE_HIGH>;
|
|
+ GPIO_ACTIVE_LOW>;
|
|
|
|
clocks = <&tegra_car TEGRA20_CLK_PLL_A>,
|
|
<&tegra_car TEGRA20_CLK_PLL_A_OUT0>,
|
|
diff --git a/arch/arm/boot/dts/tegra20-ventana.dts b/arch/arm/boot/dts/tegra20-ventana.dts
|
|
index 055334ae3d288..fe400fb84f022 100644
|
|
--- a/arch/arm/boot/dts/tegra20-ventana.dts
|
|
+++ b/arch/arm/boot/dts/tegra20-ventana.dts
|
|
@@ -686,7 +686,7 @@
|
|
nvidia,audio-codec = <&wm8903>;
|
|
|
|
nvidia,spkr-en-gpios = <&wm8903 2 GPIO_ACTIVE_HIGH>;
|
|
- nvidia,hp-det-gpios = <&gpio TEGRA_GPIO(W, 2) GPIO_ACTIVE_HIGH>;
|
|
+ nvidia,hp-det-gpios = <&gpio TEGRA_GPIO(W, 2) GPIO_ACTIVE_LOW>;
|
|
nvidia,int-mic-en-gpios = <&gpio TEGRA_GPIO(X, 0)
|
|
GPIO_ACTIVE_HIGH>;
|
|
nvidia,ext-mic-en-gpios = <&gpio TEGRA_GPIO(X, 1)
|
|
diff --git a/arch/arm/boot/dts/tegra30-asus-nexus7-grouper-ti-pmic.dtsi b/arch/arm/boot/dts/tegra30-asus-nexus7-grouper-ti-pmic.dtsi
|
|
index bfc06b988781d..215e497652d8e 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
|
|
@@ -143,7 +143,7 @@
|
|
};
|
|
|
|
vdd_3v3_sys: regulator@1 {
|
|
- gpio = <&pmic 7 GPIO_ACTIVE_HIGH>;
|
|
+ gpio = <&pmic 6 GPIO_ACTIVE_HIGH>;
|
|
enable-active-high;
|
|
};
|
|
};
|
|
diff --git a/arch/arm/boot/dts/tegra30-cardhu.dtsi b/arch/arm/boot/dts/tegra30-cardhu.dtsi
|
|
index dab9989fa7605..57aead7d81627 100644
|
|
--- a/arch/arm/boot/dts/tegra30-cardhu.dtsi
|
|
+++ b/arch/arm/boot/dts/tegra30-cardhu.dtsi
|
|
@@ -589,7 +589,7 @@
|
|
|
|
nvidia,spkr-en-gpios = <&wm8903 2 GPIO_ACTIVE_HIGH>;
|
|
nvidia,hp-det-gpios = <&gpio TEGRA_GPIO(W, 2)
|
|
- GPIO_ACTIVE_HIGH>;
|
|
+ GPIO_ACTIVE_LOW>;
|
|
|
|
clocks = <&tegra_car TEGRA30_CLK_PLL_A>,
|
|
<&tegra_car TEGRA30_CLK_PLL_A_OUT0>,
|
|
diff --git a/arch/arm/mach-imx/suspend-imx53.S b/arch/arm/mach-imx/suspend-imx53.S
|
|
index 41b8aad653634..46570ec2fbcfe 100644
|
|
--- a/arch/arm/mach-imx/suspend-imx53.S
|
|
+++ b/arch/arm/mach-imx/suspend-imx53.S
|
|
@@ -28,11 +28,11 @@
|
|
* ^
|
|
* ^
|
|
* imx53_suspend code
|
|
- * PM_INFO structure(imx53_suspend_info)
|
|
+ * PM_INFO structure(imx5_cpu_suspend_info)
|
|
* ======================== low address =======================
|
|
*/
|
|
|
|
-/* Offsets of members of struct imx53_suspend_info */
|
|
+/* Offsets of members of struct imx5_cpu_suspend_info */
|
|
#define SUSPEND_INFO_MX53_M4IF_V_OFFSET 0x0
|
|
#define SUSPEND_INFO_MX53_IOMUXC_V_OFFSET 0x4
|
|
#define SUSPEND_INFO_MX53_IO_COUNT_OFFSET 0x8
|
|
diff --git a/arch/arm/mach-omap2/pm33xx-core.c b/arch/arm/mach-omap2/pm33xx-core.c
|
|
index 56f2c0bcae5a3..bf0d25fd2cea4 100644
|
|
--- a/arch/arm/mach-omap2/pm33xx-core.c
|
|
+++ b/arch/arm/mach-omap2/pm33xx-core.c
|
|
@@ -8,6 +8,7 @@
|
|
|
|
#include <linux/cpuidle.h>
|
|
#include <linux/platform_data/pm33xx.h>
|
|
+#include <linux/suspend.h>
|
|
#include <asm/cpuidle.h>
|
|
#include <asm/smp_scu.h>
|
|
#include <asm/suspend.h>
|
|
@@ -324,6 +325,44 @@ static struct am33xx_pm_platform_data *am33xx_pm_get_pdata(void)
|
|
return NULL;
|
|
}
|
|
|
|
+#ifdef CONFIG_SUSPEND
|
|
+/*
|
|
+ * Block system suspend initially. Later on pm33xx sets up it's own
|
|
+ * platform_suspend_ops after probe. That depends also on loaded
|
|
+ * wkup_m3_ipc and booted am335x-pm-firmware.elf.
|
|
+ */
|
|
+static int amx3_suspend_block(suspend_state_t state)
|
|
+{
|
|
+ pr_warn("PM not initialized for pm33xx, wkup_m3_ipc, or am335x-pm-firmware.elf\n");
|
|
+
|
|
+ return -EINVAL;
|
|
+}
|
|
+
|
|
+static int amx3_pm_valid(suspend_state_t state)
|
|
+{
|
|
+ switch (state) {
|
|
+ case PM_SUSPEND_STANDBY:
|
|
+ return 1;
|
|
+ default:
|
|
+ return 0;
|
|
+ }
|
|
+}
|
|
+
|
|
+static const struct platform_suspend_ops amx3_blocked_pm_ops = {
|
|
+ .begin = amx3_suspend_block,
|
|
+ .valid = amx3_pm_valid,
|
|
+};
|
|
+
|
|
+static void __init amx3_block_suspend(void)
|
|
+{
|
|
+ suspend_set_ops(&amx3_blocked_pm_ops);
|
|
+}
|
|
+#else
|
|
+static inline void amx3_block_suspend(void)
|
|
+{
|
|
+}
|
|
+#endif /* CONFIG_SUSPEND */
|
|
+
|
|
int __init amx3_common_pm_init(void)
|
|
{
|
|
struct am33xx_pm_platform_data *pdata;
|
|
@@ -337,6 +376,7 @@ int __init amx3_common_pm_init(void)
|
|
devinfo.size_data = sizeof(*pdata);
|
|
devinfo.id = -1;
|
|
platform_device_register_full(&devinfo);
|
|
+ amx3_block_suspend();
|
|
|
|
return 0;
|
|
}
|
|
diff --git a/arch/arm64/boot/dts/arm/juno-base.dtsi b/arch/arm64/boot/dts/arm/juno-base.dtsi
|
|
index f6c55877fbd94..2c0161125ece4 100644
|
|
--- a/arch/arm64/boot/dts/arm/juno-base.dtsi
|
|
+++ b/arch/arm64/boot/dts/arm/juno-base.dtsi
|
|
@@ -564,13 +564,13 @@
|
|
clocks {
|
|
compatible = "arm,scpi-clocks";
|
|
|
|
- scpi_dvfs: scpi-dvfs {
|
|
+ scpi_dvfs: clocks-0 {
|
|
compatible = "arm,scpi-dvfs-clocks";
|
|
#clock-cells = <1>;
|
|
clock-indices = <0>, <1>, <2>;
|
|
clock-output-names = "atlclk", "aplclk","gpuclk";
|
|
};
|
|
- scpi_clk: scpi-clk {
|
|
+ scpi_clk: clocks-1 {
|
|
compatible = "arm,scpi-variable-clocks";
|
|
#clock-cells = <1>;
|
|
clock-indices = <3>;
|
|
@@ -578,7 +578,7 @@
|
|
};
|
|
};
|
|
|
|
- scpi_devpd: scpi-power-domains {
|
|
+ scpi_devpd: power-controller {
|
|
compatible = "arm,scpi-power-domains";
|
|
num-domains = <2>;
|
|
#power-domain-cells = <1>;
|
|
diff --git a/arch/arm64/boot/dts/freescale/fsl-ls208xa.dtsi b/arch/arm64/boot/dts/freescale/fsl-ls208xa.dtsi
|
|
index e7abb74bd8168..4d34d82b898a4 100644
|
|
--- a/arch/arm64/boot/dts/freescale/fsl-ls208xa.dtsi
|
|
+++ b/arch/arm64/boot/dts/freescale/fsl-ls208xa.dtsi
|
|
@@ -625,7 +625,6 @@
|
|
clocks = <&clockgen 4 3>;
|
|
clock-names = "dspi";
|
|
spi-num-chipselects = <5>;
|
|
- bus-num = <0>;
|
|
};
|
|
|
|
esdhc: esdhc@2140000 {
|
|
diff --git a/arch/arm64/boot/dts/freescale/imx8mq.dtsi b/arch/arm64/boot/dts/freescale/imx8mq.dtsi
|
|
index 5e0e7d0f1bc4e..c86cf786f4061 100644
|
|
--- a/arch/arm64/boot/dts/freescale/imx8mq.dtsi
|
|
+++ b/arch/arm64/boot/dts/freescale/imx8mq.dtsi
|
|
@@ -1258,6 +1258,14 @@
|
|
<&src IMX8MQ_RESET_PCIE_CTRL_APPS_EN>,
|
|
<&src IMX8MQ_RESET_PCIE_CTRL_APPS_TURNOFF>;
|
|
reset-names = "pciephy", "apps", "turnoff";
|
|
+ assigned-clocks = <&clk IMX8MQ_CLK_PCIE1_CTRL>,
|
|
+ <&clk IMX8MQ_CLK_PCIE1_PHY>,
|
|
+ <&clk IMX8MQ_CLK_PCIE1_AUX>;
|
|
+ assigned-clock-parents = <&clk IMX8MQ_SYS2_PLL_250M>,
|
|
+ <&clk IMX8MQ_SYS2_PLL_100M>,
|
|
+ <&clk IMX8MQ_SYS1_PLL_80M>;
|
|
+ assigned-clock-rates = <250000000>, <100000000>,
|
|
+ <10000000>;
|
|
status = "disabled";
|
|
};
|
|
|
|
@@ -1287,6 +1295,14 @@
|
|
<&src IMX8MQ_RESET_PCIE2_CTRL_APPS_EN>,
|
|
<&src IMX8MQ_RESET_PCIE2_CTRL_APPS_TURNOFF>;
|
|
reset-names = "pciephy", "apps", "turnoff";
|
|
+ assigned-clocks = <&clk IMX8MQ_CLK_PCIE2_CTRL>,
|
|
+ <&clk IMX8MQ_CLK_PCIE2_PHY>,
|
|
+ <&clk IMX8MQ_CLK_PCIE2_AUX>;
|
|
+ assigned-clock-parents = <&clk IMX8MQ_SYS2_PLL_250M>,
|
|
+ <&clk IMX8MQ_SYS2_PLL_100M>,
|
|
+ <&clk IMX8MQ_SYS1_PLL_80M>;
|
|
+ assigned-clock-rates = <250000000>, <100000000>,
|
|
+ <10000000>;
|
|
status = "disabled";
|
|
};
|
|
|
|
diff --git a/arch/arm64/boot/dts/marvell/armada-3720-turris-mox.dts b/arch/arm64/boot/dts/marvell/armada-3720-turris-mox.dts
|
|
index cca143e4b6bf8..389aebdb35f17 100644
|
|
--- a/arch/arm64/boot/dts/marvell/armada-3720-turris-mox.dts
|
|
+++ b/arch/arm64/boot/dts/marvell/armada-3720-turris-mox.dts
|
|
@@ -108,10 +108,8 @@
|
|
};
|
|
|
|
firmware {
|
|
- turris-mox-rwtm {
|
|
- compatible = "cznic,turris-mox-rwtm";
|
|
- mboxes = <&rwtm 0>;
|
|
- status = "okay";
|
|
+ armada-3700-rwtm {
|
|
+ compatible = "marvell,armada-3700-rwtm-firmware", "cznic,turris-mox-rwtm";
|
|
};
|
|
};
|
|
};
|
|
diff --git a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
|
|
index 879115dfdf828..83d2d83f7692b 100644
|
|
--- a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
|
|
+++ b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
|
|
@@ -502,4 +502,12 @@
|
|
};
|
|
};
|
|
};
|
|
+
|
|
+ firmware {
|
|
+ armada-3700-rwtm {
|
|
+ compatible = "marvell,armada-3700-rwtm-firmware";
|
|
+ mboxes = <&rwtm 0>;
|
|
+ status = "okay";
|
|
+ };
|
|
+ };
|
|
};
|
|
diff --git a/arch/arm64/boot/dts/marvell/cn9130-db.dts b/arch/arm64/boot/dts/marvell/cn9130-db.dts
|
|
index ce49a70d88a05..d242948884000 100644
|
|
--- a/arch/arm64/boot/dts/marvell/cn9130-db.dts
|
|
+++ b/arch/arm64/boot/dts/marvell/cn9130-db.dts
|
|
@@ -258,7 +258,7 @@
|
|
};
|
|
partition@200000 {
|
|
label = "Linux";
|
|
- reg = <0x200000 0xd00000>;
|
|
+ reg = <0x200000 0xe00000>;
|
|
};
|
|
partition@1000000 {
|
|
label = "Filesystem";
|
|
diff --git a/arch/arm64/boot/dts/qcom/sc7180-idp.dts b/arch/arm64/boot/dts/qcom/sc7180-idp.dts
|
|
index e77a7926034a7..afe0f9c258164 100644
|
|
--- a/arch/arm64/boot/dts/qcom/sc7180-idp.dts
|
|
+++ b/arch/arm64/boot/dts/qcom/sc7180-idp.dts
|
|
@@ -45,7 +45,7 @@
|
|
|
|
/* Increase the size from 2MB to 8MB */
|
|
&rmtfs_mem {
|
|
- reg = <0x0 0x84400000 0x0 0x800000>;
|
|
+ reg = <0x0 0x94600000 0x0 0x800000>;
|
|
};
|
|
|
|
/ {
|
|
diff --git a/arch/arm64/boot/dts/rockchip/px30.dtsi b/arch/arm64/boot/dts/rockchip/px30.dtsi
|
|
index 64193292d26c3..0d6761074b11a 100644
|
|
--- a/arch/arm64/boot/dts/rockchip/px30.dtsi
|
|
+++ b/arch/arm64/boot/dts/rockchip/px30.dtsi
|
|
@@ -244,20 +244,20 @@
|
|
#size-cells = <0>;
|
|
|
|
/* These power domains are grouped by VD_LOGIC */
|
|
- pd_usb@PX30_PD_USB {
|
|
+ power-domain@PX30_PD_USB {
|
|
reg = <PX30_PD_USB>;
|
|
clocks = <&cru HCLK_HOST>,
|
|
<&cru HCLK_OTG>,
|
|
<&cru SCLK_OTG_ADP>;
|
|
pm_qos = <&qos_usb_host>, <&qos_usb_otg>;
|
|
};
|
|
- pd_sdcard@PX30_PD_SDCARD {
|
|
+ power-domain@PX30_PD_SDCARD {
|
|
reg = <PX30_PD_SDCARD>;
|
|
clocks = <&cru HCLK_SDMMC>,
|
|
<&cru SCLK_SDMMC>;
|
|
pm_qos = <&qos_sdmmc>;
|
|
};
|
|
- pd_gmac@PX30_PD_GMAC {
|
|
+ power-domain@PX30_PD_GMAC {
|
|
reg = <PX30_PD_GMAC>;
|
|
clocks = <&cru ACLK_GMAC>,
|
|
<&cru PCLK_GMAC>,
|
|
@@ -265,7 +265,7 @@
|
|
<&cru SCLK_GMAC_RX_TX>;
|
|
pm_qos = <&qos_gmac>;
|
|
};
|
|
- pd_mmc_nand@PX30_PD_MMC_NAND {
|
|
+ power-domain@PX30_PD_MMC_NAND {
|
|
reg = <PX30_PD_MMC_NAND>;
|
|
clocks = <&cru HCLK_NANDC>,
|
|
<&cru HCLK_EMMC>,
|
|
@@ -278,14 +278,14 @@
|
|
pm_qos = <&qos_emmc>, <&qos_nand>,
|
|
<&qos_sdio>, <&qos_sfc>;
|
|
};
|
|
- pd_vpu@PX30_PD_VPU {
|
|
+ power-domain@PX30_PD_VPU {
|
|
reg = <PX30_PD_VPU>;
|
|
clocks = <&cru ACLK_VPU>,
|
|
<&cru HCLK_VPU>,
|
|
<&cru SCLK_CORE_VPU>;
|
|
pm_qos = <&qos_vpu>, <&qos_vpu_r128>;
|
|
};
|
|
- pd_vo@PX30_PD_VO {
|
|
+ power-domain@PX30_PD_VO {
|
|
reg = <PX30_PD_VO>;
|
|
clocks = <&cru ACLK_RGA>,
|
|
<&cru ACLK_VOPB>,
|
|
@@ -301,7 +301,7 @@
|
|
pm_qos = <&qos_rga_rd>, <&qos_rga_wr>,
|
|
<&qos_vop_m0>, <&qos_vop_m1>;
|
|
};
|
|
- pd_vi@PX30_PD_VI {
|
|
+ power-domain@PX30_PD_VI {
|
|
reg = <PX30_PD_VI>;
|
|
clocks = <&cru ACLK_CIF>,
|
|
<&cru ACLK_ISP>,
|
|
@@ -312,7 +312,7 @@
|
|
<&qos_isp_wr>, <&qos_isp_m1>,
|
|
<&qos_vip>;
|
|
};
|
|
- pd_gpu@PX30_PD_GPU {
|
|
+ power-domain@PX30_PD_GPU {
|
|
reg = <PX30_PD_GPU>;
|
|
clocks = <&cru SCLK_GPU>;
|
|
pm_qos = <&qos_gpu>;
|
|
diff --git a/arch/arm64/boot/dts/rockchip/rk3308-roc-cc.dts b/arch/arm64/boot/dts/rockchip/rk3308-roc-cc.dts
|
|
index 7a96be10eaf0d..bce6f8b7db436 100644
|
|
--- a/arch/arm64/boot/dts/rockchip/rk3308-roc-cc.dts
|
|
+++ b/arch/arm64/boot/dts/rockchip/rk3308-roc-cc.dts
|
|
@@ -78,8 +78,8 @@
|
|
regulator-min-microvolt = <1800000>;
|
|
regulator-max-microvolt = <3300000>;
|
|
gpios = <&gpio0 RK_PA7 GPIO_ACTIVE_HIGH>;
|
|
- states = <1800000 0x0
|
|
- 3300000 0x1>;
|
|
+ states = <1800000 0x0>,
|
|
+ <3300000 0x1>;
|
|
vin-supply = <&vcc5v0_sys>;
|
|
};
|
|
|
|
diff --git a/arch/arm64/boot/dts/rockchip/rk3328-nanopi-r2s.dts b/arch/arm64/boot/dts/rockchip/rk3328-nanopi-r2s.dts
|
|
index 1eecad724f04c..83a0bdbe00d6f 100644
|
|
--- a/arch/arm64/boot/dts/rockchip/rk3328-nanopi-r2s.dts
|
|
+++ b/arch/arm64/boot/dts/rockchip/rk3328-nanopi-r2s.dts
|
|
@@ -71,8 +71,8 @@
|
|
regulator-settling-time-us = <5000>;
|
|
regulator-type = "voltage";
|
|
startup-delay-us = <2000>;
|
|
- states = <1800000 0x1
|
|
- 3300000 0x0>;
|
|
+ states = <1800000 0x1>,
|
|
+ <3300000 0x0>;
|
|
vin-supply = <&vcc_io_33>;
|
|
};
|
|
|
|
diff --git a/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts b/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
|
index b76282e704de1..daa9a0c601a9f 100644
|
|
--- a/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
|
+++ b/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
|
@@ -45,8 +45,8 @@
|
|
vcc_sdio: sdmmcio-regulator {
|
|
compatible = "regulator-gpio";
|
|
gpios = <&grf_gpio 0 GPIO_ACTIVE_HIGH>;
|
|
- states = <1800000 0x1
|
|
- 3300000 0x0>;
|
|
+ states = <1800000 0x1>,
|
|
+ <3300000 0x0>;
|
|
regulator-name = "vcc_sdio";
|
|
regulator-type = "voltage";
|
|
regulator-min-microvolt = <1800000>;
|
|
diff --git a/arch/arm64/boot/dts/rockchip/rk3328.dtsi b/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
|
index de1e5e8a0e885..e546c9d1d6463 100644
|
|
--- a/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
|
+++ b/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
|
@@ -318,13 +318,13 @@
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
- pd_hevc@RK3328_PD_HEVC {
|
|
+ power-domain@RK3328_PD_HEVC {
|
|
reg = <RK3328_PD_HEVC>;
|
|
};
|
|
- pd_video@RK3328_PD_VIDEO {
|
|
+ power-domain@RK3328_PD_VIDEO {
|
|
reg = <RK3328_PD_VIDEO>;
|
|
};
|
|
- pd_vpu@RK3328_PD_VPU {
|
|
+ power-domain@RK3328_PD_VPU {
|
|
reg = <RK3328_PD_VPU>;
|
|
clocks = <&cru ACLK_VPU>, <&cru HCLK_VPU>;
|
|
};
|
|
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet.dtsi
|
|
index 60cd1c18cd4e0..e9ecffc409c0b 100644
|
|
--- a/arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet.dtsi
|
|
+++ b/arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet.dtsi
|
|
@@ -245,7 +245,7 @@ pp1800_pcie: &pp1800_s0 {
|
|
};
|
|
|
|
&ppvar_sd_card_io {
|
|
- states = <1800000 0x0 3300000 0x1>;
|
|
+ states = <1800000 0x0>, <3300000 0x1>;
|
|
regulator-max-microvolt = <3300000>;
|
|
};
|
|
|
|
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-gru.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-gru.dtsi
|
|
index 32dcaf2100855..765b24a2bcbf0 100644
|
|
--- a/arch/arm64/boot/dts/rockchip/rk3399-gru.dtsi
|
|
+++ b/arch/arm64/boot/dts/rockchip/rk3399-gru.dtsi
|
|
@@ -247,8 +247,8 @@
|
|
enable-active-high;
|
|
enable-gpio = <&gpio2 2 GPIO_ACTIVE_HIGH>;
|
|
gpios = <&gpio2 28 GPIO_ACTIVE_HIGH>;
|
|
- states = <1800000 0x1
|
|
- 3000000 0x0>;
|
|
+ states = <1800000 0x1>,
|
|
+ <3000000 0x0>;
|
|
|
|
regulator-min-microvolt = <1800000>;
|
|
regulator-max-microvolt = <3000000>;
|
|
diff --git a/arch/arm64/boot/dts/rockchip/rk3399.dtsi b/arch/arm64/boot/dts/rockchip/rk3399.dtsi
|
|
index 7e69603fb41c0..4b6065dbba55e 100644
|
|
--- a/arch/arm64/boot/dts/rockchip/rk3399.dtsi
|
|
+++ b/arch/arm64/boot/dts/rockchip/rk3399.dtsi
|
|
@@ -1000,26 +1000,26 @@
|
|
#size-cells = <0>;
|
|
|
|
/* These power domains are grouped by VD_CENTER */
|
|
- pd_iep@RK3399_PD_IEP {
|
|
+ power-domain@RK3399_PD_IEP {
|
|
reg = <RK3399_PD_IEP>;
|
|
clocks = <&cru ACLK_IEP>,
|
|
<&cru HCLK_IEP>;
|
|
pm_qos = <&qos_iep>;
|
|
};
|
|
- pd_rga@RK3399_PD_RGA {
|
|
+ power-domain@RK3399_PD_RGA {
|
|
reg = <RK3399_PD_RGA>;
|
|
clocks = <&cru ACLK_RGA>,
|
|
<&cru HCLK_RGA>;
|
|
pm_qos = <&qos_rga_r>,
|
|
<&qos_rga_w>;
|
|
};
|
|
- pd_vcodec@RK3399_PD_VCODEC {
|
|
+ power-domain@RK3399_PD_VCODEC {
|
|
reg = <RK3399_PD_VCODEC>;
|
|
clocks = <&cru ACLK_VCODEC>,
|
|
<&cru HCLK_VCODEC>;
|
|
pm_qos = <&qos_video_m0>;
|
|
};
|
|
- pd_vdu@RK3399_PD_VDU {
|
|
+ power-domain@RK3399_PD_VDU {
|
|
reg = <RK3399_PD_VDU>;
|
|
clocks = <&cru ACLK_VDU>,
|
|
<&cru HCLK_VDU>;
|
|
@@ -1028,94 +1028,94 @@
|
|
};
|
|
|
|
/* These power domains are grouped by VD_GPU */
|
|
- pd_gpu@RK3399_PD_GPU {
|
|
+ power-domain@RK3399_PD_GPU {
|
|
reg = <RK3399_PD_GPU>;
|
|
clocks = <&cru ACLK_GPU>;
|
|
pm_qos = <&qos_gpu>;
|
|
};
|
|
|
|
/* These power domains are grouped by VD_LOGIC */
|
|
- pd_edp@RK3399_PD_EDP {
|
|
+ power-domain@RK3399_PD_EDP {
|
|
reg = <RK3399_PD_EDP>;
|
|
clocks = <&cru PCLK_EDP_CTRL>;
|
|
};
|
|
- pd_emmc@RK3399_PD_EMMC {
|
|
+ power-domain@RK3399_PD_EMMC {
|
|
reg = <RK3399_PD_EMMC>;
|
|
clocks = <&cru ACLK_EMMC>;
|
|
pm_qos = <&qos_emmc>;
|
|
};
|
|
- pd_gmac@RK3399_PD_GMAC {
|
|
+ power-domain@RK3399_PD_GMAC {
|
|
reg = <RK3399_PD_GMAC>;
|
|
clocks = <&cru ACLK_GMAC>,
|
|
<&cru PCLK_GMAC>;
|
|
pm_qos = <&qos_gmac>;
|
|
};
|
|
- pd_sd@RK3399_PD_SD {
|
|
+ power-domain@RK3399_PD_SD {
|
|
reg = <RK3399_PD_SD>;
|
|
clocks = <&cru HCLK_SDMMC>,
|
|
<&cru SCLK_SDMMC>;
|
|
pm_qos = <&qos_sd>;
|
|
};
|
|
- pd_sdioaudio@RK3399_PD_SDIOAUDIO {
|
|
+ power-domain@RK3399_PD_SDIOAUDIO {
|
|
reg = <RK3399_PD_SDIOAUDIO>;
|
|
clocks = <&cru HCLK_SDIO>;
|
|
pm_qos = <&qos_sdioaudio>;
|
|
};
|
|
- pd_tcpc0@RK3399_PD_TCPD0 {
|
|
+ power-domain@RK3399_PD_TCPD0 {
|
|
reg = <RK3399_PD_TCPD0>;
|
|
clocks = <&cru SCLK_UPHY0_TCPDCORE>,
|
|
<&cru SCLK_UPHY0_TCPDPHY_REF>;
|
|
};
|
|
- pd_tcpc1@RK3399_PD_TCPD1 {
|
|
+ power-domain@RK3399_PD_TCPD1 {
|
|
reg = <RK3399_PD_TCPD1>;
|
|
clocks = <&cru SCLK_UPHY1_TCPDCORE>,
|
|
<&cru SCLK_UPHY1_TCPDPHY_REF>;
|
|
};
|
|
- pd_usb3@RK3399_PD_USB3 {
|
|
+ power-domain@RK3399_PD_USB3 {
|
|
reg = <RK3399_PD_USB3>;
|
|
clocks = <&cru ACLK_USB3>;
|
|
pm_qos = <&qos_usb_otg0>,
|
|
<&qos_usb_otg1>;
|
|
};
|
|
- pd_vio@RK3399_PD_VIO {
|
|
+ power-domain@RK3399_PD_VIO {
|
|
reg = <RK3399_PD_VIO>;
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
- pd_hdcp@RK3399_PD_HDCP {
|
|
+ power-domain@RK3399_PD_HDCP {
|
|
reg = <RK3399_PD_HDCP>;
|
|
clocks = <&cru ACLK_HDCP>,
|
|
<&cru HCLK_HDCP>,
|
|
<&cru PCLK_HDCP>;
|
|
pm_qos = <&qos_hdcp>;
|
|
};
|
|
- pd_isp0@RK3399_PD_ISP0 {
|
|
+ power-domain@RK3399_PD_ISP0 {
|
|
reg = <RK3399_PD_ISP0>;
|
|
clocks = <&cru ACLK_ISP0>,
|
|
<&cru HCLK_ISP0>;
|
|
pm_qos = <&qos_isp0_m0>,
|
|
<&qos_isp0_m1>;
|
|
};
|
|
- pd_isp1@RK3399_PD_ISP1 {
|
|
+ power-domain@RK3399_PD_ISP1 {
|
|
reg = <RK3399_PD_ISP1>;
|
|
clocks = <&cru ACLK_ISP1>,
|
|
<&cru HCLK_ISP1>;
|
|
pm_qos = <&qos_isp1_m0>,
|
|
<&qos_isp1_m1>;
|
|
};
|
|
- pd_vo@RK3399_PD_VO {
|
|
+ power-domain@RK3399_PD_VO {
|
|
reg = <RK3399_PD_VO>;
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
- pd_vopb@RK3399_PD_VOPB {
|
|
+ power-domain@RK3399_PD_VOPB {
|
|
reg = <RK3399_PD_VOPB>;
|
|
clocks = <&cru ACLK_VOP0>,
|
|
<&cru HCLK_VOP0>;
|
|
pm_qos = <&qos_vop_big_r>,
|
|
<&qos_vop_big_w>;
|
|
};
|
|
- pd_vopl@RK3399_PD_VOPL {
|
|
+ power-domain@RK3399_PD_VOPL {
|
|
reg = <RK3399_PD_VOPL>;
|
|
clocks = <&cru ACLK_VOP1>,
|
|
<&cru HCLK_VOP1>;
|
|
@@ -2342,7 +2342,7 @@
|
|
};
|
|
};
|
|
|
|
- sleep {
|
|
+ suspend {
|
|
ap_pwroff: ap-pwroff {
|
|
rockchip,pins = <1 RK_PA5 1 &pcfg_pull_none>;
|
|
};
|
|
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 d12dd89f3405a..937dd7280c7ae 100644
|
|
--- a/arch/arm64/boot/dts/ti/k3-am654-base-board.dts
|
|
+++ b/arch/arm64/boot/dts/ti/k3-am654-base-board.dts
|
|
@@ -111,7 +111,7 @@
|
|
AM65X_WKUP_IOPAD(0x007c, PIN_INPUT, 0) /* (L5) MCU_RGMII1_RD2 */
|
|
AM65X_WKUP_IOPAD(0x0080, PIN_INPUT, 0) /* (M6) MCU_RGMII1_RD1 */
|
|
AM65X_WKUP_IOPAD(0x0084, PIN_INPUT, 0) /* (L6) MCU_RGMII1_RD0 */
|
|
- AM65X_WKUP_IOPAD(0x0070, PIN_INPUT, 0) /* (N1) MCU_RGMII1_TXC */
|
|
+ AM65X_WKUP_IOPAD(0x0070, PIN_OUTPUT, 0) /* (N1) MCU_RGMII1_TXC */
|
|
AM65X_WKUP_IOPAD(0x0074, PIN_INPUT, 0) /* (M1) MCU_RGMII1_RXC */
|
|
>;
|
|
};
|
|
diff --git a/arch/arm64/boot/dts/ti/k3-j7200-common-proc-board.dts b/arch/arm64/boot/dts/ti/k3-j7200-common-proc-board.dts
|
|
index ef03e7636b66a..e8a4143e1c241 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
|
|
@@ -29,7 +29,7 @@
|
|
J721E_WKUP_IOPAD(0x008c, PIN_INPUT, 0) /* MCU_RGMII1_RD2 */
|
|
J721E_WKUP_IOPAD(0x0090, PIN_INPUT, 0) /* MCU_RGMII1_RD1 */
|
|
J721E_WKUP_IOPAD(0x0094, PIN_INPUT, 0) /* MCU_RGMII1_RD0 */
|
|
- J721E_WKUP_IOPAD(0x0080, PIN_INPUT, 0) /* MCU_RGMII1_TXC */
|
|
+ J721E_WKUP_IOPAD(0x0080, PIN_OUTPUT, 0) /* MCU_RGMII1_TXC */
|
|
J721E_WKUP_IOPAD(0x0084, PIN_INPUT, 0) /* MCU_RGMII1_RXC */
|
|
>;
|
|
};
|
|
diff --git a/arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts b/arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts
|
|
index 7cd31ac67f880..479abff9cb8ed 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
|
|
@@ -206,7 +206,7 @@
|
|
J721E_WKUP_IOPAD(0x007c, PIN_INPUT, 0) /* MCU_RGMII1_RD2 */
|
|
J721E_WKUP_IOPAD(0x0080, PIN_INPUT, 0) /* MCU_RGMII1_RD1 */
|
|
J721E_WKUP_IOPAD(0x0084, PIN_INPUT, 0) /* MCU_RGMII1_RD0 */
|
|
- J721E_WKUP_IOPAD(0x0070, PIN_INPUT, 0) /* MCU_RGMII1_TXC */
|
|
+ J721E_WKUP_IOPAD(0x0070, PIN_OUTPUT, 0) /* MCU_RGMII1_TXC */
|
|
J721E_WKUP_IOPAD(0x0074, PIN_INPUT, 0) /* MCU_RGMII1_RXC */
|
|
>;
|
|
};
|
|
diff --git a/arch/ia64/include/asm/pgtable.h b/arch/ia64/include/asm/pgtable.h
|
|
index 779b6972aa84b..9f64fdfbf2750 100644
|
|
--- a/arch/ia64/include/asm/pgtable.h
|
|
+++ b/arch/ia64/include/asm/pgtable.h
|
|
@@ -520,8 +520,9 @@ extern struct page *zero_page_memmap_ptr;
|
|
|
|
# ifdef CONFIG_VIRTUAL_MEM_MAP
|
|
/* arch mem_map init routine is needed due to holes in a virtual mem_map */
|
|
- extern void memmap_init (unsigned long size, int nid, unsigned long zone,
|
|
- unsigned long start_pfn);
|
|
+void memmap_init(void);
|
|
+void arch_memmap_init(unsigned long size, int nid, unsigned long zone,
|
|
+ unsigned long start_pfn);
|
|
# endif /* CONFIG_VIRTUAL_MEM_MAP */
|
|
# endif /* !__ASSEMBLY__ */
|
|
|
|
diff --git a/arch/ia64/mm/init.c b/arch/ia64/mm/init.c
|
|
index 27ca549ff47ed..f316a833b7033 100644
|
|
--- a/arch/ia64/mm/init.c
|
|
+++ b/arch/ia64/mm/init.c
|
|
@@ -542,7 +542,7 @@ virtual_memmap_init(u64 start, u64 end, void *arg)
|
|
}
|
|
|
|
void __meminit
|
|
-memmap_init (unsigned long size, int nid, unsigned long zone,
|
|
+arch_memmap_init (unsigned long size, int nid, unsigned long zone,
|
|
unsigned long start_pfn)
|
|
{
|
|
if (!vmem_map) {
|
|
@@ -562,6 +562,10 @@ memmap_init (unsigned long size, int nid, unsigned long zone,
|
|
}
|
|
}
|
|
|
|
+void __init memmap_init(void)
|
|
+{
|
|
+}
|
|
+
|
|
int
|
|
ia64_pfn_valid (unsigned long pfn)
|
|
{
|
|
diff --git a/arch/s390/include/asm/stacktrace.h b/arch/s390/include/asm/stacktrace.h
|
|
index ee582896b6a3f..90488b0c26f60 100644
|
|
--- a/arch/s390/include/asm/stacktrace.h
|
|
+++ b/arch/s390/include/asm/stacktrace.h
|
|
@@ -128,6 +128,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 8d1e8a1a97dfd..16934fa19069b 100644
|
|
--- a/arch/s390/kernel/traps.c
|
|
+++ b/arch/s390/kernel/traps.c
|
|
@@ -272,6 +272,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 16159950fcf5b..9c936d06fb61a 100644
|
|
--- a/arch/x86/events/intel/uncore_snbep.c
|
|
+++ b/arch/x86/events/intel/uncore_snbep.c
|
|
@@ -3752,11 +3752,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);
|
|
@@ -3777,7 +3777,9 @@ err:
|
|
for (; die >= 0; die--)
|
|
kfree(eas[die].attr.attr.name);
|
|
kfree(eas);
|
|
+clear_attrs:
|
|
kfree(attrs);
|
|
+clear_topology:
|
|
kfree(type->topology);
|
|
clear_attr_update:
|
|
type->attr_update = NULL;
|
|
diff --git a/arch/x86/net/bpf_jit_comp.c b/arch/x86/net/bpf_jit_comp.c
|
|
index a11796bbb9cee..d5fa772560584 100644
|
|
--- a/arch/x86/net/bpf_jit_comp.c
|
|
+++ b/arch/x86/net/bpf_jit_comp.c
|
|
@@ -564,6 +564,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 5a5a1da01a00f..f0c822952c201 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];
|
|
|
|
@@ -278,15 +278,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 5fa6b3ca0a385..c08968c5ddf8c 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 65063fa948d41..34b7ae7980a3e 100644
|
|
--- a/drivers/firmware/arm_scmi/common.h
|
|
+++ b/drivers/firmware/arm_scmi/common.h
|
|
@@ -243,7 +243,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 f9901fadb3a43..af4560dab6b40 100644
|
|
--- a/drivers/firmware/arm_scmi/driver.c
|
|
+++ b/drivers/firmware/arm_scmi/driver.c
|
|
@@ -922,7 +922,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/tegra/Makefile b/drivers/firmware/tegra/Makefile
|
|
index 49c87e00fafb3..620cf3fdd6074 100644
|
|
--- a/drivers/firmware/tegra/Makefile
|
|
+++ b/drivers/firmware/tegra/Makefile
|
|
@@ -3,6 +3,7 @@ tegra-bpmp-y = bpmp.o
|
|
tegra-bpmp-$(CONFIG_ARCH_TEGRA_210_SOC) += bpmp-tegra210.o
|
|
tegra-bpmp-$(CONFIG_ARCH_TEGRA_186_SOC) += bpmp-tegra186.o
|
|
tegra-bpmp-$(CONFIG_ARCH_TEGRA_194_SOC) += bpmp-tegra186.o
|
|
+tegra-bpmp-$(CONFIG_ARCH_TEGRA_234_SOC) += bpmp-tegra186.o
|
|
tegra-bpmp-$(CONFIG_DEBUG_FS) += bpmp-debugfs.o
|
|
obj-$(CONFIG_TEGRA_BPMP) += tegra-bpmp.o
|
|
obj-$(CONFIG_TEGRA_IVC) += ivc.o
|
|
diff --git a/drivers/firmware/tegra/bpmp-private.h b/drivers/firmware/tegra/bpmp-private.h
|
|
index 54d560c48398e..182bfe3965161 100644
|
|
--- a/drivers/firmware/tegra/bpmp-private.h
|
|
+++ b/drivers/firmware/tegra/bpmp-private.h
|
|
@@ -24,7 +24,8 @@ struct tegra_bpmp_ops {
|
|
};
|
|
|
|
#if IS_ENABLED(CONFIG_ARCH_TEGRA_186_SOC) || \
|
|
- IS_ENABLED(CONFIG_ARCH_TEGRA_194_SOC)
|
|
+ IS_ENABLED(CONFIG_ARCH_TEGRA_194_SOC) || \
|
|
+ IS_ENABLED(CONFIG_ARCH_TEGRA_234_SOC)
|
|
extern const struct tegra_bpmp_ops tegra186_bpmp_ops;
|
|
#endif
|
|
#if IS_ENABLED(CONFIG_ARCH_TEGRA_210_SOC)
|
|
diff --git a/drivers/firmware/tegra/bpmp.c b/drivers/firmware/tegra/bpmp.c
|
|
index 0742a90cb844e..5654c5e9862b1 100644
|
|
--- a/drivers/firmware/tegra/bpmp.c
|
|
+++ b/drivers/firmware/tegra/bpmp.c
|
|
@@ -809,7 +809,8 @@ static const struct dev_pm_ops tegra_bpmp_pm_ops = {
|
|
};
|
|
|
|
#if IS_ENABLED(CONFIG_ARCH_TEGRA_186_SOC) || \
|
|
- IS_ENABLED(CONFIG_ARCH_TEGRA_194_SOC)
|
|
+ IS_ENABLED(CONFIG_ARCH_TEGRA_194_SOC) || \
|
|
+ IS_ENABLED(CONFIG_ARCH_TEGRA_234_SOC)
|
|
static const struct tegra_bpmp_soc tegra186_soc = {
|
|
.channels = {
|
|
.cpu_tx = {
|
|
diff --git a/drivers/firmware/turris-mox-rwtm.c b/drivers/firmware/turris-mox-rwtm.c
|
|
index 03f1eac9ad69b..0bef988580ada 100644
|
|
--- a/drivers/firmware/turris-mox-rwtm.c
|
|
+++ b/drivers/firmware/turris-mox-rwtm.c
|
|
@@ -569,6 +569,7 @@ static int turris_mox_rwtm_remove(struct platform_device *pdev)
|
|
|
|
static const struct of_device_id turris_mox_rwtm_match[] = {
|
|
{ .compatible = "cznic,turris-mox-rwtm", },
|
|
+ { .compatible = "marvell,armada-3700-rwtm-firmware", },
|
|
{ },
|
|
};
|
|
|
|
diff --git a/drivers/gpu/drm/panel/panel-novatek-nt35510.c b/drivers/gpu/drm/panel/panel-novatek-nt35510.c
|
|
index ef70140c5b09d..873cbd38e6d3a 100644
|
|
--- a/drivers/gpu/drm/panel/panel-novatek-nt35510.c
|
|
+++ b/drivers/gpu/drm/panel/panel-novatek-nt35510.c
|
|
@@ -706,9 +706,7 @@ static int nt35510_power_on(struct nt35510 *nt)
|
|
if (ret)
|
|
return ret;
|
|
|
|
- ret = nt35510_read_id(nt);
|
|
- if (ret)
|
|
- return ret;
|
|
+ nt35510_read_id(nt);
|
|
|
|
/* Set up stuff in manufacturer control, page 1 */
|
|
ret = nt35510_send_long(nt, dsi, MCS_CMD_MAUCCTR,
|
|
diff --git a/drivers/memory/tegra/tegra124-emc.c b/drivers/memory/tegra/tegra124-emc.c
|
|
index 76ace42a688a7..dae816e840a96 100644
|
|
--- a/drivers/memory/tegra/tegra124-emc.c
|
|
+++ b/drivers/memory/tegra/tegra124-emc.c
|
|
@@ -265,8 +265,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 055af0e08a2e5..1bd6d3d827aa9 100644
|
|
--- a/drivers/memory/tegra/tegra30-emc.c
|
|
+++ b/drivers/memory/tegra/tegra30-emc.c
|
|
@@ -145,8 +145,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 70ec17f3c3007..429ce8638c2b3 100644
|
|
--- a/drivers/net/dsa/mv88e6xxx/chip.c
|
|
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
|
|
@@ -3407,7 +3407,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,
|
|
@@ -3417,6 +3417,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,
|
|
@@ -3613,6 +3616,7 @@ static const struct mv88e6xxx_ops mv88e6175_ops = {
|
|
.port_set_rgmii_delay = mv88e6352_port_set_rgmii_delay,
|
|
.port_set_speed_duplex = mv88e6185_port_set_speed_duplex,
|
|
.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_egress_floods = mv88e6352_port_set_egress_floods,
|
|
.port_set_ether_type = mv88e6351_port_set_ether_type,
|
|
@@ -4173,7 +4177,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,
|
|
@@ -4183,6 +4187,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,
|
|
@@ -4253,6 +4260,7 @@ static const struct mv88e6xxx_ops mv88e6351_ops = {
|
|
.port_set_rgmii_delay = mv88e6352_port_set_rgmii_delay,
|
|
.port_set_speed_duplex = mv88e6185_port_set_speed_duplex,
|
|
.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_egress_floods = mv88e6352_port_set_egress_floods,
|
|
.port_set_ether_type = mv88e6351_port_set_ether_type,
|
|
diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.c b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
|
|
index 41f7f078cd27c..db74241935ab4 100644
|
|
--- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c
|
|
+++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
|
|
@@ -1640,7 +1640,8 @@ static void bcmgenet_power_up(struct bcmgenet_priv *priv,
|
|
|
|
switch (mode) {
|
|
case GENET_POWER_PASSIVE:
|
|
- reg &= ~(EXT_PWR_DOWN_DLL | EXT_PWR_DOWN_BIAS);
|
|
+ reg &= ~(EXT_PWR_DOWN_DLL | EXT_PWR_DOWN_BIAS |
|
|
+ EXT_ENERGY_DET_MASK);
|
|
if (GENET_IS_V5(priv)) {
|
|
reg &= ~(EXT_PWR_DOWN_PHY_EN |
|
|
EXT_PWR_DOWN_PHY_RD |
|
|
@@ -3237,15 +3238,21 @@ static void bcmgenet_get_hw_addr(struct bcmgenet_priv *priv,
|
|
/* Returns a reusable dma control register value */
|
|
static u32 bcmgenet_dma_disable(struct bcmgenet_priv *priv)
|
|
{
|
|
+ unsigned int i;
|
|
u32 reg;
|
|
u32 dma_ctrl;
|
|
|
|
/* disable DMA */
|
|
dma_ctrl = 1 << (DESC_INDEX + DMA_RING_BUF_EN_SHIFT) | DMA_EN;
|
|
+ for (i = 0; i < priv->hw_params->tx_queues; i++)
|
|
+ dma_ctrl |= (1 << (i + DMA_RING_BUF_EN_SHIFT));
|
|
reg = bcmgenet_tdma_readl(priv, DMA_CTRL);
|
|
reg &= ~dma_ctrl;
|
|
bcmgenet_tdma_writel(priv, reg, DMA_CTRL);
|
|
|
|
+ dma_ctrl = 1 << (DESC_INDEX + DMA_RING_BUF_EN_SHIFT) | DMA_EN;
|
|
+ for (i = 0; i < priv->hw_params->rx_queues; i++)
|
|
+ dma_ctrl |= (1 << (i + DMA_RING_BUF_EN_SHIFT));
|
|
reg = bcmgenet_rdma_readl(priv, DMA_CTRL);
|
|
reg &= ~dma_ctrl;
|
|
bcmgenet_rdma_writel(priv, reg, DMA_CTRL);
|
|
@@ -3292,7 +3299,6 @@ static int bcmgenet_open(struct net_device *dev)
|
|
{
|
|
struct bcmgenet_priv *priv = netdev_priv(dev);
|
|
unsigned long dma_ctrl;
|
|
- u32 reg;
|
|
int ret;
|
|
|
|
netif_dbg(priv, ifup, dev, "bcmgenet_open\n");
|
|
@@ -3318,12 +3324,6 @@ static int bcmgenet_open(struct net_device *dev)
|
|
|
|
bcmgenet_set_hw_addr(priv, dev->dev_addr);
|
|
|
|
- if (priv->internal_phy) {
|
|
- reg = bcmgenet_ext_readl(priv, EXT_EXT_PWR_MGMT);
|
|
- reg |= EXT_ENERGY_DET_MASK;
|
|
- bcmgenet_ext_writel(priv, reg, EXT_EXT_PWR_MGMT);
|
|
- }
|
|
-
|
|
/* Disable RX/TX DMA and flush TX queues */
|
|
dma_ctrl = bcmgenet_dma_disable(priv);
|
|
|
|
@@ -4139,7 +4139,6 @@ static int bcmgenet_resume(struct device *d)
|
|
struct bcmgenet_priv *priv = netdev_priv(dev);
|
|
struct bcmgenet_rxnfc_rule *rule;
|
|
unsigned long dma_ctrl;
|
|
- u32 reg;
|
|
int ret;
|
|
|
|
if (!netif_running(dev))
|
|
@@ -4176,12 +4175,6 @@ static int bcmgenet_resume(struct device *d)
|
|
if (rule->state != BCMGENET_RXNFC_STATE_UNUSED)
|
|
bcmgenet_hfb_create_rxnfc_filter(priv, rule);
|
|
|
|
- if (priv->internal_phy) {
|
|
- reg = bcmgenet_ext_readl(priv, EXT_EXT_PWR_MGMT);
|
|
- reg |= EXT_ENERGY_DET_MASK;
|
|
- bcmgenet_ext_writel(priv, reg, EXT_EXT_PWR_MGMT);
|
|
- }
|
|
-
|
|
/* Disable RX/TX DMA and flush TX queues */
|
|
dma_ctrl = bcmgenet_dma_disable(priv);
|
|
|
|
diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet_wol.c b/drivers/net/ethernet/broadcom/genet/bcmgenet_wol.c
|
|
index 1c86eddb1b510..e84ad587fb214 100644
|
|
--- a/drivers/net/ethernet/broadcom/genet/bcmgenet_wol.c
|
|
+++ b/drivers/net/ethernet/broadcom/genet/bcmgenet_wol.c
|
|
@@ -187,12 +187,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/moxa/moxart_ether.c b/drivers/net/ethernet/moxa/moxart_ether.c
|
|
index a4380c45f6689..a0e1ccca505b7 100644
|
|
--- a/drivers/net/ethernet/moxa/moxart_ether.c
|
|
+++ b/drivers/net/ethernet/moxa/moxart_ether.c
|
|
@@ -541,10 +541,8 @@ static int moxart_mac_probe(struct platform_device *pdev)
|
|
SET_NETDEV_DEV(ndev, &pdev->dev);
|
|
|
|
ret = register_netdev(ndev);
|
|
- if (ret) {
|
|
- free_netdev(ndev);
|
|
+ if (ret)
|
|
goto init_fail;
|
|
- }
|
|
|
|
netdev_dbg(ndev, "%s: IRQ=%d address=%pM\n",
|
|
__func__, ndev->irq, ndev->dev_addr);
|
|
diff --git a/drivers/net/ethernet/qualcomm/emac/emac.c b/drivers/net/ethernet/qualcomm/emac/emac.c
|
|
index 8543bf3c34840..ad655f0a4965c 100644
|
|
--- a/drivers/net/ethernet/qualcomm/emac/emac.c
|
|
+++ b/drivers/net/ethernet/qualcomm/emac/emac.c
|
|
@@ -735,12 +735,13 @@ static int emac_remove(struct platform_device *pdev)
|
|
|
|
put_device(&adpt->phydev->mdio.dev);
|
|
mdiobus_unregister(adpt->mii_bus);
|
|
- free_netdev(netdev);
|
|
|
|
if (adpt->phy.digital)
|
|
iounmap(adpt->phy.digital);
|
|
iounmap(adpt->phy.base);
|
|
|
|
+ free_netdev(netdev);
|
|
+
|
|
return 0;
|
|
}
|
|
|
|
diff --git a/drivers/net/ethernet/ti/tlan.c b/drivers/net/ethernet/ti/tlan.c
|
|
index 267c080ee084b..0072ffa6e19e3 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 eaf85db53a5ef..2e7d6cc16b2d1 100644
|
|
--- a/drivers/net/fddi/defza.c
|
|
+++ b/drivers/net/fddi/defza.c
|
|
@@ -1504,9 +1504,8 @@ err_out_resource:
|
|
release_mem_region(start, len);
|
|
|
|
err_out_kfree:
|
|
- free_netdev(dev);
|
|
-
|
|
pr_err("%s: initialization failure, aborting!\n", fp->name);
|
|
+ free_netdev(dev);
|
|
return ret;
|
|
}
|
|
|
|
diff --git a/drivers/net/netdevsim/ipsec.c b/drivers/net/netdevsim/ipsec.c
|
|
index 3811f1bde84e7..b80ed2ffd45eb 100644
|
|
--- a/drivers/net/netdevsim/ipsec.c
|
|
+++ b/drivers/net/netdevsim/ipsec.c
|
|
@@ -85,7 +85,7 @@ static int nsim_ipsec_parse_proto_keys(struct xfrm_state *xs,
|
|
u32 *mykey, u32 *mysalt)
|
|
{
|
|
const char aes_gcm_name[] = "rfc4106(gcm(aes))";
|
|
- struct net_device *dev = xs->xso.dev;
|
|
+ struct net_device *dev = xs->xso.real_dev;
|
|
unsigned char *key_data;
|
|
char *alg_name = NULL;
|
|
int key_len;
|
|
@@ -134,7 +134,7 @@ static int nsim_ipsec_add_sa(struct xfrm_state *xs)
|
|
u16 sa_idx;
|
|
int ret;
|
|
|
|
- dev = xs->xso.dev;
|
|
+ dev = xs->xso.real_dev;
|
|
ns = netdev_priv(dev);
|
|
ipsec = &ns->ipsec;
|
|
|
|
@@ -194,7 +194,7 @@ static int nsim_ipsec_add_sa(struct xfrm_state *xs)
|
|
|
|
static void nsim_ipsec_del_sa(struct xfrm_state *xs)
|
|
{
|
|
- struct netdevsim *ns = netdev_priv(xs->xso.dev);
|
|
+ struct netdevsim *ns = netdev_priv(xs->xso.real_dev);
|
|
struct nsim_ipsec *ipsec = &ns->ipsec;
|
|
u16 sa_idx;
|
|
|
|
@@ -211,7 +211,7 @@ static void nsim_ipsec_del_sa(struct xfrm_state *xs)
|
|
|
|
static bool nsim_ipsec_offload_ok(struct sk_buff *skb, struct xfrm_state *xs)
|
|
{
|
|
- struct netdevsim *ns = netdev_priv(xs->xso.dev);
|
|
+ struct netdevsim *ns = netdev_priv(xs->xso.real_dev);
|
|
struct nsim_ipsec *ipsec = &ns->ipsec;
|
|
|
|
ipsec->ok++;
|
|
diff --git a/drivers/net/vmxnet3/vmxnet3_ethtool.c b/drivers/net/vmxnet3/vmxnet3_ethtool.c
|
|
index 7ec8652f2c269..66590e95c2929 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];
|
|
@@ -277,6 +281,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):
|
|
@@ -289,8 +295,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/reset/reset-ti-syscon.c b/drivers/reset/reset-ti-syscon.c
|
|
index ef97c4dbbb4ee..742056a2a7561 100644
|
|
--- a/drivers/reset/reset-ti-syscon.c
|
|
+++ b/drivers/reset/reset-ti-syscon.c
|
|
@@ -58,8 +58,8 @@ struct ti_syscon_reset_data {
|
|
unsigned int nr_controls;
|
|
};
|
|
|
|
-#define to_ti_syscon_reset_data(rcdev) \
|
|
- container_of(rcdev, struct ti_syscon_reset_data, rcdev)
|
|
+#define to_ti_syscon_reset_data(_rcdev) \
|
|
+ container_of(_rcdev, struct ti_syscon_reset_data, rcdev)
|
|
|
|
/**
|
|
* ti_syscon_reset_assert() - assert device reset
|
|
diff --git a/drivers/rtc/rtc-max77686.c b/drivers/rtc/rtc-max77686.c
|
|
index d51cc12114cbe..eae7cb9faf1eb 100644
|
|
--- a/drivers/rtc/rtc-max77686.c
|
|
+++ b/drivers/rtc/rtc-max77686.c
|
|
@@ -717,8 +717,8 @@ static int max77686_init_rtc_regmap(struct max77686_rtc_info *info)
|
|
|
|
add_rtc_irq:
|
|
ret = regmap_add_irq_chip(info->rtc_regmap, info->rtc_irq,
|
|
- IRQF_TRIGGER_FALLING | IRQF_ONESHOT |
|
|
- IRQF_SHARED, 0, info->drv_data->rtc_irq_chip,
|
|
+ IRQF_ONESHOT | IRQF_SHARED,
|
|
+ 0, info->drv_data->rtc_irq_chip,
|
|
&info->rtc_irq_data);
|
|
if (ret < 0) {
|
|
dev_err(info->dev, "Failed to add RTC irq chip: %d\n", ret);
|
|
diff --git a/drivers/rtc/rtc-mxc_v2.c b/drivers/rtc/rtc-mxc_v2.c
|
|
index 91534560fe2a2..d349cef09cb7c 100644
|
|
--- a/drivers/rtc/rtc-mxc_v2.c
|
|
+++ b/drivers/rtc/rtc-mxc_v2.c
|
|
@@ -373,6 +373,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 725bb7f58054b..12fed15dec66f 100644
|
|
--- a/drivers/scsi/aic7xxx/aic7xxx_core.c
|
|
+++ b/drivers/scsi/aic7xxx/aic7xxx_core.c
|
|
@@ -493,7 +493,7 @@ ahc_inq(struct ahc_softc *ahc, u_int port)
|
|
return ((ahc_inb(ahc, port))
|
|
| (ahc_inb(ahc, port+1) << 8)
|
|
| (ahc_inb(ahc, port+2) << 16)
|
|
- | (ahc_inb(ahc, port+3) << 24)
|
|
+ | (((uint64_t)ahc_inb(ahc, port+3)) << 24)
|
|
| (((uint64_t)ahc_inb(ahc, port+4)) << 32)
|
|
| (((uint64_t)ahc_inb(ahc, port+5)) << 40)
|
|
| (((uint64_t)ahc_inb(ahc, port+6)) << 48)
|
|
diff --git a/drivers/scsi/aic94xx/aic94xx_init.c b/drivers/scsi/aic94xx/aic94xx_init.c
|
|
index a195bfe9eccc0..7a78606598c4b 100644
|
|
--- a/drivers/scsi/aic94xx/aic94xx_init.c
|
|
+++ b/drivers/scsi/aic94xx/aic94xx_init.c
|
|
@@ -53,6 +53,7 @@ static struct scsi_host_template aic94xx_sht = {
|
|
.max_sectors = SCSI_DEFAULT_MAX_SECTORS,
|
|
.eh_device_reset_handler = sas_eh_device_reset_handler,
|
|
.eh_target_reset_handler = sas_eh_target_reset_handler,
|
|
+ .slave_alloc = sas_slave_alloc,
|
|
.target_destroy = sas_target_destroy,
|
|
.ioctl = sas_ioctl,
|
|
#ifdef CONFIG_COMPAT
|
|
diff --git a/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c b/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
|
|
index 2e529d67de730..2c1028183b242 100644
|
|
--- a/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
|
|
+++ b/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
|
|
@@ -1769,6 +1769,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 6ef8730c61a6e..b75d54339e40c 100644
|
|
--- a/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
|
|
+++ b/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
|
|
@@ -3545,6 +3545,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 e9a82a390672c..50a1c3478a6e0 100644
|
|
--- a/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
|
|
+++ b/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
|
|
@@ -3126,6 +3126,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 93bc9019667f1..9d7cc62ace2e6 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 a60b228d13f16..f40edb0dab704 100644
|
|
--- a/drivers/scsi/libfc/fc_rport.c
|
|
+++ b/drivers/scsi/libfc/fc_rport.c
|
|
@@ -1162,6 +1162,7 @@ static void fc_rport_prli_resp(struct fc_seq *sp, struct fc_frame *fp,
|
|
resp_code = (pp->spp.spp_flags & FC_SPP_RESP_MASK);
|
|
FC_RPORT_DBG(rdata, "PRLI spp_flags = 0x%x spp_type 0x%x\n",
|
|
pp->spp.spp_flags, pp->spp.spp_type);
|
|
+
|
|
rdata->spp_type = pp->spp.spp_type;
|
|
if (resp_code != FC_SPP_RESP_ACK) {
|
|
if (resp_code == FC_SPP_RESP_CONF)
|
|
@@ -1184,11 +1185,13 @@ static void fc_rport_prli_resp(struct fc_seq *sp, struct fc_frame *fp,
|
|
/*
|
|
* Call prli provider if we should act as a target
|
|
*/
|
|
- prov = fc_passive_prov[rdata->spp_type];
|
|
- if (prov) {
|
|
- memset(&temp_spp, 0, sizeof(temp_spp));
|
|
- prov->prli(rdata, pp->prli.prli_spp_len,
|
|
- &pp->spp, &temp_spp);
|
|
+ if (rdata->spp_type < FC_FC4_PROV_SIZE) {
|
|
+ prov = fc_passive_prov[rdata->spp_type];
|
|
+ if (prov) {
|
|
+ memset(&temp_spp, 0, sizeof(temp_spp));
|
|
+ prov->prli(rdata, pp->prli.prli_spp_len,
|
|
+ &pp->spp, &temp_spp);
|
|
+ }
|
|
}
|
|
/*
|
|
* Check if the image pair could be established
|
|
diff --git a/drivers/scsi/libsas/sas_scsi_host.c b/drivers/scsi/libsas/sas_scsi_host.c
|
|
index 1bf939818c981..ee44a0d7730b4 100644
|
|
--- a/drivers/scsi/libsas/sas_scsi_host.c
|
|
+++ b/drivers/scsi/libsas/sas_scsi_host.c
|
|
@@ -911,6 +911,14 @@ void sas_task_abort(struct sas_task *task)
|
|
blk_abort_request(sc->request);
|
|
}
|
|
|
|
+int sas_slave_alloc(struct scsi_device *sdev)
|
|
+{
|
|
+ if (dev_is_sata(sdev_to_domain_dev(sdev)) && sdev->lun)
|
|
+ return -ENXIO;
|
|
+
|
|
+ return 0;
|
|
+}
|
|
+
|
|
void sas_target_destroy(struct scsi_target *starget)
|
|
{
|
|
struct domain_device *found_dev = starget->hostdata;
|
|
@@ -957,5 +965,6 @@ EXPORT_SYMBOL_GPL(sas_task_abort);
|
|
EXPORT_SYMBOL_GPL(sas_phy_reset);
|
|
EXPORT_SYMBOL_GPL(sas_eh_device_reset_handler);
|
|
EXPORT_SYMBOL_GPL(sas_eh_target_reset_handler);
|
|
+EXPORT_SYMBOL_GPL(sas_slave_alloc);
|
|
EXPORT_SYMBOL_GPL(sas_target_destroy);
|
|
EXPORT_SYMBOL_GPL(sas_ioctl);
|
|
diff --git a/drivers/scsi/mvsas/mv_init.c b/drivers/scsi/mvsas/mv_init.c
|
|
index 6aa2697c4a15d..b03c0f35d7b04 100644
|
|
--- a/drivers/scsi/mvsas/mv_init.c
|
|
+++ b/drivers/scsi/mvsas/mv_init.c
|
|
@@ -46,6 +46,7 @@ static struct scsi_host_template mvs_sht = {
|
|
.max_sectors = SCSI_DEFAULT_MAX_SECTORS,
|
|
.eh_device_reset_handler = sas_eh_device_reset_handler,
|
|
.eh_target_reset_handler = sas_eh_target_reset_handler,
|
|
+ .slave_alloc = sas_slave_alloc,
|
|
.target_destroy = sas_target_destroy,
|
|
.ioctl = sas_ioctl,
|
|
#ifdef CONFIG_COMPAT
|
|
diff --git a/drivers/scsi/pm8001/pm8001_init.c b/drivers/scsi/pm8001/pm8001_init.c
|
|
index 0c0c886c7371d..13b8ddec61894 100644
|
|
--- a/drivers/scsi/pm8001/pm8001_init.c
|
|
+++ b/drivers/scsi/pm8001/pm8001_init.c
|
|
@@ -101,6 +101,7 @@ static struct scsi_host_template pm8001_sht = {
|
|
.max_sectors = SCSI_DEFAULT_MAX_SECTORS,
|
|
.eh_device_reset_handler = sas_eh_device_reset_handler,
|
|
.eh_target_reset_handler = sas_eh_target_reset_handler,
|
|
+ .slave_alloc = sas_slave_alloc,
|
|
.target_destroy = sas_target_destroy,
|
|
.ioctl = sas_ioctl,
|
|
#ifdef CONFIG_COMPAT
|
|
diff --git a/drivers/scsi/qedf/qedf_io.c b/drivers/scsi/qedf/qedf_io.c
|
|
index 4869ef813dc4f..63f99f4eeed97 100644
|
|
--- a/drivers/scsi/qedf/qedf_io.c
|
|
+++ b/drivers/scsi/qedf/qedf_io.c
|
|
@@ -1520,9 +1520,19 @@ void qedf_process_error_detect(struct qedf_ctx *qedf, struct fcoe_cqe *cqe,
|
|
{
|
|
int rval;
|
|
|
|
+ if (io_req == NULL) {
|
|
+ QEDF_INFO(NULL, QEDF_LOG_IO, "io_req is NULL.\n");
|
|
+ return;
|
|
+ }
|
|
+
|
|
+ if (io_req->fcport == NULL) {
|
|
+ QEDF_INFO(NULL, QEDF_LOG_IO, "fcport is NULL.\n");
|
|
+ return;
|
|
+ }
|
|
+
|
|
if (!cqe) {
|
|
QEDF_INFO(&qedf->dbg_ctx, QEDF_LOG_IO,
|
|
- "cqe is NULL for io_req %p\n", io_req);
|
|
+ "cqe is NULL for io_req %p\n", io_req);
|
|
return;
|
|
}
|
|
|
|
@@ -1538,6 +1548,16 @@ void qedf_process_error_detect(struct qedf_ctx *qedf, struct fcoe_cqe *cqe,
|
|
le32_to_cpu(cqe->cqe_info.err_info.rx_buf_off),
|
|
le32_to_cpu(cqe->cqe_info.err_info.rx_id));
|
|
|
|
+ /* When flush is active, let the cmds be flushed out from the cleanup context */
|
|
+ if (test_bit(QEDF_RPORT_IN_TARGET_RESET, &io_req->fcport->flags) ||
|
|
+ (test_bit(QEDF_RPORT_IN_LUN_RESET, &io_req->fcport->flags) &&
|
|
+ io_req->sc_cmd->device->lun == (u64)io_req->fcport->lun_reset_lun)) {
|
|
+ QEDF_ERR(&qedf->dbg_ctx,
|
|
+ "Dropping EQE for xid=0x%x as fcport is flushing",
|
|
+ io_req->xid);
|
|
+ return;
|
|
+ }
|
|
+
|
|
if (qedf->stop_io_on_error) {
|
|
qedf_stop_all_io(qedf);
|
|
return;
|
|
diff --git a/drivers/soc/tegra/fuse/fuse-tegra30.c b/drivers/soc/tegra/fuse/fuse-tegra30.c
|
|
index 9ea7f01684573..c1aa7815bd6ec 100644
|
|
--- a/drivers/soc/tegra/fuse/fuse-tegra30.c
|
|
+++ b/drivers/soc/tegra/fuse/fuse-tegra30.c
|
|
@@ -37,7 +37,8 @@
|
|
defined(CONFIG_ARCH_TEGRA_132_SOC) || \
|
|
defined(CONFIG_ARCH_TEGRA_210_SOC) || \
|
|
defined(CONFIG_ARCH_TEGRA_186_SOC) || \
|
|
- defined(CONFIG_ARCH_TEGRA_194_SOC)
|
|
+ defined(CONFIG_ARCH_TEGRA_194_SOC) || \
|
|
+ defined(CONFIG_ARCH_TEGRA_234_SOC)
|
|
static u32 tegra30_fuse_read_early(struct tegra_fuse *fuse, unsigned int offset)
|
|
{
|
|
if (WARN_ON(!fuse->base))
|
|
diff --git a/drivers/thermal/imx_sc_thermal.c b/drivers/thermal/imx_sc_thermal.c
|
|
index b01d28eca7eec..8d76dbfde6a9f 100644
|
|
--- a/drivers/thermal/imx_sc_thermal.c
|
|
+++ b/drivers/thermal/imx_sc_thermal.c
|
|
@@ -93,6 +93,7 @@ static int imx_sc_thermal_probe(struct platform_device *pdev)
|
|
for_each_available_child_of_node(np, child) {
|
|
sensor = devm_kzalloc(&pdev->dev, sizeof(*sensor), GFP_KERNEL);
|
|
if (!sensor) {
|
|
+ of_node_put(child);
|
|
of_node_put(sensor_np);
|
|
return -ENOMEM;
|
|
}
|
|
@@ -104,6 +105,7 @@ static int imx_sc_thermal_probe(struct platform_device *pdev)
|
|
dev_err(&pdev->dev,
|
|
"failed to get valid sensor resource id: %d\n",
|
|
ret);
|
|
+ of_node_put(child);
|
|
break;
|
|
}
|
|
|
|
@@ -114,6 +116,7 @@ static int imx_sc_thermal_probe(struct platform_device *pdev)
|
|
if (IS_ERR(sensor->tzd)) {
|
|
dev_err(&pdev->dev, "failed to register thermal zone\n");
|
|
ret = PTR_ERR(sensor->tzd);
|
|
+ of_node_put(child);
|
|
break;
|
|
}
|
|
|
|
diff --git a/drivers/thermal/rcar_gen3_thermal.c b/drivers/thermal/rcar_gen3_thermal.c
|
|
index 8d724d92d57f4..c4f28752d1488 100644
|
|
--- a/drivers/thermal/rcar_gen3_thermal.c
|
|
+++ b/drivers/thermal/rcar_gen3_thermal.c
|
|
@@ -366,7 +366,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, irq, i;
|
|
@@ -434,8 +434,7 @@ static int rcar_gen3_thermal_probe(struct platform_device *pdev)
|
|
priv->tscs[i] = tsc;
|
|
|
|
priv->thermal_init(tsc);
|
|
- rcar_gen3_thermal_calc_coefs(tsc, ptat, thcodes[i],
|
|
- *rcar_gen3_ths_tj_1);
|
|
+ rcar_gen3_thermal_calc_coefs(tsc, ptat, thcodes[i], *ths_tj_1);
|
|
|
|
zone = devm_thermal_zone_of_sensor_register(dev, i, tsc,
|
|
&rcar_gen3_tz_of_ops);
|
|
diff --git a/drivers/thermal/sprd_thermal.c b/drivers/thermal/sprd_thermal.c
|
|
index fe06cccf14b38..fff80fc180028 100644
|
|
--- a/drivers/thermal/sprd_thermal.c
|
|
+++ b/drivers/thermal/sprd_thermal.c
|
|
@@ -388,7 +388,7 @@ static int sprd_thm_probe(struct platform_device *pdev)
|
|
sen = devm_kzalloc(&pdev->dev, sizeof(*sen), GFP_KERNEL);
|
|
if (!sen) {
|
|
ret = -ENOMEM;
|
|
- goto disable_clk;
|
|
+ goto of_put;
|
|
}
|
|
|
|
sen->data = thm;
|
|
@@ -397,13 +397,13 @@ static int sprd_thm_probe(struct platform_device *pdev)
|
|
ret = of_property_read_u32(sen_child, "reg", &sen->id);
|
|
if (ret) {
|
|
dev_err(&pdev->dev, "get sensor reg failed");
|
|
- goto disable_clk;
|
|
+ goto of_put;
|
|
}
|
|
|
|
ret = sprd_thm_sensor_calibration(sen_child, thm, sen);
|
|
if (ret) {
|
|
dev_err(&pdev->dev, "efuse cal analysis failed");
|
|
- goto disable_clk;
|
|
+ goto of_put;
|
|
}
|
|
|
|
sprd_thm_sensor_init(thm, sen);
|
|
@@ -416,19 +416,20 @@ static int sprd_thm_probe(struct platform_device *pdev)
|
|
dev_err(&pdev->dev, "register thermal zone failed %d\n",
|
|
sen->id);
|
|
ret = PTR_ERR(sen->tzd);
|
|
- goto disable_clk;
|
|
+ goto of_put;
|
|
}
|
|
|
|
thm->sensor[sen->id] = sen;
|
|
}
|
|
+ /* sen_child set to NULL at this point */
|
|
|
|
ret = sprd_thm_set_ready(thm);
|
|
if (ret)
|
|
- goto disable_clk;
|
|
+ goto of_put;
|
|
|
|
ret = sprd_thm_wait_temp_ready(thm);
|
|
if (ret)
|
|
- goto disable_clk;
|
|
+ goto of_put;
|
|
|
|
for (i = 0; i < thm->nr_sensors; i++)
|
|
sprd_thm_toggle_sensor(thm->sensor[i], true);
|
|
@@ -436,6 +437,8 @@ static int sprd_thm_probe(struct platform_device *pdev)
|
|
platform_set_drvdata(pdev, thm);
|
|
return 0;
|
|
|
|
+of_put:
|
|
+ of_node_put(sen_child);
|
|
disable_clk:
|
|
clk_disable_unprepare(thm->clk);
|
|
return ret;
|
|
diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c
|
|
index c6d74bc1c90bb..e669f83faa3c5 100644
|
|
--- a/drivers/thermal/thermal_core.c
|
|
+++ b/drivers/thermal/thermal_core.c
|
|
@@ -1509,7 +1509,7 @@ free_tz:
|
|
EXPORT_SYMBOL_GPL(thermal_zone_device_register);
|
|
|
|
/**
|
|
- * thermal_device_unregister - removes the registered thermal zone device
|
|
+ * thermal_zone_device_unregister - removes the registered thermal zone device
|
|
* @tz: the thermal zone device to remove
|
|
*/
|
|
void thermal_zone_device_unregister(struct thermal_zone_device *tz)
|
|
diff --git a/drivers/thermal/thermal_of.c b/drivers/thermal/thermal_of.c
|
|
index 5b76f9a1280d5..6379f26a335f6 100644
|
|
--- a/drivers/thermal/thermal_of.c
|
|
+++ b/drivers/thermal/thermal_of.c
|
|
@@ -559,6 +559,9 @@ void thermal_zone_of_sensor_unregister(struct device *dev,
|
|
if (!tz)
|
|
return;
|
|
|
|
+ /* stop temperature polling */
|
|
+ thermal_zone_device_disable(tzd);
|
|
+
|
|
mutex_lock(&tzd->lock);
|
|
tzd->ops->get_temp = NULL;
|
|
tzd->ops->get_trend = NULL;
|
|
diff --git a/drivers/usb/cdns3/gadget.c b/drivers/usb/cdns3/gadget.c
|
|
index c24c0e3440e39..9d38f864cb68c 100644
|
|
--- a/drivers/usb/cdns3/gadget.c
|
|
+++ b/drivers/usb/cdns3/gadget.c
|
|
@@ -2006,7 +2006,7 @@ static void cdns3_configure_dmult(struct cdns3_device *priv_dev,
|
|
else
|
|
mask = BIT(priv_ep->num);
|
|
|
|
- if (priv_ep->type != USB_ENDPOINT_XFER_ISOC) {
|
|
+ if (priv_ep->type != USB_ENDPOINT_XFER_ISOC && !priv_ep->dir) {
|
|
cdns3_set_register_bit(®s->tdl_from_trb, mask);
|
|
cdns3_set_register_bit(®s->tdl_beh, mask);
|
|
cdns3_set_register_bit(®s->tdl_beh2, mask);
|
|
@@ -2045,15 +2045,13 @@ int cdns3_ep_config(struct cdns3_endpoint *priv_ep, bool enable)
|
|
case USB_ENDPOINT_XFER_INT:
|
|
ep_cfg = EP_CFG_EPTYPE(USB_ENDPOINT_XFER_INT);
|
|
|
|
- if ((priv_dev->dev_ver == DEV_VER_V2 && !priv_ep->dir) ||
|
|
- priv_dev->dev_ver > DEV_VER_V2)
|
|
+ if (priv_dev->dev_ver >= DEV_VER_V2 && !priv_ep->dir)
|
|
ep_cfg |= EP_CFG_TDL_CHK;
|
|
break;
|
|
case USB_ENDPOINT_XFER_BULK:
|
|
ep_cfg = EP_CFG_EPTYPE(USB_ENDPOINT_XFER_BULK);
|
|
|
|
- if ((priv_dev->dev_ver == DEV_VER_V2 && !priv_ep->dir) ||
|
|
- priv_dev->dev_ver > DEV_VER_V2)
|
|
+ if (priv_dev->dev_ver >= DEV_VER_V2 && !priv_ep->dir)
|
|
ep_cfg |= EP_CFG_TDL_CHK;
|
|
break;
|
|
default:
|
|
diff --git a/fs/cifs/cifs_dfs_ref.c b/fs/cifs/cifs_dfs_ref.c
|
|
index cc3ada12848d9..42125601ebb10 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 ec77ccfea923d..b8850c81068a0 100644
|
|
--- a/fs/f2fs/sysfs.c
|
|
+++ b/fs/f2fs/sysfs.c
|
|
@@ -612,7 +612,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);
|
|
#endif
|
|
@@ -700,7 +702,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/include/linux/bpf.h b/include/linux/bpf.h
|
|
index 8ad819132dde3..c3ccb242d1993 100644
|
|
--- a/include/linux/bpf.h
|
|
+++ b/include/linux/bpf.h
|
|
@@ -752,6 +752,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 e72787731a5b2..176457145bcf2 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 dfabf4660a670..fbc6805358da0 100644
|
|
--- a/include/linux/swap.h
|
|
+++ b/include/linux/swap.h
|
|
@@ -503,15 +503,6 @@ static inline struct swap_info_struct *swp_swap_info(swp_entry_t entry)
|
|
return NULL;
|
|
}
|
|
|
|
-static inline struct swap_info_struct *get_swap_device(swp_entry_t entry)
|
|
-{
|
|
- return NULL;
|
|
-}
|
|
-
|
|
-static inline void put_swap_device(struct swap_info_struct *si)
|
|
-{
|
|
-}
|
|
-
|
|
#define swap_address_space(entry) (NULL)
|
|
#define get_nr_swap_pages() 0L
|
|
#define total_swap_pages 0L
|
|
diff --git a/include/linux/swapops.h b/include/linux/swapops.h
|
|
index 6430a94c69818..0d429a102d417 100644
|
|
--- a/include/linux/swapops.h
|
|
+++ b/include/linux/swapops.h
|
|
@@ -265,6 +265,8 @@ static inline swp_entry_t pmd_to_swp_entry(pmd_t pmd)
|
|
|
|
if (pmd_swp_soft_dirty(pmd))
|
|
pmd = pmd_swp_clear_soft_dirty(pmd);
|
|
+ if (pmd_swp_uffd_wp(pmd))
|
|
+ pmd = pmd_swp_clear_uffd_wp(pmd);
|
|
arch_entry = __pmd_to_swp_entry(pmd);
|
|
return swp_entry(__swp_type(arch_entry), __swp_offset(arch_entry));
|
|
}
|
|
diff --git a/include/net/dst_metadata.h b/include/net/dst_metadata.h
|
|
index 56cb3c38569a7..14efa0ded75dd 100644
|
|
--- a/include/net/dst_metadata.h
|
|
+++ b/include/net/dst_metadata.h
|
|
@@ -45,7 +45,9 @@ skb_tunnel_info(const struct sk_buff *skb)
|
|
return &md_dst->u.tun_info;
|
|
|
|
dst = skb_dst(skb);
|
|
- if (dst && dst->lwtstate)
|
|
+ if (dst && dst->lwtstate &&
|
|
+ (dst->lwtstate->type == LWTUNNEL_ENCAP_IP ||
|
|
+ dst->lwtstate->type == LWTUNNEL_ENCAP_IP6))
|
|
return lwt_tun_info(dst->lwtstate);
|
|
|
|
return NULL;
|
|
diff --git a/include/net/ip6_route.h b/include/net/ip6_route.h
|
|
index 37a7fb1969d6c..42fe4e1b6a8c7 100644
|
|
--- a/include/net/ip6_route.h
|
|
+++ b/include/net/ip6_route.h
|
|
@@ -262,7 +262,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 7d66c61d22c7d..eff611da5780b 100644
|
|
--- a/include/net/tcp.h
|
|
+++ b/include/net/tcp.h
|
|
@@ -676,6 +676,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 239c6b3b59934..75c2d184018a5 100644
|
|
--- a/kernel/bpf/core.c
|
|
+++ b/kernel/bpf/core.c
|
|
@@ -2167,8 +2167,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 bf6798fb23319..1f8bf2b39d506 100644
|
|
--- a/kernel/bpf/verifier.c
|
|
+++ b/kernel/bpf/verifier.c
|
|
@@ -11157,33 +11157,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.
|
|
@@ -11213,18 +11199,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
|
|
@@ -11293,14 +11267,22 @@ static int jit_subprogs(struct bpf_verifier_env *env)
|
|
bpf_prog_free_unused_jited_linfo(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 32c0905bca849..262b02d750076 100644
|
|
--- a/kernel/sched/fair.c
|
|
+++ b/kernel/sched/fair.c
|
|
@@ -5047,7 +5047,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))
|
|
@@ -5055,7 +5055,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 9fe622ff2fc4a..594368f6134f1 100644
|
|
--- a/mm/huge_memory.c
|
|
+++ b/mm/huge_memory.c
|
|
@@ -1012,7 +1012,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;
|
|
@@ -1021,7 +1021,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);
|
|
@@ -1035,14 +1035,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);
|
|
@@ -1053,11 +1045,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;
|
|
@@ -1074,17 +1070,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);
|
|
@@ -1097,23 +1089,25 @@ 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(is_cow_mapping(vma->vm_flags) &&
|
|
+ if (unlikely(is_cow_mapping(src_vma->vm_flags) &&
|
|
atomic_read(&src_mm->has_pinned) &&
|
|
page_maybe_dma_pinned(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);
|
|
|
|
@@ -1832,6 +1826,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;
|
|
@@ -2998,6 +2994,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 0a905e0a7e672..4fe24cd865a79 100644
|
|
--- a/mm/memory.c
|
|
+++ b/mm/memory.c
|
|
@@ -696,10 +696,10 @@ out:
|
|
|
|
static unsigned long
|
|
copy_nonpresent_pte(struct mm_struct *dst_mm, struct mm_struct *src_mm,
|
|
- pte_t *dst_pte, pte_t *src_pte, struct vm_area_struct *vma,
|
|
- unsigned long addr, int *rss)
|
|
+ pte_t *dst_pte, pte_t *src_pte, struct vm_area_struct *dst_vma,
|
|
+ struct vm_area_struct *src_vma, unsigned long addr, int *rss)
|
|
{
|
|
- unsigned long vm_flags = vma->vm_flags;
|
|
+ unsigned long vm_flags = dst_vma->vm_flags;
|
|
pte_t pte = *src_pte;
|
|
struct page *page;
|
|
swp_entry_t entry = pte_to_swp_entry(pte);
|
|
@@ -768,6 +768,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;
|
|
}
|
|
@@ -839,6 +841,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;
|
|
}
|
|
@@ -888,12 +893,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);
|
|
@@ -968,7 +968,8 @@ again:
|
|
if (unlikely(!pte_present(*src_pte))) {
|
|
entry.val = copy_nonpresent_pte(dst_mm, src_mm,
|
|
dst_pte, src_pte,
|
|
- src_vma, addr, rss);
|
|
+ dst_vma, src_vma,
|
|
+ addr, rss);
|
|
if (entry.val)
|
|
break;
|
|
progress += 8;
|
|
@@ -1045,8 +1046,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)
|
|
@@ -3302,7 +3303,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;
|
|
@@ -3330,16 +3330,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(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 */
|
|
@@ -3510,8 +3508,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);
|
|
@@ -3523,8 +3519,6 @@ out_release:
|
|
unlock_page(swapcache);
|
|
put_page(swapcache);
|
|
}
|
|
- if (si)
|
|
- put_swap_device(si);
|
|
return ret;
|
|
}
|
|
|
|
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
|
|
index e30d88efd7fbb..0166558d3d647 100644
|
|
--- a/mm/page_alloc.c
|
|
+++ b/mm/page_alloc.c
|
|
@@ -6129,7 +6129,7 @@ void __ref memmap_init_zone_device(struct zone *zone,
|
|
return;
|
|
|
|
/*
|
|
- * The call to memmap_init_zone should have already taken care
|
|
+ * The call to memmap_init should have already taken care
|
|
* of the pages reserved for the memmap, so we can just jump to
|
|
* the end of that region and start processing the device pages.
|
|
*/
|
|
@@ -6194,7 +6194,7 @@ static void __meminit zone_init_free_lists(struct zone *zone)
|
|
/*
|
|
* Only struct pages that correspond to ranges defined by memblock.memory
|
|
* are zeroed and initialized by going through __init_single_page() during
|
|
- * memmap_init_zone().
|
|
+ * memmap_init_zone_range().
|
|
*
|
|
* But, there could be struct pages that correspond to holes in
|
|
* memblock.memory. This can happen because of the following reasons:
|
|
@@ -6213,9 +6213,9 @@ static void __meminit zone_init_free_lists(struct zone *zone)
|
|
* zone/node above the hole except for the trailing pages in the last
|
|
* section that will be appended to the zone/node below.
|
|
*/
|
|
-static u64 __meminit init_unavailable_range(unsigned long spfn,
|
|
- unsigned long epfn,
|
|
- int zone, int node)
|
|
+static void __init init_unavailable_range(unsigned long spfn,
|
|
+ unsigned long epfn,
|
|
+ int zone, int node)
|
|
{
|
|
unsigned long pfn;
|
|
u64 pgcnt = 0;
|
|
@@ -6231,58 +6231,84 @@ static u64 __meminit init_unavailable_range(unsigned long spfn,
|
|
pgcnt++;
|
|
}
|
|
|
|
- return pgcnt;
|
|
+ if (pgcnt)
|
|
+ pr_info("On node %d, zone %s: %lld pages in unavailable ranges",
|
|
+ node, zone_names[zone], pgcnt);
|
|
}
|
|
#else
|
|
-static inline u64 init_unavailable_range(unsigned long spfn, unsigned long epfn,
|
|
- int zone, int node)
|
|
+static inline void init_unavailable_range(unsigned long spfn,
|
|
+ unsigned long epfn,
|
|
+ int zone, int node)
|
|
{
|
|
- return 0;
|
|
}
|
|
#endif
|
|
|
|
-void __meminit __weak memmap_init(unsigned long size, int nid,
|
|
- unsigned long zone,
|
|
- unsigned long range_start_pfn)
|
|
+static void __init memmap_init_zone_range(struct zone *zone,
|
|
+ unsigned long start_pfn,
|
|
+ unsigned long end_pfn,
|
|
+ unsigned long *hole_pfn)
|
|
+{
|
|
+ unsigned long zone_start_pfn = zone->zone_start_pfn;
|
|
+ unsigned long zone_end_pfn = zone_start_pfn + zone->spanned_pages;
|
|
+ int nid = zone_to_nid(zone), zone_id = zone_idx(zone);
|
|
+
|
|
+ start_pfn = clamp(start_pfn, zone_start_pfn, zone_end_pfn);
|
|
+ end_pfn = clamp(end_pfn, zone_start_pfn, zone_end_pfn);
|
|
+
|
|
+ if (start_pfn >= end_pfn)
|
|
+ return;
|
|
+
|
|
+ memmap_init_zone(end_pfn - start_pfn, nid, zone_id, start_pfn,
|
|
+ zone_end_pfn, MEMINIT_EARLY, NULL, MIGRATE_MOVABLE);
|
|
+
|
|
+ if (*hole_pfn < start_pfn)
|
|
+ init_unavailable_range(*hole_pfn, start_pfn, zone_id, nid);
|
|
+
|
|
+ *hole_pfn = end_pfn;
|
|
+}
|
|
+
|
|
+void __init __weak memmap_init(void)
|
|
{
|
|
- static unsigned long hole_pfn;
|
|
unsigned long start_pfn, end_pfn;
|
|
- unsigned long range_end_pfn = range_start_pfn + size;
|
|
- int i;
|
|
- u64 pgcnt = 0;
|
|
+ unsigned long hole_pfn = 0;
|
|
+ int i, j, zone_id, nid;
|
|
|
|
- for_each_mem_pfn_range(i, nid, &start_pfn, &end_pfn, NULL) {
|
|
- start_pfn = clamp(start_pfn, range_start_pfn, range_end_pfn);
|
|
- end_pfn = clamp(end_pfn, range_start_pfn, range_end_pfn);
|
|
+ for_each_mem_pfn_range(i, MAX_NUMNODES, &start_pfn, &end_pfn, &nid) {
|
|
+ struct pglist_data *node = NODE_DATA(nid);
|
|
|
|
- if (end_pfn > start_pfn) {
|
|
- size = end_pfn - start_pfn;
|
|
- memmap_init_zone(size, nid, zone, start_pfn, range_end_pfn,
|
|
- MEMINIT_EARLY, NULL, MIGRATE_MOVABLE);
|
|
- }
|
|
+ for (j = 0; j < MAX_NR_ZONES; j++) {
|
|
+ struct zone *zone = node->node_zones + j;
|
|
+
|
|
+ if (!populated_zone(zone))
|
|
+ continue;
|
|
|
|
- if (hole_pfn < start_pfn)
|
|
- pgcnt += init_unavailable_range(hole_pfn, start_pfn,
|
|
- zone, nid);
|
|
- hole_pfn = end_pfn;
|
|
+ memmap_init_zone_range(zone, start_pfn, end_pfn,
|
|
+ &hole_pfn);
|
|
+ zone_id = j;
|
|
+ }
|
|
}
|
|
|
|
#ifdef CONFIG_SPARSEMEM
|
|
/*
|
|
- * Initialize the hole in the range [zone_end_pfn, section_end].
|
|
- * If zone boundary falls in the middle of a section, this hole
|
|
- * will be re-initialized during the call to this function for the
|
|
- * higher zone.
|
|
+ * Initialize the memory map for hole in the range [memory_end,
|
|
+ * section_end].
|
|
+ * Append the pages in this hole to the highest zone in the last
|
|
+ * node.
|
|
+ * The call to init_unavailable_range() is outside the ifdef to
|
|
+ * silence the compiler warining about zone_id set but not used;
|
|
+ * for FLATMEM it is a nop anyway
|
|
*/
|
|
- end_pfn = round_up(range_end_pfn, PAGES_PER_SECTION);
|
|
+ end_pfn = round_up(end_pfn, PAGES_PER_SECTION);
|
|
if (hole_pfn < end_pfn)
|
|
- pgcnt += init_unavailable_range(hole_pfn, end_pfn,
|
|
- zone, nid);
|
|
#endif
|
|
+ init_unavailable_range(hole_pfn, end_pfn, zone_id, nid);
|
|
+}
|
|
|
|
- if (pgcnt)
|
|
- pr_info(" %s zone: %llu pages in unavailable ranges\n",
|
|
- zone_names[zone], pgcnt);
|
|
+/* A stub for backwards compatibility with custom implementatin on IA-64 */
|
|
+void __meminit __weak arch_memmap_init(unsigned long size, int nid,
|
|
+ unsigned long zone,
|
|
+ unsigned long range_start_pfn)
|
|
+{
|
|
}
|
|
|
|
static int zone_batchsize(struct zone *zone)
|
|
@@ -6981,7 +7007,7 @@ static void __init free_area_init_core(struct pglist_data *pgdat)
|
|
set_pageblock_order();
|
|
setup_usemap(pgdat, zone, zone_start_pfn, size);
|
|
init_currently_empty_zone(zone, zone_start_pfn, size);
|
|
- memmap_init(size, nid, j, zone_start_pfn);
|
|
+ arch_memmap_init(size, nid, j, zone_start_pfn);
|
|
}
|
|
}
|
|
|
|
@@ -7507,6 +7533,8 @@ void __init free_area_init(unsigned long *max_zone_pfn)
|
|
node_set_state(nid, N_MEMORY);
|
|
check_for_memory(pgdat, nid);
|
|
}
|
|
+
|
|
+ memmap_init();
|
|
}
|
|
|
|
static int __init cmdline_parse_core(char *p, unsigned long *core,
|
|
diff --git a/mm/shmem.c b/mm/shmem.c
|
|
index 96df61c8af653..ae8adca3b56d1 100644
|
|
--- a/mm/shmem.c
|
|
+++ b/mm/shmem.c
|
|
@@ -1698,8 +1698,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;
|
|
|
|
@@ -1707,12 +1706,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) {
|
|
@@ -1774,8 +1767,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))
|
|
@@ -1786,9 +1777,6 @@ unlock:
|
|
put_page(page);
|
|
}
|
|
|
|
- if (si)
|
|
- put_swap_device(si);
|
|
-
|
|
return error;
|
|
}
|
|
|
|
diff --git a/net/bridge/br_if.c b/net/bridge/br_if.c
|
|
index a0e9a7937412a..857a2c512ca39 100644
|
|
--- a/net/bridge/br_if.c
|
|
+++ b/net/bridge/br_if.c
|
|
@@ -561,7 +561,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) ||
|
|
@@ -651,6 +651,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);
|
|
|
|
@@ -700,6 +713,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/dsa/switch.c b/net/dsa/switch.c
|
|
index 3fb362b6874e3..a44035872cff4 100644
|
|
--- a/net/dsa/switch.c
|
|
+++ b/net/dsa/switch.c
|
|
@@ -112,11 +112,11 @@ static int dsa_switch_bridge_leave(struct dsa_switch *ds,
|
|
int err, i;
|
|
|
|
if (dst->index == info->tree_index && ds->index == info->sw_index &&
|
|
- ds->ops->port_bridge_join)
|
|
+ ds->ops->port_bridge_leave)
|
|
ds->ops->port_bridge_leave(ds, info->port, info->br);
|
|
|
|
if ((dst->index != info->tree_index || ds->index != info->sw_index) &&
|
|
- ds->ops->crosschip_bridge_join)
|
|
+ ds->ops->crosschip_bridge_leave)
|
|
ds->ops->crosschip_bridge_leave(ds, info->tree_index,
|
|
info->sw_index, info->port,
|
|
info->br);
|
|
diff --git a/net/ipv4/ip_tunnel.c b/net/ipv4/ip_tunnel.c
|
|
index f6cc26de5ed30..0dca00745ac3c 100644
|
|
--- a/net/ipv4/ip_tunnel.c
|
|
+++ b/net/ipv4/ip_tunnel.c
|
|
@@ -317,7 +317,7 @@ static int ip_tunnel_bind_dev(struct net_device *dev)
|
|
}
|
|
|
|
dev->needed_headroom = t_hlen + hlen;
|
|
- mtu -= t_hlen;
|
|
+ mtu -= t_hlen + (dev->type == ARPHRD_ETHER ? dev->hard_header_len : 0);
|
|
|
|
if (mtu < IPV4_MIN_MTU)
|
|
mtu = IPV4_MIN_MTU;
|
|
@@ -348,6 +348,9 @@ static struct ip_tunnel *ip_tunnel_create(struct net *net,
|
|
t_hlen = nt->hlen + sizeof(struct iphdr);
|
|
dev->min_mtu = ETH_MIN_MTU;
|
|
dev->max_mtu = IP_MAX_MTU - t_hlen;
|
|
+ if (dev->type == ARPHRD_ETHER)
|
|
+ dev->max_mtu -= dev->hard_header_len;
|
|
+
|
|
ip_tunnel_add(itn, nt);
|
|
return nt;
|
|
|
|
@@ -489,11 +492,14 @@ static int tnl_update_pmtu(struct net_device *dev, struct sk_buff *skb,
|
|
|
|
tunnel_hlen = md ? tunnel_hlen : tunnel->hlen;
|
|
pkt_size = skb->len - tunnel_hlen;
|
|
+ pkt_size -= dev->type == ARPHRD_ETHER ? dev->hard_header_len : 0;
|
|
|
|
- if (df)
|
|
+ if (df) {
|
|
mtu = dst_mtu(&rt->dst) - (sizeof(struct iphdr) + tunnel_hlen);
|
|
- else
|
|
+ mtu -= dev->type == ARPHRD_ETHER ? dev->hard_header_len : 0;
|
|
+ } else {
|
|
mtu = skb_valid_dst(skb) ? dst_mtu(skb_dst(skb)) : dev->mtu;
|
|
+ }
|
|
|
|
if (skb_valid_dst(skb))
|
|
skb_dst_update_pmtu_no_confirm(skb, mtu);
|
|
@@ -972,6 +978,9 @@ int __ip_tunnel_change_mtu(struct net_device *dev, int new_mtu, bool strict)
|
|
int t_hlen = tunnel->hlen + sizeof(struct iphdr);
|
|
int max_mtu = IP_MAX_MTU - t_hlen;
|
|
|
|
+ if (dev->type == ARPHRD_ETHER)
|
|
+ max_mtu -= dev->hard_header_len;
|
|
+
|
|
if (new_mtu < ETH_MIN_MTU)
|
|
return -EINVAL;
|
|
|
|
@@ -1149,6 +1158,9 @@ int ip_tunnel_newlink(struct net_device *dev, struct nlattr *tb[],
|
|
if (tb[IFLA_MTU]) {
|
|
unsigned int max = IP_MAX_MTU - (nt->hlen + sizeof(struct iphdr));
|
|
|
|
+ if (dev->type == ARPHRD_ETHER)
|
|
+ max -= dev->hard_header_len;
|
|
+
|
|
mtu = clamp(dev->mtu, (unsigned int)ETH_MIN_MTU, max);
|
|
}
|
|
|
|
diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
|
|
index 2384ac048bead..54230852e5f95 100644
|
|
--- a/net/ipv4/tcp.c
|
|
+++ b/net/ipv4/tcp.c
|
|
@@ -1361,6 +1361,9 @@ new_segment:
|
|
}
|
|
pfrag->offset += copy;
|
|
} else {
|
|
+ if (!sk_wmem_schedule(sk, copy))
|
|
+ goto wait_for_space;
|
|
+
|
|
err = skb_zerocopy_iter_stream(sk, skb, msg, copy, uarg);
|
|
if (err == -EMSGSIZE || err == -EEXIST) {
|
|
tcp_mark_push(tp, skb);
|
|
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
|
|
index 4d4b641c204d4..ac8d38e044002 100644
|
|
--- a/net/ipv4/tcp_input.c
|
|
+++ b/net/ipv4/tcp_input.c
|
|
@@ -5911,8 +5911,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 ab8ed0fc47697..5212db9ea157e 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 f99494637ff47..19ef4577b70d6 100644
|
|
--- a/net/ipv4/tcp_output.c
|
|
+++ b/net/ipv4/tcp_output.c
|
|
@@ -1730,6 +1730,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 fbb9a11fe4a37..e73312546c5a1 100644
|
|
--- a/net/ipv4/udp.c
|
|
+++ b/net/ipv4/udp.c
|
|
@@ -1097,7 +1097,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);
|
|
@@ -2655,7 +2655,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:
|
|
@@ -2750,7 +2750,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/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c
|
|
index 3f9bb6dd1f986..df33145b876c6 100644
|
|
--- a/net/ipv6/tcp_ipv6.c
|
|
+++ b/net/ipv6/tcp_ipv6.c
|
|
@@ -348,11 +348,20 @@ failure:
|
|
static void tcp_v6_mtu_reduced(struct sock *sk)
|
|
{
|
|
struct dst_entry *dst;
|
|
+ u32 mtu;
|
|
|
|
if ((1 << sk->sk_state) & (TCPF_LISTEN | TCPF_CLOSE))
|
|
return;
|
|
|
|
- dst = inet6_csk_update_pmtu(sk, tcp_sk(sk)->mtu_info);
|
|
+ mtu = READ_ONCE(tcp_sk(sk)->mtu_info);
|
|
+
|
|
+ /* Drop requests trying to increase our current mss.
|
|
+ * Check done in __ip6_rt_update_pmtu() is too late.
|
|
+ */
|
|
+ if (tcp_mtu_to_mss(sk, mtu) >= tcp_sk(sk)->mss_cache)
|
|
+ return;
|
|
+
|
|
+ dst = inet6_csk_update_pmtu(sk, mtu);
|
|
if (!dst)
|
|
return;
|
|
|
|
@@ -433,6 +442,8 @@ static int tcp_v6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
|
|
}
|
|
|
|
if (type == ICMPV6_PKT_TOOBIG) {
|
|
+ u32 mtu = ntohl(info);
|
|
+
|
|
/* We are not interested in TCP_LISTEN and open_requests
|
|
* (SYN-ACKs send out by Linux are always <576bytes so
|
|
* they should go through unfragmented).
|
|
@@ -443,7 +454,11 @@ static int tcp_v6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
|
|
if (!ip6_sk_accept_pmtu(sk))
|
|
goto out;
|
|
|
|
- tp->mtu_info = ntohl(info);
|
|
+ if (mtu < IPV6_MIN_MTU)
|
|
+ goto out;
|
|
+
|
|
+ WRITE_ONCE(tp->mtu_info, mtu);
|
|
+
|
|
if (!sock_owned_by_user(sk))
|
|
tcp_v6_mtu_reduced(sk);
|
|
else if (!test_and_set_bit(TCP_MTU_REDUCED_DEFERRED,
|
|
@@ -540,7 +555,7 @@ static int tcp_v6_send_synack(const struct sock *sk, struct dst_entry *dst,
|
|
opt = ireq->ipv6_opt;
|
|
if (!opt)
|
|
opt = rcu_dereference(np->opt);
|
|
- err = ip6_xmit(sk, skb, fl6, sk->sk_mark, opt,
|
|
+ err = ip6_xmit(sk, skb, fl6, skb->mark ? : sk->sk_mark, opt,
|
|
tclass, sk->sk_priority);
|
|
rcu_read_unlock();
|
|
err = net_xmit_eval(err);
|
|
diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c
|
|
index e2de58d6cdce2..a448b6cd47273 100644
|
|
--- a/net/ipv6/udp.c
|
|
+++ b/net/ipv6/udp.c
|
|
@@ -1294,7 +1294,7 @@ int udpv6_sendmsg(struct sock *sk, struct msghdr *msg, size_t len)
|
|
int (*getfrag)(void *, char *, int, int, int, struct sk_buff *);
|
|
|
|
ipcm6_init(&ipc6);
|
|
- ipc6.gso_size = up->gso_size;
|
|
+ ipc6.gso_size = READ_ONCE(up->gso_size);
|
|
ipc6.sockc.tsflags = sk->sk_tsflags;
|
|
ipc6.sockc.mark = sk->sk_mark;
|
|
|
|
diff --git a/net/ipv6/xfrm6_output.c b/net/ipv6/xfrm6_output.c
|
|
index 8b84d534b19d8..6abb45a671994 100644
|
|
--- a/net/ipv6/xfrm6_output.c
|
|
+++ b/net/ipv6/xfrm6_output.c
|
|
@@ -56,7 +56,7 @@ static int __xfrm6_output(struct net *net, struct sock *sk, struct sk_buff *skb)
|
|
{
|
|
struct dst_entry *dst = skb_dst(skb);
|
|
struct xfrm_state *x = dst->xfrm;
|
|
- int mtu;
|
|
+ unsigned int mtu;
|
|
bool toobig;
|
|
|
|
#ifdef CONFIG_NETFILTER
|
|
diff --git a/net/netfilter/nf_conntrack_netlink.c b/net/netfilter/nf_conntrack_netlink.c
|
|
index c1bfd8181341a..cb4cfa4f61a8d 100644
|
|
--- a/net/netfilter/nf_conntrack_netlink.c
|
|
+++ b/net/netfilter/nf_conntrack_netlink.c
|
|
@@ -213,6 +213,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;
|
|
@@ -228,9 +229,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/sched/act_ct.c b/net/sched/act_ct.c
|
|
index 7ef074c6dd160..812c3c70a53a0 100644
|
|
--- a/net/sched/act_ct.c
|
|
+++ b/net/sched/act_ct.c
|
|
@@ -320,11 +320,22 @@ err_alloc:
|
|
|
|
static void tcf_ct_flow_table_cleanup_work(struct work_struct *work)
|
|
{
|
|
+ struct flow_block_cb *block_cb, *tmp_cb;
|
|
struct tcf_ct_flow_table *ct_ft;
|
|
+ struct flow_block *block;
|
|
|
|
ct_ft = container_of(to_rcu_work(work), struct tcf_ct_flow_table,
|
|
rwork);
|
|
nf_flow_table_free(&ct_ft->nf_ft);
|
|
+
|
|
+ /* Remove any remaining callbacks before cleanup */
|
|
+ block = &ct_ft->nf_ft.flow_block;
|
|
+ down_write(&ct_ft->nf_ft.flow_block_lock);
|
|
+ list_for_each_entry_safe(block_cb, tmp_cb, &block->cb_list, list) {
|
|
+ list_del(&block_cb->list);
|
|
+ flow_block_cb_free(block_cb);
|
|
+ }
|
|
+ up_write(&ct_ft->nf_ft.flow_block_lock);
|
|
kfree(ct_ft);
|
|
|
|
module_put(THIS_MODULE);
|
|
@@ -1023,7 +1034,8 @@ do_nat:
|
|
/* This will take care of sending queued events
|
|
* even if the connection is already confirmed.
|
|
*/
|
|
- nf_conntrack_confirm(skb);
|
|
+ if (nf_conntrack_confirm(skb) != NF_ACCEPT)
|
|
+ goto drop;
|
|
}
|
|
|
|
if (!skip_add)
|
|
diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include
|
|
index 08e011175b4c8..0d6e118207913 100644
|
|
--- a/scripts/Kbuild.include
|
|
+++ b/scripts/Kbuild.include
|
|
@@ -174,8 +174,13 @@ clean := -f $(srctree)/scripts/Makefile.clean obj
|
|
echo-cmd = $(if $($(quiet)cmd_$(1)),\
|
|
echo ' $(call escsq,$($(quiet)cmd_$(1)))$(echo-why)';)
|
|
|
|
+# sink stdout for 'make -s'
|
|
+ redirect :=
|
|
+ quiet_redirect :=
|
|
+silent_redirect := exec >/dev/null;
|
|
+
|
|
# printing commands
|
|
-cmd = @set -e; $(echo-cmd) $(cmd_$(1))
|
|
+cmd = @set -e; $(echo-cmd) $($(quiet)redirect) $(cmd_$(1))
|
|
|
|
###
|
|
# if_changed - execute command if any prerequisite is newer than
|
|
diff --git a/scripts/mkcompile_h b/scripts/mkcompile_h
|
|
index 4ae735039daf2..a72b154de7b01 100755
|
|
--- a/scripts/mkcompile_h
|
|
+++ b/scripts/mkcompile_h
|
|
@@ -70,15 +70,23 @@ UTS_VERSION="$(echo $UTS_VERSION $CONFIG_FLAGS $TIMESTAMP | cut -b -$UTS_LEN)"
|
|
# Only replace the real compile.h if the new one is different,
|
|
# in order to preserve the timestamp and avoid unnecessary
|
|
# recompilations.
|
|
-# We don't consider the file changed if only the date/time changed.
|
|
+# We don't consider the file changed if only the date/time changed,
|
|
+# unless KBUILD_BUILD_TIMESTAMP was explicitly set (e.g. for
|
|
+# reproducible builds with that value referring to a commit timestamp).
|
|
# A kernel config change will increase the generation number, thus
|
|
# causing compile.h to be updated (including date/time) due to the
|
|
# changed comment in the
|
|
# first line.
|
|
|
|
+if [ -z "$KBUILD_BUILD_TIMESTAMP" ]; then
|
|
+ IGNORE_PATTERN="UTS_VERSION"
|
|
+else
|
|
+ IGNORE_PATTERN="NOT_A_PATTERN_TO_BE_MATCHED"
|
|
+fi
|
|
+
|
|
if [ -r $TARGET ] && \
|
|
- grep -v 'UTS_VERSION' $TARGET > .tmpver.1 && \
|
|
- grep -v 'UTS_VERSION' .tmpcompile > .tmpver.2 && \
|
|
+ grep -v $IGNORE_PATTERN $TARGET > .tmpver.1 && \
|
|
+ grep -v $IGNORE_PATTERN .tmpcompile > .tmpver.2 && \
|
|
cmp -s .tmpver.1 .tmpver.2; then
|
|
rm -f .tmpcompile
|
|
else
|
|
diff --git a/tools/bpf/Makefile b/tools/bpf/Makefile
|
|
index 39bb322707b4b..b11cfc86a3d02 100644
|
|
--- a/tools/bpf/Makefile
|
|
+++ b/tools/bpf/Makefile
|
|
@@ -97,7 +97,7 @@ clean: bpftool_clean runqslower_clean resolve_btfids_clean
|
|
$(Q)$(RM) -- $(OUTPUT)FEATURE-DUMP.bpf
|
|
$(Q)$(RM) -r -- $(OUTPUT)feature
|
|
|
|
-install: $(PROGS) bpftool_install runqslower_install
|
|
+install: $(PROGS) bpftool_install
|
|
$(call QUIET_INSTALL, bpf_jit_disasm)
|
|
$(Q)$(INSTALL) -m 0755 -d $(DESTDIR)$(prefix)/bin
|
|
$(Q)$(INSTALL) $(OUTPUT)bpf_jit_disasm $(DESTDIR)$(prefix)/bin/bpf_jit_disasm
|
|
@@ -118,9 +118,6 @@ bpftool_clean:
|
|
runqslower:
|
|
$(call descend,runqslower)
|
|
|
|
-runqslower_install:
|
|
- $(call descend,runqslower,install)
|
|
-
|
|
runqslower_clean:
|
|
$(call descend,runqslower,clean)
|
|
|
|
@@ -131,5 +128,5 @@ resolve_btfids_clean:
|
|
$(call descend,resolve_btfids,clean)
|
|
|
|
.PHONY: all install clean bpftool bpftool_install bpftool_clean \
|
|
- runqslower runqslower_install runqslower_clean \
|
|
+ runqslower runqslower_clean \
|
|
resolve_btfids resolve_btfids_clean
|
|
diff --git a/tools/bpf/bpftool/jit_disasm.c b/tools/bpf/bpftool/jit_disasm.c
|
|
index e7e7eee9f1725..24734f2249d6e 100644
|
|
--- a/tools/bpf/bpftool/jit_disasm.c
|
|
+++ b/tools/bpf/bpftool/jit_disasm.c
|
|
@@ -43,11 +43,13 @@ static int fprintf_json(void *out, const char *fmt, ...)
|
|
{
|
|
va_list ap;
|
|
char *s;
|
|
+ int err;
|
|
|
|
va_start(ap, fmt);
|
|
- if (vasprintf(&s, fmt, ap) < 0)
|
|
- return -1;
|
|
+ err = vasprintf(&s, fmt, ap);
|
|
va_end(ap);
|
|
+ if (err < 0)
|
|
+ return -1;
|
|
|
|
if (!oper_count) {
|
|
int i;
|
|
diff --git a/tools/perf/tests/bpf.c b/tools/perf/tests/bpf.c
|
|
index cd77e334e5777..8345ff4acedf2 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>
|
|
@@ -283,6 +284,7 @@ static int __test__bpf(int idx)
|
|
}
|
|
|
|
out:
|
|
+ free(obj_buf);
|
|
bpf__clear();
|
|
return ret;
|
|
}
|