Gentoo Archives: gentoo-commits

From: Mike Pagano <mpagano@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/linux-patches:5.15 commit in: /
Date: Tue, 20 Sep 2022 12:01:17
Message-Id: 1663675260.4957b5bbf67444f30231532668c95eaae4797ede.mpagano@gentoo
1 commit: 4957b5bbf67444f30231532668c95eaae4797ede
2 Author: Mike Pagano <mpagano <AT> gentoo <DOT> org>
3 AuthorDate: Tue Sep 20 12:01:00 2022 +0000
4 Commit: Mike Pagano <mpagano <AT> gentoo <DOT> org>
5 CommitDate: Tue Sep 20 12:01:00 2022 +0000
6 URL: https://gitweb.gentoo.org/proj/linux-patches.git/commit/?id=4957b5bb
7
8 Linux patch 5.15.69
9
10 Signed-off-by: Mike Pagano <mpagano <AT> gentoo.org>
11
12 0000_README | 4 +
13 1068_linux-5.15.69.patch | 1623 ++++++++++++++++++++++++++++++++++++++++++++++
14 2 files changed, 1627 insertions(+)
15
16 diff --git a/0000_README b/0000_README
17 index 6021975a..7caf56d0 100644
18 --- a/0000_README
19 +++ b/0000_README
20 @@ -315,6 +315,10 @@ Patch: 1067_linux-5.15.68.patch
21 From: http://www.kernel.org
22 Desc: Linux 5.15.68
23
24 +Patch: 1068_linux-5.15.69.patch
25 +From: http://www.kernel.org
26 +Desc: Linux 5.15.69
27 +
28 Patch: 1500_XATTR_USER_PREFIX.patch
29 From: https://bugs.gentoo.org/show_bug.cgi?id=470644
30 Desc: Support for namespace user.pax.* on tmpfs.
31
32 diff --git a/1068_linux-5.15.69.patch b/1068_linux-5.15.69.patch
33 new file mode 100644
34 index 00000000..569dcfef
35 --- /dev/null
36 +++ b/1068_linux-5.15.69.patch
37 @@ -0,0 +1,1623 @@
38 +diff --git a/Documentation/devicetree/bindings/iio/gyroscope/bosch,bmg160.yaml b/Documentation/devicetree/bindings/iio/gyroscope/bosch,bmg160.yaml
39 +index b6bbc312a7cf7..1414ba9977c16 100644
40 +--- a/Documentation/devicetree/bindings/iio/gyroscope/bosch,bmg160.yaml
41 ++++ b/Documentation/devicetree/bindings/iio/gyroscope/bosch,bmg160.yaml
42 +@@ -24,8 +24,10 @@ properties:
43 +
44 + interrupts:
45 + minItems: 1
46 ++ maxItems: 2
47 + description:
48 + Should be configured with type IRQ_TYPE_EDGE_RISING.
49 ++ If two interrupts are provided, expected order is INT1 and INT2.
50 +
51 + required:
52 + - compatible
53 +diff --git a/Documentation/input/joydev/joystick.rst b/Documentation/input/joydev/joystick.rst
54 +index f615906a0821b..6d721396717a2 100644
55 +--- a/Documentation/input/joydev/joystick.rst
56 ++++ b/Documentation/input/joydev/joystick.rst
57 +@@ -517,6 +517,7 @@ All I-Force devices are supported by the iforce module. This includes:
58 + * AVB Mag Turbo Force
59 + * AVB Top Shot Pegasus
60 + * AVB Top Shot Force Feedback Racing Wheel
61 ++* Boeder Force Feedback Wheel
62 + * Logitech WingMan Force
63 + * Logitech WingMan Force Wheel
64 + * Guillemot Race Leader Force Feedback
65 +diff --git a/Makefile b/Makefile
66 +index d6b672375c079..2134d5711dccc 100644
67 +--- a/Makefile
68 ++++ b/Makefile
69 +@@ -1,7 +1,7 @@
70 + # SPDX-License-Identifier: GPL-2.0
71 + VERSION = 5
72 + PATCHLEVEL = 15
73 +-SUBLEVEL = 68
74 ++SUBLEVEL = 69
75 + EXTRAVERSION =
76 + NAME = Trick or Treat
77 +
78 +diff --git a/arch/arm/boot/dts/at91-sama7g5ek.dts b/arch/arm/boot/dts/at91-sama7g5ek.dts
79 +index bac0e49cc5770..2038e387be288 100644
80 +--- a/arch/arm/boot/dts/at91-sama7g5ek.dts
81 ++++ b/arch/arm/boot/dts/at91-sama7g5ek.dts
82 +@@ -169,8 +169,8 @@
83 + regulators {
84 + vdd_3v3: VDD_IO {
85 + regulator-name = "VDD_IO";
86 +- regulator-min-microvolt = <1200000>;
87 +- regulator-max-microvolt = <3700000>;
88 ++ regulator-min-microvolt = <3300000>;
89 ++ regulator-max-microvolt = <3300000>;
90 + regulator-initial-mode = <2>;
91 + regulator-allowed-modes = <2>, <4>;
92 + regulator-always-on;
93 +@@ -188,8 +188,8 @@
94 +
95 + vddioddr: VDD_DDR {
96 + regulator-name = "VDD_DDR";
97 +- regulator-min-microvolt = <1300000>;
98 +- regulator-max-microvolt = <1450000>;
99 ++ regulator-min-microvolt = <1350000>;
100 ++ regulator-max-microvolt = <1350000>;
101 + regulator-initial-mode = <2>;
102 + regulator-allowed-modes = <2>, <4>;
103 + regulator-always-on;
104 +@@ -209,8 +209,8 @@
105 +
106 + vddcore: VDD_CORE {
107 + regulator-name = "VDD_CORE";
108 +- regulator-min-microvolt = <1100000>;
109 +- regulator-max-microvolt = <1850000>;
110 ++ regulator-min-microvolt = <1150000>;
111 ++ regulator-max-microvolt = <1150000>;
112 + regulator-initial-mode = <2>;
113 + regulator-allowed-modes = <2>, <4>;
114 + regulator-always-on;
115 +@@ -228,8 +228,8 @@
116 +
117 + vddcpu: VDD_OTHER {
118 + regulator-name = "VDD_OTHER";
119 +- regulator-min-microvolt = <1125000>;
120 +- regulator-max-microvolt = <1850000>;
121 ++ regulator-min-microvolt = <1050000>;
122 ++ regulator-max-microvolt = <1250000>;
123 + regulator-initial-mode = <2>;
124 + regulator-allowed-modes = <2>, <4>;
125 + regulator-ramp-delay = <3125>;
126 +@@ -248,8 +248,8 @@
127 +
128 + vldo1: LDO1 {
129 + regulator-name = "LDO1";
130 +- regulator-min-microvolt = <1200000>;
131 +- regulator-max-microvolt = <3700000>;
132 ++ regulator-min-microvolt = <1800000>;
133 ++ regulator-max-microvolt = <1800000>;
134 + regulator-always-on;
135 +
136 + regulator-state-standby {
137 +diff --git a/arch/arm/boot/dts/imx28-evk.dts b/arch/arm/boot/dts/imx28-evk.dts
138 +index 7e2b0f198dfad..1053b7c584d81 100644
139 +--- a/arch/arm/boot/dts/imx28-evk.dts
140 ++++ b/arch/arm/boot/dts/imx28-evk.dts
141 +@@ -129,7 +129,7 @@
142 + pinctrl-0 = <&spi2_pins_a>;
143 + status = "okay";
144 +
145 +- flash: m25p80@0 {
146 ++ flash: flash@0 {
147 + #address-cells = <1>;
148 + #size-cells = <1>;
149 + compatible = "sst,sst25vf016b", "jedec,spi-nor";
150 +diff --git a/arch/arm/boot/dts/imx28-m28evk.dts b/arch/arm/boot/dts/imx28-m28evk.dts
151 +index f3bddc5ada4b8..13acdc7916b9b 100644
152 +--- a/arch/arm/boot/dts/imx28-m28evk.dts
153 ++++ b/arch/arm/boot/dts/imx28-m28evk.dts
154 +@@ -33,7 +33,7 @@
155 + pinctrl-0 = <&spi2_pins_a>;
156 + status = "okay";
157 +
158 +- flash: m25p80@0 {
159 ++ flash: flash@0 {
160 + #address-cells = <1>;
161 + #size-cells = <1>;
162 + compatible = "m25p80", "jedec,spi-nor";
163 +diff --git a/arch/arm/boot/dts/imx28-sps1.dts b/arch/arm/boot/dts/imx28-sps1.dts
164 +index 43be7a6a769bc..90928db0df701 100644
165 +--- a/arch/arm/boot/dts/imx28-sps1.dts
166 ++++ b/arch/arm/boot/dts/imx28-sps1.dts
167 +@@ -51,7 +51,7 @@
168 + pinctrl-0 = <&spi2_pins_a>;
169 + status = "okay";
170 +
171 +- flash: m25p80@0 {
172 ++ flash: flash@0 {
173 + #address-cells = <1>;
174 + #size-cells = <1>;
175 + compatible = "everspin,mr25h256", "mr25h256";
176 +diff --git a/arch/arm/boot/dts/imx6dl-rex-basic.dts b/arch/arm/boot/dts/imx6dl-rex-basic.dts
177 +index 0f1616bfa9a80..b72f8ea1e6f6c 100644
178 +--- a/arch/arm/boot/dts/imx6dl-rex-basic.dts
179 ++++ b/arch/arm/boot/dts/imx6dl-rex-basic.dts
180 +@@ -19,7 +19,7 @@
181 + };
182 +
183 + &ecspi3 {
184 +- flash: m25p80@0 {
185 ++ flash: flash@0 {
186 + compatible = "sst,sst25vf016b", "jedec,spi-nor";
187 + spi-max-frequency = <20000000>;
188 + reg = <0>;
189 +diff --git a/arch/arm/boot/dts/imx6q-ba16.dtsi b/arch/arm/boot/dts/imx6q-ba16.dtsi
190 +index 6330d75f8f390..f266f1b7e0cfc 100644
191 +--- a/arch/arm/boot/dts/imx6q-ba16.dtsi
192 ++++ b/arch/arm/boot/dts/imx6q-ba16.dtsi
193 +@@ -142,7 +142,7 @@
194 + pinctrl-0 = <&pinctrl_ecspi1>;
195 + status = "okay";
196 +
197 +- flash: n25q032@0 {
198 ++ flash: flash@0 {
199 + compatible = "jedec,spi-nor";
200 + #address-cells = <1>;
201 + #size-cells = <1>;
202 +diff --git a/arch/arm/boot/dts/imx6q-bx50v3.dtsi b/arch/arm/boot/dts/imx6q-bx50v3.dtsi
203 +index 10922375c51e1..ead83091e193a 100644
204 +--- a/arch/arm/boot/dts/imx6q-bx50v3.dtsi
205 ++++ b/arch/arm/boot/dts/imx6q-bx50v3.dtsi
206 +@@ -160,7 +160,7 @@
207 + pinctrl-0 = <&pinctrl_ecspi5>;
208 + status = "okay";
209 +
210 +- m25_eeprom: m25p80@0 {
211 ++ m25_eeprom: flash@0 {
212 + compatible = "atmel,at25";
213 + spi-max-frequency = <10000000>;
214 + size = <0x8000>;
215 +diff --git a/arch/arm/boot/dts/imx6q-cm-fx6.dts b/arch/arm/boot/dts/imx6q-cm-fx6.dts
216 +index bfb530f29d9de..1ad41c944b4b9 100644
217 +--- a/arch/arm/boot/dts/imx6q-cm-fx6.dts
218 ++++ b/arch/arm/boot/dts/imx6q-cm-fx6.dts
219 +@@ -260,7 +260,7 @@
220 + pinctrl-0 = <&pinctrl_ecspi1>;
221 + status = "okay";
222 +
223 +- m25p80@0 {
224 ++ flash@0 {
225 + #address-cells = <1>;
226 + #size-cells = <1>;
227 + compatible = "st,m25p", "jedec,spi-nor";
228 +diff --git a/arch/arm/boot/dts/imx6q-dmo-edmqmx6.dts b/arch/arm/boot/dts/imx6q-dmo-edmqmx6.dts
229 +index c713ac03b3b92..9591848cbd37c 100644
230 +--- a/arch/arm/boot/dts/imx6q-dmo-edmqmx6.dts
231 ++++ b/arch/arm/boot/dts/imx6q-dmo-edmqmx6.dts
232 +@@ -102,7 +102,7 @@
233 + cs-gpios = <&gpio1 12 GPIO_ACTIVE_LOW>;
234 + status = "okay";
235 +
236 +- flash: m25p80@0 {
237 ++ flash: flash@0 {
238 + compatible = "m25p80", "jedec,spi-nor";
239 + spi-max-frequency = <40000000>;
240 + reg = <0>;
241 +diff --git a/arch/arm/boot/dts/imx6q-dms-ba16.dts b/arch/arm/boot/dts/imx6q-dms-ba16.dts
242 +index 48fb47e715f6d..137db38f0d27b 100644
243 +--- a/arch/arm/boot/dts/imx6q-dms-ba16.dts
244 ++++ b/arch/arm/boot/dts/imx6q-dms-ba16.dts
245 +@@ -47,7 +47,7 @@
246 + pinctrl-0 = <&pinctrl_ecspi5>;
247 + status = "okay";
248 +
249 +- m25_eeprom: m25p80@0 {
250 ++ m25_eeprom: flash@0 {
251 + compatible = "atmel,at25256B", "atmel,at25";
252 + spi-max-frequency = <20000000>;
253 + size = <0x8000>;
254 +diff --git a/arch/arm/boot/dts/imx6q-gw5400-a.dts b/arch/arm/boot/dts/imx6q-gw5400-a.dts
255 +index 4cde45d5c90c8..e894faba571f9 100644
256 +--- a/arch/arm/boot/dts/imx6q-gw5400-a.dts
257 ++++ b/arch/arm/boot/dts/imx6q-gw5400-a.dts
258 +@@ -137,7 +137,7 @@
259 + pinctrl-0 = <&pinctrl_ecspi1>;
260 + status = "okay";
261 +
262 +- flash: m25p80@0 {
263 ++ flash: flash@0 {
264 + compatible = "sst,w25q256", "jedec,spi-nor";
265 + spi-max-frequency = <30000000>;
266 + reg = <0>;
267 +diff --git a/arch/arm/boot/dts/imx6q-marsboard.dts b/arch/arm/boot/dts/imx6q-marsboard.dts
268 +index 05ee283882290..cc18010023942 100644
269 +--- a/arch/arm/boot/dts/imx6q-marsboard.dts
270 ++++ b/arch/arm/boot/dts/imx6q-marsboard.dts
271 +@@ -100,7 +100,7 @@
272 + cs-gpios = <&gpio2 30 GPIO_ACTIVE_LOW>;
273 + status = "okay";
274 +
275 +- m25p80@0 {
276 ++ flash@0 {
277 + compatible = "microchip,sst25vf016b";
278 + spi-max-frequency = <20000000>;
279 + reg = <0>;
280 +diff --git a/arch/arm/boot/dts/imx6q-rex-pro.dts b/arch/arm/boot/dts/imx6q-rex-pro.dts
281 +index 1767e1a3cd53a..271f4b2d9b9f0 100644
282 +--- a/arch/arm/boot/dts/imx6q-rex-pro.dts
283 ++++ b/arch/arm/boot/dts/imx6q-rex-pro.dts
284 +@@ -19,7 +19,7 @@
285 + };
286 +
287 + &ecspi3 {
288 +- flash: m25p80@0 {
289 ++ flash: flash@0 {
290 + compatible = "sst,sst25vf032b", "jedec,spi-nor";
291 + spi-max-frequency = <20000000>;
292 + reg = <0>;
293 +diff --git a/arch/arm/boot/dts/imx6qdl-aristainetos.dtsi b/arch/arm/boot/dts/imx6qdl-aristainetos.dtsi
294 +index e21f6ac864e54..baa197c90060e 100644
295 +--- a/arch/arm/boot/dts/imx6qdl-aristainetos.dtsi
296 ++++ b/arch/arm/boot/dts/imx6qdl-aristainetos.dtsi
297 +@@ -96,7 +96,7 @@
298 + pinctrl-0 = <&pinctrl_ecspi4>;
299 + status = "okay";
300 +
301 +- flash: m25p80@0 {
302 ++ flash: flash@0 {
303 + #address-cells = <1>;
304 + #size-cells = <1>;
305 + compatible = "micron,n25q128a11", "jedec,spi-nor";
306 +diff --git a/arch/arm/boot/dts/imx6qdl-aristainetos2.dtsi b/arch/arm/boot/dts/imx6qdl-aristainetos2.dtsi
307 +index 563bf9d44fe0d..2ba577e602e7f 100644
308 +--- a/arch/arm/boot/dts/imx6qdl-aristainetos2.dtsi
309 ++++ b/arch/arm/boot/dts/imx6qdl-aristainetos2.dtsi
310 +@@ -131,7 +131,7 @@
311 + pinctrl-0 = <&pinctrl_ecspi4>;
312 + status = "okay";
313 +
314 +- flash: m25p80@1 {
315 ++ flash: flash@1 {
316 + #address-cells = <1>;
317 + #size-cells = <1>;
318 + compatible = "micron,n25q128a11", "jedec,spi-nor";
319 +diff --git a/arch/arm/boot/dts/imx6qdl-dfi-fs700-m60.dtsi b/arch/arm/boot/dts/imx6qdl-dfi-fs700-m60.dtsi
320 +index 648f5fcb72e65..2c1d6f28e6950 100644
321 +--- a/arch/arm/boot/dts/imx6qdl-dfi-fs700-m60.dtsi
322 ++++ b/arch/arm/boot/dts/imx6qdl-dfi-fs700-m60.dtsi
323 +@@ -35,7 +35,7 @@
324 + pinctrl-0 = <&pinctrl_ecspi3>;
325 + status = "okay";
326 +
327 +- flash: m25p80@0 {
328 ++ flash: flash@0 {
329 + #address-cells = <1>;
330 + #size-cells = <1>;
331 + compatible = "sst,sst25vf040b", "jedec,spi-nor";
332 +diff --git a/arch/arm/boot/dts/imx6qdl-kontron-samx6i.dtsi b/arch/arm/boot/dts/imx6qdl-kontron-samx6i.dtsi
333 +index 9a3e5f7827152..6b791d515e294 100644
334 +--- a/arch/arm/boot/dts/imx6qdl-kontron-samx6i.dtsi
335 ++++ b/arch/arm/boot/dts/imx6qdl-kontron-samx6i.dtsi
336 +@@ -248,8 +248,8 @@
337 + status = "okay";
338 +
339 + /* default boot source: workaround #1 for errata ERR006282 */
340 +- smarc_flash: spi-flash@0 {
341 +- compatible = "winbond,w25q16dw", "jedec,spi-nor";
342 ++ smarc_flash: flash@0 {
343 ++ compatible = "jedec,spi-nor";
344 + reg = <0>;
345 + spi-max-frequency = <20000000>;
346 + };
347 +diff --git a/arch/arm/boot/dts/imx6qdl-nit6xlite.dtsi b/arch/arm/boot/dts/imx6qdl-nit6xlite.dtsi
348 +index ac34709e97413..0ad4cb4f1e828 100644
349 +--- a/arch/arm/boot/dts/imx6qdl-nit6xlite.dtsi
350 ++++ b/arch/arm/boot/dts/imx6qdl-nit6xlite.dtsi
351 +@@ -179,7 +179,7 @@
352 + pinctrl-0 = <&pinctrl_ecspi1>;
353 + status = "okay";
354 +
355 +- flash: m25p80@0 {
356 ++ flash: flash@0 {
357 + compatible = "microchip,sst25vf016b";
358 + spi-max-frequency = <20000000>;
359 + reg = <0>;
360 +diff --git a/arch/arm/boot/dts/imx6qdl-nitrogen6_max.dtsi b/arch/arm/boot/dts/imx6qdl-nitrogen6_max.dtsi
361 +index c96f4d7e1e0d8..beaa2dcd436ce 100644
362 +--- a/arch/arm/boot/dts/imx6qdl-nitrogen6_max.dtsi
363 ++++ b/arch/arm/boot/dts/imx6qdl-nitrogen6_max.dtsi
364 +@@ -321,7 +321,7 @@
365 + pinctrl-0 = <&pinctrl_ecspi1>;
366 + status = "okay";
367 +
368 +- flash: m25p80@0 {
369 ++ flash: flash@0 {
370 + compatible = "microchip,sst25vf016b";
371 + spi-max-frequency = <20000000>;
372 + reg = <0>;
373 +diff --git a/arch/arm/boot/dts/imx6qdl-nitrogen6_som2.dtsi b/arch/arm/boot/dts/imx6qdl-nitrogen6_som2.dtsi
374 +index 92d09a3ebe0ee..ee7e2371f94bd 100644
375 +--- a/arch/arm/boot/dts/imx6qdl-nitrogen6_som2.dtsi
376 ++++ b/arch/arm/boot/dts/imx6qdl-nitrogen6_som2.dtsi
377 +@@ -252,7 +252,7 @@
378 + pinctrl-0 = <&pinctrl_ecspi1>;
379 + status = "okay";
380 +
381 +- flash: m25p80@0 {
382 ++ flash: flash@0 {
383 + compatible = "microchip,sst25vf016b";
384 + spi-max-frequency = <20000000>;
385 + reg = <0>;
386 +diff --git a/arch/arm/boot/dts/imx6qdl-nitrogen6x.dtsi b/arch/arm/boot/dts/imx6qdl-nitrogen6x.dtsi
387 +index 49da30d7510c4..904d5d051d63c 100644
388 +--- a/arch/arm/boot/dts/imx6qdl-nitrogen6x.dtsi
389 ++++ b/arch/arm/boot/dts/imx6qdl-nitrogen6x.dtsi
390 +@@ -237,7 +237,7 @@
391 + pinctrl-0 = <&pinctrl_ecspi1>;
392 + status = "okay";
393 +
394 +- flash: m25p80@0 {
395 ++ flash: flash@0 {
396 + compatible = "sst,sst25vf016b", "jedec,spi-nor";
397 + spi-max-frequency = <20000000>;
398 + reg = <0>;
399 +diff --git a/arch/arm/boot/dts/imx6qdl-sabreauto.dtsi b/arch/arm/boot/dts/imx6qdl-sabreauto.dtsi
400 +index 5e58740d40c5b..1368a47620372 100644
401 +--- a/arch/arm/boot/dts/imx6qdl-sabreauto.dtsi
402 ++++ b/arch/arm/boot/dts/imx6qdl-sabreauto.dtsi
403 +@@ -272,7 +272,7 @@
404 + pinctrl-0 = <&pinctrl_ecspi1 &pinctrl_ecspi1_cs>;
405 + status = "disabled"; /* pin conflict with WEIM NOR */
406 +
407 +- flash: m25p80@0 {
408 ++ flash: flash@0 {
409 + #address-cells = <1>;
410 + #size-cells = <1>;
411 + compatible = "st,m25p32", "jedec,spi-nor";
412 +diff --git a/arch/arm/boot/dts/imx6qdl-sabrelite.dtsi b/arch/arm/boot/dts/imx6qdl-sabrelite.dtsi
413 +index eb9a0b104f1c3..901b9a761b66e 100644
414 +--- a/arch/arm/boot/dts/imx6qdl-sabrelite.dtsi
415 ++++ b/arch/arm/boot/dts/imx6qdl-sabrelite.dtsi
416 +@@ -313,7 +313,7 @@
417 + pinctrl-0 = <&pinctrl_ecspi1>;
418 + status = "okay";
419 +
420 +- flash: m25p80@0 {
421 ++ flash: flash@0 {
422 + compatible = "sst,sst25vf016b", "jedec,spi-nor";
423 + spi-max-frequency = <20000000>;
424 + reg = <0>;
425 +diff --git a/arch/arm/boot/dts/imx6qdl-sabresd.dtsi b/arch/arm/boot/dts/imx6qdl-sabresd.dtsi
426 +index 0c0105468a2fe..37482a9023fce 100644
427 +--- a/arch/arm/boot/dts/imx6qdl-sabresd.dtsi
428 ++++ b/arch/arm/boot/dts/imx6qdl-sabresd.dtsi
429 +@@ -197,7 +197,7 @@
430 + pinctrl-0 = <&pinctrl_ecspi1>;
431 + status = "okay";
432 +
433 +- flash: m25p80@0 {
434 ++ flash: flash@0 {
435 + #address-cells = <1>;
436 + #size-cells = <1>;
437 + compatible = "st,m25p32", "jedec,spi-nor";
438 +diff --git a/arch/arm/boot/dts/imx6sl-evk.dts b/arch/arm/boot/dts/imx6sl-evk.dts
439 +index 25f6f2fb1555e..f16c830f1e918 100644
440 +--- a/arch/arm/boot/dts/imx6sl-evk.dts
441 ++++ b/arch/arm/boot/dts/imx6sl-evk.dts
442 +@@ -137,7 +137,7 @@
443 + pinctrl-0 = <&pinctrl_ecspi1>;
444 + status = "okay";
445 +
446 +- flash: m25p80@0 {
447 ++ flash: flash@0 {
448 + #address-cells = <1>;
449 + #size-cells = <1>;
450 + compatible = "st,m25p32", "jedec,spi-nor";
451 +diff --git a/arch/arm/boot/dts/imx6sx-nitrogen6sx.dts b/arch/arm/boot/dts/imx6sx-nitrogen6sx.dts
452 +index 66af78e83b701..a2c79bcf9a11c 100644
453 +--- a/arch/arm/boot/dts/imx6sx-nitrogen6sx.dts
454 ++++ b/arch/arm/boot/dts/imx6sx-nitrogen6sx.dts
455 +@@ -107,7 +107,7 @@
456 + pinctrl-0 = <&pinctrl_ecspi1>;
457 + status = "okay";
458 +
459 +- flash: m25p80@0 {
460 ++ flash: flash@0 {
461 + compatible = "microchip,sst25vf016b";
462 + spi-max-frequency = <20000000>;
463 + reg = <0>;
464 +diff --git a/arch/arm/boot/dts/imx6sx-sdb-reva.dts b/arch/arm/boot/dts/imx6sx-sdb-reva.dts
465 +index dce5dcf96c255..7dda42553f4bc 100644
466 +--- a/arch/arm/boot/dts/imx6sx-sdb-reva.dts
467 ++++ b/arch/arm/boot/dts/imx6sx-sdb-reva.dts
468 +@@ -123,7 +123,7 @@
469 + pinctrl-0 = <&pinctrl_qspi2>;
470 + status = "okay";
471 +
472 +- flash0: s25fl128s@0 {
473 ++ flash0: flash@0 {
474 + reg = <0>;
475 + #address-cells = <1>;
476 + #size-cells = <1>;
477 +@@ -133,7 +133,7 @@
478 + spi-tx-bus-width = <4>;
479 + };
480 +
481 +- flash1: s25fl128s@2 {
482 ++ flash1: flash@2 {
483 + reg = <2>;
484 + #address-cells = <1>;
485 + #size-cells = <1>;
486 +diff --git a/arch/arm/boot/dts/imx6sx-sdb.dts b/arch/arm/boot/dts/imx6sx-sdb.dts
487 +index 99f4cf777a384..969cfe920d252 100644
488 +--- a/arch/arm/boot/dts/imx6sx-sdb.dts
489 ++++ b/arch/arm/boot/dts/imx6sx-sdb.dts
490 +@@ -108,7 +108,7 @@
491 + pinctrl-0 = <&pinctrl_qspi2>;
492 + status = "okay";
493 +
494 +- flash0: n25q256a@0 {
495 ++ flash0: flash@0 {
496 + #address-cells = <1>;
497 + #size-cells = <1>;
498 + compatible = "micron,n25q256a", "jedec,spi-nor";
499 +@@ -118,7 +118,7 @@
500 + reg = <0>;
501 + };
502 +
503 +- flash1: n25q256a@2 {
504 ++ flash1: flash@2 {
505 + #address-cells = <1>;
506 + #size-cells = <1>;
507 + compatible = "micron,n25q256a", "jedec,spi-nor";
508 +diff --git a/arch/arm/boot/dts/imx6ul-14x14-evk.dtsi b/arch/arm/boot/dts/imx6ul-14x14-evk.dtsi
509 +index a3fde3316c736..1a18c41ce385a 100644
510 +--- a/arch/arm/boot/dts/imx6ul-14x14-evk.dtsi
511 ++++ b/arch/arm/boot/dts/imx6ul-14x14-evk.dtsi
512 +@@ -286,7 +286,7 @@
513 + pinctrl-0 = <&pinctrl_qspi>;
514 + status = "okay";
515 +
516 +- flash0: n25q256a@0 {
517 ++ flash0: flash@0 {
518 + #address-cells = <1>;
519 + #size-cells = <1>;
520 + compatible = "micron,n25q256a", "jedec,spi-nor";
521 +diff --git a/arch/arm/boot/dts/imx6ul-kontron-n6310-som.dtsi b/arch/arm/boot/dts/imx6ul-kontron-n6310-som.dtsi
522 +index 47d3ce5d255fa..acd936540d898 100644
523 +--- a/arch/arm/boot/dts/imx6ul-kontron-n6310-som.dtsi
524 ++++ b/arch/arm/boot/dts/imx6ul-kontron-n6310-som.dtsi
525 +@@ -19,7 +19,7 @@
526 + };
527 +
528 + &qspi {
529 +- spi-flash@0 {
530 ++ flash@0 {
531 + #address-cells = <1>;
532 + #size-cells = <1>;
533 + compatible = "spi-nand";
534 +diff --git a/arch/arm/boot/dts/imx6ul-kontron-n6311-som.dtsi b/arch/arm/boot/dts/imx6ul-kontron-n6311-som.dtsi
535 +index a095a7654ac65..29ed38dce5802 100644
536 +--- a/arch/arm/boot/dts/imx6ul-kontron-n6311-som.dtsi
537 ++++ b/arch/arm/boot/dts/imx6ul-kontron-n6311-som.dtsi
538 +@@ -18,7 +18,7 @@
539 + };
540 +
541 + &qspi {
542 +- spi-flash@0 {
543 ++ flash@0 {
544 + #address-cells = <1>;
545 + #size-cells = <1>;
546 + compatible = "spi-nand";
547 +diff --git a/arch/arm/boot/dts/imx6ul-kontron-n6x1x-som-common.dtsi b/arch/arm/boot/dts/imx6ul-kontron-n6x1x-som-common.dtsi
548 +index 2a449a3c1ae27..09a83dbdf6510 100644
549 +--- a/arch/arm/boot/dts/imx6ul-kontron-n6x1x-som-common.dtsi
550 ++++ b/arch/arm/boot/dts/imx6ul-kontron-n6x1x-som-common.dtsi
551 +@@ -19,7 +19,7 @@
552 + pinctrl-0 = <&pinctrl_ecspi2>;
553 + status = "okay";
554 +
555 +- spi-flash@0 {
556 ++ flash@0 {
557 + compatible = "mxicy,mx25v8035f", "jedec,spi-nor";
558 + spi-max-frequency = <50000000>;
559 + reg = <0>;
560 +diff --git a/arch/arm/boot/dts/imx6ull-kontron-n6411-som.dtsi b/arch/arm/boot/dts/imx6ull-kontron-n6411-som.dtsi
561 +index b7e984284e1ad..d000606c07049 100644
562 +--- a/arch/arm/boot/dts/imx6ull-kontron-n6411-som.dtsi
563 ++++ b/arch/arm/boot/dts/imx6ull-kontron-n6411-som.dtsi
564 +@@ -18,7 +18,7 @@
565 + };
566 +
567 + &qspi {
568 +- spi-flash@0 {
569 ++ flash@0 {
570 + #address-cells = <1>;
571 + #size-cells = <1>;
572 + compatible = "spi-nand";
573 +diff --git a/arch/arm64/kernel/entry-common.c b/arch/arm64/kernel/entry-common.c
574 +index 32f9796c4ffe7..60225bc09b017 100644
575 +--- a/arch/arm64/kernel/entry-common.c
576 ++++ b/arch/arm64/kernel/entry-common.c
577 +@@ -72,7 +72,7 @@ static __always_inline void __exit_to_kernel_mode(struct pt_regs *regs)
578 + if (interrupts_enabled(regs)) {
579 + if (regs->exit_rcu) {
580 + trace_hardirqs_on_prepare();
581 +- lockdep_hardirqs_on_prepare(CALLER_ADDR0);
582 ++ lockdep_hardirqs_on_prepare();
583 + rcu_irq_exit();
584 + lockdep_hardirqs_on(CALLER_ADDR0);
585 + return;
586 +@@ -117,7 +117,7 @@ static __always_inline void enter_from_user_mode(struct pt_regs *regs)
587 + static __always_inline void __exit_to_user_mode(void)
588 + {
589 + trace_hardirqs_on_prepare();
590 +- lockdep_hardirqs_on_prepare(CALLER_ADDR0);
591 ++ lockdep_hardirqs_on_prepare();
592 + user_enter_irqoff();
593 + lockdep_hardirqs_on(CALLER_ADDR0);
594 + }
595 +@@ -175,7 +175,7 @@ static void noinstr arm64_exit_nmi(struct pt_regs *regs)
596 + ftrace_nmi_exit();
597 + if (restore) {
598 + trace_hardirqs_on_prepare();
599 +- lockdep_hardirqs_on_prepare(CALLER_ADDR0);
600 ++ lockdep_hardirqs_on_prepare();
601 + }
602 +
603 + rcu_nmi_exit();
604 +@@ -211,7 +211,7 @@ static void noinstr arm64_exit_el1_dbg(struct pt_regs *regs)
605 +
606 + if (restore) {
607 + trace_hardirqs_on_prepare();
608 +- lockdep_hardirqs_on_prepare(CALLER_ADDR0);
609 ++ lockdep_hardirqs_on_prepare();
610 + }
611 +
612 + rcu_nmi_exit();
613 +diff --git a/arch/x86/include/asm/cpu_entry_area.h b/arch/x86/include/asm/cpu_entry_area.h
614 +index dd5ea1bdf04c5..75efc4c6f0766 100644
615 +--- a/arch/x86/include/asm/cpu_entry_area.h
616 ++++ b/arch/x86/include/asm/cpu_entry_area.h
617 +@@ -143,7 +143,7 @@ extern void cea_set_pte(void *cea_vaddr, phys_addr_t pa, pgprot_t flags);
618 +
619 + extern struct cpu_entry_area *get_cpu_entry_area(int cpu);
620 +
621 +-static inline struct entry_stack *cpu_entry_stack(int cpu)
622 ++static __always_inline struct entry_stack *cpu_entry_stack(int cpu)
623 + {
624 + return &get_cpu_entry_area(cpu)->entry_stack_page.stack;
625 + }
626 +diff --git a/arch/x86/include/asm/page_64.h b/arch/x86/include/asm/page_64.h
627 +index 4bde0dc66100c..56891399fa2a6 100644
628 +--- a/arch/x86/include/asm/page_64.h
629 ++++ b/arch/x86/include/asm/page_64.h
630 +@@ -15,7 +15,7 @@ extern unsigned long page_offset_base;
631 + extern unsigned long vmalloc_base;
632 + extern unsigned long vmemmap_base;
633 +
634 +-static inline unsigned long __phys_addr_nodebug(unsigned long x)
635 ++static __always_inline unsigned long __phys_addr_nodebug(unsigned long x)
636 + {
637 + unsigned long y = x - __START_KERNEL_map;
638 +
639 +diff --git a/arch/x86/kvm/x86.h b/arch/x86/kvm/x86.h
640 +index 4d6f7a70bdd14..cd0c93ec72fad 100644
641 +--- a/arch/x86/kvm/x86.h
642 ++++ b/arch/x86/kvm/x86.h
643 +@@ -26,7 +26,7 @@ static __always_inline void kvm_guest_enter_irqoff(void)
644 + */
645 + instrumentation_begin();
646 + trace_hardirqs_on_prepare();
647 +- lockdep_hardirqs_on_prepare(CALLER_ADDR0);
648 ++ lockdep_hardirqs_on_prepare();
649 + instrumentation_end();
650 +
651 + guest_enter_irqoff();
652 +diff --git a/drivers/acpi/resource.c b/drivers/acpi/resource.c
653 +index 3c25ce8c95ba1..19358a641610d 100644
654 +--- a/drivers/acpi/resource.c
655 ++++ b/drivers/acpi/resource.c
656 +@@ -416,6 +416,16 @@ static bool acpi_dev_irq_override(u32 gsi, u8 triggering, u8 polarity,
657 + {
658 + int i;
659 +
660 ++#ifdef CONFIG_X86
661 ++ /*
662 ++ * IRQ override isn't needed on modern AMD Zen systems and
663 ++ * this override breaks active low IRQs on AMD Ryzen 6000 and
664 ++ * newer systems. Skip it.
665 ++ */
666 ++ if (boot_cpu_has(X86_FEATURE_ZEN))
667 ++ return false;
668 ++#endif
669 ++
670 + for (i = 0; i < ARRAY_SIZE(skip_override_table); i++) {
671 + const struct irq_override_cmp *entry = &skip_override_table[i];
672 +
673 +diff --git a/drivers/gpio/gpio-mockup.c b/drivers/gpio/gpio-mockup.c
674 +index d26bff29157b5..369a832d96203 100644
675 +--- a/drivers/gpio/gpio-mockup.c
676 ++++ b/drivers/gpio/gpio-mockup.c
677 +@@ -373,6 +373,13 @@ static void gpio_mockup_debugfs_setup(struct device *dev,
678 + }
679 + }
680 +
681 ++static void gpio_mockup_debugfs_cleanup(void *data)
682 ++{
683 ++ struct gpio_mockup_chip *chip = data;
684 ++
685 ++ debugfs_remove_recursive(chip->dbg_dir);
686 ++}
687 ++
688 + static void gpio_mockup_dispose_mappings(void *data)
689 + {
690 + struct gpio_mockup_chip *chip = data;
691 +@@ -455,7 +462,7 @@ static int gpio_mockup_probe(struct platform_device *pdev)
692 +
693 + gpio_mockup_debugfs_setup(dev, chip);
694 +
695 +- return 0;
696 ++ return devm_add_action_or_reset(dev, gpio_mockup_debugfs_cleanup, chip);
697 + }
698 +
699 + static const struct of_device_id gpio_mockup_of_match[] = {
700 +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c
701 +index 5b41c29f3ed50..65744c3bd3648 100644
702 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c
703 ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c
704 +@@ -2505,7 +2505,7 @@ static int psp_load_smu_fw(struct psp_context *psp)
705 + static bool fw_load_skip_check(struct psp_context *psp,
706 + struct amdgpu_firmware_info *ucode)
707 + {
708 +- if (!ucode->fw)
709 ++ if (!ucode->fw || !ucode->ucode_size)
710 + return true;
711 +
712 + if (ucode->ucode_id == AMDGPU_UCODE_ID_SMC &&
713 +diff --git a/drivers/gpu/drm/msm/msm_rd.c b/drivers/gpu/drm/msm/msm_rd.c
714 +index b55398a34fa48..e3f0dd4a36792 100644
715 +--- a/drivers/gpu/drm/msm/msm_rd.c
716 ++++ b/drivers/gpu/drm/msm/msm_rd.c
717 +@@ -191,6 +191,9 @@ static int rd_open(struct inode *inode, struct file *file)
718 + file->private_data = rd;
719 + rd->open = true;
720 +
721 ++ /* Reset fifo to clear any previously unread data: */
722 ++ rd->fifo.head = rd->fifo.tail = 0;
723 ++
724 + /* the parsing tools need to know gpu-id to know which
725 + * register database to load.
726 + */
727 +diff --git a/drivers/hid/intel-ish-hid/ishtp-hid.h b/drivers/hid/intel-ish-hid/ishtp-hid.h
728 +index 6a5cc11aefd89..35dddc5015b37 100644
729 +--- a/drivers/hid/intel-ish-hid/ishtp-hid.h
730 ++++ b/drivers/hid/intel-ish-hid/ishtp-hid.h
731 +@@ -105,7 +105,7 @@ struct report_list {
732 + * @multi_packet_cnt: Count of fragmented packet count
733 + *
734 + * This structure is used to store completion flags and per client data like
735 +- * like report description, number of HID devices etc.
736 ++ * report description, number of HID devices etc.
737 + */
738 + struct ishtp_cl_data {
739 + /* completion flags */
740 +diff --git a/drivers/hid/intel-ish-hid/ishtp/client.c b/drivers/hid/intel-ish-hid/ishtp/client.c
741 +index 405e0d5212cc8..df0a825694f52 100644
742 +--- a/drivers/hid/intel-ish-hid/ishtp/client.c
743 ++++ b/drivers/hid/intel-ish-hid/ishtp/client.c
744 +@@ -626,13 +626,14 @@ static void ishtp_cl_read_complete(struct ishtp_cl_rb *rb)
745 + }
746 +
747 + /**
748 +- * ipc_tx_callback() - IPC tx callback function
749 ++ * ipc_tx_send() - IPC tx send function
750 + * @prm: Pointer to client device instance
751 + *
752 +- * Send message over IPC either first time or on callback on previous message
753 +- * completion
754 ++ * Send message over IPC. Message will be split into fragments
755 ++ * if message size is bigger than IPC FIFO size, and all
756 ++ * fragments will be sent one by one.
757 + */
758 +-static void ipc_tx_callback(void *prm)
759 ++static void ipc_tx_send(void *prm)
760 + {
761 + struct ishtp_cl *cl = prm;
762 + struct ishtp_cl_tx_ring *cl_msg;
763 +@@ -677,32 +678,41 @@ static void ipc_tx_callback(void *prm)
764 + list);
765 + rem = cl_msg->send_buf.size - cl->tx_offs;
766 +
767 +- ishtp_hdr.host_addr = cl->host_client_id;
768 +- ishtp_hdr.fw_addr = cl->fw_client_id;
769 +- ishtp_hdr.reserved = 0;
770 +- pmsg = cl_msg->send_buf.data + cl->tx_offs;
771 ++ while (rem > 0) {
772 ++ ishtp_hdr.host_addr = cl->host_client_id;
773 ++ ishtp_hdr.fw_addr = cl->fw_client_id;
774 ++ ishtp_hdr.reserved = 0;
775 ++ pmsg = cl_msg->send_buf.data + cl->tx_offs;
776 ++
777 ++ if (rem <= dev->mtu) {
778 ++ /* Last fragment or only one packet */
779 ++ ishtp_hdr.length = rem;
780 ++ ishtp_hdr.msg_complete = 1;
781 ++ /* Submit to IPC queue with no callback */
782 ++ ishtp_write_message(dev, &ishtp_hdr, pmsg);
783 ++ cl->tx_offs = 0;
784 ++ cl->sending = 0;
785 +
786 +- if (rem <= dev->mtu) {
787 +- ishtp_hdr.length = rem;
788 +- ishtp_hdr.msg_complete = 1;
789 +- cl->sending = 0;
790 +- list_del_init(&cl_msg->list); /* Must be before write */
791 +- spin_unlock_irqrestore(&cl->tx_list_spinlock, tx_flags);
792 +- /* Submit to IPC queue with no callback */
793 +- ishtp_write_message(dev, &ishtp_hdr, pmsg);
794 +- spin_lock_irqsave(&cl->tx_free_list_spinlock, tx_free_flags);
795 +- list_add_tail(&cl_msg->list, &cl->tx_free_list.list);
796 +- ++cl->tx_ring_free_size;
797 +- spin_unlock_irqrestore(&cl->tx_free_list_spinlock,
798 +- tx_free_flags);
799 +- } else {
800 +- /* Send IPC fragment */
801 +- spin_unlock_irqrestore(&cl->tx_list_spinlock, tx_flags);
802 +- cl->tx_offs += dev->mtu;
803 +- ishtp_hdr.length = dev->mtu;
804 +- ishtp_hdr.msg_complete = 0;
805 +- ishtp_send_msg(dev, &ishtp_hdr, pmsg, ipc_tx_callback, cl);
806 ++ break;
807 ++ } else {
808 ++ /* Send ipc fragment */
809 ++ ishtp_hdr.length = dev->mtu;
810 ++ ishtp_hdr.msg_complete = 0;
811 ++ /* All fregments submitted to IPC queue with no callback */
812 ++ ishtp_write_message(dev, &ishtp_hdr, pmsg);
813 ++ cl->tx_offs += dev->mtu;
814 ++ rem = cl_msg->send_buf.size - cl->tx_offs;
815 ++ }
816 + }
817 ++
818 ++ list_del_init(&cl_msg->list);
819 ++ spin_unlock_irqrestore(&cl->tx_list_spinlock, tx_flags);
820 ++
821 ++ spin_lock_irqsave(&cl->tx_free_list_spinlock, tx_free_flags);
822 ++ list_add_tail(&cl_msg->list, &cl->tx_free_list.list);
823 ++ ++cl->tx_ring_free_size;
824 ++ spin_unlock_irqrestore(&cl->tx_free_list_spinlock,
825 ++ tx_free_flags);
826 + }
827 +
828 + /**
829 +@@ -720,7 +730,7 @@ static void ishtp_cl_send_msg_ipc(struct ishtp_device *dev,
830 + return;
831 +
832 + cl->tx_offs = 0;
833 +- ipc_tx_callback(cl);
834 ++ ipc_tx_send(cl);
835 + ++cl->send_msg_cnt_ipc;
836 + }
837 +
838 +diff --git a/drivers/infiniband/hw/irdma/uk.c b/drivers/infiniband/hw/irdma/uk.c
839 +index 7e6c3ba8df6ab..aecd64a7dbbaf 100644
840 +--- a/drivers/infiniband/hw/irdma/uk.c
841 ++++ b/drivers/infiniband/hw/irdma/uk.c
842 +@@ -501,7 +501,8 @@ enum irdma_status_code irdma_uk_send(struct irdma_qp_uk *qp,
843 + FIELD_PREP(IRDMAQPSQ_IMMDATA, info->imm_data));
844 + i = 0;
845 + } else {
846 +- qp->wqe_ops.iw_set_fragment(wqe, 0, op_info->sg_list,
847 ++ qp->wqe_ops.iw_set_fragment(wqe, 0,
848 ++ frag_cnt ? op_info->sg_list : NULL,
849 + qp->swqe_polarity);
850 + i = 1;
851 + }
852 +diff --git a/drivers/input/joystick/iforce/iforce-main.c b/drivers/input/joystick/iforce/iforce-main.c
853 +index b2a68bc9f0b4d..b86de1312512b 100644
854 +--- a/drivers/input/joystick/iforce/iforce-main.c
855 ++++ b/drivers/input/joystick/iforce/iforce-main.c
856 +@@ -50,6 +50,7 @@ static struct iforce_device iforce_device[] = {
857 + { 0x046d, 0xc291, "Logitech WingMan Formula Force", btn_wheel, abs_wheel, ff_iforce },
858 + { 0x05ef, 0x020a, "AVB Top Shot Pegasus", btn_joystick_avb, abs_avb_pegasus, ff_iforce },
859 + { 0x05ef, 0x8884, "AVB Mag Turbo Force", btn_wheel, abs_wheel, ff_iforce },
860 ++ { 0x05ef, 0x8886, "Boeder Force Feedback Wheel", btn_wheel, abs_wheel, ff_iforce },
861 + { 0x05ef, 0x8888, "AVB Top Shot Force Feedback Racing Wheel", btn_wheel, abs_wheel, ff_iforce }, //?
862 + { 0x061c, 0xc0a4, "ACT LABS Force RS", btn_wheel, abs_wheel, ff_iforce }, //?
863 + { 0x061c, 0xc084, "ACT LABS Force RS", btn_wheel, abs_wheel, ff_iforce },
864 +diff --git a/drivers/input/touchscreen/goodix.c b/drivers/input/touchscreen/goodix.c
865 +index 3667f7e51fde4..9a9deea511636 100644
866 +--- a/drivers/input/touchscreen/goodix.c
867 ++++ b/drivers/input/touchscreen/goodix.c
868 +@@ -94,6 +94,7 @@ static const struct goodix_chip_data gt9x_chip_data = {
869 +
870 + static const struct goodix_chip_id goodix_chip_ids[] = {
871 + { .id = "1151", .data = &gt1x_chip_data },
872 ++ { .id = "1158", .data = &gt1x_chip_data },
873 + { .id = "5663", .data = &gt1x_chip_data },
874 + { .id = "5688", .data = &gt1x_chip_data },
875 + { .id = "917S", .data = &gt1x_chip_data },
876 +@@ -1362,6 +1363,7 @@ MODULE_DEVICE_TABLE(acpi, goodix_acpi_match);
877 + #ifdef CONFIG_OF
878 + static const struct of_device_id goodix_of_match[] = {
879 + { .compatible = "goodix,gt1151" },
880 ++ { .compatible = "goodix,gt1158" },
881 + { .compatible = "goodix,gt5663" },
882 + { .compatible = "goodix,gt5688" },
883 + { .compatible = "goodix,gt911" },
884 +diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c
885 +index bc5444daca9b4..2affdccb58e47 100644
886 +--- a/drivers/iommu/intel/iommu.c
887 ++++ b/drivers/iommu/intel/iommu.c
888 +@@ -191,38 +191,6 @@ static phys_addr_t root_entry_uctp(struct root_entry *re)
889 + return re->hi & VTD_PAGE_MASK;
890 + }
891 +
892 +-static inline void context_clear_pasid_enable(struct context_entry *context)
893 +-{
894 +- context->lo &= ~(1ULL << 11);
895 +-}
896 +-
897 +-static inline bool context_pasid_enabled(struct context_entry *context)
898 +-{
899 +- return !!(context->lo & (1ULL << 11));
900 +-}
901 +-
902 +-static inline void context_set_copied(struct context_entry *context)
903 +-{
904 +- context->hi |= (1ull << 3);
905 +-}
906 +-
907 +-static inline bool context_copied(struct context_entry *context)
908 +-{
909 +- return !!(context->hi & (1ULL << 3));
910 +-}
911 +-
912 +-static inline bool __context_present(struct context_entry *context)
913 +-{
914 +- return (context->lo & 1);
915 +-}
916 +-
917 +-bool context_present(struct context_entry *context)
918 +-{
919 +- return context_pasid_enabled(context) ?
920 +- __context_present(context) :
921 +- __context_present(context) && !context_copied(context);
922 +-}
923 +-
924 + static inline void context_set_present(struct context_entry *context)
925 + {
926 + context->lo |= 1;
927 +@@ -270,6 +238,26 @@ static inline void context_clear_entry(struct context_entry *context)
928 + context->hi = 0;
929 + }
930 +
931 ++static inline bool context_copied(struct intel_iommu *iommu, u8 bus, u8 devfn)
932 ++{
933 ++ if (!iommu->copied_tables)
934 ++ return false;
935 ++
936 ++ return test_bit(((long)bus << 8) | devfn, iommu->copied_tables);
937 ++}
938 ++
939 ++static inline void
940 ++set_context_copied(struct intel_iommu *iommu, u8 bus, u8 devfn)
941 ++{
942 ++ set_bit(((long)bus << 8) | devfn, iommu->copied_tables);
943 ++}
944 ++
945 ++static inline void
946 ++clear_context_copied(struct intel_iommu *iommu, u8 bus, u8 devfn)
947 ++{
948 ++ clear_bit(((long)bus << 8) | devfn, iommu->copied_tables);
949 ++}
950 ++
951 + /*
952 + * This domain is a statically identity mapping domain.
953 + * 1. This domain creats a static 1:1 mapping to all usable memory.
954 +@@ -792,6 +780,13 @@ struct context_entry *iommu_context_addr(struct intel_iommu *iommu, u8 bus,
955 + struct context_entry *context;
956 + u64 *entry;
957 +
958 ++ /*
959 ++ * Except that the caller requested to allocate a new entry,
960 ++ * returning a copied context entry makes no sense.
961 ++ */
962 ++ if (!alloc && context_copied(iommu, bus, devfn))
963 ++ return NULL;
964 ++
965 + entry = &root->lo;
966 + if (sm_supported(iommu)) {
967 + if (devfn >= 0x80) {
968 +@@ -1899,6 +1894,11 @@ static void free_dmar_iommu(struct intel_iommu *iommu)
969 + iommu->domain_ids = NULL;
970 + }
971 +
972 ++ if (iommu->copied_tables) {
973 ++ bitmap_free(iommu->copied_tables);
974 ++ iommu->copied_tables = NULL;
975 ++ }
976 ++
977 + g_iommus[iommu->seq_id] = NULL;
978 +
979 + /* free context mapping */
980 +@@ -2107,7 +2107,7 @@ static int domain_context_mapping_one(struct dmar_domain *domain,
981 + goto out_unlock;
982 +
983 + ret = 0;
984 +- if (context_present(context))
985 ++ if (context_present(context) && !context_copied(iommu, bus, devfn))
986 + goto out_unlock;
987 +
988 + /*
989 +@@ -2119,7 +2119,7 @@ static int domain_context_mapping_one(struct dmar_domain *domain,
990 + * in-flight DMA will exist, and we don't need to worry anymore
991 + * hereafter.
992 + */
993 +- if (context_copied(context)) {
994 ++ if (context_copied(iommu, bus, devfn)) {
995 + u16 did_old = context_domain_id(context);
996 +
997 + if (did_old < cap_ndoms(iommu->cap)) {
998 +@@ -2130,6 +2130,8 @@ static int domain_context_mapping_one(struct dmar_domain *domain,
999 + iommu->flush.flush_iotlb(iommu, did_old, 0, 0,
1000 + DMA_TLB_DSI_FLUSH);
1001 + }
1002 ++
1003 ++ clear_context_copied(iommu, bus, devfn);
1004 + }
1005 +
1006 + context_clear_entry(context);
1007 +@@ -3024,32 +3026,14 @@ static int copy_context_table(struct intel_iommu *iommu,
1008 + /* Now copy the context entry */
1009 + memcpy(&ce, old_ce + idx, sizeof(ce));
1010 +
1011 +- if (!__context_present(&ce))
1012 ++ if (!context_present(&ce))
1013 + continue;
1014 +
1015 + did = context_domain_id(&ce);
1016 + if (did >= 0 && did < cap_ndoms(iommu->cap))
1017 + set_bit(did, iommu->domain_ids);
1018 +
1019 +- /*
1020 +- * We need a marker for copied context entries. This
1021 +- * marker needs to work for the old format as well as
1022 +- * for extended context entries.
1023 +- *
1024 +- * Bit 67 of the context entry is used. In the old
1025 +- * format this bit is available to software, in the
1026 +- * extended format it is the PGE bit, but PGE is ignored
1027 +- * by HW if PASIDs are disabled (and thus still
1028 +- * available).
1029 +- *
1030 +- * So disable PASIDs first and then mark the entry
1031 +- * copied. This means that we don't copy PASID
1032 +- * translations from the old kernel, but this is fine as
1033 +- * faults there are not fatal.
1034 +- */
1035 +- context_clear_pasid_enable(&ce);
1036 +- context_set_copied(&ce);
1037 +-
1038 ++ set_context_copied(iommu, bus, devfn);
1039 + new_ce[idx] = ce;
1040 + }
1041 +
1042 +@@ -3076,8 +3060,8 @@ static int copy_translation_tables(struct intel_iommu *iommu)
1043 + bool new_ext, ext;
1044 +
1045 + rtaddr_reg = dmar_readq(iommu->reg + DMAR_RTADDR_REG);
1046 +- ext = !!(rtaddr_reg & DMA_RTADDR_RTT);
1047 +- new_ext = !!ecap_ecs(iommu->ecap);
1048 ++ ext = !!(rtaddr_reg & DMA_RTADDR_SMT);
1049 ++ new_ext = !!sm_supported(iommu);
1050 +
1051 + /*
1052 + * The RTT bit can only be changed when translation is disabled,
1053 +@@ -3088,6 +3072,10 @@ static int copy_translation_tables(struct intel_iommu *iommu)
1054 + if (new_ext != ext)
1055 + return -EINVAL;
1056 +
1057 ++ iommu->copied_tables = bitmap_zalloc(BIT_ULL(16), GFP_KERNEL);
1058 ++ if (!iommu->copied_tables)
1059 ++ return -ENOMEM;
1060 ++
1061 + old_rt_phys = rtaddr_reg & VTD_PAGE_MASK;
1062 + if (!old_rt_phys)
1063 + return -EINVAL;
1064 +diff --git a/drivers/net/ethernet/broadcom/tg3.c b/drivers/net/ethernet/broadcom/tg3.c
1065 +index 5e0e0e70d8014..8aab07419263e 100644
1066 +--- a/drivers/net/ethernet/broadcom/tg3.c
1067 ++++ b/drivers/net/ethernet/broadcom/tg3.c
1068 +@@ -18078,16 +18078,20 @@ static void tg3_shutdown(struct pci_dev *pdev)
1069 + struct net_device *dev = pci_get_drvdata(pdev);
1070 + struct tg3 *tp = netdev_priv(dev);
1071 +
1072 ++ tg3_reset_task_cancel(tp);
1073 ++
1074 + rtnl_lock();
1075 ++
1076 + netif_device_detach(dev);
1077 +
1078 + if (netif_running(dev))
1079 + dev_close(dev);
1080 +
1081 +- if (system_state == SYSTEM_POWER_OFF)
1082 +- tg3_power_down(tp);
1083 ++ tg3_power_down(tp);
1084 +
1085 + rtnl_unlock();
1086 ++
1087 ++ pci_disable_device(pdev);
1088 + }
1089 +
1090 + /**
1091 +diff --git a/drivers/net/ieee802154/cc2520.c b/drivers/net/ieee802154/cc2520.c
1092 +index 89c046b204e0c..4517517215f2b 100644
1093 +--- a/drivers/net/ieee802154/cc2520.c
1094 ++++ b/drivers/net/ieee802154/cc2520.c
1095 +@@ -504,6 +504,7 @@ cc2520_tx(struct ieee802154_hw *hw, struct sk_buff *skb)
1096 + goto err_tx;
1097 +
1098 + if (status & CC2520_STATUS_TX_UNDERFLOW) {
1099 ++ rc = -EINVAL;
1100 + dev_err(&priv->spi->dev, "cc2520 tx underflow exception\n");
1101 + goto err_tx;
1102 + }
1103 +diff --git a/drivers/nvme/target/tcp.c b/drivers/nvme/target/tcp.c
1104 +index 889c5433c94d2..fba5a77c58d6b 100644
1105 +--- a/drivers/nvme/target/tcp.c
1106 ++++ b/drivers/nvme/target/tcp.c
1107 +@@ -1501,6 +1501,9 @@ static void nvmet_tcp_state_change(struct sock *sk)
1108 + goto done;
1109 +
1110 + switch (sk->sk_state) {
1111 ++ case TCP_FIN_WAIT2:
1112 ++ case TCP_LAST_ACK:
1113 ++ break;
1114 + case TCP_FIN_WAIT1:
1115 + case TCP_CLOSE_WAIT:
1116 + case TCP_CLOSE:
1117 +diff --git a/drivers/perf/arm_pmu_platform.c b/drivers/perf/arm_pmu_platform.c
1118 +index 513de1f54e2d7..933b96e243b84 100644
1119 +--- a/drivers/perf/arm_pmu_platform.c
1120 ++++ b/drivers/perf/arm_pmu_platform.c
1121 +@@ -117,7 +117,7 @@ static int pmu_parse_irqs(struct arm_pmu *pmu)
1122 +
1123 + if (num_irqs == 1) {
1124 + int irq = platform_get_irq(pdev, 0);
1125 +- if (irq && irq_is_percpu_devid(irq))
1126 ++ if ((irq > 0) && irq_is_percpu_devid(irq))
1127 + return pmu_parse_percpu_irq(pmu, irq);
1128 + }
1129 +
1130 +diff --git a/drivers/platform/surface/surface_aggregator_registry.c b/drivers/platform/surface/surface_aggregator_registry.c
1131 +index 1679811eff502..5c0451c56ea83 100644
1132 +--- a/drivers/platform/surface/surface_aggregator_registry.c
1133 ++++ b/drivers/platform/surface/surface_aggregator_registry.c
1134 +@@ -558,6 +558,9 @@ static const struct acpi_device_id ssam_platform_hub_match[] = {
1135 + /* Surface Laptop Go 1 */
1136 + { "MSHW0118", (unsigned long)ssam_node_group_slg1 },
1137 +
1138 ++ /* Surface Laptop Go 2 */
1139 ++ { "MSHW0290", (unsigned long)ssam_node_group_slg1 },
1140 ++
1141 + /* Surface Laptop Studio */
1142 + { "MSHW0123", (unsigned long)ssam_node_group_sls },
1143 +
1144 +diff --git a/drivers/platform/x86/acer-wmi.c b/drivers/platform/x86/acer-wmi.c
1145 +index 694b45ed06a21..8c2a73d5428d7 100644
1146 +--- a/drivers/platform/x86/acer-wmi.c
1147 ++++ b/drivers/platform/x86/acer-wmi.c
1148 +@@ -99,6 +99,7 @@ static const struct key_entry acer_wmi_keymap[] __initconst = {
1149 + {KE_KEY, 0x22, {KEY_PROG2} }, /* Arcade */
1150 + {KE_KEY, 0x23, {KEY_PROG3} }, /* P_Key */
1151 + {KE_KEY, 0x24, {KEY_PROG4} }, /* Social networking_Key */
1152 ++ {KE_KEY, 0x27, {KEY_HELP} },
1153 + {KE_KEY, 0x29, {KEY_PROG3} }, /* P_Key for TM8372 */
1154 + {KE_IGNORE, 0x41, {KEY_MUTE} },
1155 + {KE_IGNORE, 0x42, {KEY_PREVIOUSSONG} },
1156 +@@ -112,7 +113,13 @@ static const struct key_entry acer_wmi_keymap[] __initconst = {
1157 + {KE_IGNORE, 0x48, {KEY_VOLUMEUP} },
1158 + {KE_IGNORE, 0x49, {KEY_VOLUMEDOWN} },
1159 + {KE_IGNORE, 0x4a, {KEY_VOLUMEDOWN} },
1160 +- {KE_IGNORE, 0x61, {KEY_SWITCHVIDEOMODE} },
1161 ++ /*
1162 ++ * 0x61 is KEY_SWITCHVIDEOMODE. Usually this is a duplicate input event
1163 ++ * with the "Video Bus" input device events. But sometimes it is not
1164 ++ * a dup. Map it to KEY_UNKNOWN instead of using KE_IGNORE so that
1165 ++ * udev/hwdb can override it on systems where it is not a dup.
1166 ++ */
1167 ++ {KE_KEY, 0x61, {KEY_UNKNOWN} },
1168 + {KE_IGNORE, 0x62, {KEY_BRIGHTNESSUP} },
1169 + {KE_IGNORE, 0x63, {KEY_BRIGHTNESSDOWN} },
1170 + {KE_KEY, 0x64, {KEY_SWITCHVIDEOMODE} }, /* Display Switch */
1171 +diff --git a/drivers/soc/fsl/Kconfig b/drivers/soc/fsl/Kconfig
1172 +index 4df32bc4c7a6e..c5d46152d4680 100644
1173 +--- a/drivers/soc/fsl/Kconfig
1174 ++++ b/drivers/soc/fsl/Kconfig
1175 +@@ -24,6 +24,7 @@ config FSL_MC_DPIO
1176 + tristate "QorIQ DPAA2 DPIO driver"
1177 + depends on FSL_MC_BUS
1178 + select SOC_BUS
1179 ++ select FSL_GUTS
1180 + help
1181 + Driver for the DPAA2 DPIO object. A DPIO provides queue and
1182 + buffer management facilities for software to interact with
1183 +diff --git a/drivers/usb/gadget/function/f_uac2.c b/drivers/usb/gadget/function/f_uac2.c
1184 +index 5226a47b68fda..885a7f593d85e 100644
1185 +--- a/drivers/usb/gadget/function/f_uac2.c
1186 ++++ b/drivers/usb/gadget/function/f_uac2.c
1187 +@@ -281,6 +281,12 @@ static struct usb_endpoint_descriptor ss_ep_int_desc = {
1188 + .bInterval = 4,
1189 + };
1190 +
1191 ++static struct usb_ss_ep_comp_descriptor ss_ep_int_desc_comp = {
1192 ++ .bLength = sizeof(ss_ep_int_desc_comp),
1193 ++ .bDescriptorType = USB_DT_SS_ENDPOINT_COMP,
1194 ++ .wBytesPerInterval = cpu_to_le16(6),
1195 ++};
1196 ++
1197 + /* Audio Streaming OUT Interface - Alt0 */
1198 + static struct usb_interface_descriptor std_as_out_if0_desc = {
1199 + .bLength = sizeof std_as_out_if0_desc,
1200 +@@ -594,7 +600,8 @@ static struct usb_descriptor_header *ss_audio_desc[] = {
1201 + (struct usb_descriptor_header *)&in_feature_unit_desc,
1202 + (struct usb_descriptor_header *)&io_out_ot_desc,
1203 +
1204 +- (struct usb_descriptor_header *)&ss_ep_int_desc,
1205 ++ (struct usb_descriptor_header *)&ss_ep_int_desc,
1206 ++ (struct usb_descriptor_header *)&ss_ep_int_desc_comp,
1207 +
1208 + (struct usb_descriptor_header *)&std_as_out_if0_desc,
1209 + (struct usb_descriptor_header *)&std_as_out_if1_desc,
1210 +@@ -721,6 +728,7 @@ static void setup_headers(struct f_uac2_opts *opts,
1211 + struct usb_ss_ep_comp_descriptor *epout_desc_comp = NULL;
1212 + struct usb_ss_ep_comp_descriptor *epin_desc_comp = NULL;
1213 + struct usb_ss_ep_comp_descriptor *epin_fback_desc_comp = NULL;
1214 ++ struct usb_ss_ep_comp_descriptor *ep_int_desc_comp = NULL;
1215 + struct usb_endpoint_descriptor *epout_desc;
1216 + struct usb_endpoint_descriptor *epin_desc;
1217 + struct usb_endpoint_descriptor *epin_fback_desc;
1218 +@@ -748,6 +756,7 @@ static void setup_headers(struct f_uac2_opts *opts,
1219 + epin_fback_desc = &ss_epin_fback_desc;
1220 + epin_fback_desc_comp = &ss_epin_fback_desc_comp;
1221 + ep_int_desc = &ss_ep_int_desc;
1222 ++ ep_int_desc_comp = &ss_ep_int_desc_comp;
1223 + }
1224 +
1225 + i = 0;
1226 +@@ -760,15 +769,15 @@ static void setup_headers(struct f_uac2_opts *opts,
1227 + headers[i++] = USBDHDR(&out_clk_src_desc);
1228 + headers[i++] = USBDHDR(&usb_out_it_desc);
1229 +
1230 +- if (FUOUT_EN(opts))
1231 +- headers[i++] = USBDHDR(out_feature_unit_desc);
1232 +- }
1233 ++ if (FUOUT_EN(opts))
1234 ++ headers[i++] = USBDHDR(out_feature_unit_desc);
1235 ++ }
1236 +
1237 + if (EPIN_EN(opts)) {
1238 + headers[i++] = USBDHDR(&io_in_it_desc);
1239 +
1240 +- if (FUIN_EN(opts))
1241 +- headers[i++] = USBDHDR(in_feature_unit_desc);
1242 ++ if (FUIN_EN(opts))
1243 ++ headers[i++] = USBDHDR(in_feature_unit_desc);
1244 +
1245 + headers[i++] = USBDHDR(&usb_in_ot_desc);
1246 + }
1247 +@@ -776,10 +785,13 @@ static void setup_headers(struct f_uac2_opts *opts,
1248 + if (EPOUT_EN(opts))
1249 + headers[i++] = USBDHDR(&io_out_ot_desc);
1250 +
1251 +- if (FUOUT_EN(opts) || FUIN_EN(opts))
1252 +- headers[i++] = USBDHDR(ep_int_desc);
1253 ++ if (FUOUT_EN(opts) || FUIN_EN(opts)) {
1254 ++ headers[i++] = USBDHDR(ep_int_desc);
1255 ++ if (ep_int_desc_comp)
1256 ++ headers[i++] = USBDHDR(ep_int_desc_comp);
1257 ++ }
1258 +
1259 +- if (EPOUT_EN(opts)) {
1260 ++ if (EPOUT_EN(opts)) {
1261 + headers[i++] = USBDHDR(&std_as_out_if0_desc);
1262 + headers[i++] = USBDHDR(&std_as_out_if1_desc);
1263 + headers[i++] = USBDHDR(&as_out_hdr_desc);
1264 +diff --git a/drivers/usb/storage/unusual_uas.h b/drivers/usb/storage/unusual_uas.h
1265 +index 4051c8cd0cd8a..23ab3b048d9be 100644
1266 +--- a/drivers/usb/storage/unusual_uas.h
1267 ++++ b/drivers/usb/storage/unusual_uas.h
1268 +@@ -62,6 +62,13 @@ UNUSUAL_DEV(0x0984, 0x0301, 0x0128, 0x0128,
1269 + USB_SC_DEVICE, USB_PR_DEVICE, NULL,
1270 + US_FL_IGNORE_UAS),
1271 +
1272 ++/* Reported-by: Tom Hu <huxiaoying@×××××××.cn> */
1273 ++UNUSUAL_DEV(0x0b05, 0x1932, 0x0000, 0x9999,
1274 ++ "ASUS",
1275 ++ "External HDD",
1276 ++ USB_SC_DEVICE, USB_PR_DEVICE, NULL,
1277 ++ US_FL_IGNORE_UAS),
1278 ++
1279 + /* Reported-by: David Webb <djw@××××××.uk> */
1280 + UNUSUAL_DEV(0x0bc2, 0x331a, 0x0000, 0x9999,
1281 + "Seagate",
1282 +diff --git a/fs/tracefs/inode.c b/fs/tracefs/inode.c
1283 +index f2625a372a3ae..066e8344934de 100644
1284 +--- a/fs/tracefs/inode.c
1285 ++++ b/fs/tracefs/inode.c
1286 +@@ -141,6 +141,8 @@ struct tracefs_mount_opts {
1287 + kuid_t uid;
1288 + kgid_t gid;
1289 + umode_t mode;
1290 ++ /* Opt_* bitfield. */
1291 ++ unsigned int opts;
1292 + };
1293 +
1294 + enum {
1295 +@@ -241,6 +243,7 @@ static int tracefs_parse_options(char *data, struct tracefs_mount_opts *opts)
1296 + kgid_t gid;
1297 + char *p;
1298 +
1299 ++ opts->opts = 0;
1300 + opts->mode = TRACEFS_DEFAULT_MODE;
1301 +
1302 + while ((p = strsep(&data, ",")) != NULL) {
1303 +@@ -275,24 +278,36 @@ static int tracefs_parse_options(char *data, struct tracefs_mount_opts *opts)
1304 + * but traditionally tracefs has ignored all mount options
1305 + */
1306 + }
1307 ++
1308 ++ opts->opts |= BIT(token);
1309 + }
1310 +
1311 + return 0;
1312 + }
1313 +
1314 +-static int tracefs_apply_options(struct super_block *sb)
1315 ++static int tracefs_apply_options(struct super_block *sb, bool remount)
1316 + {
1317 + struct tracefs_fs_info *fsi = sb->s_fs_info;
1318 + struct inode *inode = sb->s_root->d_inode;
1319 + struct tracefs_mount_opts *opts = &fsi->mount_opts;
1320 +
1321 +- inode->i_mode &= ~S_IALLUGO;
1322 +- inode->i_mode |= opts->mode;
1323 ++ /*
1324 ++ * On remount, only reset mode/uid/gid if they were provided as mount
1325 ++ * options.
1326 ++ */
1327 ++
1328 ++ if (!remount || opts->opts & BIT(Opt_mode)) {
1329 ++ inode->i_mode &= ~S_IALLUGO;
1330 ++ inode->i_mode |= opts->mode;
1331 ++ }
1332 +
1333 +- inode->i_uid = opts->uid;
1334 ++ if (!remount || opts->opts & BIT(Opt_uid))
1335 ++ inode->i_uid = opts->uid;
1336 +
1337 +- /* Set all the group ids to the mount option */
1338 +- set_gid(sb->s_root, opts->gid);
1339 ++ if (!remount || opts->opts & BIT(Opt_gid)) {
1340 ++ /* Set all the group ids to the mount option */
1341 ++ set_gid(sb->s_root, opts->gid);
1342 ++ }
1343 +
1344 + return 0;
1345 + }
1346 +@@ -307,7 +322,7 @@ static int tracefs_remount(struct super_block *sb, int *flags, char *data)
1347 + if (err)
1348 + goto fail;
1349 +
1350 +- tracefs_apply_options(sb);
1351 ++ tracefs_apply_options(sb, true);
1352 +
1353 + fail:
1354 + return err;
1355 +@@ -359,7 +374,7 @@ static int trace_fill_super(struct super_block *sb, void *data, int silent)
1356 +
1357 + sb->s_op = &tracefs_super_operations;
1358 +
1359 +- tracefs_apply_options(sb);
1360 ++ tracefs_apply_options(sb, false);
1361 +
1362 + return 0;
1363 +
1364 +diff --git a/include/linux/intel-iommu.h b/include/linux/intel-iommu.h
1365 +index 05a65eb155f76..81da7107e3bd0 100644
1366 +--- a/include/linux/intel-iommu.h
1367 ++++ b/include/linux/intel-iommu.h
1368 +@@ -196,7 +196,6 @@
1369 + #define ecap_dis(e) (((e) >> 27) & 0x1)
1370 + #define ecap_nest(e) (((e) >> 26) & 0x1)
1371 + #define ecap_mts(e) (((e) >> 25) & 0x1)
1372 +-#define ecap_ecs(e) (((e) >> 24) & 0x1)
1373 + #define ecap_iotlb_offset(e) ((((e) >> 8) & 0x3ff) * 16)
1374 + #define ecap_max_iotlb_offset(e) (ecap_iotlb_offset(e) + 16)
1375 + #define ecap_coherent(e) ((e) & 0x1)
1376 +@@ -264,7 +263,6 @@
1377 + #define DMA_GSTS_CFIS (((u32)1) << 23)
1378 +
1379 + /* DMA_RTADDR_REG */
1380 +-#define DMA_RTADDR_RTT (((u64)1) << 11)
1381 + #define DMA_RTADDR_SMT (((u64)1) << 10)
1382 +
1383 + /* CCMD_REG */
1384 +@@ -594,6 +592,7 @@ struct intel_iommu {
1385 + #ifdef CONFIG_INTEL_IOMMU
1386 + unsigned long *domain_ids; /* bitmap of domains */
1387 + struct dmar_domain ***domains; /* ptr to domains */
1388 ++ unsigned long *copied_tables; /* bitmap of copied tables */
1389 + spinlock_t lock; /* protect context, domain ids */
1390 + struct root_entry *root_entry; /* virtual address */
1391 +
1392 +@@ -713,6 +712,11 @@ static inline int first_pte_in_page(struct dma_pte *pte)
1393 + return !((unsigned long)pte & ~VTD_PAGE_MASK);
1394 + }
1395 +
1396 ++static inline bool context_present(struct context_entry *context)
1397 ++{
1398 ++ return (context->lo & 1);
1399 ++}
1400 ++
1401 + extern struct dmar_drhd_unit * dmar_find_matched_drhd_unit(struct pci_dev *dev);
1402 + extern int dmar_find_matched_atsr_unit(struct pci_dev *dev);
1403 +
1404 +@@ -806,7 +810,6 @@ static inline void intel_iommu_debugfs_init(void) {}
1405 + #endif /* CONFIG_INTEL_IOMMU_DEBUGFS */
1406 +
1407 + extern const struct attribute_group *intel_iommu_groups[];
1408 +-bool context_present(struct context_entry *context);
1409 + struct context_entry *iommu_context_addr(struct intel_iommu *iommu, u8 bus,
1410 + u8 devfn, int alloc);
1411 +
1412 +diff --git a/include/linux/irqflags.h b/include/linux/irqflags.h
1413 +index 600c10da321a7..747f40e0c3260 100644
1414 +--- a/include/linux/irqflags.h
1415 ++++ b/include/linux/irqflags.h
1416 +@@ -20,13 +20,13 @@
1417 + #ifdef CONFIG_PROVE_LOCKING
1418 + extern void lockdep_softirqs_on(unsigned long ip);
1419 + extern void lockdep_softirqs_off(unsigned long ip);
1420 +- extern void lockdep_hardirqs_on_prepare(unsigned long ip);
1421 ++ extern void lockdep_hardirqs_on_prepare(void);
1422 + extern void lockdep_hardirqs_on(unsigned long ip);
1423 + extern void lockdep_hardirqs_off(unsigned long ip);
1424 + #else
1425 + static inline void lockdep_softirqs_on(unsigned long ip) { }
1426 + static inline void lockdep_softirqs_off(unsigned long ip) { }
1427 +- static inline void lockdep_hardirqs_on_prepare(unsigned long ip) { }
1428 ++ static inline void lockdep_hardirqs_on_prepare(void) { }
1429 + static inline void lockdep_hardirqs_on(unsigned long ip) { }
1430 + static inline void lockdep_hardirqs_off(unsigned long ip) { }
1431 + #endif
1432 +diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
1433 +index fb70dd4ff3b60..38b7e9ab48b84 100644
1434 +--- a/include/linux/kvm_host.h
1435 ++++ b/include/linux/kvm_host.h
1436 +@@ -436,7 +436,7 @@ static __always_inline void guest_state_enter_irqoff(void)
1437 + {
1438 + instrumentation_begin();
1439 + trace_hardirqs_on_prepare();
1440 +- lockdep_hardirqs_on_prepare(CALLER_ADDR0);
1441 ++ lockdep_hardirqs_on_prepare();
1442 + instrumentation_end();
1443 +
1444 + guest_context_enter_irqoff();
1445 +diff --git a/include/linux/nfs_fs.h b/include/linux/nfs_fs.h
1446 +index 71467d661fb66..5ddc30405f7f4 100644
1447 +--- a/include/linux/nfs_fs.h
1448 ++++ b/include/linux/nfs_fs.h
1449 +@@ -593,7 +593,9 @@ bool nfs_commit_end(struct nfs_mds_commit_info *cinfo);
1450 + static inline int
1451 + nfs_have_writebacks(struct inode *inode)
1452 + {
1453 +- return atomic_long_read(&NFS_I(inode)->nrequests) != 0;
1454 ++ if (S_ISREG(inode->i_mode))
1455 ++ return atomic_long_read(&NFS_I(inode)->nrequests) != 0;
1456 ++ return 0;
1457 + }
1458 +
1459 + /*
1460 +diff --git a/include/linux/sched/task_stack.h b/include/linux/sched/task_stack.h
1461 +index d10150587d819..1009b6b5ce403 100644
1462 +--- a/include/linux/sched/task_stack.h
1463 ++++ b/include/linux/sched/task_stack.h
1464 +@@ -16,7 +16,7 @@
1465 + * try_get_task_stack() instead. task_stack_page will return a pointer
1466 + * that could get freed out from under you.
1467 + */
1468 +-static inline void *task_stack_page(const struct task_struct *task)
1469 ++static __always_inline void *task_stack_page(const struct task_struct *task)
1470 + {
1471 + return task->stack;
1472 + }
1473 +diff --git a/kernel/entry/common.c b/kernel/entry/common.c
1474 +index d5a61d565ad5d..998bdb7b8bf7f 100644
1475 +--- a/kernel/entry/common.c
1476 ++++ b/kernel/entry/common.c
1477 +@@ -124,7 +124,7 @@ static __always_inline void __exit_to_user_mode(void)
1478 + {
1479 + instrumentation_begin();
1480 + trace_hardirqs_on_prepare();
1481 +- lockdep_hardirqs_on_prepare(CALLER_ADDR0);
1482 ++ lockdep_hardirqs_on_prepare();
1483 + instrumentation_end();
1484 +
1485 + user_enter_irqoff();
1486 +@@ -412,7 +412,7 @@ noinstr void irqentry_exit(struct pt_regs *regs, irqentry_state_t state)
1487 + instrumentation_begin();
1488 + /* Tell the tracer that IRET will enable interrupts */
1489 + trace_hardirqs_on_prepare();
1490 +- lockdep_hardirqs_on_prepare(CALLER_ADDR0);
1491 ++ lockdep_hardirqs_on_prepare();
1492 + instrumentation_end();
1493 + rcu_irq_exit();
1494 + lockdep_hardirqs_on(CALLER_ADDR0);
1495 +@@ -465,7 +465,7 @@ void noinstr irqentry_nmi_exit(struct pt_regs *regs, irqentry_state_t irq_state)
1496 + ftrace_nmi_exit();
1497 + if (irq_state.lockdep) {
1498 + trace_hardirqs_on_prepare();
1499 +- lockdep_hardirqs_on_prepare(CALLER_ADDR0);
1500 ++ lockdep_hardirqs_on_prepare();
1501 + }
1502 + instrumentation_end();
1503 +
1504 +diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c
1505 +index 120bbdacd58bb..e6a282bc16652 100644
1506 +--- a/kernel/locking/lockdep.c
1507 ++++ b/kernel/locking/lockdep.c
1508 +@@ -1368,7 +1368,7 @@ static struct lock_list *alloc_list_entry(void)
1509 + */
1510 + static int add_lock_to_list(struct lock_class *this,
1511 + struct lock_class *links_to, struct list_head *head,
1512 +- unsigned long ip, u16 distance, u8 dep,
1513 ++ u16 distance, u8 dep,
1514 + const struct lock_trace *trace)
1515 + {
1516 + struct lock_list *entry;
1517 +@@ -3121,19 +3121,15 @@ check_prev_add(struct task_struct *curr, struct held_lock *prev,
1518 + * to the previous lock's dependency list:
1519 + */
1520 + ret = add_lock_to_list(hlock_class(next), hlock_class(prev),
1521 +- &hlock_class(prev)->locks_after,
1522 +- next->acquire_ip, distance,
1523 +- calc_dep(prev, next),
1524 +- *trace);
1525 ++ &hlock_class(prev)->locks_after, distance,
1526 ++ calc_dep(prev, next), *trace);
1527 +
1528 + if (!ret)
1529 + return 0;
1530 +
1531 + ret = add_lock_to_list(hlock_class(prev), hlock_class(next),
1532 +- &hlock_class(next)->locks_before,
1533 +- next->acquire_ip, distance,
1534 +- calc_depb(prev, next),
1535 +- *trace);
1536 ++ &hlock_class(next)->locks_before, distance,
1537 ++ calc_depb(prev, next), *trace);
1538 + if (!ret)
1539 + return 0;
1540 +
1541 +@@ -4224,14 +4220,13 @@ static void __trace_hardirqs_on_caller(void)
1542 +
1543 + /**
1544 + * lockdep_hardirqs_on_prepare - Prepare for enabling interrupts
1545 +- * @ip: Caller address
1546 + *
1547 + * Invoked before a possible transition to RCU idle from exit to user or
1548 + * guest mode. This ensures that all RCU operations are done before RCU
1549 + * stops watching. After the RCU transition lockdep_hardirqs_on() has to be
1550 + * invoked to set the final state.
1551 + */
1552 +-void lockdep_hardirqs_on_prepare(unsigned long ip)
1553 ++void lockdep_hardirqs_on_prepare(void)
1554 + {
1555 + if (unlikely(!debug_locks))
1556 + return;
1557 +@@ -4828,8 +4823,7 @@ EXPORT_SYMBOL_GPL(__lockdep_no_validate__);
1558 +
1559 + static void
1560 + print_lock_nested_lock_not_held(struct task_struct *curr,
1561 +- struct held_lock *hlock,
1562 +- unsigned long ip)
1563 ++ struct held_lock *hlock)
1564 + {
1565 + if (!debug_locks_off())
1566 + return;
1567 +@@ -5005,7 +4999,7 @@ static int __lock_acquire(struct lockdep_map *lock, unsigned int subclass,
1568 + chain_key = iterate_chain_key(chain_key, hlock_id(hlock));
1569 +
1570 + if (nest_lock && !__lock_is_held(nest_lock, -1)) {
1571 +- print_lock_nested_lock_not_held(curr, hlock, ip);
1572 ++ print_lock_nested_lock_not_held(curr, hlock);
1573 + return 0;
1574 + }
1575 +
1576 +diff --git a/kernel/sched/idle.c b/kernel/sched/idle.c
1577 +index d17b0a5ce6ac3..499a3e286cd05 100644
1578 +--- a/kernel/sched/idle.c
1579 ++++ b/kernel/sched/idle.c
1580 +@@ -105,7 +105,7 @@ void __cpuidle default_idle_call(void)
1581 + * last -- this is very similar to the entry code.
1582 + */
1583 + trace_hardirqs_on_prepare();
1584 +- lockdep_hardirqs_on_prepare(_THIS_IP_);
1585 ++ lockdep_hardirqs_on_prepare();
1586 + rcu_idle_enter();
1587 + lockdep_hardirqs_on(_THIS_IP_);
1588 +
1589 +diff --git a/kernel/trace/trace_preemptirq.c b/kernel/trace/trace_preemptirq.c
1590 +index f4938040c2286..1e130da1b742c 100644
1591 +--- a/kernel/trace/trace_preemptirq.c
1592 ++++ b/kernel/trace/trace_preemptirq.c
1593 +@@ -46,7 +46,7 @@ void trace_hardirqs_on(void)
1594 + this_cpu_write(tracing_irq_cpu, 0);
1595 + }
1596 +
1597 +- lockdep_hardirqs_on_prepare(CALLER_ADDR0);
1598 ++ lockdep_hardirqs_on_prepare();
1599 + lockdep_hardirqs_on(CALLER_ADDR0);
1600 + }
1601 + EXPORT_SYMBOL(trace_hardirqs_on);
1602 +@@ -94,15 +94,15 @@ __visible void trace_hardirqs_on_caller(unsigned long caller_addr)
1603 + this_cpu_write(tracing_irq_cpu, 0);
1604 + }
1605 +
1606 +- lockdep_hardirqs_on_prepare(CALLER_ADDR0);
1607 +- lockdep_hardirqs_on(CALLER_ADDR0);
1608 ++ lockdep_hardirqs_on_prepare();
1609 ++ lockdep_hardirqs_on(caller_addr);
1610 + }
1611 + EXPORT_SYMBOL(trace_hardirqs_on_caller);
1612 + NOKPROBE_SYMBOL(trace_hardirqs_on_caller);
1613 +
1614 + __visible void trace_hardirqs_off_caller(unsigned long caller_addr)
1615 + {
1616 +- lockdep_hardirqs_off(CALLER_ADDR0);
1617 ++ lockdep_hardirqs_off(caller_addr);
1618 +
1619 + if (!this_cpu_read(tracing_irq_cpu)) {
1620 + this_cpu_write(tracing_irq_cpu, 1);
1621 +diff --git a/mm/mmap.c b/mm/mmap.c
1622 +index cd1d2680ac585..5c2c7651ca298 100644
1623 +--- a/mm/mmap.c
1624 ++++ b/mm/mmap.c
1625 +@@ -2638,6 +2638,7 @@ static void unmap_region(struct mm_struct *mm,
1626 + {
1627 + struct vm_area_struct *next = vma_next(mm, prev);
1628 + struct mmu_gather tlb;
1629 ++ struct vm_area_struct *cur_vma;
1630 +
1631 + lru_add_drain();
1632 + tlb_gather_mmu(&tlb, mm);
1633 +@@ -2652,8 +2653,12 @@ static void unmap_region(struct mm_struct *mm,
1634 + * concurrent flush in this region has to be coming through the rmap,
1635 + * and we synchronize against that using the rmap lock.
1636 + */
1637 +- if ((vma->vm_flags & (VM_PFNMAP|VM_MIXEDMAP)) != 0)
1638 +- tlb_flush_mmu(&tlb);
1639 ++ for (cur_vma = vma; cur_vma; cur_vma = cur_vma->vm_next) {
1640 ++ if ((cur_vma->vm_flags & (VM_PFNMAP|VM_MIXEDMAP)) != 0) {
1641 ++ tlb_flush_mmu(&tlb);
1642 ++ break;
1643 ++ }
1644 ++ }
1645 +
1646 + free_pgtables(&tlb, vma, prev ? prev->vm_end : FIRST_USER_ADDRESS,
1647 + next ? next->vm_start : USER_PGTABLES_CEILING);
1648 +diff --git a/net/dsa/tag_hellcreek.c b/net/dsa/tag_hellcreek.c
1649 +index eb204ad36eeec..846588c0070a5 100644
1650 +--- a/net/dsa/tag_hellcreek.c
1651 ++++ b/net/dsa/tag_hellcreek.c
1652 +@@ -45,7 +45,7 @@ static struct sk_buff *hellcreek_rcv(struct sk_buff *skb,
1653 +
1654 + skb->dev = dsa_master_find_slave(dev, 0, port);
1655 + if (!skb->dev) {
1656 +- netdev_warn(dev, "Failed to get source port: %d\n", port);
1657 ++ netdev_warn_once(dev, "Failed to get source port: %d\n", port);
1658 + return NULL;
1659 + }
1660 +