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 = >1x_chip_data }, |
872 |
++ { .id = "1158", .data = >1x_chip_data }, |
873 |
+ { .id = "5663", .data = >1x_chip_data }, |
874 |
+ { .id = "5688", .data = >1x_chip_data }, |
875 |
+ { .id = "917S", .data = >1x_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 |
+ |