]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
Fixes for 5.15
authorSasha Levin <sashal@kernel.org>
Thu, 15 Sep 2022 10:59:21 +0000 (06:59 -0400)
committerSasha Levin <sashal@kernel.org>
Thu, 15 Sep 2022 10:59:21 +0000 (06:59 -0400)
Signed-off-by: Sasha Levin <sashal@kernel.org>
12 files changed:
queue-5.15/arm-dts-at91-fix-low-limit-for-cpu-regulator.patch [new file with mode: 0644]
queue-5.15/arm-dts-at91-sama7g5ek-specify-proper-regulator-outp.patch [new file with mode: 0644]
queue-5.15/arm-dts-imx-align-spi-nor-node-name-with-dtschema.patch [new file with mode: 0644]
queue-5.15/arm-dts-imx6qdl-kontron-samx6i-fix-spi-flash-compati.patch [new file with mode: 0644]
queue-5.15/docs-i2c-i2c-topology-fix-incorrect-heading.patch [new file with mode: 0644]
queue-5.15/iommu-vt-d-fix-kdump-kernels-boot-failure-with-scala.patch [new file with mode: 0644]
queue-5.15/lockdep-fix-wunused-parameter-for-_this_ip_.patch [new file with mode: 0644]
queue-5.15/series [new file with mode: 0644]
queue-5.15/task_stack-x86-cea-force-inline-stack-helpers.patch [new file with mode: 0644]
queue-5.15/tracefs-only-clobber-mode-uid-gid-on-remount-if-aske.patch [new file with mode: 0644]
queue-5.15/tracing-hold-caller_addr-to-hardirq_-enable-disable-.patch [new file with mode: 0644]
queue-5.15/x86-mm-force-inline-__phys_addr_nodebug.patch [new file with mode: 0644]

diff --git a/queue-5.15/arm-dts-at91-fix-low-limit-for-cpu-regulator.patch b/queue-5.15/arm-dts-at91-fix-low-limit-for-cpu-regulator.patch
new file mode 100644 (file)
index 0000000..6f709ab
--- /dev/null
@@ -0,0 +1,38 @@
+From b7eec85f28569b09b094a531ad58b6bd89f4c622 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Thu, 13 Jan 2022 16:48:56 +0200
+Subject: ARM: dts: at91: fix low limit for CPU regulator
+
+From: Claudiu Beznea <claudiu.beznea@microchip.com>
+
+[ Upstream commit 279d626d737486363233b9b99c30b5696c389b41 ]
+
+Fix low limit for CPU regulator. Otherwise setting voltages lower than
+1.125V will not be allowed (CPUFreq will not be allowed to set proper
+voltages on proper frequencies).
+
+Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
+Signed-off-by: Nicolas Ferre <nicolas.ferre@microchip.com>
+Link: https://lore.kernel.org/r/20220113144900.906370-7-claudiu.beznea@microchip.com
+Stable-dep-of: 7f41d52ced9e ("ARM: dts: at91: sama7g5ek: specify proper regulator output ranges")
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ arch/arm/boot/dts/at91-sama7g5ek.dts | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/arch/arm/boot/dts/at91-sama7g5ek.dts b/arch/arm/boot/dts/at91-sama7g5ek.dts
+index bac0e49cc5770..be51c1dbb4595 100644
+--- a/arch/arm/boot/dts/at91-sama7g5ek.dts
++++ b/arch/arm/boot/dts/at91-sama7g5ek.dts
+@@ -228,7 +228,7 @@
+                               vddcpu: VDD_OTHER {
+                                       regulator-name = "VDD_OTHER";
+-                                      regulator-min-microvolt = <1125000>;
++                                      regulator-min-microvolt = <1050000>;
+                                       regulator-max-microvolt = <1850000>;
+                                       regulator-initial-mode = <2>;
+                                       regulator-allowed-modes = <2>, <4>;
+-- 
+2.35.1
+
diff --git a/queue-5.15/arm-dts-at91-sama7g5ek-specify-proper-regulator-outp.patch b/queue-5.15/arm-dts-at91-sama7g5ek-specify-proper-regulator-outp.patch
new file mode 100644 (file)
index 0000000..b0718d0
--- /dev/null
@@ -0,0 +1,81 @@
+From b72afca963c34b81ea5c486946c1bf24d238f514 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Fri, 26 Aug 2022 11:39:24 +0300
+Subject: ARM: dts: at91: sama7g5ek: specify proper regulator output ranges
+
+From: Claudiu Beznea <claudiu.beznea@microchip.com>
+
+[ Upstream commit 7f41d52ced9e1b7ed4ff8e1ae9cacbf46b64e6db ]
+
+Min and max output ranges of regulators need to satisfy board
+requirements not PMIC requirements. Thus adjust device tree to
+cope with this.
+
+Fixes: 7540629e2fc7 ("ARM: dts: at91: add sama7g5 SoC DT and sama7g5-ek")
+Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
+Link: https://lore.kernel.org/r/20220826083927.3107272-7-claudiu.beznea@microchip.com
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ arch/arm/boot/dts/at91-sama7g5ek.dts | 18 +++++++++---------
+ 1 file changed, 9 insertions(+), 9 deletions(-)
+
+diff --git a/arch/arm/boot/dts/at91-sama7g5ek.dts b/arch/arm/boot/dts/at91-sama7g5ek.dts
+index be51c1dbb4595..2038e387be288 100644
+--- a/arch/arm/boot/dts/at91-sama7g5ek.dts
++++ b/arch/arm/boot/dts/at91-sama7g5ek.dts
+@@ -169,8 +169,8 @@
+                       regulators {
+                               vdd_3v3: VDD_IO {
+                                       regulator-name = "VDD_IO";
+-                                      regulator-min-microvolt = <1200000>;
+-                                      regulator-max-microvolt = <3700000>;
++                                      regulator-min-microvolt = <3300000>;
++                                      regulator-max-microvolt = <3300000>;
+                                       regulator-initial-mode = <2>;
+                                       regulator-allowed-modes = <2>, <4>;
+                                       regulator-always-on;
+@@ -188,8 +188,8 @@
+                               vddioddr: VDD_DDR {
+                                       regulator-name = "VDD_DDR";
+-                                      regulator-min-microvolt = <1300000>;
+-                                      regulator-max-microvolt = <1450000>;
++                                      regulator-min-microvolt = <1350000>;
++                                      regulator-max-microvolt = <1350000>;
+                                       regulator-initial-mode = <2>;
+                                       regulator-allowed-modes = <2>, <4>;
+                                       regulator-always-on;
+@@ -209,8 +209,8 @@
+                               vddcore: VDD_CORE {
+                                       regulator-name = "VDD_CORE";
+-                                      regulator-min-microvolt = <1100000>;
+-                                      regulator-max-microvolt = <1850000>;
++                                      regulator-min-microvolt = <1150000>;
++                                      regulator-max-microvolt = <1150000>;
+                                       regulator-initial-mode = <2>;
+                                       regulator-allowed-modes = <2>, <4>;
+                                       regulator-always-on;
+@@ -229,7 +229,7 @@
+                               vddcpu: VDD_OTHER {
+                                       regulator-name = "VDD_OTHER";
+                                       regulator-min-microvolt = <1050000>;
+-                                      regulator-max-microvolt = <1850000>;
++                                      regulator-max-microvolt = <1250000>;
+                                       regulator-initial-mode = <2>;
+                                       regulator-allowed-modes = <2>, <4>;
+                                       regulator-ramp-delay = <3125>;
+@@ -248,8 +248,8 @@
+                               vldo1: LDO1 {
+                                       regulator-name = "LDO1";
+-                                      regulator-min-microvolt = <1200000>;
+-                                      regulator-max-microvolt = <3700000>;
++                                      regulator-min-microvolt = <1800000>;
++                                      regulator-max-microvolt = <1800000>;
+                                       regulator-always-on;
+                                       regulator-state-standby {
+-- 
+2.35.1
+
diff --git a/queue-5.15/arm-dts-imx-align-spi-nor-node-name-with-dtschema.patch b/queue-5.15/arm-dts-imx-align-spi-nor-node-name-with-dtschema.patch
new file mode 100644 (file)
index 0000000..d9dbf31
--- /dev/null
@@ -0,0 +1,487 @@
+From bbeb4b4c4b33a4c2361d5ff2cfbc65ac999d424b Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Thu, 7 Apr 2022 16:31:54 +0200
+Subject: ARM: dts: imx: align SPI NOR node name with dtschema
+
+From: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
+
+[ Upstream commit ba9fe460dc2cfe90dc115b22af14dd3f13cffa0f ]
+
+The node names should be generic and SPI NOR dtschema expects "flash".
+
+Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
+Signed-off-by: Shawn Guo <shawnguo@kernel.org>
+Stable-dep-of: af7d78c95701 ("ARM: dts: imx6qdl-kontron-samx6i: fix spi-flash compatible")
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ arch/arm/boot/dts/imx28-evk.dts                        | 2 +-
+ arch/arm/boot/dts/imx28-m28evk.dts                     | 2 +-
+ arch/arm/boot/dts/imx28-sps1.dts                       | 2 +-
+ arch/arm/boot/dts/imx6dl-rex-basic.dts                 | 2 +-
+ arch/arm/boot/dts/imx6q-ba16.dtsi                      | 2 +-
+ arch/arm/boot/dts/imx6q-bx50v3.dtsi                    | 2 +-
+ arch/arm/boot/dts/imx6q-cm-fx6.dts                     | 2 +-
+ arch/arm/boot/dts/imx6q-dmo-edmqmx6.dts                | 2 +-
+ arch/arm/boot/dts/imx6q-dms-ba16.dts                   | 2 +-
+ arch/arm/boot/dts/imx6q-gw5400-a.dts                   | 2 +-
+ arch/arm/boot/dts/imx6q-marsboard.dts                  | 2 +-
+ arch/arm/boot/dts/imx6q-rex-pro.dts                    | 2 +-
+ arch/arm/boot/dts/imx6qdl-aristainetos.dtsi            | 2 +-
+ arch/arm/boot/dts/imx6qdl-aristainetos2.dtsi           | 2 +-
+ arch/arm/boot/dts/imx6qdl-dfi-fs700-m60.dtsi           | 2 +-
+ arch/arm/boot/dts/imx6qdl-kontron-samx6i.dtsi          | 2 +-
+ arch/arm/boot/dts/imx6qdl-nit6xlite.dtsi               | 2 +-
+ arch/arm/boot/dts/imx6qdl-nitrogen6_max.dtsi           | 2 +-
+ arch/arm/boot/dts/imx6qdl-nitrogen6_som2.dtsi          | 2 +-
+ arch/arm/boot/dts/imx6qdl-nitrogen6x.dtsi              | 2 +-
+ arch/arm/boot/dts/imx6qdl-sabreauto.dtsi               | 2 +-
+ arch/arm/boot/dts/imx6qdl-sabrelite.dtsi               | 2 +-
+ arch/arm/boot/dts/imx6qdl-sabresd.dtsi                 | 2 +-
+ arch/arm/boot/dts/imx6sl-evk.dts                       | 2 +-
+ arch/arm/boot/dts/imx6sx-nitrogen6sx.dts               | 2 +-
+ arch/arm/boot/dts/imx6sx-sdb-reva.dts                  | 4 ++--
+ arch/arm/boot/dts/imx6sx-sdb.dts                       | 4 ++--
+ arch/arm/boot/dts/imx6ul-14x14-evk.dtsi                | 2 +-
+ arch/arm/boot/dts/imx6ul-kontron-n6310-som.dtsi        | 2 +-
+ arch/arm/boot/dts/imx6ul-kontron-n6311-som.dtsi        | 2 +-
+ arch/arm/boot/dts/imx6ul-kontron-n6x1x-som-common.dtsi | 2 +-
+ arch/arm/boot/dts/imx6ull-kontron-n6411-som.dtsi       | 2 +-
+ 32 files changed, 34 insertions(+), 34 deletions(-)
+
+diff --git a/arch/arm/boot/dts/imx28-evk.dts b/arch/arm/boot/dts/imx28-evk.dts
+index 7e2b0f198dfad..1053b7c584d81 100644
+--- a/arch/arm/boot/dts/imx28-evk.dts
++++ b/arch/arm/boot/dts/imx28-evk.dts
+@@ -129,7 +129,7 @@
+                               pinctrl-0 = <&spi2_pins_a>;
+                               status = "okay";
+-                              flash: m25p80@0 {
++                              flash: flash@0 {
+                                       #address-cells = <1>;
+                                       #size-cells = <1>;
+                                       compatible = "sst,sst25vf016b", "jedec,spi-nor";
+diff --git a/arch/arm/boot/dts/imx28-m28evk.dts b/arch/arm/boot/dts/imx28-m28evk.dts
+index f3bddc5ada4b8..13acdc7916b9b 100644
+--- a/arch/arm/boot/dts/imx28-m28evk.dts
++++ b/arch/arm/boot/dts/imx28-m28evk.dts
+@@ -33,7 +33,7 @@
+                               pinctrl-0 = <&spi2_pins_a>;
+                               status = "okay";
+-                              flash: m25p80@0 {
++                              flash: flash@0 {
+                                       #address-cells = <1>;
+                                       #size-cells = <1>;
+                                       compatible = "m25p80", "jedec,spi-nor";
+diff --git a/arch/arm/boot/dts/imx28-sps1.dts b/arch/arm/boot/dts/imx28-sps1.dts
+index 43be7a6a769bc..90928db0df701 100644
+--- a/arch/arm/boot/dts/imx28-sps1.dts
++++ b/arch/arm/boot/dts/imx28-sps1.dts
+@@ -51,7 +51,7 @@
+                               pinctrl-0 = <&spi2_pins_a>;
+                               status = "okay";
+-                              flash: m25p80@0 {
++                              flash: flash@0 {
+                                       #address-cells = <1>;
+                                       #size-cells = <1>;
+                                       compatible = "everspin,mr25h256", "mr25h256";
+diff --git a/arch/arm/boot/dts/imx6dl-rex-basic.dts b/arch/arm/boot/dts/imx6dl-rex-basic.dts
+index 0f1616bfa9a80..b72f8ea1e6f6c 100644
+--- a/arch/arm/boot/dts/imx6dl-rex-basic.dts
++++ b/arch/arm/boot/dts/imx6dl-rex-basic.dts
+@@ -19,7 +19,7 @@
+ };
+ &ecspi3 {
+-      flash: m25p80@0 {
++      flash: flash@0 {
+               compatible = "sst,sst25vf016b", "jedec,spi-nor";
+               spi-max-frequency = <20000000>;
+               reg = <0>;
+diff --git a/arch/arm/boot/dts/imx6q-ba16.dtsi b/arch/arm/boot/dts/imx6q-ba16.dtsi
+index 6330d75f8f390..f266f1b7e0cfc 100644
+--- a/arch/arm/boot/dts/imx6q-ba16.dtsi
++++ b/arch/arm/boot/dts/imx6q-ba16.dtsi
+@@ -142,7 +142,7 @@
+       pinctrl-0 = <&pinctrl_ecspi1>;
+       status = "okay";
+-      flash: n25q032@0 {
++      flash: flash@0 {
+               compatible = "jedec,spi-nor";
+               #address-cells = <1>;
+               #size-cells = <1>;
+diff --git a/arch/arm/boot/dts/imx6q-bx50v3.dtsi b/arch/arm/boot/dts/imx6q-bx50v3.dtsi
+index 10922375c51e1..ead83091e193a 100644
+--- a/arch/arm/boot/dts/imx6q-bx50v3.dtsi
++++ b/arch/arm/boot/dts/imx6q-bx50v3.dtsi
+@@ -160,7 +160,7 @@
+       pinctrl-0 = <&pinctrl_ecspi5>;
+       status = "okay";
+-      m25_eeprom: m25p80@0 {
++      m25_eeprom: flash@0 {
+               compatible = "atmel,at25";
+               spi-max-frequency = <10000000>;
+               size = <0x8000>;
+diff --git a/arch/arm/boot/dts/imx6q-cm-fx6.dts b/arch/arm/boot/dts/imx6q-cm-fx6.dts
+index bfb530f29d9de..1ad41c944b4b9 100644
+--- a/arch/arm/boot/dts/imx6q-cm-fx6.dts
++++ b/arch/arm/boot/dts/imx6q-cm-fx6.dts
+@@ -260,7 +260,7 @@
+       pinctrl-0 = <&pinctrl_ecspi1>;
+       status = "okay";
+-      m25p80@0 {
++      flash@0 {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "st,m25p", "jedec,spi-nor";
+diff --git a/arch/arm/boot/dts/imx6q-dmo-edmqmx6.dts b/arch/arm/boot/dts/imx6q-dmo-edmqmx6.dts
+index c713ac03b3b92..9591848cbd37c 100644
+--- a/arch/arm/boot/dts/imx6q-dmo-edmqmx6.dts
++++ b/arch/arm/boot/dts/imx6q-dmo-edmqmx6.dts
+@@ -102,7 +102,7 @@
+       cs-gpios = <&gpio1 12 GPIO_ACTIVE_LOW>;
+       status = "okay";
+-      flash: m25p80@0 {
++      flash: flash@0 {
+               compatible = "m25p80", "jedec,spi-nor";
+               spi-max-frequency = <40000000>;
+               reg = <0>;
+diff --git a/arch/arm/boot/dts/imx6q-dms-ba16.dts b/arch/arm/boot/dts/imx6q-dms-ba16.dts
+index 48fb47e715f6d..137db38f0d27b 100644
+--- a/arch/arm/boot/dts/imx6q-dms-ba16.dts
++++ b/arch/arm/boot/dts/imx6q-dms-ba16.dts
+@@ -47,7 +47,7 @@
+       pinctrl-0 = <&pinctrl_ecspi5>;
+       status = "okay";
+-      m25_eeprom: m25p80@0 {
++      m25_eeprom: flash@0 {
+               compatible = "atmel,at25256B", "atmel,at25";
+               spi-max-frequency = <20000000>;
+               size = <0x8000>;
+diff --git a/arch/arm/boot/dts/imx6q-gw5400-a.dts b/arch/arm/boot/dts/imx6q-gw5400-a.dts
+index 4cde45d5c90c8..e894faba571f9 100644
+--- a/arch/arm/boot/dts/imx6q-gw5400-a.dts
++++ b/arch/arm/boot/dts/imx6q-gw5400-a.dts
+@@ -137,7 +137,7 @@
+       pinctrl-0 = <&pinctrl_ecspi1>;
+       status = "okay";
+-      flash: m25p80@0 {
++      flash: flash@0 {
+               compatible = "sst,w25q256", "jedec,spi-nor";
+               spi-max-frequency = <30000000>;
+               reg = <0>;
+diff --git a/arch/arm/boot/dts/imx6q-marsboard.dts b/arch/arm/boot/dts/imx6q-marsboard.dts
+index 05ee283882290..cc18010023942 100644
+--- a/arch/arm/boot/dts/imx6q-marsboard.dts
++++ b/arch/arm/boot/dts/imx6q-marsboard.dts
+@@ -100,7 +100,7 @@
+       cs-gpios = <&gpio2 30 GPIO_ACTIVE_LOW>;
+       status = "okay";
+-      m25p80@0 {
++      flash@0 {
+               compatible = "microchip,sst25vf016b";
+               spi-max-frequency = <20000000>;
+               reg = <0>;
+diff --git a/arch/arm/boot/dts/imx6q-rex-pro.dts b/arch/arm/boot/dts/imx6q-rex-pro.dts
+index 1767e1a3cd53a..271f4b2d9b9f0 100644
+--- a/arch/arm/boot/dts/imx6q-rex-pro.dts
++++ b/arch/arm/boot/dts/imx6q-rex-pro.dts
+@@ -19,7 +19,7 @@
+ };
+ &ecspi3 {
+-      flash: m25p80@0 {
++      flash: flash@0 {
+               compatible = "sst,sst25vf032b", "jedec,spi-nor";
+               spi-max-frequency = <20000000>;
+               reg = <0>;
+diff --git a/arch/arm/boot/dts/imx6qdl-aristainetos.dtsi b/arch/arm/boot/dts/imx6qdl-aristainetos.dtsi
+index e21f6ac864e54..baa197c90060e 100644
+--- a/arch/arm/boot/dts/imx6qdl-aristainetos.dtsi
++++ b/arch/arm/boot/dts/imx6qdl-aristainetos.dtsi
+@@ -96,7 +96,7 @@
+       pinctrl-0 = <&pinctrl_ecspi4>;
+       status = "okay";
+-      flash: m25p80@0 {
++      flash: flash@0 {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "micron,n25q128a11", "jedec,spi-nor";
+diff --git a/arch/arm/boot/dts/imx6qdl-aristainetos2.dtsi b/arch/arm/boot/dts/imx6qdl-aristainetos2.dtsi
+index 563bf9d44fe0d..2ba577e602e7f 100644
+--- a/arch/arm/boot/dts/imx6qdl-aristainetos2.dtsi
++++ b/arch/arm/boot/dts/imx6qdl-aristainetos2.dtsi
+@@ -131,7 +131,7 @@
+       pinctrl-0 = <&pinctrl_ecspi4>;
+       status = "okay";
+-      flash: m25p80@1 {
++      flash: flash@1 {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "micron,n25q128a11", "jedec,spi-nor";
+diff --git a/arch/arm/boot/dts/imx6qdl-dfi-fs700-m60.dtsi b/arch/arm/boot/dts/imx6qdl-dfi-fs700-m60.dtsi
+index 648f5fcb72e65..2c1d6f28e6950 100644
+--- a/arch/arm/boot/dts/imx6qdl-dfi-fs700-m60.dtsi
++++ b/arch/arm/boot/dts/imx6qdl-dfi-fs700-m60.dtsi
+@@ -35,7 +35,7 @@
+       pinctrl-0 = <&pinctrl_ecspi3>;
+       status = "okay";
+-      flash: m25p80@0 {
++      flash: flash@0 {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "sst,sst25vf040b", "jedec,spi-nor";
+diff --git a/arch/arm/boot/dts/imx6qdl-kontron-samx6i.dtsi b/arch/arm/boot/dts/imx6qdl-kontron-samx6i.dtsi
+index 9a3e5f7827152..f159c58b9edba 100644
+--- a/arch/arm/boot/dts/imx6qdl-kontron-samx6i.dtsi
++++ b/arch/arm/boot/dts/imx6qdl-kontron-samx6i.dtsi
+@@ -248,7 +248,7 @@
+       status = "okay";
+       /* default boot source: workaround #1 for errata ERR006282 */
+-      smarc_flash: spi-flash@0 {
++      smarc_flash: flash@0 {
+               compatible = "winbond,w25q16dw", "jedec,spi-nor";
+               reg = <0>;
+               spi-max-frequency = <20000000>;
+diff --git a/arch/arm/boot/dts/imx6qdl-nit6xlite.dtsi b/arch/arm/boot/dts/imx6qdl-nit6xlite.dtsi
+index ac34709e97413..0ad4cb4f1e828 100644
+--- a/arch/arm/boot/dts/imx6qdl-nit6xlite.dtsi
++++ b/arch/arm/boot/dts/imx6qdl-nit6xlite.dtsi
+@@ -179,7 +179,7 @@
+       pinctrl-0 = <&pinctrl_ecspi1>;
+       status = "okay";
+-      flash: m25p80@0 {
++      flash: flash@0 {
+               compatible = "microchip,sst25vf016b";
+               spi-max-frequency = <20000000>;
+               reg = <0>;
+diff --git a/arch/arm/boot/dts/imx6qdl-nitrogen6_max.dtsi b/arch/arm/boot/dts/imx6qdl-nitrogen6_max.dtsi
+index c96f4d7e1e0d8..beaa2dcd436ce 100644
+--- a/arch/arm/boot/dts/imx6qdl-nitrogen6_max.dtsi
++++ b/arch/arm/boot/dts/imx6qdl-nitrogen6_max.dtsi
+@@ -321,7 +321,7 @@
+       pinctrl-0 = <&pinctrl_ecspi1>;
+       status = "okay";
+-      flash: m25p80@0 {
++      flash: flash@0 {
+               compatible = "microchip,sst25vf016b";
+               spi-max-frequency = <20000000>;
+               reg = <0>;
+diff --git a/arch/arm/boot/dts/imx6qdl-nitrogen6_som2.dtsi b/arch/arm/boot/dts/imx6qdl-nitrogen6_som2.dtsi
+index 92d09a3ebe0ee..ee7e2371f94bd 100644
+--- a/arch/arm/boot/dts/imx6qdl-nitrogen6_som2.dtsi
++++ b/arch/arm/boot/dts/imx6qdl-nitrogen6_som2.dtsi
+@@ -252,7 +252,7 @@
+       pinctrl-0 = <&pinctrl_ecspi1>;
+       status = "okay";
+-      flash: m25p80@0 {
++      flash: flash@0 {
+               compatible = "microchip,sst25vf016b";
+               spi-max-frequency = <20000000>;
+               reg = <0>;
+diff --git a/arch/arm/boot/dts/imx6qdl-nitrogen6x.dtsi b/arch/arm/boot/dts/imx6qdl-nitrogen6x.dtsi
+index 49da30d7510c4..904d5d051d63c 100644
+--- a/arch/arm/boot/dts/imx6qdl-nitrogen6x.dtsi
++++ b/arch/arm/boot/dts/imx6qdl-nitrogen6x.dtsi
+@@ -237,7 +237,7 @@
+       pinctrl-0 = <&pinctrl_ecspi1>;
+       status = "okay";
+-      flash: m25p80@0 {
++      flash: flash@0 {
+               compatible = "sst,sst25vf016b", "jedec,spi-nor";
+               spi-max-frequency = <20000000>;
+               reg = <0>;
+diff --git a/arch/arm/boot/dts/imx6qdl-sabreauto.dtsi b/arch/arm/boot/dts/imx6qdl-sabreauto.dtsi
+index 5e58740d40c5b..1368a47620372 100644
+--- a/arch/arm/boot/dts/imx6qdl-sabreauto.dtsi
++++ b/arch/arm/boot/dts/imx6qdl-sabreauto.dtsi
+@@ -272,7 +272,7 @@
+       pinctrl-0 = <&pinctrl_ecspi1 &pinctrl_ecspi1_cs>;
+       status = "disabled"; /* pin conflict with WEIM NOR */
+-      flash: m25p80@0 {
++      flash: flash@0 {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "st,m25p32", "jedec,spi-nor";
+diff --git a/arch/arm/boot/dts/imx6qdl-sabrelite.dtsi b/arch/arm/boot/dts/imx6qdl-sabrelite.dtsi
+index eb9a0b104f1c3..901b9a761b66e 100644
+--- a/arch/arm/boot/dts/imx6qdl-sabrelite.dtsi
++++ b/arch/arm/boot/dts/imx6qdl-sabrelite.dtsi
+@@ -313,7 +313,7 @@
+       pinctrl-0 = <&pinctrl_ecspi1>;
+       status = "okay";
+-      flash: m25p80@0 {
++      flash: flash@0 {
+               compatible = "sst,sst25vf016b", "jedec,spi-nor";
+               spi-max-frequency = <20000000>;
+               reg = <0>;
+diff --git a/arch/arm/boot/dts/imx6qdl-sabresd.dtsi b/arch/arm/boot/dts/imx6qdl-sabresd.dtsi
+index 0c0105468a2fe..37482a9023fce 100644
+--- a/arch/arm/boot/dts/imx6qdl-sabresd.dtsi
++++ b/arch/arm/boot/dts/imx6qdl-sabresd.dtsi
+@@ -197,7 +197,7 @@
+       pinctrl-0 = <&pinctrl_ecspi1>;
+       status = "okay";
+-      flash: m25p80@0 {
++      flash: flash@0 {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "st,m25p32", "jedec,spi-nor";
+diff --git a/arch/arm/boot/dts/imx6sl-evk.dts b/arch/arm/boot/dts/imx6sl-evk.dts
+index 25f6f2fb1555e..f16c830f1e918 100644
+--- a/arch/arm/boot/dts/imx6sl-evk.dts
++++ b/arch/arm/boot/dts/imx6sl-evk.dts
+@@ -137,7 +137,7 @@
+       pinctrl-0 = <&pinctrl_ecspi1>;
+       status = "okay";
+-      flash: m25p80@0 {
++      flash: flash@0 {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "st,m25p32", "jedec,spi-nor";
+diff --git a/arch/arm/boot/dts/imx6sx-nitrogen6sx.dts b/arch/arm/boot/dts/imx6sx-nitrogen6sx.dts
+index 66af78e83b701..a2c79bcf9a11c 100644
+--- a/arch/arm/boot/dts/imx6sx-nitrogen6sx.dts
++++ b/arch/arm/boot/dts/imx6sx-nitrogen6sx.dts
+@@ -107,7 +107,7 @@
+       pinctrl-0 = <&pinctrl_ecspi1>;
+       status = "okay";
+-      flash: m25p80@0 {
++      flash: flash@0 {
+               compatible = "microchip,sst25vf016b";
+               spi-max-frequency = <20000000>;
+               reg = <0>;
+diff --git a/arch/arm/boot/dts/imx6sx-sdb-reva.dts b/arch/arm/boot/dts/imx6sx-sdb-reva.dts
+index dce5dcf96c255..7dda42553f4bc 100644
+--- a/arch/arm/boot/dts/imx6sx-sdb-reva.dts
++++ b/arch/arm/boot/dts/imx6sx-sdb-reva.dts
+@@ -123,7 +123,7 @@
+       pinctrl-0 = <&pinctrl_qspi2>;
+       status = "okay";
+-      flash0: s25fl128s@0 {
++      flash0: flash@0 {
+               reg = <0>;
+               #address-cells = <1>;
+               #size-cells = <1>;
+@@ -133,7 +133,7 @@
+               spi-tx-bus-width = <4>;
+       };
+-      flash1: s25fl128s@2 {
++      flash1: flash@2 {
+               reg = <2>;
+               #address-cells = <1>;
+               #size-cells = <1>;
+diff --git a/arch/arm/boot/dts/imx6sx-sdb.dts b/arch/arm/boot/dts/imx6sx-sdb.dts
+index 99f4cf777a384..969cfe920d252 100644
+--- a/arch/arm/boot/dts/imx6sx-sdb.dts
++++ b/arch/arm/boot/dts/imx6sx-sdb.dts
+@@ -108,7 +108,7 @@
+       pinctrl-0 = <&pinctrl_qspi2>;
+       status = "okay";
+-      flash0: n25q256a@0 {
++      flash0: flash@0 {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "micron,n25q256a", "jedec,spi-nor";
+@@ -118,7 +118,7 @@
+               reg = <0>;
+       };
+-      flash1: n25q256a@2 {
++      flash1: flash@2 {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "micron,n25q256a", "jedec,spi-nor";
+diff --git a/arch/arm/boot/dts/imx6ul-14x14-evk.dtsi b/arch/arm/boot/dts/imx6ul-14x14-evk.dtsi
+index a3fde3316c736..1a18c41ce385a 100644
+--- a/arch/arm/boot/dts/imx6ul-14x14-evk.dtsi
++++ b/arch/arm/boot/dts/imx6ul-14x14-evk.dtsi
+@@ -286,7 +286,7 @@
+       pinctrl-0 = <&pinctrl_qspi>;
+       status = "okay";
+-      flash0: n25q256a@0 {
++      flash0: flash@0 {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "micron,n25q256a", "jedec,spi-nor";
+diff --git a/arch/arm/boot/dts/imx6ul-kontron-n6310-som.dtsi b/arch/arm/boot/dts/imx6ul-kontron-n6310-som.dtsi
+index 47d3ce5d255fa..acd936540d898 100644
+--- a/arch/arm/boot/dts/imx6ul-kontron-n6310-som.dtsi
++++ b/arch/arm/boot/dts/imx6ul-kontron-n6310-som.dtsi
+@@ -19,7 +19,7 @@
+ };
+ &qspi {
+-      spi-flash@0 {
++      flash@0 {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "spi-nand";
+diff --git a/arch/arm/boot/dts/imx6ul-kontron-n6311-som.dtsi b/arch/arm/boot/dts/imx6ul-kontron-n6311-som.dtsi
+index a095a7654ac65..29ed38dce5802 100644
+--- a/arch/arm/boot/dts/imx6ul-kontron-n6311-som.dtsi
++++ b/arch/arm/boot/dts/imx6ul-kontron-n6311-som.dtsi
+@@ -18,7 +18,7 @@
+ };
+ &qspi {
+-      spi-flash@0 {
++      flash@0 {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "spi-nand";
+diff --git a/arch/arm/boot/dts/imx6ul-kontron-n6x1x-som-common.dtsi b/arch/arm/boot/dts/imx6ul-kontron-n6x1x-som-common.dtsi
+index 2a449a3c1ae27..09a83dbdf6510 100644
+--- a/arch/arm/boot/dts/imx6ul-kontron-n6x1x-som-common.dtsi
++++ b/arch/arm/boot/dts/imx6ul-kontron-n6x1x-som-common.dtsi
+@@ -19,7 +19,7 @@
+       pinctrl-0 = <&pinctrl_ecspi2>;
+       status = "okay";
+-      spi-flash@0 {
++      flash@0 {
+               compatible = "mxicy,mx25v8035f", "jedec,spi-nor";
+               spi-max-frequency = <50000000>;
+               reg = <0>;
+diff --git a/arch/arm/boot/dts/imx6ull-kontron-n6411-som.dtsi b/arch/arm/boot/dts/imx6ull-kontron-n6411-som.dtsi
+index b7e984284e1ad..d000606c07049 100644
+--- a/arch/arm/boot/dts/imx6ull-kontron-n6411-som.dtsi
++++ b/arch/arm/boot/dts/imx6ull-kontron-n6411-som.dtsi
+@@ -18,7 +18,7 @@
+ };
+ &qspi {
+-      spi-flash@0 {
++      flash@0 {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "spi-nand";
+-- 
+2.35.1
+
diff --git a/queue-5.15/arm-dts-imx6qdl-kontron-samx6i-fix-spi-flash-compati.patch b/queue-5.15/arm-dts-imx6qdl-kontron-samx6i-fix-spi-flash-compati.patch
new file mode 100644 (file)
index 0000000..7d66828
--- /dev/null
@@ -0,0 +1,37 @@
+From 6a39c31a19f2e0d74c0cc42b1774555f0819d7f9 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Tue, 26 Jul 2022 15:05:22 +0200
+Subject: ARM: dts: imx6qdl-kontron-samx6i: fix spi-flash compatible
+
+From: Marco Felsch <m.felsch@pengutronix.de>
+
+[ Upstream commit af7d78c957017f8b3a0986769f6f18e57f9362ea ]
+
+Drop the "winbond,w25q16dw" compatible since it causes to set the
+MODALIAS to w25q16dw which is not specified within spi-nor id table.
+Fix this by use the common "jedec,spi-nor" compatible.
+
+Fixes: 2125212785c9 ("ARM: dts: imx6qdl-kontron-samx6i: add Kontron SMARC SoM Support")
+Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
+Signed-off-by: Shawn Guo <shawnguo@kernel.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ arch/arm/boot/dts/imx6qdl-kontron-samx6i.dtsi | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/arch/arm/boot/dts/imx6qdl-kontron-samx6i.dtsi b/arch/arm/boot/dts/imx6qdl-kontron-samx6i.dtsi
+index f159c58b9edba..6b791d515e294 100644
+--- a/arch/arm/boot/dts/imx6qdl-kontron-samx6i.dtsi
++++ b/arch/arm/boot/dts/imx6qdl-kontron-samx6i.dtsi
+@@ -249,7 +249,7 @@
+       /* default boot source: workaround #1 for errata ERR006282 */
+       smarc_flash: flash@0 {
+-              compatible = "winbond,w25q16dw", "jedec,spi-nor";
++              compatible = "jedec,spi-nor";
+               reg = <0>;
+               spi-max-frequency = <20000000>;
+       };
+-- 
+2.35.1
+
diff --git a/queue-5.15/docs-i2c-i2c-topology-fix-incorrect-heading.patch b/queue-5.15/docs-i2c-i2c-topology-fix-incorrect-heading.patch
new file mode 100644 (file)
index 0000000..2a322fa
--- /dev/null
@@ -0,0 +1,51 @@
+From 38a4906286534f4832aff34b654b46785cacc70d Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Wed, 24 Aug 2022 10:31:03 +0200
+Subject: docs: i2c: i2c-topology: fix incorrect heading
+
+From: Luca Ceresoli <luca.ceresoli@bootlin.com>
+
+[ Upstream commit 12c035a1a840e07a351c277d7a468269fa603000 ]
+
+"Etc" here was never meant to be a heading, it became one while converting
+to ReST.
+
+It would be easy to just convert it to plain text, but rather remove it and
+add an introductory text before the list that conveys the same meaning but
+with a better reading flow.
+
+Fixes: ccf988b66d69 ("docs: i2c: convert to ReST and add to driver-api bookset")
+Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
+Acked-by: Peter Rosin <peda@axentia.se>
+Signed-off-by: Wolfram Sang <wsa@kernel.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ Documentation/i2c/i2c-topology.rst | 5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
+
+diff --git a/Documentation/i2c/i2c-topology.rst b/Documentation/i2c/i2c-topology.rst
+index 7cb53819778e6..1b11535c8946f 100644
+--- a/Documentation/i2c/i2c-topology.rst
++++ b/Documentation/i2c/i2c-topology.rst
+@@ -5,6 +5,8 @@ I2C muxes and complex topologies
+ There are a couple of reasons for building more complex I2C topologies
+ than a straight-forward I2C bus with one adapter and one or more devices.
++Some example use cases are:
++
+ 1. A mux may be needed on the bus to prevent address collisions.
+ 2. The bus may be accessible from some external bus master, and arbitration
+@@ -14,9 +16,6 @@ than a straight-forward I2C bus with one adapter and one or more devices.
+    from the I2C bus, at least most of the time, and sits behind a gate
+    that has to be operated before the device can be accessed.
+-Etc
+-===
+-
+ These constructs are represented as I2C adapter trees by Linux, where
+ each adapter has a parent adapter (except the root adapter) and zero or
+ more child adapters. The root adapter is the actual adapter that issues
+-- 
+2.35.1
+
diff --git a/queue-5.15/iommu-vt-d-fix-kdump-kernels-boot-failure-with-scala.patch b/queue-5.15/iommu-vt-d-fix-kdump-kernels-boot-failure-with-scala.patch
new file mode 100644 (file)
index 0000000..2e8275f
--- /dev/null
@@ -0,0 +1,270 @@
+From a0367c5641b5bc1bf4fa0b960b30a5229da2fa5f Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Tue, 23 Aug 2022 14:15:54 +0800
+Subject: iommu/vt-d: Fix kdump kernels boot failure with scalable mode
+
+From: Lu Baolu <baolu.lu@linux.intel.com>
+
+[ Upstream commit 0c5f6c0d8201a809a6585b07b6263e9db2c874a3 ]
+
+The translation table copying code for kdump kernels is currently based
+on the extended root/context entry formats of ECS mode defined in older
+VT-d v2.5, and doesn't handle the scalable mode formats. This causes
+the kexec capture kernel boot failure with DMAR faults if the IOMMU was
+enabled in scalable mode by the previous kernel.
+
+The ECS mode has already been deprecated by the VT-d spec since v3.0 and
+Intel IOMMU driver doesn't support this mode as there's no real hardware
+implementation. Hence this converts ECS checking in copying table code
+into scalable mode.
+
+The existing copying code consumes a bit in the context entry as a mark
+of copied entry. It needs to work for the old format as well as for the
+extended context entries. As it's hard to find such a common bit for both
+legacy and scalable mode context entries. This replaces it with a per-
+IOMMU bitmap.
+
+Fixes: 7373a8cc38197 ("iommu/vt-d: Setup context and enable RID2PASID support")
+Cc: stable@vger.kernel.org
+Reported-by: Jerry Snitselaar <jsnitsel@redhat.com>
+Tested-by: Wen Jin <wen.jin@intel.com>
+Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
+Link: https://lore.kernel.org/r/20220817011035.3250131-1-baolu.lu@linux.intel.com
+Signed-off-by: Joerg Roedel <jroedel@suse.de>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/iommu/intel/iommu.c | 100 ++++++++++++++++--------------------
+ include/linux/intel-iommu.h |   9 ++--
+ 2 files changed, 50 insertions(+), 59 deletions(-)
+
+diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c
+index bc5444daca9b4..2affdccb58e47 100644
+--- a/drivers/iommu/intel/iommu.c
++++ b/drivers/iommu/intel/iommu.c
+@@ -191,38 +191,6 @@ static phys_addr_t root_entry_uctp(struct root_entry *re)
+       return re->hi & VTD_PAGE_MASK;
+ }
+-static inline void context_clear_pasid_enable(struct context_entry *context)
+-{
+-      context->lo &= ~(1ULL << 11);
+-}
+-
+-static inline bool context_pasid_enabled(struct context_entry *context)
+-{
+-      return !!(context->lo & (1ULL << 11));
+-}
+-
+-static inline void context_set_copied(struct context_entry *context)
+-{
+-      context->hi |= (1ull << 3);
+-}
+-
+-static inline bool context_copied(struct context_entry *context)
+-{
+-      return !!(context->hi & (1ULL << 3));
+-}
+-
+-static inline bool __context_present(struct context_entry *context)
+-{
+-      return (context->lo & 1);
+-}
+-
+-bool context_present(struct context_entry *context)
+-{
+-      return context_pasid_enabled(context) ?
+-           __context_present(context) :
+-           __context_present(context) && !context_copied(context);
+-}
+-
+ static inline void context_set_present(struct context_entry *context)
+ {
+       context->lo |= 1;
+@@ -270,6 +238,26 @@ static inline void context_clear_entry(struct context_entry *context)
+       context->hi = 0;
+ }
++static inline bool context_copied(struct intel_iommu *iommu, u8 bus, u8 devfn)
++{
++      if (!iommu->copied_tables)
++              return false;
++
++      return test_bit(((long)bus << 8) | devfn, iommu->copied_tables);
++}
++
++static inline void
++set_context_copied(struct intel_iommu *iommu, u8 bus, u8 devfn)
++{
++      set_bit(((long)bus << 8) | devfn, iommu->copied_tables);
++}
++
++static inline void
++clear_context_copied(struct intel_iommu *iommu, u8 bus, u8 devfn)
++{
++      clear_bit(((long)bus << 8) | devfn, iommu->copied_tables);
++}
++
+ /*
+  * This domain is a statically identity mapping domain.
+  *    1. This domain creats a static 1:1 mapping to all usable memory.
+@@ -792,6 +780,13 @@ struct context_entry *iommu_context_addr(struct intel_iommu *iommu, u8 bus,
+       struct context_entry *context;
+       u64 *entry;
++      /*
++       * Except that the caller requested to allocate a new entry,
++       * returning a copied context entry makes no sense.
++       */
++      if (!alloc && context_copied(iommu, bus, devfn))
++              return NULL;
++
+       entry = &root->lo;
+       if (sm_supported(iommu)) {
+               if (devfn >= 0x80) {
+@@ -1899,6 +1894,11 @@ static void free_dmar_iommu(struct intel_iommu *iommu)
+               iommu->domain_ids = NULL;
+       }
++      if (iommu->copied_tables) {
++              bitmap_free(iommu->copied_tables);
++              iommu->copied_tables = NULL;
++      }
++
+       g_iommus[iommu->seq_id] = NULL;
+       /* free context mapping */
+@@ -2107,7 +2107,7 @@ static int domain_context_mapping_one(struct dmar_domain *domain,
+               goto out_unlock;
+       ret = 0;
+-      if (context_present(context))
++      if (context_present(context) && !context_copied(iommu, bus, devfn))
+               goto out_unlock;
+       /*
+@@ -2119,7 +2119,7 @@ static int domain_context_mapping_one(struct dmar_domain *domain,
+        * in-flight DMA will exist, and we don't need to worry anymore
+        * hereafter.
+        */
+-      if (context_copied(context)) {
++      if (context_copied(iommu, bus, devfn)) {
+               u16 did_old = context_domain_id(context);
+               if (did_old < cap_ndoms(iommu->cap)) {
+@@ -2130,6 +2130,8 @@ static int domain_context_mapping_one(struct dmar_domain *domain,
+                       iommu->flush.flush_iotlb(iommu, did_old, 0, 0,
+                                                DMA_TLB_DSI_FLUSH);
+               }
++
++              clear_context_copied(iommu, bus, devfn);
+       }
+       context_clear_entry(context);
+@@ -3024,32 +3026,14 @@ static int copy_context_table(struct intel_iommu *iommu,
+               /* Now copy the context entry */
+               memcpy(&ce, old_ce + idx, sizeof(ce));
+-              if (!__context_present(&ce))
++              if (!context_present(&ce))
+                       continue;
+               did = context_domain_id(&ce);
+               if (did >= 0 && did < cap_ndoms(iommu->cap))
+                       set_bit(did, iommu->domain_ids);
+-              /*
+-               * We need a marker for copied context entries. This
+-               * marker needs to work for the old format as well as
+-               * for extended context entries.
+-               *
+-               * Bit 67 of the context entry is used. In the old
+-               * format this bit is available to software, in the
+-               * extended format it is the PGE bit, but PGE is ignored
+-               * by HW if PASIDs are disabled (and thus still
+-               * available).
+-               *
+-               * So disable PASIDs first and then mark the entry
+-               * copied. This means that we don't copy PASID
+-               * translations from the old kernel, but this is fine as
+-               * faults there are not fatal.
+-               */
+-              context_clear_pasid_enable(&ce);
+-              context_set_copied(&ce);
+-
++              set_context_copied(iommu, bus, devfn);
+               new_ce[idx] = ce;
+       }
+@@ -3076,8 +3060,8 @@ static int copy_translation_tables(struct intel_iommu *iommu)
+       bool new_ext, ext;
+       rtaddr_reg = dmar_readq(iommu->reg + DMAR_RTADDR_REG);
+-      ext        = !!(rtaddr_reg & DMA_RTADDR_RTT);
+-      new_ext    = !!ecap_ecs(iommu->ecap);
++      ext        = !!(rtaddr_reg & DMA_RTADDR_SMT);
++      new_ext    = !!sm_supported(iommu);
+       /*
+        * The RTT bit can only be changed when translation is disabled,
+@@ -3088,6 +3072,10 @@ static int copy_translation_tables(struct intel_iommu *iommu)
+       if (new_ext != ext)
+               return -EINVAL;
++      iommu->copied_tables = bitmap_zalloc(BIT_ULL(16), GFP_KERNEL);
++      if (!iommu->copied_tables)
++              return -ENOMEM;
++
+       old_rt_phys = rtaddr_reg & VTD_PAGE_MASK;
+       if (!old_rt_phys)
+               return -EINVAL;
+diff --git a/include/linux/intel-iommu.h b/include/linux/intel-iommu.h
+index 05a65eb155f76..81da7107e3bd0 100644
+--- a/include/linux/intel-iommu.h
++++ b/include/linux/intel-iommu.h
+@@ -196,7 +196,6 @@
+ #define ecap_dis(e)           (((e) >> 27) & 0x1)
+ #define ecap_nest(e)          (((e) >> 26) & 0x1)
+ #define ecap_mts(e)           (((e) >> 25) & 0x1)
+-#define ecap_ecs(e)           (((e) >> 24) & 0x1)
+ #define ecap_iotlb_offset(e)  ((((e) >> 8) & 0x3ff) * 16)
+ #define ecap_max_iotlb_offset(e) (ecap_iotlb_offset(e) + 16)
+ #define ecap_coherent(e)      ((e) & 0x1)
+@@ -264,7 +263,6 @@
+ #define DMA_GSTS_CFIS (((u32)1) << 23)
+ /* DMA_RTADDR_REG */
+-#define DMA_RTADDR_RTT (((u64)1) << 11)
+ #define DMA_RTADDR_SMT (((u64)1) << 10)
+ /* CCMD_REG */
+@@ -594,6 +592,7 @@ struct intel_iommu {
+ #ifdef CONFIG_INTEL_IOMMU
+       unsigned long   *domain_ids; /* bitmap of domains */
+       struct dmar_domain ***domains; /* ptr to domains */
++      unsigned long   *copied_tables; /* bitmap of copied tables */
+       spinlock_t      lock; /* protect context, domain ids */
+       struct root_entry *root_entry; /* virtual address */
+@@ -713,6 +712,11 @@ static inline int first_pte_in_page(struct dma_pte *pte)
+       return !((unsigned long)pte & ~VTD_PAGE_MASK);
+ }
++static inline bool context_present(struct context_entry *context)
++{
++      return (context->lo & 1);
++}
++
+ extern struct dmar_drhd_unit * dmar_find_matched_drhd_unit(struct pci_dev *dev);
+ extern int dmar_find_matched_atsr_unit(struct pci_dev *dev);
+@@ -806,7 +810,6 @@ static inline void intel_iommu_debugfs_init(void) {}
+ #endif /* CONFIG_INTEL_IOMMU_DEBUGFS */
+ extern const struct attribute_group *intel_iommu_groups[];
+-bool context_present(struct context_entry *context);
+ struct context_entry *iommu_context_addr(struct intel_iommu *iommu, u8 bus,
+                                        u8 devfn, int alloc);
+-- 
+2.35.1
+
diff --git a/queue-5.15/lockdep-fix-wunused-parameter-for-_this_ip_.patch b/queue-5.15/lockdep-fix-wunused-parameter-for-_this_ip_.patch
new file mode 100644 (file)
index 0000000..faeead9
--- /dev/null
@@ -0,0 +1,262 @@
+From 6b99f79abe2cb015bac11c0ee6068582ed96ddba Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Mon, 14 Mar 2022 15:19:03 -0700
+Subject: lockdep: Fix -Wunused-parameter for _THIS_IP_
+
+From: Nick Desaulniers <ndesaulniers@google.com>
+
+[ Upstream commit 8b023accc8df70e72f7704d29fead7ca914d6837 ]
+
+While looking into a bug related to the compiler's handling of addresses
+of labels, I noticed some uses of _THIS_IP_ seemed unused in lockdep.
+Drive by cleanup.
+
+-Wunused-parameter:
+kernel/locking/lockdep.c:1383:22: warning: unused parameter 'ip'
+kernel/locking/lockdep.c:4246:48: warning: unused parameter 'ip'
+kernel/locking/lockdep.c:4844:19: warning: unused parameter 'ip'
+
+Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
+Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
+Acked-by: Waiman Long <longman@redhat.com>
+Link: https://lore.kernel.org/r/20220314221909.2027027-1-ndesaulniers@google.com
+Stable-dep-of: 54c3931957f6 ("tracing: hold caller_addr to hardirq_{enable,disable}_ip")
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ arch/arm64/kernel/entry-common.c |  8 ++++----
+ arch/x86/kvm/x86.h               |  2 +-
+ include/linux/irqflags.h         |  4 ++--
+ include/linux/kvm_host.h         |  2 +-
+ kernel/entry/common.c            |  6 +++---
+ kernel/locking/lockdep.c         | 22 ++++++++--------------
+ kernel/sched/idle.c              |  2 +-
+ kernel/trace/trace_preemptirq.c  |  4 ++--
+ 8 files changed, 22 insertions(+), 28 deletions(-)
+
+diff --git a/arch/arm64/kernel/entry-common.c b/arch/arm64/kernel/entry-common.c
+index 32f9796c4ffe7..60225bc09b017 100644
+--- a/arch/arm64/kernel/entry-common.c
++++ b/arch/arm64/kernel/entry-common.c
+@@ -72,7 +72,7 @@ static __always_inline void __exit_to_kernel_mode(struct pt_regs *regs)
+       if (interrupts_enabled(regs)) {
+               if (regs->exit_rcu) {
+                       trace_hardirqs_on_prepare();
+-                      lockdep_hardirqs_on_prepare(CALLER_ADDR0);
++                      lockdep_hardirqs_on_prepare();
+                       rcu_irq_exit();
+                       lockdep_hardirqs_on(CALLER_ADDR0);
+                       return;
+@@ -117,7 +117,7 @@ static __always_inline void enter_from_user_mode(struct pt_regs *regs)
+ static __always_inline void __exit_to_user_mode(void)
+ {
+       trace_hardirqs_on_prepare();
+-      lockdep_hardirqs_on_prepare(CALLER_ADDR0);
++      lockdep_hardirqs_on_prepare();
+       user_enter_irqoff();
+       lockdep_hardirqs_on(CALLER_ADDR0);
+ }
+@@ -175,7 +175,7 @@ static void noinstr arm64_exit_nmi(struct pt_regs *regs)
+       ftrace_nmi_exit();
+       if (restore) {
+               trace_hardirqs_on_prepare();
+-              lockdep_hardirqs_on_prepare(CALLER_ADDR0);
++              lockdep_hardirqs_on_prepare();
+       }
+       rcu_nmi_exit();
+@@ -211,7 +211,7 @@ static void noinstr arm64_exit_el1_dbg(struct pt_regs *regs)
+       if (restore) {
+               trace_hardirqs_on_prepare();
+-              lockdep_hardirqs_on_prepare(CALLER_ADDR0);
++              lockdep_hardirqs_on_prepare();
+       }
+       rcu_nmi_exit();
+diff --git a/arch/x86/kvm/x86.h b/arch/x86/kvm/x86.h
+index 4d6f7a70bdd14..cd0c93ec72fad 100644
+--- a/arch/x86/kvm/x86.h
++++ b/arch/x86/kvm/x86.h
+@@ -26,7 +26,7 @@ static __always_inline void kvm_guest_enter_irqoff(void)
+        */
+       instrumentation_begin();
+       trace_hardirqs_on_prepare();
+-      lockdep_hardirqs_on_prepare(CALLER_ADDR0);
++      lockdep_hardirqs_on_prepare();
+       instrumentation_end();
+       guest_enter_irqoff();
+diff --git a/include/linux/irqflags.h b/include/linux/irqflags.h
+index 600c10da321a7..747f40e0c3260 100644
+--- a/include/linux/irqflags.h
++++ b/include/linux/irqflags.h
+@@ -20,13 +20,13 @@
+ #ifdef CONFIG_PROVE_LOCKING
+   extern void lockdep_softirqs_on(unsigned long ip);
+   extern void lockdep_softirqs_off(unsigned long ip);
+-  extern void lockdep_hardirqs_on_prepare(unsigned long ip);
++  extern void lockdep_hardirqs_on_prepare(void);
+   extern void lockdep_hardirqs_on(unsigned long ip);
+   extern void lockdep_hardirqs_off(unsigned long ip);
+ #else
+   static inline void lockdep_softirqs_on(unsigned long ip) { }
+   static inline void lockdep_softirqs_off(unsigned long ip) { }
+-  static inline void lockdep_hardirqs_on_prepare(unsigned long ip) { }
++  static inline void lockdep_hardirqs_on_prepare(void) { }
+   static inline void lockdep_hardirqs_on(unsigned long ip) { }
+   static inline void lockdep_hardirqs_off(unsigned long ip) { }
+ #endif
+diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
+index fb70dd4ff3b60..38b7e9ab48b84 100644
+--- a/include/linux/kvm_host.h
++++ b/include/linux/kvm_host.h
+@@ -436,7 +436,7 @@ static __always_inline void guest_state_enter_irqoff(void)
+ {
+       instrumentation_begin();
+       trace_hardirqs_on_prepare();
+-      lockdep_hardirqs_on_prepare(CALLER_ADDR0);
++      lockdep_hardirqs_on_prepare();
+       instrumentation_end();
+       guest_context_enter_irqoff();
+diff --git a/kernel/entry/common.c b/kernel/entry/common.c
+index d5a61d565ad5d..998bdb7b8bf7f 100644
+--- a/kernel/entry/common.c
++++ b/kernel/entry/common.c
+@@ -124,7 +124,7 @@ static __always_inline void __exit_to_user_mode(void)
+ {
+       instrumentation_begin();
+       trace_hardirqs_on_prepare();
+-      lockdep_hardirqs_on_prepare(CALLER_ADDR0);
++      lockdep_hardirqs_on_prepare();
+       instrumentation_end();
+       user_enter_irqoff();
+@@ -412,7 +412,7 @@ noinstr void irqentry_exit(struct pt_regs *regs, irqentry_state_t state)
+                       instrumentation_begin();
+                       /* Tell the tracer that IRET will enable interrupts */
+                       trace_hardirqs_on_prepare();
+-                      lockdep_hardirqs_on_prepare(CALLER_ADDR0);
++                      lockdep_hardirqs_on_prepare();
+                       instrumentation_end();
+                       rcu_irq_exit();
+                       lockdep_hardirqs_on(CALLER_ADDR0);
+@@ -465,7 +465,7 @@ void noinstr irqentry_nmi_exit(struct pt_regs *regs, irqentry_state_t irq_state)
+       ftrace_nmi_exit();
+       if (irq_state.lockdep) {
+               trace_hardirqs_on_prepare();
+-              lockdep_hardirqs_on_prepare(CALLER_ADDR0);
++              lockdep_hardirqs_on_prepare();
+       }
+       instrumentation_end();
+diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c
+index 120bbdacd58bb..e6a282bc16652 100644
+--- a/kernel/locking/lockdep.c
++++ b/kernel/locking/lockdep.c
+@@ -1368,7 +1368,7 @@ static struct lock_list *alloc_list_entry(void)
+  */
+ static int add_lock_to_list(struct lock_class *this,
+                           struct lock_class *links_to, struct list_head *head,
+-                          unsigned long ip, u16 distance, u8 dep,
++                          u16 distance, u8 dep,
+                           const struct lock_trace *trace)
+ {
+       struct lock_list *entry;
+@@ -3121,19 +3121,15 @@ check_prev_add(struct task_struct *curr, struct held_lock *prev,
+        * to the previous lock's dependency list:
+        */
+       ret = add_lock_to_list(hlock_class(next), hlock_class(prev),
+-                             &hlock_class(prev)->locks_after,
+-                             next->acquire_ip, distance,
+-                             calc_dep(prev, next),
+-                             *trace);
++                             &hlock_class(prev)->locks_after, distance,
++                             calc_dep(prev, next), *trace);
+       if (!ret)
+               return 0;
+       ret = add_lock_to_list(hlock_class(prev), hlock_class(next),
+-                             &hlock_class(next)->locks_before,
+-                             next->acquire_ip, distance,
+-                             calc_depb(prev, next),
+-                             *trace);
++                             &hlock_class(next)->locks_before, distance,
++                             calc_depb(prev, next), *trace);
+       if (!ret)
+               return 0;
+@@ -4224,14 +4220,13 @@ static void __trace_hardirqs_on_caller(void)
+ /**
+  * lockdep_hardirqs_on_prepare - Prepare for enabling interrupts
+- * @ip:               Caller address
+  *
+  * Invoked before a possible transition to RCU idle from exit to user or
+  * guest mode. This ensures that all RCU operations are done before RCU
+  * stops watching. After the RCU transition lockdep_hardirqs_on() has to be
+  * invoked to set the final state.
+  */
+-void lockdep_hardirqs_on_prepare(unsigned long ip)
++void lockdep_hardirqs_on_prepare(void)
+ {
+       if (unlikely(!debug_locks))
+               return;
+@@ -4828,8 +4823,7 @@ EXPORT_SYMBOL_GPL(__lockdep_no_validate__);
+ static void
+ print_lock_nested_lock_not_held(struct task_struct *curr,
+-                              struct held_lock *hlock,
+-                              unsigned long ip)
++                              struct held_lock *hlock)
+ {
+       if (!debug_locks_off())
+               return;
+@@ -5005,7 +4999,7 @@ static int __lock_acquire(struct lockdep_map *lock, unsigned int subclass,
+       chain_key = iterate_chain_key(chain_key, hlock_id(hlock));
+       if (nest_lock && !__lock_is_held(nest_lock, -1)) {
+-              print_lock_nested_lock_not_held(curr, hlock, ip);
++              print_lock_nested_lock_not_held(curr, hlock);
+               return 0;
+       }
+diff --git a/kernel/sched/idle.c b/kernel/sched/idle.c
+index d17b0a5ce6ac3..499a3e286cd05 100644
+--- a/kernel/sched/idle.c
++++ b/kernel/sched/idle.c
+@@ -105,7 +105,7 @@ void __cpuidle default_idle_call(void)
+                * last -- this is very similar to the entry code.
+                */
+               trace_hardirqs_on_prepare();
+-              lockdep_hardirqs_on_prepare(_THIS_IP_);
++              lockdep_hardirqs_on_prepare();
+               rcu_idle_enter();
+               lockdep_hardirqs_on(_THIS_IP_);
+diff --git a/kernel/trace/trace_preemptirq.c b/kernel/trace/trace_preemptirq.c
+index f4938040c2286..95b58bd757ce4 100644
+--- a/kernel/trace/trace_preemptirq.c
++++ b/kernel/trace/trace_preemptirq.c
+@@ -46,7 +46,7 @@ void trace_hardirqs_on(void)
+               this_cpu_write(tracing_irq_cpu, 0);
+       }
+-      lockdep_hardirqs_on_prepare(CALLER_ADDR0);
++      lockdep_hardirqs_on_prepare();
+       lockdep_hardirqs_on(CALLER_ADDR0);
+ }
+ EXPORT_SYMBOL(trace_hardirqs_on);
+@@ -94,7 +94,7 @@ __visible void trace_hardirqs_on_caller(unsigned long caller_addr)
+               this_cpu_write(tracing_irq_cpu, 0);
+       }
+-      lockdep_hardirqs_on_prepare(CALLER_ADDR0);
++      lockdep_hardirqs_on_prepare();
+       lockdep_hardirqs_on(CALLER_ADDR0);
+ }
+ EXPORT_SYMBOL(trace_hardirqs_on_caller);
+-- 
+2.35.1
+
diff --git a/queue-5.15/series b/queue-5.15/series
new file mode 100644 (file)
index 0000000..c24c5a9
--- /dev/null
@@ -0,0 +1,11 @@
+arm-dts-imx-align-spi-nor-node-name-with-dtschema.patch
+arm-dts-imx6qdl-kontron-samx6i-fix-spi-flash-compati.patch
+docs-i2c-i2c-topology-fix-incorrect-heading.patch
+arm-dts-at91-fix-low-limit-for-cpu-regulator.patch
+arm-dts-at91-sama7g5ek-specify-proper-regulator-outp.patch
+lockdep-fix-wunused-parameter-for-_this_ip_.patch
+x86-mm-force-inline-__phys_addr_nodebug.patch
+task_stack-x86-cea-force-inline-stack-helpers.patch
+tracing-hold-caller_addr-to-hardirq_-enable-disable-.patch
+tracefs-only-clobber-mode-uid-gid-on-remount-if-aske.patch
+iommu-vt-d-fix-kdump-kernels-boot-failure-with-scala.patch
diff --git a/queue-5.15/task_stack-x86-cea-force-inline-stack-helpers.patch b/queue-5.15/task_stack-x86-cea-force-inline-stack-helpers.patch
new file mode 100644 (file)
index 0000000..0dbc396
--- /dev/null
@@ -0,0 +1,53 @@
+From 8cb4292011602380844665aac8175538514a0cf1 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Wed, 23 Mar 2022 20:02:41 +0100
+Subject: task_stack, x86/cea: Force-inline stack helpers
+
+From: Borislav Petkov <bp@suse.de>
+
+[ Upstream commit e87f4152e542610d0b4c6c8548964a68a59d2040 ]
+
+Force-inline two stack helpers to fix the following objtool warnings:
+
+  vmlinux.o: warning: objtool: in_task_stack()+0xc: call to task_stack_page() leaves .noinstr.text section
+  vmlinux.o: warning: objtool: in_entry_stack()+0x10: call to cpu_entry_stack() leaves .noinstr.text section
+
+Signed-off-by: Borislav Petkov <bp@suse.de>
+Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
+Link: https://lore.kernel.org/r/20220324183607.31717-2-bp@alien8.de
+Stable-dep-of: 54c3931957f6 ("tracing: hold caller_addr to hardirq_{enable,disable}_ip")
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ arch/x86/include/asm/cpu_entry_area.h | 2 +-
+ include/linux/sched/task_stack.h      | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/arch/x86/include/asm/cpu_entry_area.h b/arch/x86/include/asm/cpu_entry_area.h
+index dd5ea1bdf04c5..75efc4c6f0766 100644
+--- a/arch/x86/include/asm/cpu_entry_area.h
++++ b/arch/x86/include/asm/cpu_entry_area.h
+@@ -143,7 +143,7 @@ extern void cea_set_pte(void *cea_vaddr, phys_addr_t pa, pgprot_t flags);
+ extern struct cpu_entry_area *get_cpu_entry_area(int cpu);
+-static inline struct entry_stack *cpu_entry_stack(int cpu)
++static __always_inline struct entry_stack *cpu_entry_stack(int cpu)
+ {
+       return &get_cpu_entry_area(cpu)->entry_stack_page.stack;
+ }
+diff --git a/include/linux/sched/task_stack.h b/include/linux/sched/task_stack.h
+index d10150587d819..1009b6b5ce403 100644
+--- a/include/linux/sched/task_stack.h
++++ b/include/linux/sched/task_stack.h
+@@ -16,7 +16,7 @@
+  * try_get_task_stack() instead.  task_stack_page will return a pointer
+  * that could get freed out from under you.
+  */
+-static inline void *task_stack_page(const struct task_struct *task)
++static __always_inline void *task_stack_page(const struct task_struct *task)
+ {
+       return task->stack;
+ }
+-- 
+2.35.1
+
diff --git a/queue-5.15/tracefs-only-clobber-mode-uid-gid-on-remount-if-aske.patch b/queue-5.15/tracefs-only-clobber-mode-uid-gid-on-remount-if-aske.patch
new file mode 100644 (file)
index 0000000..d184e95
--- /dev/null
@@ -0,0 +1,143 @@
+From a74f189e541e667abf00d5df5b94fb07ddbacb08 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Fri, 26 Aug 2022 17:44:17 -0700
+Subject: tracefs: Only clobber mode/uid/gid on remount if asked
+
+From: Brian Norris <briannorris@chromium.org>
+
+[ Upstream commit 47311db8e8f33011d90dee76b39c8886120cdda4 ]
+
+Users may have explicitly configured their tracefs permissions; we
+shouldn't overwrite those just because a second mount appeared.
+
+Only clobber if the options were provided at mount time.
+
+Note: the previous behavior was especially surprising in the presence of
+automounted /sys/kernel/debug/tracing/.
+
+Existing behavior:
+
+  ## Pre-existing status: tracefs is 0755.
+  # stat -c '%A' /sys/kernel/tracing/
+  drwxr-xr-x
+
+  ## (Re)trigger the automount.
+  # umount /sys/kernel/debug/tracing
+  # stat -c '%A' /sys/kernel/debug/tracing/.
+  drwx------
+
+  ## Unexpected: the automount changed mode for other mount instances.
+  # stat -c '%A' /sys/kernel/tracing/
+  drwx------
+
+New behavior (after this change):
+
+  ## Pre-existing status: tracefs is 0755.
+  # stat -c '%A' /sys/kernel/tracing/
+  drwxr-xr-x
+
+  ## (Re)trigger the automount.
+  # umount /sys/kernel/debug/tracing
+  # stat -c '%A' /sys/kernel/debug/tracing/.
+  drwxr-xr-x
+
+  ## Expected: the automount does not change other mount instances.
+  # stat -c '%A' /sys/kernel/tracing/
+  drwxr-xr-x
+
+Link: https://lkml.kernel.org/r/20220826174353.2.Iab6e5ea57963d6deca5311b27fb7226790d44406@changeid
+
+Cc: stable@vger.kernel.org
+Fixes: 4282d60689d4f ("tracefs: Add new tracefs file system")
+Signed-off-by: Brian Norris <briannorris@chromium.org>
+Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ fs/tracefs/inode.c | 31 +++++++++++++++++++++++--------
+ 1 file changed, 23 insertions(+), 8 deletions(-)
+
+diff --git a/fs/tracefs/inode.c b/fs/tracefs/inode.c
+index f2625a372a3ae..066e8344934de 100644
+--- a/fs/tracefs/inode.c
++++ b/fs/tracefs/inode.c
+@@ -141,6 +141,8 @@ struct tracefs_mount_opts {
+       kuid_t uid;
+       kgid_t gid;
+       umode_t mode;
++      /* Opt_* bitfield. */
++      unsigned int opts;
+ };
+ enum {
+@@ -241,6 +243,7 @@ static int tracefs_parse_options(char *data, struct tracefs_mount_opts *opts)
+       kgid_t gid;
+       char *p;
++      opts->opts = 0;
+       opts->mode = TRACEFS_DEFAULT_MODE;
+       while ((p = strsep(&data, ",")) != NULL) {
+@@ -275,24 +278,36 @@ static int tracefs_parse_options(char *data, struct tracefs_mount_opts *opts)
+                * but traditionally tracefs has ignored all mount options
+                */
+               }
++
++              opts->opts |= BIT(token);
+       }
+       return 0;
+ }
+-static int tracefs_apply_options(struct super_block *sb)
++static int tracefs_apply_options(struct super_block *sb, bool remount)
+ {
+       struct tracefs_fs_info *fsi = sb->s_fs_info;
+       struct inode *inode = sb->s_root->d_inode;
+       struct tracefs_mount_opts *opts = &fsi->mount_opts;
+-      inode->i_mode &= ~S_IALLUGO;
+-      inode->i_mode |= opts->mode;
++      /*
++       * On remount, only reset mode/uid/gid if they were provided as mount
++       * options.
++       */
++
++      if (!remount || opts->opts & BIT(Opt_mode)) {
++              inode->i_mode &= ~S_IALLUGO;
++              inode->i_mode |= opts->mode;
++      }
+-      inode->i_uid = opts->uid;
++      if (!remount || opts->opts & BIT(Opt_uid))
++              inode->i_uid = opts->uid;
+-      /* Set all the group ids to the mount option */
+-      set_gid(sb->s_root, opts->gid);
++      if (!remount || opts->opts & BIT(Opt_gid)) {
++              /* Set all the group ids to the mount option */
++              set_gid(sb->s_root, opts->gid);
++      }
+       return 0;
+ }
+@@ -307,7 +322,7 @@ static int tracefs_remount(struct super_block *sb, int *flags, char *data)
+       if (err)
+               goto fail;
+-      tracefs_apply_options(sb);
++      tracefs_apply_options(sb, true);
+ fail:
+       return err;
+@@ -359,7 +374,7 @@ static int trace_fill_super(struct super_block *sb, void *data, int silent)
+       sb->s_op = &tracefs_super_operations;
+-      tracefs_apply_options(sb);
++      tracefs_apply_options(sb, false);
+       return 0;
+-- 
+2.35.1
+
diff --git a/queue-5.15/tracing-hold-caller_addr-to-hardirq_-enable-disable-.patch b/queue-5.15/tracing-hold-caller_addr-to-hardirq_-enable-disable-.patch
new file mode 100644 (file)
index 0000000..182343a
--- /dev/null
@@ -0,0 +1,58 @@
+From 8119ce1587479bf02a9860ddeae12cc8b3c2e745 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Thu, 1 Sep 2022 18:45:14 +0800
+Subject: tracing: hold caller_addr to hardirq_{enable,disable}_ip
+
+From: Yipeng Zou <zouyipeng@huawei.com>
+
+[ Upstream commit 54c3931957f6a6194d5972eccc36d052964b2abe ]
+
+Currently, The arguments passing to lockdep_hardirqs_{on,off} was fixed
+in CALLER_ADDR0.
+The function trace_hardirqs_on_caller should have been intended to use
+caller_addr to represent the address that caller wants to be traced.
+
+For example, lockdep log in riscv showing the last {enabled,disabled} at
+__trace_hardirqs_{on,off} all the time(if called by):
+[   57.853175] hardirqs last  enabled at (2519): __trace_hardirqs_on+0xc/0x14
+[   57.853848] hardirqs last disabled at (2520): __trace_hardirqs_off+0xc/0x14
+
+After use trace_hardirqs_xx_caller, we can get more effective information:
+[   53.781428] hardirqs last  enabled at (2595): restore_all+0xe/0x66
+[   53.782185] hardirqs last disabled at (2596): ret_from_exception+0xa/0x10
+
+Link: https://lkml.kernel.org/r/20220901104515.135162-2-zouyipeng@huawei.com
+
+Cc: stable@vger.kernel.org
+Fixes: c3bc8fd637a96 ("tracing: Centralize preemptirq tracepoints and unify their usage")
+Signed-off-by: Yipeng Zou <zouyipeng@huawei.com>
+Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ kernel/trace/trace_preemptirq.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/kernel/trace/trace_preemptirq.c b/kernel/trace/trace_preemptirq.c
+index 95b58bd757ce4..1e130da1b742c 100644
+--- a/kernel/trace/trace_preemptirq.c
++++ b/kernel/trace/trace_preemptirq.c
+@@ -95,14 +95,14 @@ __visible void trace_hardirqs_on_caller(unsigned long caller_addr)
+       }
+       lockdep_hardirqs_on_prepare();
+-      lockdep_hardirqs_on(CALLER_ADDR0);
++      lockdep_hardirqs_on(caller_addr);
+ }
+ EXPORT_SYMBOL(trace_hardirqs_on_caller);
+ NOKPROBE_SYMBOL(trace_hardirqs_on_caller);
+ __visible void trace_hardirqs_off_caller(unsigned long caller_addr)
+ {
+-      lockdep_hardirqs_off(CALLER_ADDR0);
++      lockdep_hardirqs_off(caller_addr);
+       if (!this_cpu_read(tracing_irq_cpu)) {
+               this_cpu_write(tracing_irq_cpu, 1);
+-- 
+2.35.1
+
diff --git a/queue-5.15/x86-mm-force-inline-__phys_addr_nodebug.patch b/queue-5.15/x86-mm-force-inline-__phys_addr_nodebug.patch
new file mode 100644 (file)
index 0000000..fab03b8
--- /dev/null
@@ -0,0 +1,38 @@
+From 6726cd70938d68c0bb8fffc17bfcc274b9d12e52 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Wed, 23 Mar 2022 23:24:12 +0100
+Subject: x86/mm: Force-inline __phys_addr_nodebug()
+
+From: Borislav Petkov <bp@suse.de>
+
+[ Upstream commit ace1a98519270c586c0d4179419292df67441cd1 ]
+
+Fix:
+
+  vmlinux.o: warning: objtool: __sev_es_nmi_complete()+0x8b: call to __phys_addr_nodebug() leaves .noinstr.text section
+
+Signed-off-by: Borislav Petkov <bp@suse.de>
+Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
+Link: https://lore.kernel.org/r/20220324183607.31717-4-bp@alien8.de
+Stable-dep-of: 54c3931957f6 ("tracing: hold caller_addr to hardirq_{enable,disable}_ip")
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ arch/x86/include/asm/page_64.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/arch/x86/include/asm/page_64.h b/arch/x86/include/asm/page_64.h
+index 4bde0dc66100c..56891399fa2a6 100644
+--- a/arch/x86/include/asm/page_64.h
++++ b/arch/x86/include/asm/page_64.h
+@@ -15,7 +15,7 @@ extern unsigned long page_offset_base;
+ extern unsigned long vmalloc_base;
+ extern unsigned long vmemmap_base;
+-static inline unsigned long __phys_addr_nodebug(unsigned long x)
++static __always_inline unsigned long __phys_addr_nodebug(unsigned long x)
+ {
+       unsigned long y = x - __START_KERNEL_map;
+-- 
+2.35.1
+