Annotation of /trunk/kernel-alx/patches-3.18/0104-3.18.5-all-fixes.patch
Parent Directory | Revision Log
Revision 2553 -
(hide annotations)
(download)
Wed Mar 18 09:24:38 2015 UTC (9 years, 6 months ago) by niro
File size: 132162 byte(s)
Wed Mar 18 09:24:38 2015 UTC (9 years, 6 months ago) by niro
File size: 132162 byte(s)
-import from kernel-magellan
1 | niro | 2553 | diff --git a/Makefile b/Makefile |
2 | index 4e9328491c1e..6276fcaabf21 100644 | ||
3 | --- a/Makefile | ||
4 | +++ b/Makefile | ||
5 | @@ -1,6 +1,6 @@ | ||
6 | VERSION = 3 | ||
7 | PATCHLEVEL = 18 | ||
8 | -SUBLEVEL = 4 | ||
9 | +SUBLEVEL = 5 | ||
10 | EXTRAVERSION = | ||
11 | NAME = Diseased Newt | ||
12 | |||
13 | diff --git a/arch/arm/boot/dts/imx25.dtsi b/arch/arm/boot/dts/imx25.dtsi | ||
14 | index d238676a9107..e4d3aecc4ed2 100644 | ||
15 | --- a/arch/arm/boot/dts/imx25.dtsi | ||
16 | +++ b/arch/arm/boot/dts/imx25.dtsi | ||
17 | @@ -369,7 +369,7 @@ | ||
18 | compatible = "fsl,imx25-pwm", "fsl,imx27-pwm"; | ||
19 | #pwm-cells = <2>; | ||
20 | reg = <0x53fa0000 0x4000>; | ||
21 | - clocks = <&clks 106>, <&clks 36>; | ||
22 | + clocks = <&clks 106>, <&clks 52>; | ||
23 | clock-names = "ipg", "per"; | ||
24 | interrupts = <36>; | ||
25 | }; | ||
26 | @@ -388,7 +388,7 @@ | ||
27 | compatible = "fsl,imx25-pwm", "fsl,imx27-pwm"; | ||
28 | #pwm-cells = <2>; | ||
29 | reg = <0x53fa8000 0x4000>; | ||
30 | - clocks = <&clks 107>, <&clks 36>; | ||
31 | + clocks = <&clks 107>, <&clks 52>; | ||
32 | clock-names = "ipg", "per"; | ||
33 | interrupts = <41>; | ||
34 | }; | ||
35 | @@ -429,7 +429,7 @@ | ||
36 | pwm4: pwm@53fc8000 { | ||
37 | compatible = "fsl,imx25-pwm", "fsl,imx27-pwm"; | ||
38 | reg = <0x53fc8000 0x4000>; | ||
39 | - clocks = <&clks 108>, <&clks 36>; | ||
40 | + clocks = <&clks 108>, <&clks 52>; | ||
41 | clock-names = "ipg", "per"; | ||
42 | interrupts = <42>; | ||
43 | }; | ||
44 | @@ -476,7 +476,7 @@ | ||
45 | compatible = "fsl,imx25-pwm", "fsl,imx27-pwm"; | ||
46 | #pwm-cells = <2>; | ||
47 | reg = <0x53fe0000 0x4000>; | ||
48 | - clocks = <&clks 105>, <&clks 36>; | ||
49 | + clocks = <&clks 105>, <&clks 52>; | ||
50 | clock-names = "ipg", "per"; | ||
51 | interrupts = <26>; | ||
52 | }; | ||
53 | diff --git a/arch/arm/crypto/aes_glue.c b/arch/arm/crypto/aes_glue.c | ||
54 | index 3003fa1f6fb4..0409b8f89782 100644 | ||
55 | --- a/arch/arm/crypto/aes_glue.c | ||
56 | +++ b/arch/arm/crypto/aes_glue.c | ||
57 | @@ -93,6 +93,6 @@ module_exit(aes_fini); | ||
58 | |||
59 | MODULE_DESCRIPTION("Rijndael (AES) Cipher Algorithm (ASM)"); | ||
60 | MODULE_LICENSE("GPL"); | ||
61 | -MODULE_ALIAS("aes"); | ||
62 | -MODULE_ALIAS("aes-asm"); | ||
63 | +MODULE_ALIAS_CRYPTO("aes"); | ||
64 | +MODULE_ALIAS_CRYPTO("aes-asm"); | ||
65 | MODULE_AUTHOR("David McCullough <ucdevel@gmail.com>"); | ||
66 | diff --git a/arch/arm/crypto/sha1_glue.c b/arch/arm/crypto/sha1_glue.c | ||
67 | index 84f2a756588b..e31b0440c613 100644 | ||
68 | --- a/arch/arm/crypto/sha1_glue.c | ||
69 | +++ b/arch/arm/crypto/sha1_glue.c | ||
70 | @@ -171,5 +171,5 @@ module_exit(sha1_mod_fini); | ||
71 | |||
72 | MODULE_LICENSE("GPL"); | ||
73 | MODULE_DESCRIPTION("SHA1 Secure Hash Algorithm (ARM)"); | ||
74 | -MODULE_ALIAS("sha1"); | ||
75 | +MODULE_ALIAS_CRYPTO("sha1"); | ||
76 | MODULE_AUTHOR("David McCullough <ucdevel@gmail.com>"); | ||
77 | diff --git a/arch/arm/crypto/sha1_neon_glue.c b/arch/arm/crypto/sha1_neon_glue.c | ||
78 | index 6f1b411b1d55..0b0083757d47 100644 | ||
79 | --- a/arch/arm/crypto/sha1_neon_glue.c | ||
80 | +++ b/arch/arm/crypto/sha1_neon_glue.c | ||
81 | @@ -194,4 +194,4 @@ module_exit(sha1_neon_mod_fini); | ||
82 | |||
83 | MODULE_LICENSE("GPL"); | ||
84 | MODULE_DESCRIPTION("SHA1 Secure Hash Algorithm, NEON accelerated"); | ||
85 | -MODULE_ALIAS("sha1"); | ||
86 | +MODULE_ALIAS_CRYPTO("sha1"); | ||
87 | diff --git a/arch/arm/crypto/sha512_neon_glue.c b/arch/arm/crypto/sha512_neon_glue.c | ||
88 | index 0d2758ff5e12..f3452c66059d 100644 | ||
89 | --- a/arch/arm/crypto/sha512_neon_glue.c | ||
90 | +++ b/arch/arm/crypto/sha512_neon_glue.c | ||
91 | @@ -301,5 +301,5 @@ module_exit(sha512_neon_mod_fini); | ||
92 | MODULE_LICENSE("GPL"); | ||
93 | MODULE_DESCRIPTION("SHA512 Secure Hash Algorithm, NEON accelerated"); | ||
94 | |||
95 | -MODULE_ALIAS("sha512"); | ||
96 | -MODULE_ALIAS("sha384"); | ||
97 | +MODULE_ALIAS_CRYPTO("sha512"); | ||
98 | +MODULE_ALIAS_CRYPTO("sha384"); | ||
99 | diff --git a/arch/arm/mach-mvebu/coherency.c b/arch/arm/mach-mvebu/coherency.c | ||
100 | index c31f4c00b1fc..1163a3e9accd 100644 | ||
101 | --- a/arch/arm/mach-mvebu/coherency.c | ||
102 | +++ b/arch/arm/mach-mvebu/coherency.c | ||
103 | @@ -398,9 +398,14 @@ static int coherency_type(void) | ||
104 | return type; | ||
105 | } | ||
106 | |||
107 | +/* | ||
108 | + * As a precaution, we currently completely disable hardware I/O | ||
109 | + * coherency, until enough testing is done with automatic I/O | ||
110 | + * synchronization barriers to validate that it is a proper solution. | ||
111 | + */ | ||
112 | int coherency_available(void) | ||
113 | { | ||
114 | - return coherency_type() != COHERENCY_FABRIC_TYPE_NONE; | ||
115 | + return false; | ||
116 | } | ||
117 | |||
118 | int __init coherency_init(void) | ||
119 | diff --git a/arch/arm64/crypto/aes-ce-ccm-glue.c b/arch/arm64/crypto/aes-ce-ccm-glue.c | ||
120 | index 9e6cdde9b43d..0156a268e163 100644 | ||
121 | --- a/arch/arm64/crypto/aes-ce-ccm-glue.c | ||
122 | +++ b/arch/arm64/crypto/aes-ce-ccm-glue.c | ||
123 | @@ -294,4 +294,4 @@ module_exit(aes_mod_exit); | ||
124 | MODULE_DESCRIPTION("Synchronous AES in CCM mode using ARMv8 Crypto Extensions"); | ||
125 | MODULE_AUTHOR("Ard Biesheuvel <ard.biesheuvel@linaro.org>"); | ||
126 | MODULE_LICENSE("GPL v2"); | ||
127 | -MODULE_ALIAS("ccm(aes)"); | ||
128 | +MODULE_ALIAS_CRYPTO("ccm(aes)"); | ||
129 | diff --git a/arch/arm64/crypto/aes-glue.c b/arch/arm64/crypto/aes-glue.c | ||
130 | index 79cd911ef88c..5f63a791b2fb 100644 | ||
131 | --- a/arch/arm64/crypto/aes-glue.c | ||
132 | +++ b/arch/arm64/crypto/aes-glue.c | ||
133 | @@ -38,10 +38,10 @@ MODULE_DESCRIPTION("AES-ECB/CBC/CTR/XTS using ARMv8 Crypto Extensions"); | ||
134 | #define aes_xts_encrypt neon_aes_xts_encrypt | ||
135 | #define aes_xts_decrypt neon_aes_xts_decrypt | ||
136 | MODULE_DESCRIPTION("AES-ECB/CBC/CTR/XTS using ARMv8 NEON"); | ||
137 | -MODULE_ALIAS("ecb(aes)"); | ||
138 | -MODULE_ALIAS("cbc(aes)"); | ||
139 | -MODULE_ALIAS("ctr(aes)"); | ||
140 | -MODULE_ALIAS("xts(aes)"); | ||
141 | +MODULE_ALIAS_CRYPTO("ecb(aes)"); | ||
142 | +MODULE_ALIAS_CRYPTO("cbc(aes)"); | ||
143 | +MODULE_ALIAS_CRYPTO("ctr(aes)"); | ||
144 | +MODULE_ALIAS_CRYPTO("xts(aes)"); | ||
145 | #endif | ||
146 | |||
147 | MODULE_AUTHOR("Ard Biesheuvel <ard.biesheuvel@linaro.org>"); | ||
148 | diff --git a/arch/powerpc/crypto/sha1.c b/arch/powerpc/crypto/sha1.c | ||
149 | index f9e8b9491efc..b51da9132744 100644 | ||
150 | --- a/arch/powerpc/crypto/sha1.c | ||
151 | +++ b/arch/powerpc/crypto/sha1.c | ||
152 | @@ -154,4 +154,5 @@ module_exit(sha1_powerpc_mod_fini); | ||
153 | MODULE_LICENSE("GPL"); | ||
154 | MODULE_DESCRIPTION("SHA1 Secure Hash Algorithm"); | ||
155 | |||
156 | -MODULE_ALIAS("sha1-powerpc"); | ||
157 | +MODULE_ALIAS_CRYPTO("sha1"); | ||
158 | +MODULE_ALIAS_CRYPTO("sha1-powerpc"); | ||
159 | diff --git a/arch/s390/crypto/aes_s390.c b/arch/s390/crypto/aes_s390.c | ||
160 | index 23223cd63e54..1f272b24fc0b 100644 | ||
161 | --- a/arch/s390/crypto/aes_s390.c | ||
162 | +++ b/arch/s390/crypto/aes_s390.c | ||
163 | @@ -979,7 +979,7 @@ static void __exit aes_s390_fini(void) | ||
164 | module_init(aes_s390_init); | ||
165 | module_exit(aes_s390_fini); | ||
166 | |||
167 | -MODULE_ALIAS("aes-all"); | ||
168 | +MODULE_ALIAS_CRYPTO("aes-all"); | ||
169 | |||
170 | MODULE_DESCRIPTION("Rijndael (AES) Cipher Algorithm"); | ||
171 | MODULE_LICENSE("GPL"); | ||
172 | diff --git a/arch/s390/crypto/des_s390.c b/arch/s390/crypto/des_s390.c | ||
173 | index 7acb77f7ef1a..9e05cc453a40 100644 | ||
174 | --- a/arch/s390/crypto/des_s390.c | ||
175 | +++ b/arch/s390/crypto/des_s390.c | ||
176 | @@ -619,8 +619,8 @@ static void __exit des_s390_exit(void) | ||
177 | module_init(des_s390_init); | ||
178 | module_exit(des_s390_exit); | ||
179 | |||
180 | -MODULE_ALIAS("des"); | ||
181 | -MODULE_ALIAS("des3_ede"); | ||
182 | +MODULE_ALIAS_CRYPTO("des"); | ||
183 | +MODULE_ALIAS_CRYPTO("des3_ede"); | ||
184 | |||
185 | MODULE_LICENSE("GPL"); | ||
186 | MODULE_DESCRIPTION("DES & Triple DES EDE Cipher Algorithms"); | ||
187 | diff --git a/arch/s390/crypto/ghash_s390.c b/arch/s390/crypto/ghash_s390.c | ||
188 | index d43485d142e9..7940dc90e80b 100644 | ||
189 | --- a/arch/s390/crypto/ghash_s390.c | ||
190 | +++ b/arch/s390/crypto/ghash_s390.c | ||
191 | @@ -160,7 +160,7 @@ static void __exit ghash_mod_exit(void) | ||
192 | module_init(ghash_mod_init); | ||
193 | module_exit(ghash_mod_exit); | ||
194 | |||
195 | -MODULE_ALIAS("ghash"); | ||
196 | +MODULE_ALIAS_CRYPTO("ghash"); | ||
197 | |||
198 | MODULE_LICENSE("GPL"); | ||
199 | MODULE_DESCRIPTION("GHASH Message Digest Algorithm, s390 implementation"); | ||
200 | diff --git a/arch/s390/crypto/sha1_s390.c b/arch/s390/crypto/sha1_s390.c | ||
201 | index a1b3a9dc9d8a..5b2bee323694 100644 | ||
202 | --- a/arch/s390/crypto/sha1_s390.c | ||
203 | +++ b/arch/s390/crypto/sha1_s390.c | ||
204 | @@ -103,6 +103,6 @@ static void __exit sha1_s390_fini(void) | ||
205 | module_init(sha1_s390_init); | ||
206 | module_exit(sha1_s390_fini); | ||
207 | |||
208 | -MODULE_ALIAS("sha1"); | ||
209 | +MODULE_ALIAS_CRYPTO("sha1"); | ||
210 | MODULE_LICENSE("GPL"); | ||
211 | MODULE_DESCRIPTION("SHA1 Secure Hash Algorithm"); | ||
212 | diff --git a/arch/s390/crypto/sha256_s390.c b/arch/s390/crypto/sha256_s390.c | ||
213 | index 9b853809a492..b74ff158108c 100644 | ||
214 | --- a/arch/s390/crypto/sha256_s390.c | ||
215 | +++ b/arch/s390/crypto/sha256_s390.c | ||
216 | @@ -143,7 +143,7 @@ static void __exit sha256_s390_fini(void) | ||
217 | module_init(sha256_s390_init); | ||
218 | module_exit(sha256_s390_fini); | ||
219 | |||
220 | -MODULE_ALIAS("sha256"); | ||
221 | -MODULE_ALIAS("sha224"); | ||
222 | +MODULE_ALIAS_CRYPTO("sha256"); | ||
223 | +MODULE_ALIAS_CRYPTO("sha224"); | ||
224 | MODULE_LICENSE("GPL"); | ||
225 | MODULE_DESCRIPTION("SHA256 and SHA224 Secure Hash Algorithm"); | ||
226 | diff --git a/arch/s390/crypto/sha512_s390.c b/arch/s390/crypto/sha512_s390.c | ||
227 | index 32a81383b69c..0c36989ba182 100644 | ||
228 | --- a/arch/s390/crypto/sha512_s390.c | ||
229 | +++ b/arch/s390/crypto/sha512_s390.c | ||
230 | @@ -86,7 +86,7 @@ static struct shash_alg sha512_alg = { | ||
231 | } | ||
232 | }; | ||
233 | |||
234 | -MODULE_ALIAS("sha512"); | ||
235 | +MODULE_ALIAS_CRYPTO("sha512"); | ||
236 | |||
237 | static int sha384_init(struct shash_desc *desc) | ||
238 | { | ||
239 | @@ -126,7 +126,7 @@ static struct shash_alg sha384_alg = { | ||
240 | } | ||
241 | }; | ||
242 | |||
243 | -MODULE_ALIAS("sha384"); | ||
244 | +MODULE_ALIAS_CRYPTO("sha384"); | ||
245 | |||
246 | static int __init init(void) | ||
247 | { | ||
248 | diff --git a/arch/sparc/crypto/aes_glue.c b/arch/sparc/crypto/aes_glue.c | ||
249 | index df922f52d76d..705408766ab0 100644 | ||
250 | --- a/arch/sparc/crypto/aes_glue.c | ||
251 | +++ b/arch/sparc/crypto/aes_glue.c | ||
252 | @@ -499,6 +499,6 @@ module_exit(aes_sparc64_mod_fini); | ||
253 | MODULE_LICENSE("GPL"); | ||
254 | MODULE_DESCRIPTION("AES Secure Hash Algorithm, sparc64 aes opcode accelerated"); | ||
255 | |||
256 | -MODULE_ALIAS("aes"); | ||
257 | +MODULE_ALIAS_CRYPTO("aes"); | ||
258 | |||
259 | #include "crop_devid.c" | ||
260 | diff --git a/arch/sparc/crypto/camellia_glue.c b/arch/sparc/crypto/camellia_glue.c | ||
261 | index 888f6260b4ec..641f55cb61c3 100644 | ||
262 | --- a/arch/sparc/crypto/camellia_glue.c | ||
263 | +++ b/arch/sparc/crypto/camellia_glue.c | ||
264 | @@ -322,6 +322,6 @@ module_exit(camellia_sparc64_mod_fini); | ||
265 | MODULE_LICENSE("GPL"); | ||
266 | MODULE_DESCRIPTION("Camellia Cipher Algorithm, sparc64 camellia opcode accelerated"); | ||
267 | |||
268 | -MODULE_ALIAS("aes"); | ||
269 | +MODULE_ALIAS_CRYPTO("aes"); | ||
270 | |||
271 | #include "crop_devid.c" | ||
272 | diff --git a/arch/sparc/crypto/crc32c_glue.c b/arch/sparc/crypto/crc32c_glue.c | ||
273 | index 5162fad912ce..d1064e46efe8 100644 | ||
274 | --- a/arch/sparc/crypto/crc32c_glue.c | ||
275 | +++ b/arch/sparc/crypto/crc32c_glue.c | ||
276 | @@ -176,6 +176,6 @@ module_exit(crc32c_sparc64_mod_fini); | ||
277 | MODULE_LICENSE("GPL"); | ||
278 | MODULE_DESCRIPTION("CRC32c (Castagnoli), sparc64 crc32c opcode accelerated"); | ||
279 | |||
280 | -MODULE_ALIAS("crc32c"); | ||
281 | +MODULE_ALIAS_CRYPTO("crc32c"); | ||
282 | |||
283 | #include "crop_devid.c" | ||
284 | diff --git a/arch/sparc/crypto/des_glue.c b/arch/sparc/crypto/des_glue.c | ||
285 | index 3065bc61f9d3..d11500972994 100644 | ||
286 | --- a/arch/sparc/crypto/des_glue.c | ||
287 | +++ b/arch/sparc/crypto/des_glue.c | ||
288 | @@ -532,6 +532,6 @@ module_exit(des_sparc64_mod_fini); | ||
289 | MODULE_LICENSE("GPL"); | ||
290 | MODULE_DESCRIPTION("DES & Triple DES EDE Cipher Algorithms, sparc64 des opcode accelerated"); | ||
291 | |||
292 | -MODULE_ALIAS("des"); | ||
293 | +MODULE_ALIAS_CRYPTO("des"); | ||
294 | |||
295 | #include "crop_devid.c" | ||
296 | diff --git a/arch/sparc/crypto/md5_glue.c b/arch/sparc/crypto/md5_glue.c | ||
297 | index 09a9ea1dfb69..64c7ff5f72a9 100644 | ||
298 | --- a/arch/sparc/crypto/md5_glue.c | ||
299 | +++ b/arch/sparc/crypto/md5_glue.c | ||
300 | @@ -185,6 +185,6 @@ module_exit(md5_sparc64_mod_fini); | ||
301 | MODULE_LICENSE("GPL"); | ||
302 | MODULE_DESCRIPTION("MD5 Secure Hash Algorithm, sparc64 md5 opcode accelerated"); | ||
303 | |||
304 | -MODULE_ALIAS("md5"); | ||
305 | +MODULE_ALIAS_CRYPTO("md5"); | ||
306 | |||
307 | #include "crop_devid.c" | ||
308 | diff --git a/arch/sparc/crypto/sha1_glue.c b/arch/sparc/crypto/sha1_glue.c | ||
309 | index 6cd5f29e1e0d..1b3e47accc74 100644 | ||
310 | --- a/arch/sparc/crypto/sha1_glue.c | ||
311 | +++ b/arch/sparc/crypto/sha1_glue.c | ||
312 | @@ -180,6 +180,6 @@ module_exit(sha1_sparc64_mod_fini); | ||
313 | MODULE_LICENSE("GPL"); | ||
314 | MODULE_DESCRIPTION("SHA1 Secure Hash Algorithm, sparc64 sha1 opcode accelerated"); | ||
315 | |||
316 | -MODULE_ALIAS("sha1"); | ||
317 | +MODULE_ALIAS_CRYPTO("sha1"); | ||
318 | |||
319 | #include "crop_devid.c" | ||
320 | diff --git a/arch/sparc/crypto/sha256_glue.c b/arch/sparc/crypto/sha256_glue.c | ||
321 | index 04f555ab2680..41f27cca2a22 100644 | ||
322 | --- a/arch/sparc/crypto/sha256_glue.c | ||
323 | +++ b/arch/sparc/crypto/sha256_glue.c | ||
324 | @@ -237,7 +237,7 @@ module_exit(sha256_sparc64_mod_fini); | ||
325 | MODULE_LICENSE("GPL"); | ||
326 | MODULE_DESCRIPTION("SHA-224 and SHA-256 Secure Hash Algorithm, sparc64 sha256 opcode accelerated"); | ||
327 | |||
328 | -MODULE_ALIAS("sha224"); | ||
329 | -MODULE_ALIAS("sha256"); | ||
330 | +MODULE_ALIAS_CRYPTO("sha224"); | ||
331 | +MODULE_ALIAS_CRYPTO("sha256"); | ||
332 | |||
333 | #include "crop_devid.c" | ||
334 | diff --git a/arch/sparc/crypto/sha512_glue.c b/arch/sparc/crypto/sha512_glue.c | ||
335 | index f04d1994d19a..9fff88541b8c 100644 | ||
336 | --- a/arch/sparc/crypto/sha512_glue.c | ||
337 | +++ b/arch/sparc/crypto/sha512_glue.c | ||
338 | @@ -222,7 +222,7 @@ module_exit(sha512_sparc64_mod_fini); | ||
339 | MODULE_LICENSE("GPL"); | ||
340 | MODULE_DESCRIPTION("SHA-384 and SHA-512 Secure Hash Algorithm, sparc64 sha512 opcode accelerated"); | ||
341 | |||
342 | -MODULE_ALIAS("sha384"); | ||
343 | -MODULE_ALIAS("sha512"); | ||
344 | +MODULE_ALIAS_CRYPTO("sha384"); | ||
345 | +MODULE_ALIAS_CRYPTO("sha512"); | ||
346 | |||
347 | #include "crop_devid.c" | ||
348 | diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig | ||
349 | index 41a503c15862..3635fff7b32d 100644 | ||
350 | --- a/arch/x86/Kconfig | ||
351 | +++ b/arch/x86/Kconfig | ||
352 | @@ -856,7 +856,7 @@ source "kernel/Kconfig.preempt" | ||
353 | |||
354 | config X86_UP_APIC | ||
355 | bool "Local APIC support on uniprocessors" | ||
356 | - depends on X86_32 && !SMP && !X86_32_NON_STANDARD && !PCI_MSI | ||
357 | + depends on X86_32 && !SMP && !X86_32_NON_STANDARD | ||
358 | ---help--- | ||
359 | A local APIC (Advanced Programmable Interrupt Controller) is an | ||
360 | integrated interrupt controller in the CPU. If you have a single-CPU | ||
361 | @@ -867,6 +867,10 @@ config X86_UP_APIC | ||
362 | performance counters), and the NMI watchdog which detects hard | ||
363 | lockups. | ||
364 | |||
365 | +config X86_UP_APIC_MSI | ||
366 | + def_bool y | ||
367 | + select X86_UP_APIC if X86_32 && !SMP && !X86_32_NON_STANDARD && PCI_MSI | ||
368 | + | ||
369 | config X86_UP_IOAPIC | ||
370 | bool "IO-APIC support on uniprocessors" | ||
371 | depends on X86_UP_APIC | ||
372 | diff --git a/arch/x86/boot/compressed/misc.c b/arch/x86/boot/compressed/misc.c | ||
373 | index 30dd59a9f0b4..0c33a7c67ea5 100644 | ||
374 | --- a/arch/x86/boot/compressed/misc.c | ||
375 | +++ b/arch/x86/boot/compressed/misc.c | ||
376 | @@ -361,6 +361,8 @@ asmlinkage __visible void *decompress_kernel(void *rmode, memptr heap, | ||
377 | unsigned long output_len, | ||
378 | unsigned long run_size) | ||
379 | { | ||
380 | + unsigned char *output_orig = output; | ||
381 | + | ||
382 | real_mode = rmode; | ||
383 | |||
384 | sanitize_boot_params(real_mode); | ||
385 | @@ -409,7 +411,12 @@ asmlinkage __visible void *decompress_kernel(void *rmode, memptr heap, | ||
386 | debug_putstr("\nDecompressing Linux... "); | ||
387 | decompress(input_data, input_len, NULL, NULL, output, NULL, error); | ||
388 | parse_elf(output); | ||
389 | - handle_relocations(output, output_len); | ||
390 | + /* | ||
391 | + * 32-bit always performs relocations. 64-bit relocations are only | ||
392 | + * needed if kASLR has chosen a different load address. | ||
393 | + */ | ||
394 | + if (!IS_ENABLED(CONFIG_X86_64) || output != output_orig) | ||
395 | + handle_relocations(output, output_len); | ||
396 | debug_putstr("done.\nBooting the kernel.\n"); | ||
397 | return output; | ||
398 | } | ||
399 | diff --git a/arch/x86/crypto/aes_glue.c b/arch/x86/crypto/aes_glue.c | ||
400 | index aafe8ce0d65d..e26984f7ab8d 100644 | ||
401 | --- a/arch/x86/crypto/aes_glue.c | ||
402 | +++ b/arch/x86/crypto/aes_glue.c | ||
403 | @@ -66,5 +66,5 @@ module_exit(aes_fini); | ||
404 | |||
405 | MODULE_DESCRIPTION("Rijndael (AES) Cipher Algorithm, asm optimized"); | ||
406 | MODULE_LICENSE("GPL"); | ||
407 | -MODULE_ALIAS("aes"); | ||
408 | -MODULE_ALIAS("aes-asm"); | ||
409 | +MODULE_ALIAS_CRYPTO("aes"); | ||
410 | +MODULE_ALIAS_CRYPTO("aes-asm"); | ||
411 | diff --git a/arch/x86/crypto/aesni-intel_glue.c b/arch/x86/crypto/aesni-intel_glue.c | ||
412 | index 888950f29fd9..70fece226d17 100644 | ||
413 | --- a/arch/x86/crypto/aesni-intel_glue.c | ||
414 | +++ b/arch/x86/crypto/aesni-intel_glue.c | ||
415 | @@ -1550,4 +1550,4 @@ module_exit(aesni_exit); | ||
416 | |||
417 | MODULE_DESCRIPTION("Rijndael (AES) Cipher Algorithm, Intel AES-NI instructions optimized"); | ||
418 | MODULE_LICENSE("GPL"); | ||
419 | -MODULE_ALIAS("aes"); | ||
420 | +MODULE_ALIAS_CRYPTO("aes"); | ||
421 | diff --git a/arch/x86/crypto/blowfish_glue.c b/arch/x86/crypto/blowfish_glue.c | ||
422 | index 8af519ed73d1..17c05531dfd1 100644 | ||
423 | --- a/arch/x86/crypto/blowfish_glue.c | ||
424 | +++ b/arch/x86/crypto/blowfish_glue.c | ||
425 | @@ -478,5 +478,5 @@ module_exit(fini); | ||
426 | |||
427 | MODULE_LICENSE("GPL"); | ||
428 | MODULE_DESCRIPTION("Blowfish Cipher Algorithm, asm optimized"); | ||
429 | -MODULE_ALIAS("blowfish"); | ||
430 | -MODULE_ALIAS("blowfish-asm"); | ||
431 | +MODULE_ALIAS_CRYPTO("blowfish"); | ||
432 | +MODULE_ALIAS_CRYPTO("blowfish-asm"); | ||
433 | diff --git a/arch/x86/crypto/camellia_aesni_avx2_glue.c b/arch/x86/crypto/camellia_aesni_avx2_glue.c | ||
434 | index 4209a76fcdaa..9a07fafe3831 100644 | ||
435 | --- a/arch/x86/crypto/camellia_aesni_avx2_glue.c | ||
436 | +++ b/arch/x86/crypto/camellia_aesni_avx2_glue.c | ||
437 | @@ -582,5 +582,5 @@ module_exit(camellia_aesni_fini); | ||
438 | |||
439 | MODULE_LICENSE("GPL"); | ||
440 | MODULE_DESCRIPTION("Camellia Cipher Algorithm, AES-NI/AVX2 optimized"); | ||
441 | -MODULE_ALIAS("camellia"); | ||
442 | -MODULE_ALIAS("camellia-asm"); | ||
443 | +MODULE_ALIAS_CRYPTO("camellia"); | ||
444 | +MODULE_ALIAS_CRYPTO("camellia-asm"); | ||
445 | diff --git a/arch/x86/crypto/camellia_aesni_avx_glue.c b/arch/x86/crypto/camellia_aesni_avx_glue.c | ||
446 | index 87a041a10f4a..ed38d959add6 100644 | ||
447 | --- a/arch/x86/crypto/camellia_aesni_avx_glue.c | ||
448 | +++ b/arch/x86/crypto/camellia_aesni_avx_glue.c | ||
449 | @@ -574,5 +574,5 @@ module_exit(camellia_aesni_fini); | ||
450 | |||
451 | MODULE_LICENSE("GPL"); | ||
452 | MODULE_DESCRIPTION("Camellia Cipher Algorithm, AES-NI/AVX optimized"); | ||
453 | -MODULE_ALIAS("camellia"); | ||
454 | -MODULE_ALIAS("camellia-asm"); | ||
455 | +MODULE_ALIAS_CRYPTO("camellia"); | ||
456 | +MODULE_ALIAS_CRYPTO("camellia-asm"); | ||
457 | diff --git a/arch/x86/crypto/camellia_glue.c b/arch/x86/crypto/camellia_glue.c | ||
458 | index c171dcbf192d..5c8b6266a394 100644 | ||
459 | --- a/arch/x86/crypto/camellia_glue.c | ||
460 | +++ b/arch/x86/crypto/camellia_glue.c | ||
461 | @@ -1725,5 +1725,5 @@ module_exit(fini); | ||
462 | |||
463 | MODULE_LICENSE("GPL"); | ||
464 | MODULE_DESCRIPTION("Camellia Cipher Algorithm, asm optimized"); | ||
465 | -MODULE_ALIAS("camellia"); | ||
466 | -MODULE_ALIAS("camellia-asm"); | ||
467 | +MODULE_ALIAS_CRYPTO("camellia"); | ||
468 | +MODULE_ALIAS_CRYPTO("camellia-asm"); | ||
469 | diff --git a/arch/x86/crypto/cast5_avx_glue.c b/arch/x86/crypto/cast5_avx_glue.c | ||
470 | index e57e20ab5e0b..60ada677a928 100644 | ||
471 | --- a/arch/x86/crypto/cast5_avx_glue.c | ||
472 | +++ b/arch/x86/crypto/cast5_avx_glue.c | ||
473 | @@ -491,4 +491,4 @@ module_exit(cast5_exit); | ||
474 | |||
475 | MODULE_DESCRIPTION("Cast5 Cipher Algorithm, AVX optimized"); | ||
476 | MODULE_LICENSE("GPL"); | ||
477 | -MODULE_ALIAS("cast5"); | ||
478 | +MODULE_ALIAS_CRYPTO("cast5"); | ||
479 | diff --git a/arch/x86/crypto/cast6_avx_glue.c b/arch/x86/crypto/cast6_avx_glue.c | ||
480 | index 09f3677393e4..0160f68a57ff 100644 | ||
481 | --- a/arch/x86/crypto/cast6_avx_glue.c | ||
482 | +++ b/arch/x86/crypto/cast6_avx_glue.c | ||
483 | @@ -611,4 +611,4 @@ module_exit(cast6_exit); | ||
484 | |||
485 | MODULE_DESCRIPTION("Cast6 Cipher Algorithm, AVX optimized"); | ||
486 | MODULE_LICENSE("GPL"); | ||
487 | -MODULE_ALIAS("cast6"); | ||
488 | +MODULE_ALIAS_CRYPTO("cast6"); | ||
489 | diff --git a/arch/x86/crypto/crc32-pclmul_glue.c b/arch/x86/crypto/crc32-pclmul_glue.c | ||
490 | index 9d014a74ef96..1937fc1d8763 100644 | ||
491 | --- a/arch/x86/crypto/crc32-pclmul_glue.c | ||
492 | +++ b/arch/x86/crypto/crc32-pclmul_glue.c | ||
493 | @@ -197,5 +197,5 @@ module_exit(crc32_pclmul_mod_fini); | ||
494 | MODULE_AUTHOR("Alexander Boyko <alexander_boyko@xyratex.com>"); | ||
495 | MODULE_LICENSE("GPL"); | ||
496 | |||
497 | -MODULE_ALIAS("crc32"); | ||
498 | -MODULE_ALIAS("crc32-pclmul"); | ||
499 | +MODULE_ALIAS_CRYPTO("crc32"); | ||
500 | +MODULE_ALIAS_CRYPTO("crc32-pclmul"); | ||
501 | diff --git a/arch/x86/crypto/crc32c-intel_glue.c b/arch/x86/crypto/crc32c-intel_glue.c | ||
502 | index 6812ad98355c..28640c3d6af7 100644 | ||
503 | --- a/arch/x86/crypto/crc32c-intel_glue.c | ||
504 | +++ b/arch/x86/crypto/crc32c-intel_glue.c | ||
505 | @@ -280,5 +280,5 @@ MODULE_AUTHOR("Austin Zhang <austin.zhang@intel.com>, Kent Liu <kent.liu@intel.c | ||
506 | MODULE_DESCRIPTION("CRC32c (Castagnoli) optimization using Intel Hardware."); | ||
507 | MODULE_LICENSE("GPL"); | ||
508 | |||
509 | -MODULE_ALIAS("crc32c"); | ||
510 | -MODULE_ALIAS("crc32c-intel"); | ||
511 | +MODULE_ALIAS_CRYPTO("crc32c"); | ||
512 | +MODULE_ALIAS_CRYPTO("crc32c-intel"); | ||
513 | diff --git a/arch/x86/crypto/crct10dif-pclmul_glue.c b/arch/x86/crypto/crct10dif-pclmul_glue.c | ||
514 | index 7845d7fd54c0..b6c67bf30fdf 100644 | ||
515 | --- a/arch/x86/crypto/crct10dif-pclmul_glue.c | ||
516 | +++ b/arch/x86/crypto/crct10dif-pclmul_glue.c | ||
517 | @@ -147,5 +147,5 @@ MODULE_AUTHOR("Tim Chen <tim.c.chen@linux.intel.com>"); | ||
518 | MODULE_DESCRIPTION("T10 DIF CRC calculation accelerated with PCLMULQDQ."); | ||
519 | MODULE_LICENSE("GPL"); | ||
520 | |||
521 | -MODULE_ALIAS("crct10dif"); | ||
522 | -MODULE_ALIAS("crct10dif-pclmul"); | ||
523 | +MODULE_ALIAS_CRYPTO("crct10dif"); | ||
524 | +MODULE_ALIAS_CRYPTO("crct10dif-pclmul"); | ||
525 | diff --git a/arch/x86/crypto/des3_ede_glue.c b/arch/x86/crypto/des3_ede_glue.c | ||
526 | index 0e9c0668fe4e..38a14f818ef1 100644 | ||
527 | --- a/arch/x86/crypto/des3_ede_glue.c | ||
528 | +++ b/arch/x86/crypto/des3_ede_glue.c | ||
529 | @@ -502,8 +502,8 @@ module_exit(des3_ede_x86_fini); | ||
530 | |||
531 | MODULE_LICENSE("GPL"); | ||
532 | MODULE_DESCRIPTION("Triple DES EDE Cipher Algorithm, asm optimized"); | ||
533 | -MODULE_ALIAS("des3_ede"); | ||
534 | -MODULE_ALIAS("des3_ede-asm"); | ||
535 | -MODULE_ALIAS("des"); | ||
536 | -MODULE_ALIAS("des-asm"); | ||
537 | +MODULE_ALIAS_CRYPTO("des3_ede"); | ||
538 | +MODULE_ALIAS_CRYPTO("des3_ede-asm"); | ||
539 | +MODULE_ALIAS_CRYPTO("des"); | ||
540 | +MODULE_ALIAS_CRYPTO("des-asm"); | ||
541 | MODULE_AUTHOR("Jussi Kivilinna <jussi.kivilinna@iki.fi>"); | ||
542 | diff --git a/arch/x86/crypto/fpu.c b/arch/x86/crypto/fpu.c | ||
543 | index 98d7a188f46b..f368ba261739 100644 | ||
544 | --- a/arch/x86/crypto/fpu.c | ||
545 | +++ b/arch/x86/crypto/fpu.c | ||
546 | @@ -17,6 +17,7 @@ | ||
547 | #include <linux/kernel.h> | ||
548 | #include <linux/module.h> | ||
549 | #include <linux/slab.h> | ||
550 | +#include <linux/crypto.h> | ||
551 | #include <asm/i387.h> | ||
552 | |||
553 | struct crypto_fpu_ctx { | ||
554 | @@ -159,3 +160,5 @@ void __exit crypto_fpu_exit(void) | ||
555 | { | ||
556 | crypto_unregister_template(&crypto_fpu_tmpl); | ||
557 | } | ||
558 | + | ||
559 | +MODULE_ALIAS_CRYPTO("fpu"); | ||
560 | diff --git a/arch/x86/crypto/ghash-clmulni-intel_glue.c b/arch/x86/crypto/ghash-clmulni-intel_glue.c | ||
561 | index 88bb7ba8b175..8253d85aa165 100644 | ||
562 | --- a/arch/x86/crypto/ghash-clmulni-intel_glue.c | ||
563 | +++ b/arch/x86/crypto/ghash-clmulni-intel_glue.c | ||
564 | @@ -341,4 +341,4 @@ module_exit(ghash_pclmulqdqni_mod_exit); | ||
565 | MODULE_LICENSE("GPL"); | ||
566 | MODULE_DESCRIPTION("GHASH Message Digest Algorithm, " | ||
567 | "acclerated by PCLMULQDQ-NI"); | ||
568 | -MODULE_ALIAS("ghash"); | ||
569 | +MODULE_ALIAS_CRYPTO("ghash"); | ||
570 | diff --git a/arch/x86/crypto/salsa20_glue.c b/arch/x86/crypto/salsa20_glue.c | ||
571 | index 5e8e67739bb5..399a29d067d6 100644 | ||
572 | --- a/arch/x86/crypto/salsa20_glue.c | ||
573 | +++ b/arch/x86/crypto/salsa20_glue.c | ||
574 | @@ -119,5 +119,5 @@ module_exit(fini); | ||
575 | |||
576 | MODULE_LICENSE("GPL"); | ||
577 | MODULE_DESCRIPTION ("Salsa20 stream cipher algorithm (optimized assembly version)"); | ||
578 | -MODULE_ALIAS("salsa20"); | ||
579 | -MODULE_ALIAS("salsa20-asm"); | ||
580 | +MODULE_ALIAS_CRYPTO("salsa20"); | ||
581 | +MODULE_ALIAS_CRYPTO("salsa20-asm"); | ||
582 | diff --git a/arch/x86/crypto/serpent_avx2_glue.c b/arch/x86/crypto/serpent_avx2_glue.c | ||
583 | index 2fae489b1524..437e47a4d302 100644 | ||
584 | --- a/arch/x86/crypto/serpent_avx2_glue.c | ||
585 | +++ b/arch/x86/crypto/serpent_avx2_glue.c | ||
586 | @@ -558,5 +558,5 @@ module_exit(fini); | ||
587 | |||
588 | MODULE_LICENSE("GPL"); | ||
589 | MODULE_DESCRIPTION("Serpent Cipher Algorithm, AVX2 optimized"); | ||
590 | -MODULE_ALIAS("serpent"); | ||
591 | -MODULE_ALIAS("serpent-asm"); | ||
592 | +MODULE_ALIAS_CRYPTO("serpent"); | ||
593 | +MODULE_ALIAS_CRYPTO("serpent-asm"); | ||
594 | diff --git a/arch/x86/crypto/serpent_avx_glue.c b/arch/x86/crypto/serpent_avx_glue.c | ||
595 | index ff4870870972..7e217398b4eb 100644 | ||
596 | --- a/arch/x86/crypto/serpent_avx_glue.c | ||
597 | +++ b/arch/x86/crypto/serpent_avx_glue.c | ||
598 | @@ -617,4 +617,4 @@ module_exit(serpent_exit); | ||
599 | |||
600 | MODULE_DESCRIPTION("Serpent Cipher Algorithm, AVX optimized"); | ||
601 | MODULE_LICENSE("GPL"); | ||
602 | -MODULE_ALIAS("serpent"); | ||
603 | +MODULE_ALIAS_CRYPTO("serpent"); | ||
604 | diff --git a/arch/x86/crypto/serpent_sse2_glue.c b/arch/x86/crypto/serpent_sse2_glue.c | ||
605 | index 8c95f8637306..bf025adaea01 100644 | ||
606 | --- a/arch/x86/crypto/serpent_sse2_glue.c | ||
607 | +++ b/arch/x86/crypto/serpent_sse2_glue.c | ||
608 | @@ -618,4 +618,4 @@ module_exit(serpent_sse2_exit); | ||
609 | |||
610 | MODULE_DESCRIPTION("Serpent Cipher Algorithm, SSE2 optimized"); | ||
611 | MODULE_LICENSE("GPL"); | ||
612 | -MODULE_ALIAS("serpent"); | ||
613 | +MODULE_ALIAS_CRYPTO("serpent"); | ||
614 | diff --git a/arch/x86/crypto/sha-mb/sha1_mb.c b/arch/x86/crypto/sha-mb/sha1_mb.c | ||
615 | index 99eefd812958..d42c9b7fadcf 100644 | ||
616 | --- a/arch/x86/crypto/sha-mb/sha1_mb.c | ||
617 | +++ b/arch/x86/crypto/sha-mb/sha1_mb.c | ||
618 | @@ -932,4 +932,4 @@ module_exit(sha1_mb_mod_fini); | ||
619 | MODULE_LICENSE("GPL"); | ||
620 | MODULE_DESCRIPTION("SHA1 Secure Hash Algorithm, multi buffer accelerated"); | ||
621 | |||
622 | -MODULE_ALIAS("sha1"); | ||
623 | +MODULE_ALIAS_CRYPTO("sha1"); | ||
624 | diff --git a/arch/x86/crypto/sha1_ssse3_glue.c b/arch/x86/crypto/sha1_ssse3_glue.c | ||
625 | index 74d16ef707c7..6c20fe04a738 100644 | ||
626 | --- a/arch/x86/crypto/sha1_ssse3_glue.c | ||
627 | +++ b/arch/x86/crypto/sha1_ssse3_glue.c | ||
628 | @@ -278,4 +278,4 @@ module_exit(sha1_ssse3_mod_fini); | ||
629 | MODULE_LICENSE("GPL"); | ||
630 | MODULE_DESCRIPTION("SHA1 Secure Hash Algorithm, Supplemental SSE3 accelerated"); | ||
631 | |||
632 | -MODULE_ALIAS("sha1"); | ||
633 | +MODULE_ALIAS_CRYPTO("sha1"); | ||
634 | diff --git a/arch/x86/crypto/sha256_ssse3_glue.c b/arch/x86/crypto/sha256_ssse3_glue.c | ||
635 | index f248546da1ca..4dc100d82902 100644 | ||
636 | --- a/arch/x86/crypto/sha256_ssse3_glue.c | ||
637 | +++ b/arch/x86/crypto/sha256_ssse3_glue.c | ||
638 | @@ -318,5 +318,5 @@ module_exit(sha256_ssse3_mod_fini); | ||
639 | MODULE_LICENSE("GPL"); | ||
640 | MODULE_DESCRIPTION("SHA256 Secure Hash Algorithm, Supplemental SSE3 accelerated"); | ||
641 | |||
642 | -MODULE_ALIAS("sha256"); | ||
643 | -MODULE_ALIAS("sha224"); | ||
644 | +MODULE_ALIAS_CRYPTO("sha256"); | ||
645 | +MODULE_ALIAS_CRYPTO("sha224"); | ||
646 | diff --git a/arch/x86/crypto/sha512_ssse3_glue.c b/arch/x86/crypto/sha512_ssse3_glue.c | ||
647 | index 8626b03e83b7..26a5898a6f26 100644 | ||
648 | --- a/arch/x86/crypto/sha512_ssse3_glue.c | ||
649 | +++ b/arch/x86/crypto/sha512_ssse3_glue.c | ||
650 | @@ -326,5 +326,5 @@ module_exit(sha512_ssse3_mod_fini); | ||
651 | MODULE_LICENSE("GPL"); | ||
652 | MODULE_DESCRIPTION("SHA512 Secure Hash Algorithm, Supplemental SSE3 accelerated"); | ||
653 | |||
654 | -MODULE_ALIAS("sha512"); | ||
655 | -MODULE_ALIAS("sha384"); | ||
656 | +MODULE_ALIAS_CRYPTO("sha512"); | ||
657 | +MODULE_ALIAS_CRYPTO("sha384"); | ||
658 | diff --git a/arch/x86/crypto/twofish_avx_glue.c b/arch/x86/crypto/twofish_avx_glue.c | ||
659 | index 4e3c665be129..1ac531ea9bcc 100644 | ||
660 | --- a/arch/x86/crypto/twofish_avx_glue.c | ||
661 | +++ b/arch/x86/crypto/twofish_avx_glue.c | ||
662 | @@ -579,4 +579,4 @@ module_exit(twofish_exit); | ||
663 | |||
664 | MODULE_DESCRIPTION("Twofish Cipher Algorithm, AVX optimized"); | ||
665 | MODULE_LICENSE("GPL"); | ||
666 | -MODULE_ALIAS("twofish"); | ||
667 | +MODULE_ALIAS_CRYPTO("twofish"); | ||
668 | diff --git a/arch/x86/crypto/twofish_glue.c b/arch/x86/crypto/twofish_glue.c | ||
669 | index 0a5202303501..77e06c2da83d 100644 | ||
670 | --- a/arch/x86/crypto/twofish_glue.c | ||
671 | +++ b/arch/x86/crypto/twofish_glue.c | ||
672 | @@ -96,5 +96,5 @@ module_exit(fini); | ||
673 | |||
674 | MODULE_LICENSE("GPL"); | ||
675 | MODULE_DESCRIPTION ("Twofish Cipher Algorithm, asm optimized"); | ||
676 | -MODULE_ALIAS("twofish"); | ||
677 | -MODULE_ALIAS("twofish-asm"); | ||
678 | +MODULE_ALIAS_CRYPTO("twofish"); | ||
679 | +MODULE_ALIAS_CRYPTO("twofish-asm"); | ||
680 | diff --git a/arch/x86/crypto/twofish_glue_3way.c b/arch/x86/crypto/twofish_glue_3way.c | ||
681 | index 13e63b3e1dfb..56d8a08ee479 100644 | ||
682 | --- a/arch/x86/crypto/twofish_glue_3way.c | ||
683 | +++ b/arch/x86/crypto/twofish_glue_3way.c | ||
684 | @@ -495,5 +495,5 @@ module_exit(fini); | ||
685 | |||
686 | MODULE_LICENSE("GPL"); | ||
687 | MODULE_DESCRIPTION("Twofish Cipher Algorithm, 3-way parallel asm optimized"); | ||
688 | -MODULE_ALIAS("twofish"); | ||
689 | -MODULE_ALIAS("twofish-asm"); | ||
690 | +MODULE_ALIAS_CRYPTO("twofish"); | ||
691 | +MODULE_ALIAS_CRYPTO("twofish-asm"); | ||
692 | diff --git a/arch/x86/include/asm/desc.h b/arch/x86/include/asm/desc.h | ||
693 | index 50d033a8947d..a94b82e8f156 100644 | ||
694 | --- a/arch/x86/include/asm/desc.h | ||
695 | +++ b/arch/x86/include/asm/desc.h | ||
696 | @@ -251,7 +251,8 @@ static inline void native_load_tls(struct thread_struct *t, unsigned int cpu) | ||
697 | gdt[GDT_ENTRY_TLS_MIN + i] = t->tls_array[i]; | ||
698 | } | ||
699 | |||
700 | -#define _LDT_empty(info) \ | ||
701 | +/* This intentionally ignores lm, since 32-bit apps don't have that field. */ | ||
702 | +#define LDT_empty(info) \ | ||
703 | ((info)->base_addr == 0 && \ | ||
704 | (info)->limit == 0 && \ | ||
705 | (info)->contents == 0 && \ | ||
706 | @@ -261,11 +262,18 @@ static inline void native_load_tls(struct thread_struct *t, unsigned int cpu) | ||
707 | (info)->seg_not_present == 1 && \ | ||
708 | (info)->useable == 0) | ||
709 | |||
710 | -#ifdef CONFIG_X86_64 | ||
711 | -#define LDT_empty(info) (_LDT_empty(info) && ((info)->lm == 0)) | ||
712 | -#else | ||
713 | -#define LDT_empty(info) (_LDT_empty(info)) | ||
714 | -#endif | ||
715 | +/* Lots of programs expect an all-zero user_desc to mean "no segment at all". */ | ||
716 | +static inline bool LDT_zero(const struct user_desc *info) | ||
717 | +{ | ||
718 | + return (info->base_addr == 0 && | ||
719 | + info->limit == 0 && | ||
720 | + info->contents == 0 && | ||
721 | + info->read_exec_only == 0 && | ||
722 | + info->seg_32bit == 0 && | ||
723 | + info->limit_in_pages == 0 && | ||
724 | + info->seg_not_present == 0 && | ||
725 | + info->useable == 0); | ||
726 | +} | ||
727 | |||
728 | static inline void clear_LDT(void) | ||
729 | { | ||
730 | diff --git a/arch/x86/kernel/cpu/mshyperv.c b/arch/x86/kernel/cpu/mshyperv.c | ||
731 | index a450373e8e91..939155ffdece 100644 | ||
732 | --- a/arch/x86/kernel/cpu/mshyperv.c | ||
733 | +++ b/arch/x86/kernel/cpu/mshyperv.c | ||
734 | @@ -107,6 +107,7 @@ static struct clocksource hyperv_cs = { | ||
735 | .rating = 400, /* use this when running on Hyperv*/ | ||
736 | .read = read_hv_clock, | ||
737 | .mask = CLOCKSOURCE_MASK(64), | ||
738 | + .flags = CLOCK_SOURCE_IS_CONTINUOUS, | ||
739 | }; | ||
740 | |||
741 | static void __init ms_hyperv_init_platform(void) | ||
742 | diff --git a/arch/x86/kernel/irq.c b/arch/x86/kernel/irq.c | ||
743 | index 922d28581024..37907756fc41 100644 | ||
744 | --- a/arch/x86/kernel/irq.c | ||
745 | +++ b/arch/x86/kernel/irq.c | ||
746 | @@ -127,7 +127,7 @@ int arch_show_interrupts(struct seq_file *p, int prec) | ||
747 | seq_printf(p, " Machine check polls\n"); | ||
748 | #endif | ||
749 | #if IS_ENABLED(CONFIG_HYPERV) || defined(CONFIG_XEN) | ||
750 | - seq_printf(p, "%*s: ", prec, "THR"); | ||
751 | + seq_printf(p, "%*s: ", prec, "HYP"); | ||
752 | for_each_online_cpu(j) | ||
753 | seq_printf(p, "%10u ", irq_stats(j)->irq_hv_callback_count); | ||
754 | seq_printf(p, " Hypervisor callback interrupts\n"); | ||
755 | diff --git a/arch/x86/kernel/tls.c b/arch/x86/kernel/tls.c | ||
756 | index 4e942f31b1a7..7fc5e843f247 100644 | ||
757 | --- a/arch/x86/kernel/tls.c | ||
758 | +++ b/arch/x86/kernel/tls.c | ||
759 | @@ -29,7 +29,28 @@ static int get_free_idx(void) | ||
760 | |||
761 | static bool tls_desc_okay(const struct user_desc *info) | ||
762 | { | ||
763 | - if (LDT_empty(info)) | ||
764 | + /* | ||
765 | + * For historical reasons (i.e. no one ever documented how any | ||
766 | + * of the segmentation APIs work), user programs can and do | ||
767 | + * assume that a struct user_desc that's all zeros except for | ||
768 | + * entry_number means "no segment at all". This never actually | ||
769 | + * worked. In fact, up to Linux 3.19, a struct user_desc like | ||
770 | + * this would create a 16-bit read-write segment with base and | ||
771 | + * limit both equal to zero. | ||
772 | + * | ||
773 | + * That was close enough to "no segment at all" until we | ||
774 | + * hardened this function to disallow 16-bit TLS segments. Fix | ||
775 | + * it up by interpreting these zeroed segments the way that they | ||
776 | + * were almost certainly intended to be interpreted. | ||
777 | + * | ||
778 | + * The correct way to ask for "no segment at all" is to specify | ||
779 | + * a user_desc that satisfies LDT_empty. To keep everything | ||
780 | + * working, we accept both. | ||
781 | + * | ||
782 | + * Note that there's a similar kludge in modify_ldt -- look at | ||
783 | + * the distinction between modes 1 and 0x11. | ||
784 | + */ | ||
785 | + if (LDT_empty(info) || LDT_zero(info)) | ||
786 | return true; | ||
787 | |||
788 | /* | ||
789 | @@ -71,7 +92,7 @@ static void set_tls_desc(struct task_struct *p, int idx, | ||
790 | cpu = get_cpu(); | ||
791 | |||
792 | while (n-- > 0) { | ||
793 | - if (LDT_empty(info)) | ||
794 | + if (LDT_empty(info) || LDT_zero(info)) | ||
795 | desc->a = desc->b = 0; | ||
796 | else | ||
797 | fill_ldt(desc, info); | ||
798 | diff --git a/arch/x86/kernel/tsc.c b/arch/x86/kernel/tsc.c | ||
799 | index b7e50bba3bbb..505449700e0c 100644 | ||
800 | --- a/arch/x86/kernel/tsc.c | ||
801 | +++ b/arch/x86/kernel/tsc.c | ||
802 | @@ -617,7 +617,7 @@ static unsigned long quick_pit_calibrate(void) | ||
803 | goto success; | ||
804 | } | ||
805 | } | ||
806 | - pr_err("Fast TSC calibration failed\n"); | ||
807 | + pr_info("Fast TSC calibration failed\n"); | ||
808 | return 0; | ||
809 | |||
810 | success: | ||
811 | diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c | ||
812 | index 22e7ed9e6d8e..c7327a7761ca 100644 | ||
813 | --- a/arch/x86/kvm/emulate.c | ||
814 | +++ b/arch/x86/kvm/emulate.c | ||
815 | @@ -2345,7 +2345,7 @@ static int em_sysenter(struct x86_emulate_ctxt *ctxt) | ||
816 | * Not recognized on AMD in compat mode (but is recognized in legacy | ||
817 | * mode). | ||
818 | */ | ||
819 | - if ((ctxt->mode == X86EMUL_MODE_PROT32) && (efer & EFER_LMA) | ||
820 | + if ((ctxt->mode != X86EMUL_MODE_PROT64) && (efer & EFER_LMA) | ||
821 | && !vendor_intel(ctxt)) | ||
822 | return emulate_ud(ctxt); | ||
823 | |||
824 | @@ -2358,25 +2358,13 @@ static int em_sysenter(struct x86_emulate_ctxt *ctxt) | ||
825 | setup_syscalls_segments(ctxt, &cs, &ss); | ||
826 | |||
827 | ops->get_msr(ctxt, MSR_IA32_SYSENTER_CS, &msr_data); | ||
828 | - switch (ctxt->mode) { | ||
829 | - case X86EMUL_MODE_PROT32: | ||
830 | - if ((msr_data & 0xfffc) == 0x0) | ||
831 | - return emulate_gp(ctxt, 0); | ||
832 | - break; | ||
833 | - case X86EMUL_MODE_PROT64: | ||
834 | - if (msr_data == 0x0) | ||
835 | - return emulate_gp(ctxt, 0); | ||
836 | - break; | ||
837 | - default: | ||
838 | - break; | ||
839 | - } | ||
840 | + if ((msr_data & 0xfffc) == 0x0) | ||
841 | + return emulate_gp(ctxt, 0); | ||
842 | |||
843 | ctxt->eflags &= ~(EFLG_VM | EFLG_IF); | ||
844 | - cs_sel = (u16)msr_data; | ||
845 | - cs_sel &= ~SELECTOR_RPL_MASK; | ||
846 | + cs_sel = (u16)msr_data & ~SELECTOR_RPL_MASK; | ||
847 | ss_sel = cs_sel + 8; | ||
848 | - ss_sel &= ~SELECTOR_RPL_MASK; | ||
849 | - if (ctxt->mode == X86EMUL_MODE_PROT64 || (efer & EFER_LMA)) { | ||
850 | + if (efer & EFER_LMA) { | ||
851 | cs.d = 0; | ||
852 | cs.l = 1; | ||
853 | } | ||
854 | @@ -2385,10 +2373,11 @@ static int em_sysenter(struct x86_emulate_ctxt *ctxt) | ||
855 | ops->set_segment(ctxt, ss_sel, &ss, 0, VCPU_SREG_SS); | ||
856 | |||
857 | ops->get_msr(ctxt, MSR_IA32_SYSENTER_EIP, &msr_data); | ||
858 | - ctxt->_eip = msr_data; | ||
859 | + ctxt->_eip = (efer & EFER_LMA) ? msr_data : (u32)msr_data; | ||
860 | |||
861 | ops->get_msr(ctxt, MSR_IA32_SYSENTER_ESP, &msr_data); | ||
862 | - *reg_write(ctxt, VCPU_REGS_RSP) = msr_data; | ||
863 | + *reg_write(ctxt, VCPU_REGS_RSP) = (efer & EFER_LMA) ? msr_data : | ||
864 | + (u32)msr_data; | ||
865 | |||
866 | return X86EMUL_CONTINUE; | ||
867 | } | ||
868 | @@ -3788,8 +3777,8 @@ static const struct opcode group5[] = { | ||
869 | }; | ||
870 | |||
871 | static const struct opcode group6[] = { | ||
872 | - DI(Prot, sldt), | ||
873 | - DI(Prot, str), | ||
874 | + DI(Prot | DstMem, sldt), | ||
875 | + DI(Prot | DstMem, str), | ||
876 | II(Prot | Priv | SrcMem16, em_lldt, lldt), | ||
877 | II(Prot | Priv | SrcMem16, em_ltr, ltr), | ||
878 | N, N, N, N, | ||
879 | diff --git a/arch/x86/pci/i386.c b/arch/x86/pci/i386.c | ||
880 | index 37c1435889ce..d0583eb61a5d 100644 | ||
881 | --- a/arch/x86/pci/i386.c | ||
882 | +++ b/arch/x86/pci/i386.c | ||
883 | @@ -216,7 +216,7 @@ static void pcibios_allocate_bridge_resources(struct pci_dev *dev) | ||
884 | continue; | ||
885 | if (r->parent) /* Already allocated */ | ||
886 | continue; | ||
887 | - if (!r->start || pci_claim_resource(dev, idx) < 0) { | ||
888 | + if (!r->start || pci_claim_bridge_resource(dev, idx) < 0) { | ||
889 | /* | ||
890 | * Something is wrong with the region. | ||
891 | * Invalidate the resource to prevent | ||
892 | diff --git a/crypto/842.c b/crypto/842.c | ||
893 | index 65c7a89cfa09..b48f4f108c47 100644 | ||
894 | --- a/crypto/842.c | ||
895 | +++ b/crypto/842.c | ||
896 | @@ -180,3 +180,4 @@ module_exit(nx842_mod_exit); | ||
897 | |||
898 | MODULE_LICENSE("GPL"); | ||
899 | MODULE_DESCRIPTION("842 Compression Algorithm"); | ||
900 | +MODULE_ALIAS_CRYPTO("842"); | ||
901 | diff --git a/crypto/aes_generic.c b/crypto/aes_generic.c | ||
902 | index fd0d6b454975..3dd101144a58 100644 | ||
903 | --- a/crypto/aes_generic.c | ||
904 | +++ b/crypto/aes_generic.c | ||
905 | @@ -1474,4 +1474,5 @@ module_exit(aes_fini); | ||
906 | |||
907 | MODULE_DESCRIPTION("Rijndael (AES) Cipher Algorithm"); | ||
908 | MODULE_LICENSE("Dual BSD/GPL"); | ||
909 | -MODULE_ALIAS("aes"); | ||
910 | +MODULE_ALIAS_CRYPTO("aes"); | ||
911 | +MODULE_ALIAS_CRYPTO("aes-generic"); | ||
912 | diff --git a/crypto/algapi.c b/crypto/algapi.c | ||
913 | index e8d3a7dca8c4..71a8143e23b1 100644 | ||
914 | --- a/crypto/algapi.c | ||
915 | +++ b/crypto/algapi.c | ||
916 | @@ -509,8 +509,8 @@ static struct crypto_template *__crypto_lookup_template(const char *name) | ||
917 | |||
918 | struct crypto_template *crypto_lookup_template(const char *name) | ||
919 | { | ||
920 | - return try_then_request_module(__crypto_lookup_template(name), "%s", | ||
921 | - name); | ||
922 | + return try_then_request_module(__crypto_lookup_template(name), | ||
923 | + "crypto-%s", name); | ||
924 | } | ||
925 | EXPORT_SYMBOL_GPL(crypto_lookup_template); | ||
926 | |||
927 | diff --git a/crypto/ansi_cprng.c b/crypto/ansi_cprng.c | ||
928 | index 666f1962a160..6f5bebc9bf01 100644 | ||
929 | --- a/crypto/ansi_cprng.c | ||
930 | +++ b/crypto/ansi_cprng.c | ||
931 | @@ -476,4 +476,5 @@ module_param(dbg, int, 0); | ||
932 | MODULE_PARM_DESC(dbg, "Boolean to enable debugging (0/1 == off/on)"); | ||
933 | module_init(prng_mod_init); | ||
934 | module_exit(prng_mod_fini); | ||
935 | -MODULE_ALIAS("stdrng"); | ||
936 | +MODULE_ALIAS_CRYPTO("stdrng"); | ||
937 | +MODULE_ALIAS_CRYPTO("ansi_cprng"); | ||
938 | diff --git a/crypto/anubis.c b/crypto/anubis.c | ||
939 | index 008c8a4fb67c..4bb187c2a902 100644 | ||
940 | --- a/crypto/anubis.c | ||
941 | +++ b/crypto/anubis.c | ||
942 | @@ -704,3 +704,4 @@ module_exit(anubis_mod_fini); | ||
943 | |||
944 | MODULE_LICENSE("GPL"); | ||
945 | MODULE_DESCRIPTION("Anubis Cryptographic Algorithm"); | ||
946 | +MODULE_ALIAS_CRYPTO("anubis"); | ||
947 | diff --git a/crypto/api.c b/crypto/api.c | ||
948 | index a2b39c5f3649..2a81e98a0021 100644 | ||
949 | --- a/crypto/api.c | ||
950 | +++ b/crypto/api.c | ||
951 | @@ -216,11 +216,11 @@ struct crypto_alg *crypto_larval_lookup(const char *name, u32 type, u32 mask) | ||
952 | |||
953 | alg = crypto_alg_lookup(name, type, mask); | ||
954 | if (!alg) { | ||
955 | - request_module("%s", name); | ||
956 | + request_module("crypto-%s", name); | ||
957 | |||
958 | if (!((type ^ CRYPTO_ALG_NEED_FALLBACK) & mask & | ||
959 | CRYPTO_ALG_NEED_FALLBACK)) | ||
960 | - request_module("%s-all", name); | ||
961 | + request_module("crypto-%s-all", name); | ||
962 | |||
963 | alg = crypto_alg_lookup(name, type, mask); | ||
964 | } | ||
965 | diff --git a/crypto/arc4.c b/crypto/arc4.c | ||
966 | index 5a772c3657d5..f1a81925558f 100644 | ||
967 | --- a/crypto/arc4.c | ||
968 | +++ b/crypto/arc4.c | ||
969 | @@ -166,3 +166,4 @@ module_exit(arc4_exit); | ||
970 | MODULE_LICENSE("GPL"); | ||
971 | MODULE_DESCRIPTION("ARC4 Cipher Algorithm"); | ||
972 | MODULE_AUTHOR("Jon Oberheide <jon@oberheide.org>"); | ||
973 | +MODULE_ALIAS_CRYPTO("arc4"); | ||
974 | diff --git a/crypto/authenc.c b/crypto/authenc.c | ||
975 | index e1223559d5df..78fb16cab13f 100644 | ||
976 | --- a/crypto/authenc.c | ||
977 | +++ b/crypto/authenc.c | ||
978 | @@ -721,3 +721,4 @@ module_exit(crypto_authenc_module_exit); | ||
979 | |||
980 | MODULE_LICENSE("GPL"); | ||
981 | MODULE_DESCRIPTION("Simple AEAD wrapper for IPsec"); | ||
982 | +MODULE_ALIAS_CRYPTO("authenc"); | ||
983 | diff --git a/crypto/authencesn.c b/crypto/authencesn.c | ||
984 | index 4be0dd4373a9..024bff2344fc 100644 | ||
985 | --- a/crypto/authencesn.c | ||
986 | +++ b/crypto/authencesn.c | ||
987 | @@ -814,3 +814,4 @@ module_exit(crypto_authenc_esn_module_exit); | ||
988 | MODULE_LICENSE("GPL"); | ||
989 | MODULE_AUTHOR("Steffen Klassert <steffen.klassert@secunet.com>"); | ||
990 | MODULE_DESCRIPTION("AEAD wrapper for IPsec with extended sequence numbers"); | ||
991 | +MODULE_ALIAS_CRYPTO("authencesn"); | ||
992 | diff --git a/crypto/blowfish_generic.c b/crypto/blowfish_generic.c | ||
993 | index 8baf5447d35b..87b392a77a93 100644 | ||
994 | --- a/crypto/blowfish_generic.c | ||
995 | +++ b/crypto/blowfish_generic.c | ||
996 | @@ -138,4 +138,5 @@ module_exit(blowfish_mod_fini); | ||
997 | |||
998 | MODULE_LICENSE("GPL"); | ||
999 | MODULE_DESCRIPTION("Blowfish Cipher Algorithm"); | ||
1000 | -MODULE_ALIAS("blowfish"); | ||
1001 | +MODULE_ALIAS_CRYPTO("blowfish"); | ||
1002 | +MODULE_ALIAS_CRYPTO("blowfish-generic"); | ||
1003 | diff --git a/crypto/camellia_generic.c b/crypto/camellia_generic.c | ||
1004 | index 26bcd7a2d6b4..a02286bf319e 100644 | ||
1005 | --- a/crypto/camellia_generic.c | ||
1006 | +++ b/crypto/camellia_generic.c | ||
1007 | @@ -1098,4 +1098,5 @@ module_exit(camellia_fini); | ||
1008 | |||
1009 | MODULE_DESCRIPTION("Camellia Cipher Algorithm"); | ||
1010 | MODULE_LICENSE("GPL"); | ||
1011 | -MODULE_ALIAS("camellia"); | ||
1012 | +MODULE_ALIAS_CRYPTO("camellia"); | ||
1013 | +MODULE_ALIAS_CRYPTO("camellia-generic"); | ||
1014 | diff --git a/crypto/cast5_generic.c b/crypto/cast5_generic.c | ||
1015 | index 5558f630a0eb..df5c72629383 100644 | ||
1016 | --- a/crypto/cast5_generic.c | ||
1017 | +++ b/crypto/cast5_generic.c | ||
1018 | @@ -549,4 +549,5 @@ module_exit(cast5_mod_fini); | ||
1019 | |||
1020 | MODULE_LICENSE("GPL"); | ||
1021 | MODULE_DESCRIPTION("Cast5 Cipher Algorithm"); | ||
1022 | -MODULE_ALIAS("cast5"); | ||
1023 | +MODULE_ALIAS_CRYPTO("cast5"); | ||
1024 | +MODULE_ALIAS_CRYPTO("cast5-generic"); | ||
1025 | diff --git a/crypto/cast6_generic.c b/crypto/cast6_generic.c | ||
1026 | index de732528a430..058c8d755d03 100644 | ||
1027 | --- a/crypto/cast6_generic.c | ||
1028 | +++ b/crypto/cast6_generic.c | ||
1029 | @@ -291,4 +291,5 @@ module_exit(cast6_mod_fini); | ||
1030 | |||
1031 | MODULE_LICENSE("GPL"); | ||
1032 | MODULE_DESCRIPTION("Cast6 Cipher Algorithm"); | ||
1033 | -MODULE_ALIAS("cast6"); | ||
1034 | +MODULE_ALIAS_CRYPTO("cast6"); | ||
1035 | +MODULE_ALIAS_CRYPTO("cast6-generic"); | ||
1036 | diff --git a/crypto/cbc.c b/crypto/cbc.c | ||
1037 | index 61ac42e1e32b..780ee27b2d43 100644 | ||
1038 | --- a/crypto/cbc.c | ||
1039 | +++ b/crypto/cbc.c | ||
1040 | @@ -289,3 +289,4 @@ module_exit(crypto_cbc_module_exit); | ||
1041 | |||
1042 | MODULE_LICENSE("GPL"); | ||
1043 | MODULE_DESCRIPTION("CBC block cipher algorithm"); | ||
1044 | +MODULE_ALIAS_CRYPTO("cbc"); | ||
1045 | diff --git a/crypto/ccm.c b/crypto/ccm.c | ||
1046 | index 1df84217f7c9..003bbbd21a2b 100644 | ||
1047 | --- a/crypto/ccm.c | ||
1048 | +++ b/crypto/ccm.c | ||
1049 | @@ -879,5 +879,6 @@ module_exit(crypto_ccm_module_exit); | ||
1050 | |||
1051 | MODULE_LICENSE("GPL"); | ||
1052 | MODULE_DESCRIPTION("Counter with CBC MAC"); | ||
1053 | -MODULE_ALIAS("ccm_base"); | ||
1054 | -MODULE_ALIAS("rfc4309"); | ||
1055 | +MODULE_ALIAS_CRYPTO("ccm_base"); | ||
1056 | +MODULE_ALIAS_CRYPTO("rfc4309"); | ||
1057 | +MODULE_ALIAS_CRYPTO("ccm"); | ||
1058 | diff --git a/crypto/chainiv.c b/crypto/chainiv.c | ||
1059 | index 9c294c8f9a07..63c17d5992f7 100644 | ||
1060 | --- a/crypto/chainiv.c | ||
1061 | +++ b/crypto/chainiv.c | ||
1062 | @@ -359,3 +359,4 @@ module_exit(chainiv_module_exit); | ||
1063 | |||
1064 | MODULE_LICENSE("GPL"); | ||
1065 | MODULE_DESCRIPTION("Chain IV Generator"); | ||
1066 | +MODULE_ALIAS_CRYPTO("chainiv"); | ||
1067 | diff --git a/crypto/cmac.c b/crypto/cmac.c | ||
1068 | index 50880cf17fad..7a8bfbd548f6 100644 | ||
1069 | --- a/crypto/cmac.c | ||
1070 | +++ b/crypto/cmac.c | ||
1071 | @@ -313,3 +313,4 @@ module_exit(crypto_cmac_module_exit); | ||
1072 | |||
1073 | MODULE_LICENSE("GPL"); | ||
1074 | MODULE_DESCRIPTION("CMAC keyed hash algorithm"); | ||
1075 | +MODULE_ALIAS_CRYPTO("cmac"); | ||
1076 | diff --git a/crypto/crc32.c b/crypto/crc32.c | ||
1077 | index 9d1c41569898..187ded28cb0b 100644 | ||
1078 | --- a/crypto/crc32.c | ||
1079 | +++ b/crypto/crc32.c | ||
1080 | @@ -156,3 +156,4 @@ module_exit(crc32_mod_fini); | ||
1081 | MODULE_AUTHOR("Alexander Boyko <alexander_boyko@xyratex.com>"); | ||
1082 | MODULE_DESCRIPTION("CRC32 calculations wrapper for lib/crc32"); | ||
1083 | MODULE_LICENSE("GPL"); | ||
1084 | +MODULE_ALIAS_CRYPTO("crc32"); | ||
1085 | diff --git a/crypto/crc32c_generic.c b/crypto/crc32c_generic.c | ||
1086 | index d9c7beba8e50..06f1b60f02b2 100644 | ||
1087 | --- a/crypto/crc32c_generic.c | ||
1088 | +++ b/crypto/crc32c_generic.c | ||
1089 | @@ -170,5 +170,6 @@ module_exit(crc32c_mod_fini); | ||
1090 | MODULE_AUTHOR("Clay Haapala <chaapala@cisco.com>"); | ||
1091 | MODULE_DESCRIPTION("CRC32c (Castagnoli) calculations wrapper for lib/crc32c"); | ||
1092 | MODULE_LICENSE("GPL"); | ||
1093 | -MODULE_ALIAS("crc32c"); | ||
1094 | +MODULE_ALIAS_CRYPTO("crc32c"); | ||
1095 | +MODULE_ALIAS_CRYPTO("crc32c-generic"); | ||
1096 | MODULE_SOFTDEP("pre: crc32c"); | ||
1097 | diff --git a/crypto/crct10dif_generic.c b/crypto/crct10dif_generic.c | ||
1098 | index 877e7114ec5c..c1229614c7e3 100644 | ||
1099 | --- a/crypto/crct10dif_generic.c | ||
1100 | +++ b/crypto/crct10dif_generic.c | ||
1101 | @@ -124,4 +124,5 @@ module_exit(crct10dif_mod_fini); | ||
1102 | MODULE_AUTHOR("Tim Chen <tim.c.chen@linux.intel.com>"); | ||
1103 | MODULE_DESCRIPTION("T10 DIF CRC calculation."); | ||
1104 | MODULE_LICENSE("GPL"); | ||
1105 | -MODULE_ALIAS("crct10dif"); | ||
1106 | +MODULE_ALIAS_CRYPTO("crct10dif"); | ||
1107 | +MODULE_ALIAS_CRYPTO("crct10dif-generic"); | ||
1108 | diff --git a/crypto/cryptd.c b/crypto/cryptd.c | ||
1109 | index e592c90abebb..650afac10fd7 100644 | ||
1110 | --- a/crypto/cryptd.c | ||
1111 | +++ b/crypto/cryptd.c | ||
1112 | @@ -955,3 +955,4 @@ module_exit(cryptd_exit); | ||
1113 | |||
1114 | MODULE_LICENSE("GPL"); | ||
1115 | MODULE_DESCRIPTION("Software async crypto daemon"); | ||
1116 | +MODULE_ALIAS_CRYPTO("cryptd"); | ||
1117 | diff --git a/crypto/crypto_null.c b/crypto/crypto_null.c | ||
1118 | index 1dc54bb95a87..a20319132e33 100644 | ||
1119 | --- a/crypto/crypto_null.c | ||
1120 | +++ b/crypto/crypto_null.c | ||
1121 | @@ -145,9 +145,9 @@ static struct crypto_alg null_algs[3] = { { | ||
1122 | .coa_decompress = null_compress } } | ||
1123 | } }; | ||
1124 | |||
1125 | -MODULE_ALIAS("compress_null"); | ||
1126 | -MODULE_ALIAS("digest_null"); | ||
1127 | -MODULE_ALIAS("cipher_null"); | ||
1128 | +MODULE_ALIAS_CRYPTO("compress_null"); | ||
1129 | +MODULE_ALIAS_CRYPTO("digest_null"); | ||
1130 | +MODULE_ALIAS_CRYPTO("cipher_null"); | ||
1131 | |||
1132 | static int __init crypto_null_mod_init(void) | ||
1133 | { | ||
1134 | diff --git a/crypto/ctr.c b/crypto/ctr.c | ||
1135 | index f2b94f27bb2c..2386f7313952 100644 | ||
1136 | --- a/crypto/ctr.c | ||
1137 | +++ b/crypto/ctr.c | ||
1138 | @@ -466,4 +466,5 @@ module_exit(crypto_ctr_module_exit); | ||
1139 | |||
1140 | MODULE_LICENSE("GPL"); | ||
1141 | MODULE_DESCRIPTION("CTR Counter block mode"); | ||
1142 | -MODULE_ALIAS("rfc3686"); | ||
1143 | +MODULE_ALIAS_CRYPTO("rfc3686"); | ||
1144 | +MODULE_ALIAS_CRYPTO("ctr"); | ||
1145 | diff --git a/crypto/cts.c b/crypto/cts.c | ||
1146 | index 133f0874c95e..bd9405820e8a 100644 | ||
1147 | --- a/crypto/cts.c | ||
1148 | +++ b/crypto/cts.c | ||
1149 | @@ -351,3 +351,4 @@ module_exit(crypto_cts_module_exit); | ||
1150 | |||
1151 | MODULE_LICENSE("Dual BSD/GPL"); | ||
1152 | MODULE_DESCRIPTION("CTS-CBC CipherText Stealing for CBC"); | ||
1153 | +MODULE_ALIAS_CRYPTO("cts"); | ||
1154 | diff --git a/crypto/deflate.c b/crypto/deflate.c | ||
1155 | index b57d70eb156b..95d8d37c5021 100644 | ||
1156 | --- a/crypto/deflate.c | ||
1157 | +++ b/crypto/deflate.c | ||
1158 | @@ -222,4 +222,4 @@ module_exit(deflate_mod_fini); | ||
1159 | MODULE_LICENSE("GPL"); | ||
1160 | MODULE_DESCRIPTION("Deflate Compression Algorithm for IPCOMP"); | ||
1161 | MODULE_AUTHOR("James Morris <jmorris@intercode.com.au>"); | ||
1162 | - | ||
1163 | +MODULE_ALIAS_CRYPTO("deflate"); | ||
1164 | diff --git a/crypto/des_generic.c b/crypto/des_generic.c | ||
1165 | index 298d464ab7d2..a71720544d11 100644 | ||
1166 | --- a/crypto/des_generic.c | ||
1167 | +++ b/crypto/des_generic.c | ||
1168 | @@ -983,8 +983,6 @@ static struct crypto_alg des_algs[2] = { { | ||
1169 | .cia_decrypt = des3_ede_decrypt } } | ||
1170 | } }; | ||
1171 | |||
1172 | -MODULE_ALIAS("des3_ede"); | ||
1173 | - | ||
1174 | static int __init des_generic_mod_init(void) | ||
1175 | { | ||
1176 | return crypto_register_algs(des_algs, ARRAY_SIZE(des_algs)); | ||
1177 | @@ -1001,4 +999,7 @@ module_exit(des_generic_mod_fini); | ||
1178 | MODULE_LICENSE("GPL"); | ||
1179 | MODULE_DESCRIPTION("DES & Triple DES EDE Cipher Algorithms"); | ||
1180 | MODULE_AUTHOR("Dag Arne Osvik <da@osvik.no>"); | ||
1181 | -MODULE_ALIAS("des"); | ||
1182 | +MODULE_ALIAS_CRYPTO("des"); | ||
1183 | +MODULE_ALIAS_CRYPTO("des-generic"); | ||
1184 | +MODULE_ALIAS_CRYPTO("des3_ede"); | ||
1185 | +MODULE_ALIAS_CRYPTO("des3_ede-generic"); | ||
1186 | diff --git a/crypto/ecb.c b/crypto/ecb.c | ||
1187 | index 935cfef4aa84..12011aff0971 100644 | ||
1188 | --- a/crypto/ecb.c | ||
1189 | +++ b/crypto/ecb.c | ||
1190 | @@ -185,3 +185,4 @@ module_exit(crypto_ecb_module_exit); | ||
1191 | |||
1192 | MODULE_LICENSE("GPL"); | ||
1193 | MODULE_DESCRIPTION("ECB block cipher algorithm"); | ||
1194 | +MODULE_ALIAS_CRYPTO("ecb"); | ||
1195 | diff --git a/crypto/eseqiv.c b/crypto/eseqiv.c | ||
1196 | index bf7ab4a89493..f116fae766f8 100644 | ||
1197 | --- a/crypto/eseqiv.c | ||
1198 | +++ b/crypto/eseqiv.c | ||
1199 | @@ -267,3 +267,4 @@ module_exit(eseqiv_module_exit); | ||
1200 | |||
1201 | MODULE_LICENSE("GPL"); | ||
1202 | MODULE_DESCRIPTION("Encrypted Sequence Number IV Generator"); | ||
1203 | +MODULE_ALIAS_CRYPTO("eseqiv"); | ||
1204 | diff --git a/crypto/fcrypt.c b/crypto/fcrypt.c | ||
1205 | index 021d7fec6bc8..77286ea28865 100644 | ||
1206 | --- a/crypto/fcrypt.c | ||
1207 | +++ b/crypto/fcrypt.c | ||
1208 | @@ -420,3 +420,4 @@ module_exit(fcrypt_mod_fini); | ||
1209 | MODULE_LICENSE("Dual BSD/GPL"); | ||
1210 | MODULE_DESCRIPTION("FCrypt Cipher Algorithm"); | ||
1211 | MODULE_AUTHOR("David Howells <dhowells@redhat.com>"); | ||
1212 | +MODULE_ALIAS_CRYPTO("fcrypt"); | ||
1213 | diff --git a/crypto/gcm.c b/crypto/gcm.c | ||
1214 | index 276cdac567b6..2e403f6138c1 100644 | ||
1215 | --- a/crypto/gcm.c | ||
1216 | +++ b/crypto/gcm.c | ||
1217 | @@ -1441,6 +1441,7 @@ module_exit(crypto_gcm_module_exit); | ||
1218 | MODULE_LICENSE("GPL"); | ||
1219 | MODULE_DESCRIPTION("Galois/Counter Mode"); | ||
1220 | MODULE_AUTHOR("Mikko Herranen <mh1@iki.fi>"); | ||
1221 | -MODULE_ALIAS("gcm_base"); | ||
1222 | -MODULE_ALIAS("rfc4106"); | ||
1223 | -MODULE_ALIAS("rfc4543"); | ||
1224 | +MODULE_ALIAS_CRYPTO("gcm_base"); | ||
1225 | +MODULE_ALIAS_CRYPTO("rfc4106"); | ||
1226 | +MODULE_ALIAS_CRYPTO("rfc4543"); | ||
1227 | +MODULE_ALIAS_CRYPTO("gcm"); | ||
1228 | diff --git a/crypto/ghash-generic.c b/crypto/ghash-generic.c | ||
1229 | index 9d3f0c69a86f..bac70995e064 100644 | ||
1230 | --- a/crypto/ghash-generic.c | ||
1231 | +++ b/crypto/ghash-generic.c | ||
1232 | @@ -172,4 +172,5 @@ module_exit(ghash_mod_exit); | ||
1233 | |||
1234 | MODULE_LICENSE("GPL"); | ||
1235 | MODULE_DESCRIPTION("GHASH Message Digest Algorithm"); | ||
1236 | -MODULE_ALIAS("ghash"); | ||
1237 | +MODULE_ALIAS_CRYPTO("ghash"); | ||
1238 | +MODULE_ALIAS_CRYPTO("ghash-generic"); | ||
1239 | diff --git a/crypto/hmac.c b/crypto/hmac.c | ||
1240 | index e392219ddc61..72e38c098bb3 100644 | ||
1241 | --- a/crypto/hmac.c | ||
1242 | +++ b/crypto/hmac.c | ||
1243 | @@ -268,3 +268,4 @@ module_exit(hmac_module_exit); | ||
1244 | |||
1245 | MODULE_LICENSE("GPL"); | ||
1246 | MODULE_DESCRIPTION("HMAC hash algorithm"); | ||
1247 | +MODULE_ALIAS_CRYPTO("hmac"); | ||
1248 | diff --git a/crypto/khazad.c b/crypto/khazad.c | ||
1249 | index 60e7cd66facc..873eb5ded6d7 100644 | ||
1250 | --- a/crypto/khazad.c | ||
1251 | +++ b/crypto/khazad.c | ||
1252 | @@ -880,3 +880,4 @@ module_exit(khazad_mod_fini); | ||
1253 | |||
1254 | MODULE_LICENSE("GPL"); | ||
1255 | MODULE_DESCRIPTION("Khazad Cryptographic Algorithm"); | ||
1256 | +MODULE_ALIAS_CRYPTO("khazad"); | ||
1257 | diff --git a/crypto/krng.c b/crypto/krng.c | ||
1258 | index a2d2b72fc135..0224841b6579 100644 | ||
1259 | --- a/crypto/krng.c | ||
1260 | +++ b/crypto/krng.c | ||
1261 | @@ -62,4 +62,5 @@ module_exit(krng_mod_fini); | ||
1262 | |||
1263 | MODULE_LICENSE("GPL"); | ||
1264 | MODULE_DESCRIPTION("Kernel Random Number Generator"); | ||
1265 | -MODULE_ALIAS("stdrng"); | ||
1266 | +MODULE_ALIAS_CRYPTO("stdrng"); | ||
1267 | +MODULE_ALIAS_CRYPTO("krng"); | ||
1268 | diff --git a/crypto/lrw.c b/crypto/lrw.c | ||
1269 | index ba42acc4deba..6f9908a7ebcb 100644 | ||
1270 | --- a/crypto/lrw.c | ||
1271 | +++ b/crypto/lrw.c | ||
1272 | @@ -400,3 +400,4 @@ module_exit(crypto_module_exit); | ||
1273 | |||
1274 | MODULE_LICENSE("GPL"); | ||
1275 | MODULE_DESCRIPTION("LRW block cipher mode"); | ||
1276 | +MODULE_ALIAS_CRYPTO("lrw"); | ||
1277 | diff --git a/crypto/lz4.c b/crypto/lz4.c | ||
1278 | index 34d072b72a73..aefbceaf3104 100644 | ||
1279 | --- a/crypto/lz4.c | ||
1280 | +++ b/crypto/lz4.c | ||
1281 | @@ -104,3 +104,4 @@ module_exit(lz4_mod_fini); | ||
1282 | |||
1283 | MODULE_LICENSE("GPL"); | ||
1284 | MODULE_DESCRIPTION("LZ4 Compression Algorithm"); | ||
1285 | +MODULE_ALIAS_CRYPTO("lz4"); | ||
1286 | diff --git a/crypto/lz4hc.c b/crypto/lz4hc.c | ||
1287 | index 9218b3fed5e3..a1d3b5bd3d85 100644 | ||
1288 | --- a/crypto/lz4hc.c | ||
1289 | +++ b/crypto/lz4hc.c | ||
1290 | @@ -104,3 +104,4 @@ module_exit(lz4hc_mod_fini); | ||
1291 | |||
1292 | MODULE_LICENSE("GPL"); | ||
1293 | MODULE_DESCRIPTION("LZ4HC Compression Algorithm"); | ||
1294 | +MODULE_ALIAS_CRYPTO("lz4hc"); | ||
1295 | diff --git a/crypto/lzo.c b/crypto/lzo.c | ||
1296 | index a8ff2f778dc4..4b3e92525dac 100644 | ||
1297 | --- a/crypto/lzo.c | ||
1298 | +++ b/crypto/lzo.c | ||
1299 | @@ -107,3 +107,4 @@ module_exit(lzo_mod_fini); | ||
1300 | |||
1301 | MODULE_LICENSE("GPL"); | ||
1302 | MODULE_DESCRIPTION("LZO Compression Algorithm"); | ||
1303 | +MODULE_ALIAS_CRYPTO("lzo"); | ||
1304 | diff --git a/crypto/mcryptd.c b/crypto/mcryptd.c | ||
1305 | index b39fbd530102..a8e870444ea9 100644 | ||
1306 | --- a/crypto/mcryptd.c | ||
1307 | +++ b/crypto/mcryptd.c | ||
1308 | @@ -703,3 +703,4 @@ module_exit(mcryptd_exit); | ||
1309 | |||
1310 | MODULE_LICENSE("GPL"); | ||
1311 | MODULE_DESCRIPTION("Software async multibuffer crypto daemon"); | ||
1312 | +MODULE_ALIAS_CRYPTO("mcryptd"); | ||
1313 | diff --git a/crypto/md4.c b/crypto/md4.c | ||
1314 | index 0477a6a01d58..3515af425cc9 100644 | ||
1315 | --- a/crypto/md4.c | ||
1316 | +++ b/crypto/md4.c | ||
1317 | @@ -255,4 +255,4 @@ module_exit(md4_mod_fini); | ||
1318 | |||
1319 | MODULE_LICENSE("GPL"); | ||
1320 | MODULE_DESCRIPTION("MD4 Message Digest Algorithm"); | ||
1321 | - | ||
1322 | +MODULE_ALIAS_CRYPTO("md4"); | ||
1323 | diff --git a/crypto/md5.c b/crypto/md5.c | ||
1324 | index 7febeaab923b..36f5e5b103f3 100644 | ||
1325 | --- a/crypto/md5.c | ||
1326 | +++ b/crypto/md5.c | ||
1327 | @@ -168,3 +168,4 @@ module_exit(md5_mod_fini); | ||
1328 | |||
1329 | MODULE_LICENSE("GPL"); | ||
1330 | MODULE_DESCRIPTION("MD5 Message Digest Algorithm"); | ||
1331 | +MODULE_ALIAS_CRYPTO("md5"); | ||
1332 | diff --git a/crypto/michael_mic.c b/crypto/michael_mic.c | ||
1333 | index 079b761bc70d..46195e0d0f4d 100644 | ||
1334 | --- a/crypto/michael_mic.c | ||
1335 | +++ b/crypto/michael_mic.c | ||
1336 | @@ -184,3 +184,4 @@ module_exit(michael_mic_exit); | ||
1337 | MODULE_LICENSE("GPL v2"); | ||
1338 | MODULE_DESCRIPTION("Michael MIC"); | ||
1339 | MODULE_AUTHOR("Jouni Malinen <j@w1.fi>"); | ||
1340 | +MODULE_ALIAS_CRYPTO("michael_mic"); | ||
1341 | diff --git a/crypto/pcbc.c b/crypto/pcbc.c | ||
1342 | index d1b8bdfb5855..f654965f0933 100644 | ||
1343 | --- a/crypto/pcbc.c | ||
1344 | +++ b/crypto/pcbc.c | ||
1345 | @@ -295,3 +295,4 @@ module_exit(crypto_pcbc_module_exit); | ||
1346 | |||
1347 | MODULE_LICENSE("GPL"); | ||
1348 | MODULE_DESCRIPTION("PCBC block cipher algorithm"); | ||
1349 | +MODULE_ALIAS_CRYPTO("pcbc"); | ||
1350 | diff --git a/crypto/pcrypt.c b/crypto/pcrypt.c | ||
1351 | index 309d345ead95..c305d4112735 100644 | ||
1352 | --- a/crypto/pcrypt.c | ||
1353 | +++ b/crypto/pcrypt.c | ||
1354 | @@ -565,3 +565,4 @@ module_exit(pcrypt_exit); | ||
1355 | MODULE_LICENSE("GPL"); | ||
1356 | MODULE_AUTHOR("Steffen Klassert <steffen.klassert@secunet.com>"); | ||
1357 | MODULE_DESCRIPTION("Parallel crypto wrapper"); | ||
1358 | +MODULE_ALIAS_CRYPTO("pcrypt"); | ||
1359 | diff --git a/crypto/rmd128.c b/crypto/rmd128.c | ||
1360 | index 8a0f68b7f257..049486ede938 100644 | ||
1361 | --- a/crypto/rmd128.c | ||
1362 | +++ b/crypto/rmd128.c | ||
1363 | @@ -327,3 +327,4 @@ module_exit(rmd128_mod_fini); | ||
1364 | MODULE_LICENSE("GPL"); | ||
1365 | MODULE_AUTHOR("Adrian-Ken Rueegsegger <ken@codelabs.ch>"); | ||
1366 | MODULE_DESCRIPTION("RIPEMD-128 Message Digest"); | ||
1367 | +MODULE_ALIAS_CRYPTO("rmd128"); | ||
1368 | diff --git a/crypto/rmd160.c b/crypto/rmd160.c | ||
1369 | index 525d7bb752cf..de585e51d455 100644 | ||
1370 | --- a/crypto/rmd160.c | ||
1371 | +++ b/crypto/rmd160.c | ||
1372 | @@ -371,3 +371,4 @@ module_exit(rmd160_mod_fini); | ||
1373 | MODULE_LICENSE("GPL"); | ||
1374 | MODULE_AUTHOR("Adrian-Ken Rueegsegger <ken@codelabs.ch>"); | ||
1375 | MODULE_DESCRIPTION("RIPEMD-160 Message Digest"); | ||
1376 | +MODULE_ALIAS_CRYPTO("rmd160"); | ||
1377 | diff --git a/crypto/rmd256.c b/crypto/rmd256.c | ||
1378 | index 69293d9b56e0..4ec02a754e09 100644 | ||
1379 | --- a/crypto/rmd256.c | ||
1380 | +++ b/crypto/rmd256.c | ||
1381 | @@ -346,3 +346,4 @@ module_exit(rmd256_mod_fini); | ||
1382 | MODULE_LICENSE("GPL"); | ||
1383 | MODULE_AUTHOR("Adrian-Ken Rueegsegger <ken@codelabs.ch>"); | ||
1384 | MODULE_DESCRIPTION("RIPEMD-256 Message Digest"); | ||
1385 | +MODULE_ALIAS_CRYPTO("rmd256"); | ||
1386 | diff --git a/crypto/rmd320.c b/crypto/rmd320.c | ||
1387 | index 09f97dfdfbba..770f2cb369f8 100644 | ||
1388 | --- a/crypto/rmd320.c | ||
1389 | +++ b/crypto/rmd320.c | ||
1390 | @@ -395,3 +395,4 @@ module_exit(rmd320_mod_fini); | ||
1391 | MODULE_LICENSE("GPL"); | ||
1392 | MODULE_AUTHOR("Adrian-Ken Rueegsegger <ken@codelabs.ch>"); | ||
1393 | MODULE_DESCRIPTION("RIPEMD-320 Message Digest"); | ||
1394 | +MODULE_ALIAS_CRYPTO("rmd320"); | ||
1395 | diff --git a/crypto/salsa20_generic.c b/crypto/salsa20_generic.c | ||
1396 | index 9a4770c02284..f550b5d94630 100644 | ||
1397 | --- a/crypto/salsa20_generic.c | ||
1398 | +++ b/crypto/salsa20_generic.c | ||
1399 | @@ -248,4 +248,5 @@ module_exit(salsa20_generic_mod_fini); | ||
1400 | |||
1401 | MODULE_LICENSE("GPL"); | ||
1402 | MODULE_DESCRIPTION ("Salsa20 stream cipher algorithm"); | ||
1403 | -MODULE_ALIAS("salsa20"); | ||
1404 | +MODULE_ALIAS_CRYPTO("salsa20"); | ||
1405 | +MODULE_ALIAS_CRYPTO("salsa20-generic"); | ||
1406 | diff --git a/crypto/seed.c b/crypto/seed.c | ||
1407 | index 9c904d6d2151..c6ba8438be43 100644 | ||
1408 | --- a/crypto/seed.c | ||
1409 | +++ b/crypto/seed.c | ||
1410 | @@ -476,3 +476,4 @@ module_exit(seed_fini); | ||
1411 | MODULE_DESCRIPTION("SEED Cipher Algorithm"); | ||
1412 | MODULE_LICENSE("GPL"); | ||
1413 | MODULE_AUTHOR("Hye-Shik Chang <perky@FreeBSD.org>, Kim Hyun <hkim@kisa.or.kr>"); | ||
1414 | +MODULE_ALIAS_CRYPTO("seed"); | ||
1415 | diff --git a/crypto/seqiv.c b/crypto/seqiv.c | ||
1416 | index ee190fcedcd2..9daa854cc485 100644 | ||
1417 | --- a/crypto/seqiv.c | ||
1418 | +++ b/crypto/seqiv.c | ||
1419 | @@ -362,3 +362,4 @@ module_exit(seqiv_module_exit); | ||
1420 | |||
1421 | MODULE_LICENSE("GPL"); | ||
1422 | MODULE_DESCRIPTION("Sequence Number IV Generator"); | ||
1423 | +MODULE_ALIAS_CRYPTO("seqiv"); | ||
1424 | diff --git a/crypto/serpent_generic.c b/crypto/serpent_generic.c | ||
1425 | index 7ddbd7e88859..94970a794975 100644 | ||
1426 | --- a/crypto/serpent_generic.c | ||
1427 | +++ b/crypto/serpent_generic.c | ||
1428 | @@ -665,5 +665,6 @@ module_exit(serpent_mod_fini); | ||
1429 | MODULE_LICENSE("GPL"); | ||
1430 | MODULE_DESCRIPTION("Serpent and tnepres (kerneli compatible serpent reversed) Cipher Algorithm"); | ||
1431 | MODULE_AUTHOR("Dag Arne Osvik <osvik@ii.uib.no>"); | ||
1432 | -MODULE_ALIAS("tnepres"); | ||
1433 | -MODULE_ALIAS("serpent"); | ||
1434 | +MODULE_ALIAS_CRYPTO("tnepres"); | ||
1435 | +MODULE_ALIAS_CRYPTO("serpent"); | ||
1436 | +MODULE_ALIAS_CRYPTO("serpent-generic"); | ||
1437 | diff --git a/crypto/sha1_generic.c b/crypto/sha1_generic.c | ||
1438 | index 7bb047432782..a3e50c37eb6f 100644 | ||
1439 | --- a/crypto/sha1_generic.c | ||
1440 | +++ b/crypto/sha1_generic.c | ||
1441 | @@ -153,4 +153,5 @@ module_exit(sha1_generic_mod_fini); | ||
1442 | MODULE_LICENSE("GPL"); | ||
1443 | MODULE_DESCRIPTION("SHA1 Secure Hash Algorithm"); | ||
1444 | |||
1445 | -MODULE_ALIAS("sha1"); | ||
1446 | +MODULE_ALIAS_CRYPTO("sha1"); | ||
1447 | +MODULE_ALIAS_CRYPTO("sha1-generic"); | ||
1448 | diff --git a/crypto/sha256_generic.c b/crypto/sha256_generic.c | ||
1449 | index 65e7b76b057f..b001ff5c2efc 100644 | ||
1450 | --- a/crypto/sha256_generic.c | ||
1451 | +++ b/crypto/sha256_generic.c | ||
1452 | @@ -384,5 +384,7 @@ module_exit(sha256_generic_mod_fini); | ||
1453 | MODULE_LICENSE("GPL"); | ||
1454 | MODULE_DESCRIPTION("SHA-224 and SHA-256 Secure Hash Algorithm"); | ||
1455 | |||
1456 | -MODULE_ALIAS("sha224"); | ||
1457 | -MODULE_ALIAS("sha256"); | ||
1458 | +MODULE_ALIAS_CRYPTO("sha224"); | ||
1459 | +MODULE_ALIAS_CRYPTO("sha224-generic"); | ||
1460 | +MODULE_ALIAS_CRYPTO("sha256"); | ||
1461 | +MODULE_ALIAS_CRYPTO("sha256-generic"); | ||
1462 | diff --git a/crypto/sha512_generic.c b/crypto/sha512_generic.c | ||
1463 | index 95db67197cd9..1c3c3767e079 100644 | ||
1464 | --- a/crypto/sha512_generic.c | ||
1465 | +++ b/crypto/sha512_generic.c | ||
1466 | @@ -288,5 +288,7 @@ module_exit(sha512_generic_mod_fini); | ||
1467 | MODULE_LICENSE("GPL"); | ||
1468 | MODULE_DESCRIPTION("SHA-512 and SHA-384 Secure Hash Algorithms"); | ||
1469 | |||
1470 | -MODULE_ALIAS("sha384"); | ||
1471 | -MODULE_ALIAS("sha512"); | ||
1472 | +MODULE_ALIAS_CRYPTO("sha384"); | ||
1473 | +MODULE_ALIAS_CRYPTO("sha384-generic"); | ||
1474 | +MODULE_ALIAS_CRYPTO("sha512"); | ||
1475 | +MODULE_ALIAS_CRYPTO("sha512-generic"); | ||
1476 | diff --git a/crypto/tea.c b/crypto/tea.c | ||
1477 | index 0a572323ee4a..b70b441c7d1e 100644 | ||
1478 | --- a/crypto/tea.c | ||
1479 | +++ b/crypto/tea.c | ||
1480 | @@ -270,8 +270,9 @@ static void __exit tea_mod_fini(void) | ||
1481 | crypto_unregister_algs(tea_algs, ARRAY_SIZE(tea_algs)); | ||
1482 | } | ||
1483 | |||
1484 | -MODULE_ALIAS("xtea"); | ||
1485 | -MODULE_ALIAS("xeta"); | ||
1486 | +MODULE_ALIAS_CRYPTO("tea"); | ||
1487 | +MODULE_ALIAS_CRYPTO("xtea"); | ||
1488 | +MODULE_ALIAS_CRYPTO("xeta"); | ||
1489 | |||
1490 | module_init(tea_mod_init); | ||
1491 | module_exit(tea_mod_fini); | ||
1492 | diff --git a/crypto/tgr192.c b/crypto/tgr192.c | ||
1493 | index 3c7af0d1ff7a..321bc6ff2a9d 100644 | ||
1494 | --- a/crypto/tgr192.c | ||
1495 | +++ b/crypto/tgr192.c | ||
1496 | @@ -676,8 +676,9 @@ static void __exit tgr192_mod_fini(void) | ||
1497 | crypto_unregister_shashes(tgr_algs, ARRAY_SIZE(tgr_algs)); | ||
1498 | } | ||
1499 | |||
1500 | -MODULE_ALIAS("tgr160"); | ||
1501 | -MODULE_ALIAS("tgr128"); | ||
1502 | +MODULE_ALIAS_CRYPTO("tgr192"); | ||
1503 | +MODULE_ALIAS_CRYPTO("tgr160"); | ||
1504 | +MODULE_ALIAS_CRYPTO("tgr128"); | ||
1505 | |||
1506 | module_init(tgr192_mod_init); | ||
1507 | module_exit(tgr192_mod_fini); | ||
1508 | diff --git a/crypto/twofish_generic.c b/crypto/twofish_generic.c | ||
1509 | index 2d5000552d0f..ebf7a3efb572 100644 | ||
1510 | --- a/crypto/twofish_generic.c | ||
1511 | +++ b/crypto/twofish_generic.c | ||
1512 | @@ -211,4 +211,5 @@ module_exit(twofish_mod_fini); | ||
1513 | |||
1514 | MODULE_LICENSE("GPL"); | ||
1515 | MODULE_DESCRIPTION ("Twofish Cipher Algorithm"); | ||
1516 | -MODULE_ALIAS("twofish"); | ||
1517 | +MODULE_ALIAS_CRYPTO("twofish"); | ||
1518 | +MODULE_ALIAS_CRYPTO("twofish-generic"); | ||
1519 | diff --git a/crypto/vmac.c b/crypto/vmac.c | ||
1520 | index d84c24bd7ff7..df76a816cfb2 100644 | ||
1521 | --- a/crypto/vmac.c | ||
1522 | +++ b/crypto/vmac.c | ||
1523 | @@ -713,3 +713,4 @@ module_exit(vmac_module_exit); | ||
1524 | |||
1525 | MODULE_LICENSE("GPL"); | ||
1526 | MODULE_DESCRIPTION("VMAC hash algorithm"); | ||
1527 | +MODULE_ALIAS_CRYPTO("vmac"); | ||
1528 | diff --git a/crypto/wp512.c b/crypto/wp512.c | ||
1529 | index ec64e7762fbb..7ee5a043a988 100644 | ||
1530 | --- a/crypto/wp512.c | ||
1531 | +++ b/crypto/wp512.c | ||
1532 | @@ -1167,8 +1167,9 @@ static void __exit wp512_mod_fini(void) | ||
1533 | crypto_unregister_shashes(wp_algs, ARRAY_SIZE(wp_algs)); | ||
1534 | } | ||
1535 | |||
1536 | -MODULE_ALIAS("wp384"); | ||
1537 | -MODULE_ALIAS("wp256"); | ||
1538 | +MODULE_ALIAS_CRYPTO("wp512"); | ||
1539 | +MODULE_ALIAS_CRYPTO("wp384"); | ||
1540 | +MODULE_ALIAS_CRYPTO("wp256"); | ||
1541 | |||
1542 | module_init(wp512_mod_init); | ||
1543 | module_exit(wp512_mod_fini); | ||
1544 | diff --git a/crypto/xcbc.c b/crypto/xcbc.c | ||
1545 | index a5fbdf3738cf..df90b332554c 100644 | ||
1546 | --- a/crypto/xcbc.c | ||
1547 | +++ b/crypto/xcbc.c | ||
1548 | @@ -286,3 +286,4 @@ module_exit(crypto_xcbc_module_exit); | ||
1549 | |||
1550 | MODULE_LICENSE("GPL"); | ||
1551 | MODULE_DESCRIPTION("XCBC keyed hash algorithm"); | ||
1552 | +MODULE_ALIAS_CRYPTO("xcbc"); | ||
1553 | diff --git a/crypto/xts.c b/crypto/xts.c | ||
1554 | index ca1608f44cb5..f6fd43f100c8 100644 | ||
1555 | --- a/crypto/xts.c | ||
1556 | +++ b/crypto/xts.c | ||
1557 | @@ -362,3 +362,4 @@ module_exit(crypto_module_exit); | ||
1558 | |||
1559 | MODULE_LICENSE("GPL"); | ||
1560 | MODULE_DESCRIPTION("XTS block cipher mode"); | ||
1561 | +MODULE_ALIAS_CRYPTO("xts"); | ||
1562 | diff --git a/crypto/zlib.c b/crypto/zlib.c | ||
1563 | index c9ee681d57fd..0eefa9d237ac 100644 | ||
1564 | --- a/crypto/zlib.c | ||
1565 | +++ b/crypto/zlib.c | ||
1566 | @@ -378,3 +378,4 @@ module_exit(zlib_mod_fini); | ||
1567 | MODULE_LICENSE("GPL"); | ||
1568 | MODULE_DESCRIPTION("Zlib Compression Algorithm"); | ||
1569 | MODULE_AUTHOR("Sony Corporation"); | ||
1570 | +MODULE_ALIAS_CRYPTO("zlib"); | ||
1571 | diff --git a/drivers/acpi/device_pm.c b/drivers/acpi/device_pm.c | ||
1572 | index 93b71420a046..6341e668f362 100644 | ||
1573 | --- a/drivers/acpi/device_pm.c | ||
1574 | +++ b/drivers/acpi/device_pm.c | ||
1575 | @@ -680,13 +680,21 @@ static int acpi_device_wakeup(struct acpi_device *adev, u32 target_state, | ||
1576 | if (error) | ||
1577 | return error; | ||
1578 | |||
1579 | + if (adev->wakeup.flags.enabled) | ||
1580 | + return 0; | ||
1581 | + | ||
1582 | res = acpi_enable_gpe(wakeup->gpe_device, wakeup->gpe_number); | ||
1583 | - if (ACPI_FAILURE(res)) { | ||
1584 | + if (ACPI_SUCCESS(res)) { | ||
1585 | + adev->wakeup.flags.enabled = 1; | ||
1586 | + } else { | ||
1587 | acpi_disable_wakeup_device_power(adev); | ||
1588 | return -EIO; | ||
1589 | } | ||
1590 | } else { | ||
1591 | - acpi_disable_gpe(wakeup->gpe_device, wakeup->gpe_number); | ||
1592 | + if (adev->wakeup.flags.enabled) { | ||
1593 | + acpi_disable_gpe(wakeup->gpe_device, wakeup->gpe_number); | ||
1594 | + adev->wakeup.flags.enabled = 0; | ||
1595 | + } | ||
1596 | acpi_disable_wakeup_device_power(adev); | ||
1597 | } | ||
1598 | return 0; | ||
1599 | diff --git a/drivers/ata/ahci_xgene.c b/drivers/ata/ahci_xgene.c | ||
1600 | index 0f8538f238b6..0ffd3c930bed 100644 | ||
1601 | --- a/drivers/ata/ahci_xgene.c | ||
1602 | +++ b/drivers/ata/ahci_xgene.c | ||
1603 | @@ -188,7 +188,7 @@ static unsigned int xgene_ahci_read_id(struct ata_device *dev, | ||
1604 | * | ||
1605 | * Clear reserved bit 8 (DEVSLP bit) as we don't support DEVSLP | ||
1606 | */ | ||
1607 | - id[ATA_ID_FEATURE_SUPP] &= ~(1 << 8); | ||
1608 | + id[ATA_ID_FEATURE_SUPP] &= cpu_to_le16(~(1 << 8)); | ||
1609 | |||
1610 | return 0; | ||
1611 | } | ||
1612 | diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c | ||
1613 | index c5ba15af87d3..485f7eab0d4b 100644 | ||
1614 | --- a/drivers/ata/libata-core.c | ||
1615 | +++ b/drivers/ata/libata-core.c | ||
1616 | @@ -4740,7 +4740,10 @@ static struct ata_queued_cmd *ata_qc_new(struct ata_port *ap) | ||
1617 | return NULL; | ||
1618 | |||
1619 | for (i = 0, tag = ap->last_tag + 1; i < max_queue; i++, tag++) { | ||
1620 | - tag = tag < max_queue ? tag : 0; | ||
1621 | + if (ap->flags & ATA_FLAG_LOWTAG) | ||
1622 | + tag = i; | ||
1623 | + else | ||
1624 | + tag = tag < max_queue ? tag : 0; | ||
1625 | |||
1626 | /* the last tag is reserved for internal command. */ | ||
1627 | if (tag == ATA_TAG_INTERNAL) | ||
1628 | diff --git a/drivers/ata/libata-sff.c b/drivers/ata/libata-sff.c | ||
1629 | index db90aa35cb71..2e86e3b85266 100644 | ||
1630 | --- a/drivers/ata/libata-sff.c | ||
1631 | +++ b/drivers/ata/libata-sff.c | ||
1632 | @@ -1333,7 +1333,19 @@ void ata_sff_flush_pio_task(struct ata_port *ap) | ||
1633 | DPRINTK("ENTER\n"); | ||
1634 | |||
1635 | cancel_delayed_work_sync(&ap->sff_pio_task); | ||
1636 | + | ||
1637 | + /* | ||
1638 | + * We wanna reset the HSM state to IDLE. If we do so without | ||
1639 | + * grabbing the port lock, critical sections protected by it which | ||
1640 | + * expect the HSM state to stay stable may get surprised. For | ||
1641 | + * example, we may set IDLE in between the time | ||
1642 | + * __ata_sff_port_intr() checks for HSM_ST_IDLE and before it calls | ||
1643 | + * ata_sff_hsm_move() causing ata_sff_hsm_move() to BUG(). | ||
1644 | + */ | ||
1645 | + spin_lock_irq(ap->lock); | ||
1646 | ap->hsm_task_state = HSM_ST_IDLE; | ||
1647 | + spin_unlock_irq(ap->lock); | ||
1648 | + | ||
1649 | ap->sff_pio_task_link = NULL; | ||
1650 | |||
1651 | if (ata_msg_ctl(ap)) | ||
1652 | diff --git a/drivers/ata/sata_dwc_460ex.c b/drivers/ata/sata_dwc_460ex.c | ||
1653 | index 0bb2cabd2197..4ebaa1e7b2d3 100644 | ||
1654 | --- a/drivers/ata/sata_dwc_460ex.c | ||
1655 | +++ b/drivers/ata/sata_dwc_460ex.c | ||
1656 | @@ -797,7 +797,7 @@ static int dma_dwc_init(struct sata_dwc_device *hsdev, int irq) | ||
1657 | if (err) { | ||
1658 | dev_err(host_pvt.dwc_dev, "%s: dma_request_interrupts returns" | ||
1659 | " %d\n", __func__, err); | ||
1660 | - goto error_out; | ||
1661 | + return err; | ||
1662 | } | ||
1663 | |||
1664 | /* Enabe DMA */ | ||
1665 | @@ -808,11 +808,6 @@ static int dma_dwc_init(struct sata_dwc_device *hsdev, int irq) | ||
1666 | sata_dma_regs); | ||
1667 | |||
1668 | return 0; | ||
1669 | - | ||
1670 | -error_out: | ||
1671 | - dma_dwc_exit(hsdev); | ||
1672 | - | ||
1673 | - return err; | ||
1674 | } | ||
1675 | |||
1676 | static int sata_dwc_scr_read(struct ata_link *link, unsigned int scr, u32 *val) | ||
1677 | @@ -1662,7 +1657,7 @@ static int sata_dwc_probe(struct platform_device *ofdev) | ||
1678 | char *ver = (char *)&versionr; | ||
1679 | u8 *base = NULL; | ||
1680 | int err = 0; | ||
1681 | - int irq, rc; | ||
1682 | + int irq; | ||
1683 | struct ata_host *host; | ||
1684 | struct ata_port_info pi = sata_dwc_port_info[0]; | ||
1685 | const struct ata_port_info *ppi[] = { &pi, NULL }; | ||
1686 | @@ -1725,7 +1720,7 @@ static int sata_dwc_probe(struct platform_device *ofdev) | ||
1687 | if (irq == NO_IRQ) { | ||
1688 | dev_err(&ofdev->dev, "no SATA DMA irq\n"); | ||
1689 | err = -ENODEV; | ||
1690 | - goto error_out; | ||
1691 | + goto error_iomap; | ||
1692 | } | ||
1693 | |||
1694 | /* Get physical SATA DMA register base address */ | ||
1695 | @@ -1734,14 +1729,16 @@ static int sata_dwc_probe(struct platform_device *ofdev) | ||
1696 | dev_err(&ofdev->dev, "ioremap failed for AHBDMA register" | ||
1697 | " address\n"); | ||
1698 | err = -ENODEV; | ||
1699 | - goto error_out; | ||
1700 | + goto error_iomap; | ||
1701 | } | ||
1702 | |||
1703 | /* Save dev for later use in dev_xxx() routines */ | ||
1704 | host_pvt.dwc_dev = &ofdev->dev; | ||
1705 | |||
1706 | /* Initialize AHB DMAC */ | ||
1707 | - dma_dwc_init(hsdev, irq); | ||
1708 | + err = dma_dwc_init(hsdev, irq); | ||
1709 | + if (err) | ||
1710 | + goto error_dma_iomap; | ||
1711 | |||
1712 | /* Enable SATA Interrupts */ | ||
1713 | sata_dwc_enable_interrupts(hsdev); | ||
1714 | @@ -1759,9 +1756,8 @@ static int sata_dwc_probe(struct platform_device *ofdev) | ||
1715 | * device discovery process, invoking our port_start() handler & | ||
1716 | * error_handler() to execute a dummy Softreset EH session | ||
1717 | */ | ||
1718 | - rc = ata_host_activate(host, irq, sata_dwc_isr, 0, &sata_dwc_sht); | ||
1719 | - | ||
1720 | - if (rc != 0) | ||
1721 | + err = ata_host_activate(host, irq, sata_dwc_isr, 0, &sata_dwc_sht); | ||
1722 | + if (err) | ||
1723 | dev_err(&ofdev->dev, "failed to activate host"); | ||
1724 | |||
1725 | dev_set_drvdata(&ofdev->dev, host); | ||
1726 | @@ -1770,7 +1766,8 @@ static int sata_dwc_probe(struct platform_device *ofdev) | ||
1727 | error_out: | ||
1728 | /* Free SATA DMA resources */ | ||
1729 | dma_dwc_exit(hsdev); | ||
1730 | - | ||
1731 | +error_dma_iomap: | ||
1732 | + iounmap((void __iomem *)host_pvt.sata_dma_regs); | ||
1733 | error_iomap: | ||
1734 | iounmap(base); | ||
1735 | error_kmalloc: | ||
1736 | @@ -1791,6 +1788,7 @@ static int sata_dwc_remove(struct platform_device *ofdev) | ||
1737 | /* Free SATA DMA resources */ | ||
1738 | dma_dwc_exit(hsdev); | ||
1739 | |||
1740 | + iounmap((void __iomem *)host_pvt.sata_dma_regs); | ||
1741 | iounmap(hsdev->reg_base); | ||
1742 | kfree(hsdev); | ||
1743 | kfree(host); | ||
1744 | diff --git a/drivers/ata/sata_sil24.c b/drivers/ata/sata_sil24.c | ||
1745 | index d81b20ddb527..ea655949023f 100644 | ||
1746 | --- a/drivers/ata/sata_sil24.c | ||
1747 | +++ b/drivers/ata/sata_sil24.c | ||
1748 | @@ -246,7 +246,7 @@ enum { | ||
1749 | /* host flags */ | ||
1750 | SIL24_COMMON_FLAGS = ATA_FLAG_SATA | ATA_FLAG_PIO_DMA | | ||
1751 | ATA_FLAG_NCQ | ATA_FLAG_ACPI_SATA | | ||
1752 | - ATA_FLAG_AN | ATA_FLAG_PMP, | ||
1753 | + ATA_FLAG_AN | ATA_FLAG_PMP | ATA_FLAG_LOWTAG, | ||
1754 | SIL24_FLAG_PCIX_IRQ_WOC = (1 << 24), /* IRQ loss errata on PCI-X */ | ||
1755 | |||
1756 | IRQ_STAT_4PORTS = 0xf, | ||
1757 | diff --git a/drivers/bus/mvebu-mbus.c b/drivers/bus/mvebu-mbus.c | ||
1758 | index 26c3779d871d..d29f5ffdb0f4 100644 | ||
1759 | --- a/drivers/bus/mvebu-mbus.c | ||
1760 | +++ b/drivers/bus/mvebu-mbus.c | ||
1761 | @@ -182,12 +182,25 @@ static void mvebu_mbus_disable_window(struct mvebu_mbus_state *mbus, | ||
1762 | } | ||
1763 | |||
1764 | /* Checks whether the given window number is available */ | ||
1765 | + | ||
1766 | +/* On Armada XP, 375 and 38x the MBus window 13 has the remap | ||
1767 | + * capability, like windows 0 to 7. However, the mvebu-mbus driver | ||
1768 | + * isn't currently taking into account this special case, which means | ||
1769 | + * that when window 13 is actually used, the remap registers are left | ||
1770 | + * to 0, making the device using this MBus window unavailable. The | ||
1771 | + * quick fix for stable is to not use window 13. A follow up patch | ||
1772 | + * will correctly handle this window. | ||
1773 | +*/ | ||
1774 | static int mvebu_mbus_window_is_free(struct mvebu_mbus_state *mbus, | ||
1775 | const int win) | ||
1776 | { | ||
1777 | void __iomem *addr = mbus->mbuswins_base + | ||
1778 | mbus->soc->win_cfg_offset(win); | ||
1779 | u32 ctrl = readl(addr + WIN_CTRL_OFF); | ||
1780 | + | ||
1781 | + if (win == 13) | ||
1782 | + return false; | ||
1783 | + | ||
1784 | return !(ctrl & WIN_CTRL_ENABLE); | ||
1785 | } | ||
1786 | |||
1787 | diff --git a/drivers/clocksource/exynos_mct.c b/drivers/clocksource/exynos_mct.c | ||
1788 | index 9403061a2acc..83564c9cfdbe 100644 | ||
1789 | --- a/drivers/clocksource/exynos_mct.c | ||
1790 | +++ b/drivers/clocksource/exynos_mct.c | ||
1791 | @@ -97,8 +97,8 @@ static void exynos4_mct_write(unsigned int value, unsigned long offset) | ||
1792 | writel_relaxed(value, reg_base + offset); | ||
1793 | |||
1794 | if (likely(offset >= EXYNOS4_MCT_L_BASE(0))) { | ||
1795 | - stat_addr = (offset & ~EXYNOS4_MCT_L_MASK) + MCT_L_WSTAT_OFFSET; | ||
1796 | - switch (offset & EXYNOS4_MCT_L_MASK) { | ||
1797 | + stat_addr = (offset & EXYNOS4_MCT_L_MASK) + MCT_L_WSTAT_OFFSET; | ||
1798 | + switch (offset & ~EXYNOS4_MCT_L_MASK) { | ||
1799 | case MCT_L_TCON_OFFSET: | ||
1800 | mask = 1 << 3; /* L_TCON write status */ | ||
1801 | break; | ||
1802 | diff --git a/drivers/crypto/padlock-aes.c b/drivers/crypto/padlock-aes.c | ||
1803 | index 633ba945e153..c178ed8c3908 100644 | ||
1804 | --- a/drivers/crypto/padlock-aes.c | ||
1805 | +++ b/drivers/crypto/padlock-aes.c | ||
1806 | @@ -563,4 +563,4 @@ MODULE_DESCRIPTION("VIA PadLock AES algorithm support"); | ||
1807 | MODULE_LICENSE("GPL"); | ||
1808 | MODULE_AUTHOR("Michal Ludvig"); | ||
1809 | |||
1810 | -MODULE_ALIAS("aes"); | ||
1811 | +MODULE_ALIAS_CRYPTO("aes"); | ||
1812 | diff --git a/drivers/crypto/padlock-sha.c b/drivers/crypto/padlock-sha.c | ||
1813 | index bace885634f2..95f7d27ce491 100644 | ||
1814 | --- a/drivers/crypto/padlock-sha.c | ||
1815 | +++ b/drivers/crypto/padlock-sha.c | ||
1816 | @@ -593,7 +593,7 @@ MODULE_DESCRIPTION("VIA PadLock SHA1/SHA256 algorithms support."); | ||
1817 | MODULE_LICENSE("GPL"); | ||
1818 | MODULE_AUTHOR("Michal Ludvig"); | ||
1819 | |||
1820 | -MODULE_ALIAS("sha1-all"); | ||
1821 | -MODULE_ALIAS("sha256-all"); | ||
1822 | -MODULE_ALIAS("sha1-padlock"); | ||
1823 | -MODULE_ALIAS("sha256-padlock"); | ||
1824 | +MODULE_ALIAS_CRYPTO("sha1-all"); | ||
1825 | +MODULE_ALIAS_CRYPTO("sha256-all"); | ||
1826 | +MODULE_ALIAS_CRYPTO("sha1-padlock"); | ||
1827 | +MODULE_ALIAS_CRYPTO("sha256-padlock"); | ||
1828 | diff --git a/drivers/crypto/qat/qat_common/adf_ctl_drv.c b/drivers/crypto/qat/qat_common/adf_ctl_drv.c | ||
1829 | index 244d73378f0e..7ee93f881db6 100644 | ||
1830 | --- a/drivers/crypto/qat/qat_common/adf_ctl_drv.c | ||
1831 | +++ b/drivers/crypto/qat/qat_common/adf_ctl_drv.c | ||
1832 | @@ -52,6 +52,7 @@ | ||
1833 | #include <linux/pci.h> | ||
1834 | #include <linux/cdev.h> | ||
1835 | #include <linux/uaccess.h> | ||
1836 | +#include <linux/crypto.h> | ||
1837 | |||
1838 | #include "adf_accel_devices.h" | ||
1839 | #include "adf_common_drv.h" | ||
1840 | @@ -487,4 +488,4 @@ module_exit(adf_unregister_ctl_device_driver); | ||
1841 | MODULE_LICENSE("Dual BSD/GPL"); | ||
1842 | MODULE_AUTHOR("Intel"); | ||
1843 | MODULE_DESCRIPTION("Intel(R) QuickAssist Technology"); | ||
1844 | -MODULE_ALIAS("intel_qat"); | ||
1845 | +MODULE_ALIAS_CRYPTO("intel_qat"); | ||
1846 | diff --git a/drivers/crypto/ux500/cryp/cryp_core.c b/drivers/crypto/ux500/cryp/cryp_core.c | ||
1847 | index 92105f3dc8e0..e4cea7c45142 100644 | ||
1848 | --- a/drivers/crypto/ux500/cryp/cryp_core.c | ||
1849 | +++ b/drivers/crypto/ux500/cryp/cryp_core.c | ||
1850 | @@ -1810,7 +1810,7 @@ module_exit(ux500_cryp_mod_fini); | ||
1851 | module_param(cryp_mode, int, 0); | ||
1852 | |||
1853 | MODULE_DESCRIPTION("Driver for ST-Ericsson UX500 CRYP crypto engine."); | ||
1854 | -MODULE_ALIAS("aes-all"); | ||
1855 | -MODULE_ALIAS("des-all"); | ||
1856 | +MODULE_ALIAS_CRYPTO("aes-all"); | ||
1857 | +MODULE_ALIAS_CRYPTO("des-all"); | ||
1858 | |||
1859 | MODULE_LICENSE("GPL"); | ||
1860 | diff --git a/drivers/crypto/ux500/hash/hash_core.c b/drivers/crypto/ux500/hash/hash_core.c | ||
1861 | index 1c73f4fbc252..8e5e0187506f 100644 | ||
1862 | --- a/drivers/crypto/ux500/hash/hash_core.c | ||
1863 | +++ b/drivers/crypto/ux500/hash/hash_core.c | ||
1864 | @@ -1995,7 +1995,7 @@ module_exit(ux500_hash_mod_fini); | ||
1865 | MODULE_DESCRIPTION("Driver for ST-Ericsson UX500 HASH engine."); | ||
1866 | MODULE_LICENSE("GPL"); | ||
1867 | |||
1868 | -MODULE_ALIAS("sha1-all"); | ||
1869 | -MODULE_ALIAS("sha256-all"); | ||
1870 | -MODULE_ALIAS("hmac-sha1-all"); | ||
1871 | -MODULE_ALIAS("hmac-sha256-all"); | ||
1872 | +MODULE_ALIAS_CRYPTO("sha1-all"); | ||
1873 | +MODULE_ALIAS_CRYPTO("sha256-all"); | ||
1874 | +MODULE_ALIAS_CRYPTO("hmac-sha1-all"); | ||
1875 | +MODULE_ALIAS_CRYPTO("hmac-sha256-all"); | ||
1876 | diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c | ||
1877 | index 2de5f5f4ba45..fd76933eed04 100644 | ||
1878 | --- a/drivers/gpu/drm/i915/i915_gem.c | ||
1879 | +++ b/drivers/gpu/drm/i915/i915_gem.c | ||
1880 | @@ -5144,7 +5144,7 @@ static bool mutex_is_locked_by(struct mutex *mutex, struct task_struct *task) | ||
1881 | if (!mutex_is_locked(mutex)) | ||
1882 | return false; | ||
1883 | |||
1884 | -#if defined(CONFIG_SMP) || defined(CONFIG_DEBUG_MUTEXES) | ||
1885 | +#if defined(CONFIG_SMP) && !defined(CONFIG_DEBUG_MUTEXES) | ||
1886 | return mutex->owner == task; | ||
1887 | #else | ||
1888 | /* Since UP may be pre-empted, we cannot assume that we own the lock */ | ||
1889 | diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c | ||
1890 | index cadc3bcf1de2..31b96643b59c 100644 | ||
1891 | --- a/drivers/gpu/drm/i915/intel_display.c | ||
1892 | +++ b/drivers/gpu/drm/i915/intel_display.c | ||
1893 | @@ -10019,7 +10019,7 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc, | ||
1894 | if (obj->tiling_mode != work->old_fb_obj->tiling_mode) | ||
1895 | /* vlv: DISPLAY_FLIP fails to change tiling */ | ||
1896 | ring = NULL; | ||
1897 | - } else if (IS_IVYBRIDGE(dev)) { | ||
1898 | + } else if (IS_IVYBRIDGE(dev) || IS_HASWELL(dev)) { | ||
1899 | ring = &dev_priv->ring[BCS]; | ||
1900 | } else if (INTEL_INFO(dev)->gen >= 7) { | ||
1901 | ring = obj->ring; | ||
1902 | diff --git a/drivers/gpu/drm/radeon/radeon_asic.c b/drivers/gpu/drm/radeon/radeon_asic.c | ||
1903 | index 850de57069be..121aff6a3b41 100644 | ||
1904 | --- a/drivers/gpu/drm/radeon/radeon_asic.c | ||
1905 | +++ b/drivers/gpu/drm/radeon/radeon_asic.c | ||
1906 | @@ -333,6 +333,20 @@ static struct radeon_asic_ring r300_gfx_ring = { | ||
1907 | .set_wptr = &r100_gfx_set_wptr, | ||
1908 | }; | ||
1909 | |||
1910 | +static struct radeon_asic_ring rv515_gfx_ring = { | ||
1911 | + .ib_execute = &r100_ring_ib_execute, | ||
1912 | + .emit_fence = &r300_fence_ring_emit, | ||
1913 | + .emit_semaphore = &r100_semaphore_ring_emit, | ||
1914 | + .cs_parse = &r300_cs_parse, | ||
1915 | + .ring_start = &rv515_ring_start, | ||
1916 | + .ring_test = &r100_ring_test, | ||
1917 | + .ib_test = &r100_ib_test, | ||
1918 | + .is_lockup = &r100_gpu_is_lockup, | ||
1919 | + .get_rptr = &r100_gfx_get_rptr, | ||
1920 | + .get_wptr = &r100_gfx_get_wptr, | ||
1921 | + .set_wptr = &r100_gfx_set_wptr, | ||
1922 | +}; | ||
1923 | + | ||
1924 | static struct radeon_asic r300_asic = { | ||
1925 | .init = &r300_init, | ||
1926 | .fini = &r300_fini, | ||
1927 | @@ -748,7 +762,7 @@ static struct radeon_asic rv515_asic = { | ||
1928 | .set_page = &rv370_pcie_gart_set_page, | ||
1929 | }, | ||
1930 | .ring = { | ||
1931 | - [RADEON_RING_TYPE_GFX_INDEX] = &r300_gfx_ring | ||
1932 | + [RADEON_RING_TYPE_GFX_INDEX] = &rv515_gfx_ring | ||
1933 | }, | ||
1934 | .irq = { | ||
1935 | .set = &rs600_irq_set, | ||
1936 | @@ -814,7 +828,7 @@ static struct radeon_asic r520_asic = { | ||
1937 | .set_page = &rv370_pcie_gart_set_page, | ||
1938 | }, | ||
1939 | .ring = { | ||
1940 | - [RADEON_RING_TYPE_GFX_INDEX] = &r300_gfx_ring | ||
1941 | + [RADEON_RING_TYPE_GFX_INDEX] = &rv515_gfx_ring | ||
1942 | }, | ||
1943 | .irq = { | ||
1944 | .set = &rs600_irq_set, | ||
1945 | diff --git a/drivers/gpu/drm/radeon/radeon_pm.c b/drivers/gpu/drm/radeon/radeon_pm.c | ||
1946 | index 32522cc940a1..f7da8fe96a66 100644 | ||
1947 | --- a/drivers/gpu/drm/radeon/radeon_pm.c | ||
1948 | +++ b/drivers/gpu/drm/radeon/radeon_pm.c | ||
1949 | @@ -1287,8 +1287,39 @@ dpm_failed: | ||
1950 | return ret; | ||
1951 | } | ||
1952 | |||
1953 | +struct radeon_dpm_quirk { | ||
1954 | + u32 chip_vendor; | ||
1955 | + u32 chip_device; | ||
1956 | + u32 subsys_vendor; | ||
1957 | + u32 subsys_device; | ||
1958 | +}; | ||
1959 | + | ||
1960 | +/* cards with dpm stability problems */ | ||
1961 | +static struct radeon_dpm_quirk radeon_dpm_quirk_list[] = { | ||
1962 | + /* TURKS - https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1386534 */ | ||
1963 | + { PCI_VENDOR_ID_ATI, 0x6759, 0x1682, 0x3195 }, | ||
1964 | + /* TURKS - https://bugzilla.kernel.org/show_bug.cgi?id=83731 */ | ||
1965 | + { PCI_VENDOR_ID_ATI, 0x6840, 0x1179, 0xfb81 }, | ||
1966 | + { 0, 0, 0, 0 }, | ||
1967 | +}; | ||
1968 | + | ||
1969 | int radeon_pm_init(struct radeon_device *rdev) | ||
1970 | { | ||
1971 | + struct radeon_dpm_quirk *p = radeon_dpm_quirk_list; | ||
1972 | + bool disable_dpm = false; | ||
1973 | + | ||
1974 | + /* Apply dpm quirks */ | ||
1975 | + while (p && p->chip_device != 0) { | ||
1976 | + if (rdev->pdev->vendor == p->chip_vendor && | ||
1977 | + rdev->pdev->device == p->chip_device && | ||
1978 | + rdev->pdev->subsystem_vendor == p->subsys_vendor && | ||
1979 | + rdev->pdev->subsystem_device == p->subsys_device) { | ||
1980 | + disable_dpm = true; | ||
1981 | + break; | ||
1982 | + } | ||
1983 | + ++p; | ||
1984 | + } | ||
1985 | + | ||
1986 | /* enable dpm on rv6xx+ */ | ||
1987 | switch (rdev->family) { | ||
1988 | case CHIP_RV610: | ||
1989 | @@ -1344,6 +1375,8 @@ int radeon_pm_init(struct radeon_device *rdev) | ||
1990 | (!(rdev->flags & RADEON_IS_IGP)) && | ||
1991 | (!rdev->smc_fw)) | ||
1992 | rdev->pm.pm_method = PM_METHOD_PROFILE; | ||
1993 | + else if (disable_dpm && (radeon_dpm == -1)) | ||
1994 | + rdev->pm.pm_method = PM_METHOD_PROFILE; | ||
1995 | else if (radeon_dpm == 0) | ||
1996 | rdev->pm.pm_method = PM_METHOD_PROFILE; | ||
1997 | else | ||
1998 | diff --git a/drivers/gpu/drm/radeon/si_dpm.c b/drivers/gpu/drm/radeon/si_dpm.c | ||
1999 | index 676e6c2ba90a..2b70d3eca8fd 100644 | ||
2000 | --- a/drivers/gpu/drm/radeon/si_dpm.c | ||
2001 | +++ b/drivers/gpu/drm/radeon/si_dpm.c | ||
2002 | @@ -2908,6 +2908,22 @@ static int si_init_smc_spll_table(struct radeon_device *rdev) | ||
2003 | return ret; | ||
2004 | } | ||
2005 | |||
2006 | +struct si_dpm_quirk { | ||
2007 | + u32 chip_vendor; | ||
2008 | + u32 chip_device; | ||
2009 | + u32 subsys_vendor; | ||
2010 | + u32 subsys_device; | ||
2011 | + u32 max_sclk; | ||
2012 | + u32 max_mclk; | ||
2013 | +}; | ||
2014 | + | ||
2015 | +/* cards with dpm stability problems */ | ||
2016 | +static struct si_dpm_quirk si_dpm_quirk_list[] = { | ||
2017 | + /* PITCAIRN - https://bugs.freedesktop.org/show_bug.cgi?id=76490 */ | ||
2018 | + { PCI_VENDOR_ID_ATI, 0x6810, 0x1462, 0x3036, 0, 120000 }, | ||
2019 | + { 0, 0, 0, 0 }, | ||
2020 | +}; | ||
2021 | + | ||
2022 | static void si_apply_state_adjust_rules(struct radeon_device *rdev, | ||
2023 | struct radeon_ps *rps) | ||
2024 | { | ||
2025 | @@ -2918,7 +2934,22 @@ static void si_apply_state_adjust_rules(struct radeon_device *rdev, | ||
2026 | u32 mclk, sclk; | ||
2027 | u16 vddc, vddci; | ||
2028 | u32 max_sclk_vddc, max_mclk_vddci, max_mclk_vddc; | ||
2029 | + u32 max_sclk = 0, max_mclk = 0; | ||
2030 | int i; | ||
2031 | + struct si_dpm_quirk *p = si_dpm_quirk_list; | ||
2032 | + | ||
2033 | + /* Apply dpm quirks */ | ||
2034 | + while (p && p->chip_device != 0) { | ||
2035 | + if (rdev->pdev->vendor == p->chip_vendor && | ||
2036 | + rdev->pdev->device == p->chip_device && | ||
2037 | + rdev->pdev->subsystem_vendor == p->subsys_vendor && | ||
2038 | + rdev->pdev->subsystem_device == p->subsys_device) { | ||
2039 | + max_sclk = p->max_sclk; | ||
2040 | + max_mclk = p->max_mclk; | ||
2041 | + break; | ||
2042 | + } | ||
2043 | + ++p; | ||
2044 | + } | ||
2045 | |||
2046 | if ((rdev->pm.dpm.new_active_crtc_count > 1) || | ||
2047 | ni_dpm_vblank_too_short(rdev)) | ||
2048 | @@ -2972,6 +3003,14 @@ static void si_apply_state_adjust_rules(struct radeon_device *rdev, | ||
2049 | if (ps->performance_levels[i].mclk > max_mclk_vddc) | ||
2050 | ps->performance_levels[i].mclk = max_mclk_vddc; | ||
2051 | } | ||
2052 | + if (max_mclk) { | ||
2053 | + if (ps->performance_levels[i].mclk > max_mclk) | ||
2054 | + ps->performance_levels[i].mclk = max_mclk; | ||
2055 | + } | ||
2056 | + if (max_sclk) { | ||
2057 | + if (ps->performance_levels[i].sclk > max_sclk) | ||
2058 | + ps->performance_levels[i].sclk = max_sclk; | ||
2059 | + } | ||
2060 | } | ||
2061 | |||
2062 | /* XXX validate the min clocks required for display */ | ||
2063 | diff --git a/drivers/irqchip/irq-atmel-aic-common.c b/drivers/irqchip/irq-atmel-aic-common.c | ||
2064 | index cc4f9d80122e..fa22e5ba3d33 100644 | ||
2065 | --- a/drivers/irqchip/irq-atmel-aic-common.c | ||
2066 | +++ b/drivers/irqchip/irq-atmel-aic-common.c | ||
2067 | @@ -28,7 +28,7 @@ | ||
2068 | #define AT91_AIC_IRQ_MIN_PRIORITY 0 | ||
2069 | #define AT91_AIC_IRQ_MAX_PRIORITY 7 | ||
2070 | |||
2071 | -#define AT91_AIC_SRCTYPE GENMASK(7, 6) | ||
2072 | +#define AT91_AIC_SRCTYPE GENMASK(6, 5) | ||
2073 | #define AT91_AIC_SRCTYPE_LOW (0 << 5) | ||
2074 | #define AT91_AIC_SRCTYPE_FALLING (1 << 5) | ||
2075 | #define AT91_AIC_SRCTYPE_HIGH (2 << 5) | ||
2076 | @@ -74,7 +74,7 @@ int aic_common_set_type(struct irq_data *d, unsigned type, unsigned *val) | ||
2077 | return -EINVAL; | ||
2078 | } | ||
2079 | |||
2080 | - *val &= AT91_AIC_SRCTYPE; | ||
2081 | + *val &= ~AT91_AIC_SRCTYPE; | ||
2082 | *val |= aic_type; | ||
2083 | |||
2084 | return 0; | ||
2085 | diff --git a/drivers/irqchip/irq-omap-intc.c b/drivers/irqchip/irq-omap-intc.c | ||
2086 | index 28718d3e8281..c03f140acbae 100644 | ||
2087 | --- a/drivers/irqchip/irq-omap-intc.c | ||
2088 | +++ b/drivers/irqchip/irq-omap-intc.c | ||
2089 | @@ -263,7 +263,7 @@ static int __init omap_init_irq_of(struct device_node *node) | ||
2090 | return ret; | ||
2091 | } | ||
2092 | |||
2093 | -static int __init omap_init_irq_legacy(u32 base) | ||
2094 | +static int __init omap_init_irq_legacy(u32 base, struct device_node *node) | ||
2095 | { | ||
2096 | int j, irq_base; | ||
2097 | |||
2098 | @@ -277,7 +277,7 @@ static int __init omap_init_irq_legacy(u32 base) | ||
2099 | irq_base = 0; | ||
2100 | } | ||
2101 | |||
2102 | - domain = irq_domain_add_legacy(NULL, omap_nr_irqs, irq_base, 0, | ||
2103 | + domain = irq_domain_add_legacy(node, omap_nr_irqs, irq_base, 0, | ||
2104 | &irq_domain_simple_ops, NULL); | ||
2105 | |||
2106 | omap_irq_soft_reset(); | ||
2107 | @@ -301,10 +301,26 @@ static int __init omap_init_irq(u32 base, struct device_node *node) | ||
2108 | { | ||
2109 | int ret; | ||
2110 | |||
2111 | - if (node) | ||
2112 | + /* | ||
2113 | + * FIXME legacy OMAP DMA driver sitting under arch/arm/plat-omap/dma.c | ||
2114 | + * depends is still not ready for linear IRQ domains; because of that | ||
2115 | + * we need to temporarily "blacklist" OMAP2 and OMAP3 devices from using | ||
2116 | + * linear IRQ Domain until that driver is finally fixed. | ||
2117 | + */ | ||
2118 | + if (of_device_is_compatible(node, "ti,omap2-intc") || | ||
2119 | + of_device_is_compatible(node, "ti,omap3-intc")) { | ||
2120 | + struct resource res; | ||
2121 | + | ||
2122 | + if (of_address_to_resource(node, 0, &res)) | ||
2123 | + return -ENOMEM; | ||
2124 | + | ||
2125 | + base = res.start; | ||
2126 | + ret = omap_init_irq_legacy(base, node); | ||
2127 | + } else if (node) { | ||
2128 | ret = omap_init_irq_of(node); | ||
2129 | - else | ||
2130 | - ret = omap_init_irq_legacy(base); | ||
2131 | + } else { | ||
2132 | + ret = omap_init_irq_legacy(base, NULL); | ||
2133 | + } | ||
2134 | |||
2135 | if (ret == 0) | ||
2136 | omap_irq_enable_protection(); | ||
2137 | diff --git a/drivers/md/dm-cache-metadata.c b/drivers/md/dm-cache-metadata.c | ||
2138 | index 06709257adde..97e3a6c07e31 100644 | ||
2139 | --- a/drivers/md/dm-cache-metadata.c | ||
2140 | +++ b/drivers/md/dm-cache-metadata.c | ||
2141 | @@ -94,6 +94,9 @@ struct cache_disk_superblock { | ||
2142 | } __packed; | ||
2143 | |||
2144 | struct dm_cache_metadata { | ||
2145 | + atomic_t ref_count; | ||
2146 | + struct list_head list; | ||
2147 | + | ||
2148 | struct block_device *bdev; | ||
2149 | struct dm_block_manager *bm; | ||
2150 | struct dm_space_map *metadata_sm; | ||
2151 | @@ -669,10 +672,10 @@ static void unpack_value(__le64 value_le, dm_oblock_t *block, unsigned *flags) | ||
2152 | |||
2153 | /*----------------------------------------------------------------*/ | ||
2154 | |||
2155 | -struct dm_cache_metadata *dm_cache_metadata_open(struct block_device *bdev, | ||
2156 | - sector_t data_block_size, | ||
2157 | - bool may_format_device, | ||
2158 | - size_t policy_hint_size) | ||
2159 | +static struct dm_cache_metadata *metadata_open(struct block_device *bdev, | ||
2160 | + sector_t data_block_size, | ||
2161 | + bool may_format_device, | ||
2162 | + size_t policy_hint_size) | ||
2163 | { | ||
2164 | int r; | ||
2165 | struct dm_cache_metadata *cmd; | ||
2166 | @@ -683,6 +686,7 @@ struct dm_cache_metadata *dm_cache_metadata_open(struct block_device *bdev, | ||
2167 | return NULL; | ||
2168 | } | ||
2169 | |||
2170 | + atomic_set(&cmd->ref_count, 1); | ||
2171 | init_rwsem(&cmd->root_lock); | ||
2172 | cmd->bdev = bdev; | ||
2173 | cmd->data_block_size = data_block_size; | ||
2174 | @@ -705,10 +709,95 @@ struct dm_cache_metadata *dm_cache_metadata_open(struct block_device *bdev, | ||
2175 | return cmd; | ||
2176 | } | ||
2177 | |||
2178 | +/* | ||
2179 | + * We keep a little list of ref counted metadata objects to prevent two | ||
2180 | + * different target instances creating separate bufio instances. This is | ||
2181 | + * an issue if a table is reloaded before the suspend. | ||
2182 | + */ | ||
2183 | +static DEFINE_MUTEX(table_lock); | ||
2184 | +static LIST_HEAD(table); | ||
2185 | + | ||
2186 | +static struct dm_cache_metadata *lookup(struct block_device *bdev) | ||
2187 | +{ | ||
2188 | + struct dm_cache_metadata *cmd; | ||
2189 | + | ||
2190 | + list_for_each_entry(cmd, &table, list) | ||
2191 | + if (cmd->bdev == bdev) { | ||
2192 | + atomic_inc(&cmd->ref_count); | ||
2193 | + return cmd; | ||
2194 | + } | ||
2195 | + | ||
2196 | + return NULL; | ||
2197 | +} | ||
2198 | + | ||
2199 | +static struct dm_cache_metadata *lookup_or_open(struct block_device *bdev, | ||
2200 | + sector_t data_block_size, | ||
2201 | + bool may_format_device, | ||
2202 | + size_t policy_hint_size) | ||
2203 | +{ | ||
2204 | + struct dm_cache_metadata *cmd, *cmd2; | ||
2205 | + | ||
2206 | + mutex_lock(&table_lock); | ||
2207 | + cmd = lookup(bdev); | ||
2208 | + mutex_unlock(&table_lock); | ||
2209 | + | ||
2210 | + if (cmd) | ||
2211 | + return cmd; | ||
2212 | + | ||
2213 | + cmd = metadata_open(bdev, data_block_size, may_format_device, policy_hint_size); | ||
2214 | + if (cmd) { | ||
2215 | + mutex_lock(&table_lock); | ||
2216 | + cmd2 = lookup(bdev); | ||
2217 | + if (cmd2) { | ||
2218 | + mutex_unlock(&table_lock); | ||
2219 | + __destroy_persistent_data_objects(cmd); | ||
2220 | + kfree(cmd); | ||
2221 | + return cmd2; | ||
2222 | + } | ||
2223 | + list_add(&cmd->list, &table); | ||
2224 | + mutex_unlock(&table_lock); | ||
2225 | + } | ||
2226 | + | ||
2227 | + return cmd; | ||
2228 | +} | ||
2229 | + | ||
2230 | +static bool same_params(struct dm_cache_metadata *cmd, sector_t data_block_size) | ||
2231 | +{ | ||
2232 | + if (cmd->data_block_size != data_block_size) { | ||
2233 | + DMERR("data_block_size (%llu) different from that in metadata (%llu)\n", | ||
2234 | + (unsigned long long) data_block_size, | ||
2235 | + (unsigned long long) cmd->data_block_size); | ||
2236 | + return false; | ||
2237 | + } | ||
2238 | + | ||
2239 | + return true; | ||
2240 | +} | ||
2241 | + | ||
2242 | +struct dm_cache_metadata *dm_cache_metadata_open(struct block_device *bdev, | ||
2243 | + sector_t data_block_size, | ||
2244 | + bool may_format_device, | ||
2245 | + size_t policy_hint_size) | ||
2246 | +{ | ||
2247 | + struct dm_cache_metadata *cmd = lookup_or_open(bdev, data_block_size, | ||
2248 | + may_format_device, policy_hint_size); | ||
2249 | + if (cmd && !same_params(cmd, data_block_size)) { | ||
2250 | + dm_cache_metadata_close(cmd); | ||
2251 | + return NULL; | ||
2252 | + } | ||
2253 | + | ||
2254 | + return cmd; | ||
2255 | +} | ||
2256 | + | ||
2257 | void dm_cache_metadata_close(struct dm_cache_metadata *cmd) | ||
2258 | { | ||
2259 | - __destroy_persistent_data_objects(cmd); | ||
2260 | - kfree(cmd); | ||
2261 | + if (atomic_dec_and_test(&cmd->ref_count)) { | ||
2262 | + mutex_lock(&table_lock); | ||
2263 | + list_del(&cmd->list); | ||
2264 | + mutex_unlock(&table_lock); | ||
2265 | + | ||
2266 | + __destroy_persistent_data_objects(cmd); | ||
2267 | + kfree(cmd); | ||
2268 | + } | ||
2269 | } | ||
2270 | |||
2271 | /* | ||
2272 | diff --git a/drivers/md/dm-cache-target.c b/drivers/md/dm-cache-target.c | ||
2273 | index da496cfb458d..3baed67cf26f 100644 | ||
2274 | --- a/drivers/md/dm-cache-target.c | ||
2275 | +++ b/drivers/md/dm-cache-target.c | ||
2276 | @@ -222,7 +222,13 @@ struct cache { | ||
2277 | struct list_head need_commit_migrations; | ||
2278 | sector_t migration_threshold; | ||
2279 | wait_queue_head_t migration_wait; | ||
2280 | - atomic_t nr_migrations; | ||
2281 | + atomic_t nr_allocated_migrations; | ||
2282 | + | ||
2283 | + /* | ||
2284 | + * The number of in flight migrations that are performing | ||
2285 | + * background io. eg, promotion, writeback. | ||
2286 | + */ | ||
2287 | + atomic_t nr_io_migrations; | ||
2288 | |||
2289 | wait_queue_head_t quiescing_wait; | ||
2290 | atomic_t quiescing; | ||
2291 | @@ -258,7 +264,6 @@ struct cache { | ||
2292 | struct dm_deferred_set *all_io_ds; | ||
2293 | |||
2294 | mempool_t *migration_pool; | ||
2295 | - struct dm_cache_migration *next_migration; | ||
2296 | |||
2297 | struct dm_cache_policy *policy; | ||
2298 | unsigned policy_nr_args; | ||
2299 | @@ -349,10 +354,31 @@ static void free_prison_cell(struct cache *cache, struct dm_bio_prison_cell *cel | ||
2300 | dm_bio_prison_free_cell(cache->prison, cell); | ||
2301 | } | ||
2302 | |||
2303 | +static struct dm_cache_migration *alloc_migration(struct cache *cache) | ||
2304 | +{ | ||
2305 | + struct dm_cache_migration *mg; | ||
2306 | + | ||
2307 | + mg = mempool_alloc(cache->migration_pool, GFP_NOWAIT); | ||
2308 | + if (mg) { | ||
2309 | + mg->cache = cache; | ||
2310 | + atomic_inc(&mg->cache->nr_allocated_migrations); | ||
2311 | + } | ||
2312 | + | ||
2313 | + return mg; | ||
2314 | +} | ||
2315 | + | ||
2316 | +static void free_migration(struct dm_cache_migration *mg) | ||
2317 | +{ | ||
2318 | + if (atomic_dec_and_test(&mg->cache->nr_allocated_migrations)) | ||
2319 | + wake_up(&mg->cache->migration_wait); | ||
2320 | + | ||
2321 | + mempool_free(mg, mg->cache->migration_pool); | ||
2322 | +} | ||
2323 | + | ||
2324 | static int prealloc_data_structs(struct cache *cache, struct prealloc *p) | ||
2325 | { | ||
2326 | if (!p->mg) { | ||
2327 | - p->mg = mempool_alloc(cache->migration_pool, GFP_NOWAIT); | ||
2328 | + p->mg = alloc_migration(cache); | ||
2329 | if (!p->mg) | ||
2330 | return -ENOMEM; | ||
2331 | } | ||
2332 | @@ -381,7 +407,7 @@ static void prealloc_free_structs(struct cache *cache, struct prealloc *p) | ||
2333 | free_prison_cell(cache, p->cell1); | ||
2334 | |||
2335 | if (p->mg) | ||
2336 | - mempool_free(p->mg, cache->migration_pool); | ||
2337 | + free_migration(p->mg); | ||
2338 | } | ||
2339 | |||
2340 | static struct dm_cache_migration *prealloc_get_migration(struct prealloc *p) | ||
2341 | @@ -817,24 +843,14 @@ static void remap_to_origin_then_cache(struct cache *cache, struct bio *bio, | ||
2342 | * Migration covers moving data from the origin device to the cache, or | ||
2343 | * vice versa. | ||
2344 | *--------------------------------------------------------------*/ | ||
2345 | -static void free_migration(struct dm_cache_migration *mg) | ||
2346 | -{ | ||
2347 | - mempool_free(mg, mg->cache->migration_pool); | ||
2348 | -} | ||
2349 | - | ||
2350 | -static void inc_nr_migrations(struct cache *cache) | ||
2351 | +static void inc_io_migrations(struct cache *cache) | ||
2352 | { | ||
2353 | - atomic_inc(&cache->nr_migrations); | ||
2354 | + atomic_inc(&cache->nr_io_migrations); | ||
2355 | } | ||
2356 | |||
2357 | -static void dec_nr_migrations(struct cache *cache) | ||
2358 | +static void dec_io_migrations(struct cache *cache) | ||
2359 | { | ||
2360 | - atomic_dec(&cache->nr_migrations); | ||
2361 | - | ||
2362 | - /* | ||
2363 | - * Wake the worker in case we're suspending the target. | ||
2364 | - */ | ||
2365 | - wake_up(&cache->migration_wait); | ||
2366 | + atomic_dec(&cache->nr_io_migrations); | ||
2367 | } | ||
2368 | |||
2369 | static void __cell_defer(struct cache *cache, struct dm_bio_prison_cell *cell, | ||
2370 | @@ -857,11 +873,10 @@ static void cell_defer(struct cache *cache, struct dm_bio_prison_cell *cell, | ||
2371 | wake_worker(cache); | ||
2372 | } | ||
2373 | |||
2374 | -static void cleanup_migration(struct dm_cache_migration *mg) | ||
2375 | +static void free_io_migration(struct dm_cache_migration *mg) | ||
2376 | { | ||
2377 | - struct cache *cache = mg->cache; | ||
2378 | + dec_io_migrations(mg->cache); | ||
2379 | free_migration(mg); | ||
2380 | - dec_nr_migrations(cache); | ||
2381 | } | ||
2382 | |||
2383 | static void migration_failure(struct dm_cache_migration *mg) | ||
2384 | @@ -886,7 +901,7 @@ static void migration_failure(struct dm_cache_migration *mg) | ||
2385 | cell_defer(cache, mg->new_ocell, true); | ||
2386 | } | ||
2387 | |||
2388 | - cleanup_migration(mg); | ||
2389 | + free_io_migration(mg); | ||
2390 | } | ||
2391 | |||
2392 | static void migration_success_pre_commit(struct dm_cache_migration *mg) | ||
2393 | @@ -897,7 +912,7 @@ static void migration_success_pre_commit(struct dm_cache_migration *mg) | ||
2394 | if (mg->writeback) { | ||
2395 | clear_dirty(cache, mg->old_oblock, mg->cblock); | ||
2396 | cell_defer(cache, mg->old_ocell, false); | ||
2397 | - cleanup_migration(mg); | ||
2398 | + free_io_migration(mg); | ||
2399 | return; | ||
2400 | |||
2401 | } else if (mg->demote) { | ||
2402 | @@ -907,14 +922,14 @@ static void migration_success_pre_commit(struct dm_cache_migration *mg) | ||
2403 | mg->old_oblock); | ||
2404 | if (mg->promote) | ||
2405 | cell_defer(cache, mg->new_ocell, true); | ||
2406 | - cleanup_migration(mg); | ||
2407 | + free_io_migration(mg); | ||
2408 | return; | ||
2409 | } | ||
2410 | } else { | ||
2411 | if (dm_cache_insert_mapping(cache->cmd, mg->cblock, mg->new_oblock)) { | ||
2412 | DMWARN_LIMIT("promotion failed; couldn't update on disk metadata"); | ||
2413 | policy_remove_mapping(cache->policy, mg->new_oblock); | ||
2414 | - cleanup_migration(mg); | ||
2415 | + free_io_migration(mg); | ||
2416 | return; | ||
2417 | } | ||
2418 | } | ||
2419 | @@ -947,7 +962,7 @@ static void migration_success_post_commit(struct dm_cache_migration *mg) | ||
2420 | } else { | ||
2421 | if (mg->invalidate) | ||
2422 | policy_remove_mapping(cache->policy, mg->old_oblock); | ||
2423 | - cleanup_migration(mg); | ||
2424 | + free_io_migration(mg); | ||
2425 | } | ||
2426 | |||
2427 | } else { | ||
2428 | @@ -962,7 +977,7 @@ static void migration_success_post_commit(struct dm_cache_migration *mg) | ||
2429 | bio_endio(mg->new_ocell->holder, 0); | ||
2430 | cell_defer(cache, mg->new_ocell, false); | ||
2431 | } | ||
2432 | - cleanup_migration(mg); | ||
2433 | + free_io_migration(mg); | ||
2434 | } | ||
2435 | } | ||
2436 | |||
2437 | @@ -1178,7 +1193,7 @@ static void promote(struct cache *cache, struct prealloc *structs, | ||
2438 | mg->new_ocell = cell; | ||
2439 | mg->start_jiffies = jiffies; | ||
2440 | |||
2441 | - inc_nr_migrations(cache); | ||
2442 | + inc_io_migrations(cache); | ||
2443 | quiesce_migration(mg); | ||
2444 | } | ||
2445 | |||
2446 | @@ -1201,7 +1216,7 @@ static void writeback(struct cache *cache, struct prealloc *structs, | ||
2447 | mg->new_ocell = NULL; | ||
2448 | mg->start_jiffies = jiffies; | ||
2449 | |||
2450 | - inc_nr_migrations(cache); | ||
2451 | + inc_io_migrations(cache); | ||
2452 | quiesce_migration(mg); | ||
2453 | } | ||
2454 | |||
2455 | @@ -1227,7 +1242,7 @@ static void demote_then_promote(struct cache *cache, struct prealloc *structs, | ||
2456 | mg->new_ocell = new_ocell; | ||
2457 | mg->start_jiffies = jiffies; | ||
2458 | |||
2459 | - inc_nr_migrations(cache); | ||
2460 | + inc_io_migrations(cache); | ||
2461 | quiesce_migration(mg); | ||
2462 | } | ||
2463 | |||
2464 | @@ -1254,7 +1269,7 @@ static void invalidate(struct cache *cache, struct prealloc *structs, | ||
2465 | mg->new_ocell = NULL; | ||
2466 | mg->start_jiffies = jiffies; | ||
2467 | |||
2468 | - inc_nr_migrations(cache); | ||
2469 | + inc_io_migrations(cache); | ||
2470 | quiesce_migration(mg); | ||
2471 | } | ||
2472 | |||
2473 | @@ -1320,7 +1335,7 @@ static void process_discard_bio(struct cache *cache, struct bio *bio) | ||
2474 | |||
2475 | static bool spare_migration_bandwidth(struct cache *cache) | ||
2476 | { | ||
2477 | - sector_t current_volume = (atomic_read(&cache->nr_migrations) + 1) * | ||
2478 | + sector_t current_volume = (atomic_read(&cache->nr_io_migrations) + 1) * | ||
2479 | cache->sectors_per_block; | ||
2480 | return current_volume < cache->migration_threshold; | ||
2481 | } | ||
2482 | @@ -1670,7 +1685,7 @@ static void stop_quiescing(struct cache *cache) | ||
2483 | |||
2484 | static void wait_for_migrations(struct cache *cache) | ||
2485 | { | ||
2486 | - wait_event(cache->migration_wait, !atomic_read(&cache->nr_migrations)); | ||
2487 | + wait_event(cache->migration_wait, !atomic_read(&cache->nr_allocated_migrations)); | ||
2488 | } | ||
2489 | |||
2490 | static void stop_worker(struct cache *cache) | ||
2491 | @@ -1782,9 +1797,6 @@ static void destroy(struct cache *cache) | ||
2492 | { | ||
2493 | unsigned i; | ||
2494 | |||
2495 | - if (cache->next_migration) | ||
2496 | - mempool_free(cache->next_migration, cache->migration_pool); | ||
2497 | - | ||
2498 | if (cache->migration_pool) | ||
2499 | mempool_destroy(cache->migration_pool); | ||
2500 | |||
2501 | @@ -2292,7 +2304,8 @@ static int cache_create(struct cache_args *ca, struct cache **result) | ||
2502 | INIT_LIST_HEAD(&cache->quiesced_migrations); | ||
2503 | INIT_LIST_HEAD(&cache->completed_migrations); | ||
2504 | INIT_LIST_HEAD(&cache->need_commit_migrations); | ||
2505 | - atomic_set(&cache->nr_migrations, 0); | ||
2506 | + atomic_set(&cache->nr_allocated_migrations, 0); | ||
2507 | + atomic_set(&cache->nr_io_migrations, 0); | ||
2508 | init_waitqueue_head(&cache->migration_wait); | ||
2509 | |||
2510 | init_waitqueue_head(&cache->quiescing_wait); | ||
2511 | @@ -2351,8 +2364,6 @@ static int cache_create(struct cache_args *ca, struct cache **result) | ||
2512 | goto bad; | ||
2513 | } | ||
2514 | |||
2515 | - cache->next_migration = NULL; | ||
2516 | - | ||
2517 | cache->need_tick_bio = true; | ||
2518 | cache->sized = false; | ||
2519 | cache->invalidate = false; | ||
2520 | diff --git a/drivers/media/pci/cx23885/cx23885-cards.c b/drivers/media/pci/cx23885/cx23885-cards.c | ||
2521 | index 88c257d1161b..377818887ed2 100644 | ||
2522 | --- a/drivers/media/pci/cx23885/cx23885-cards.c | ||
2523 | +++ b/drivers/media/pci/cx23885/cx23885-cards.c | ||
2524 | @@ -614,7 +614,7 @@ struct cx23885_board cx23885_boards[] = { | ||
2525 | .portb = CX23885_MPEG_DVB, | ||
2526 | }, | ||
2527 | [CX23885_BOARD_HAUPPAUGE_HVR4400] = { | ||
2528 | - .name = "Hauppauge WinTV-HVR4400", | ||
2529 | + .name = "Hauppauge WinTV-HVR4400/HVR5500", | ||
2530 | .porta = CX23885_ANALOG_VIDEO, | ||
2531 | .portb = CX23885_MPEG_DVB, | ||
2532 | .portc = CX23885_MPEG_DVB, | ||
2533 | @@ -622,6 +622,10 @@ struct cx23885_board cx23885_boards[] = { | ||
2534 | .tuner_addr = 0x60, /* 0xc0 >> 1 */ | ||
2535 | .tuner_bus = 1, | ||
2536 | }, | ||
2537 | + [CX23885_BOARD_HAUPPAUGE_STARBURST] = { | ||
2538 | + .name = "Hauppauge WinTV Starburst", | ||
2539 | + .portb = CX23885_MPEG_DVB, | ||
2540 | + }, | ||
2541 | [CX23885_BOARD_AVERMEDIA_HC81R] = { | ||
2542 | .name = "AVerTV Hybrid Express Slim HC81R", | ||
2543 | .tuner_type = TUNER_XC2028, | ||
2544 | @@ -910,19 +914,19 @@ struct cx23885_subid cx23885_subids[] = { | ||
2545 | }, { | ||
2546 | .subvendor = 0x0070, | ||
2547 | .subdevice = 0xc108, | ||
2548 | - .card = CX23885_BOARD_HAUPPAUGE_HVR4400, | ||
2549 | + .card = CX23885_BOARD_HAUPPAUGE_HVR4400, /* Hauppauge WinTV HVR-4400 (Model 121xxx, Hybrid DVB-T/S2, IR) */ | ||
2550 | }, { | ||
2551 | .subvendor = 0x0070, | ||
2552 | .subdevice = 0xc138, | ||
2553 | - .card = CX23885_BOARD_HAUPPAUGE_HVR4400, | ||
2554 | + .card = CX23885_BOARD_HAUPPAUGE_HVR4400, /* Hauppauge WinTV HVR-5500 (Model 121xxx, Hybrid DVB-T/C/S2, IR) */ | ||
2555 | }, { | ||
2556 | .subvendor = 0x0070, | ||
2557 | .subdevice = 0xc12a, | ||
2558 | - .card = CX23885_BOARD_HAUPPAUGE_HVR4400, | ||
2559 | + .card = CX23885_BOARD_HAUPPAUGE_STARBURST, /* Hauppauge WinTV Starburst (Model 121x00, DVB-S2, IR) */ | ||
2560 | }, { | ||
2561 | .subvendor = 0x0070, | ||
2562 | .subdevice = 0xc1f8, | ||
2563 | - .card = CX23885_BOARD_HAUPPAUGE_HVR4400, | ||
2564 | + .card = CX23885_BOARD_HAUPPAUGE_HVR4400, /* Hauppauge WinTV HVR-5500 (Model 121xxx, Hybrid DVB-T/C/S2, IR) */ | ||
2565 | }, { | ||
2566 | .subvendor = 0x1461, | ||
2567 | .subdevice = 0xd939, | ||
2568 | @@ -1495,8 +1499,9 @@ void cx23885_gpio_setup(struct cx23885_dev *dev) | ||
2569 | cx_write(GPIO_ISM, 0x00000000);/* INTERRUPTS active low*/ | ||
2570 | break; | ||
2571 | case CX23885_BOARD_HAUPPAUGE_HVR4400: | ||
2572 | + case CX23885_BOARD_HAUPPAUGE_STARBURST: | ||
2573 | /* GPIO-8 tda10071 demod reset */ | ||
2574 | - /* GPIO-9 si2165 demod reset */ | ||
2575 | + /* GPIO-9 si2165 demod reset (only HVR4400/HVR5500)*/ | ||
2576 | |||
2577 | /* Put the parts into reset and back */ | ||
2578 | cx23885_gpio_enable(dev, GPIO_8 | GPIO_9, 1); | ||
2579 | @@ -1760,6 +1765,7 @@ void cx23885_card_setup(struct cx23885_dev *dev) | ||
2580 | case CX23885_BOARD_HAUPPAUGE_HVR1850: | ||
2581 | case CX23885_BOARD_HAUPPAUGE_HVR1290: | ||
2582 | case CX23885_BOARD_HAUPPAUGE_HVR4400: | ||
2583 | + case CX23885_BOARD_HAUPPAUGE_STARBURST: | ||
2584 | case CX23885_BOARD_HAUPPAUGE_IMPACTVCBE: | ||
2585 | if (dev->i2c_bus[0].i2c_rc == 0) | ||
2586 | hauppauge_eeprom(dev, eeprom+0xc0); | ||
2587 | @@ -1864,6 +1870,11 @@ void cx23885_card_setup(struct cx23885_dev *dev) | ||
2588 | ts2->ts_clk_en_val = 0x1; /* Enable TS_CLK */ | ||
2589 | ts2->src_sel_val = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO; | ||
2590 | break; | ||
2591 | + case CX23885_BOARD_HAUPPAUGE_STARBURST: | ||
2592 | + ts1->gen_ctrl_val = 0xc; /* Serial bus + punctured clock */ | ||
2593 | + ts1->ts_clk_en_val = 0x1; /* Enable TS_CLK */ | ||
2594 | + ts1->src_sel_val = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO; | ||
2595 | + break; | ||
2596 | case CX23885_BOARD_DVBSKY_T9580: | ||
2597 | ts1->gen_ctrl_val = 0x5; /* Parallel */ | ||
2598 | ts1->ts_clk_en_val = 0x1; /* Enable TS_CLK */ | ||
2599 | diff --git a/drivers/media/pci/cx23885/cx23885-dvb.c b/drivers/media/pci/cx23885/cx23885-dvb.c | ||
2600 | index 4cb90317ff45..a8d207929295 100644 | ||
2601 | --- a/drivers/media/pci/cx23885/cx23885-dvb.c | ||
2602 | +++ b/drivers/media/pci/cx23885/cx23885-dvb.c | ||
2603 | @@ -1586,6 +1586,17 @@ static int dvb_register(struct cx23885_tsport *port) | ||
2604 | break; | ||
2605 | } | ||
2606 | break; | ||
2607 | + case CX23885_BOARD_HAUPPAUGE_STARBURST: | ||
2608 | + i2c_bus = &dev->i2c_bus[0]; | ||
2609 | + fe0->dvb.frontend = dvb_attach(tda10071_attach, | ||
2610 | + &hauppauge_tda10071_config, | ||
2611 | + &i2c_bus->i2c_adap); | ||
2612 | + if (fe0->dvb.frontend != NULL) { | ||
2613 | + dvb_attach(a8293_attach, fe0->dvb.frontend, | ||
2614 | + &i2c_bus->i2c_adap, | ||
2615 | + &hauppauge_a8293_config); | ||
2616 | + } | ||
2617 | + break; | ||
2618 | case CX23885_BOARD_DVBSKY_T9580: | ||
2619 | i2c_bus = &dev->i2c_bus[0]; | ||
2620 | i2c_bus2 = &dev->i2c_bus[1]; | ||
2621 | diff --git a/drivers/media/pci/cx23885/cx23885.h b/drivers/media/pci/cx23885/cx23885.h | ||
2622 | index 6c35e6115969..a33bead82ecc 100644 | ||
2623 | --- a/drivers/media/pci/cx23885/cx23885.h | ||
2624 | +++ b/drivers/media/pci/cx23885/cx23885.h | ||
2625 | @@ -93,6 +93,7 @@ | ||
2626 | #define CX23885_BOARD_HAUPPAUGE_IMPACTVCBE 43 | ||
2627 | #define CX23885_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL_EXP2 44 | ||
2628 | #define CX23885_BOARD_DVBSKY_T9580 45 | ||
2629 | +#define CX23885_BOARD_HAUPPAUGE_STARBURST 52 | ||
2630 | |||
2631 | #define GPIO_0 0x00000001 | ||
2632 | #define GPIO_1 0x00000002 | ||
2633 | diff --git a/drivers/media/v4l2-core/videobuf2-core.c b/drivers/media/v4l2-core/videobuf2-core.c | ||
2634 | index f2e43de3dd87..ea36447c74f9 100644 | ||
2635 | --- a/drivers/media/v4l2-core/videobuf2-core.c | ||
2636 | +++ b/drivers/media/v4l2-core/videobuf2-core.c | ||
2637 | @@ -3142,27 +3142,26 @@ static int vb2_thread(void *data) | ||
2638 | prequeue--; | ||
2639 | } else { | ||
2640 | call_void_qop(q, wait_finish, q); | ||
2641 | - ret = vb2_internal_dqbuf(q, &fileio->b, 0); | ||
2642 | + if (!threadio->stop) | ||
2643 | + ret = vb2_internal_dqbuf(q, &fileio->b, 0); | ||
2644 | call_void_qop(q, wait_prepare, q); | ||
2645 | dprintk(5, "file io: vb2_dqbuf result: %d\n", ret); | ||
2646 | } | ||
2647 | - if (threadio->stop) | ||
2648 | - break; | ||
2649 | - if (ret) | ||
2650 | + if (ret || threadio->stop) | ||
2651 | break; | ||
2652 | try_to_freeze(); | ||
2653 | |||
2654 | vb = q->bufs[fileio->b.index]; | ||
2655 | if (!(fileio->b.flags & V4L2_BUF_FLAG_ERROR)) | ||
2656 | - ret = threadio->fnc(vb, threadio->priv); | ||
2657 | - if (ret) | ||
2658 | - break; | ||
2659 | + if (threadio->fnc(vb, threadio->priv)) | ||
2660 | + break; | ||
2661 | call_void_qop(q, wait_finish, q); | ||
2662 | if (set_timestamp) | ||
2663 | v4l2_get_timestamp(&fileio->b.timestamp); | ||
2664 | - ret = vb2_internal_qbuf(q, &fileio->b); | ||
2665 | + if (!threadio->stop) | ||
2666 | + ret = vb2_internal_qbuf(q, &fileio->b); | ||
2667 | call_void_qop(q, wait_prepare, q); | ||
2668 | - if (ret) | ||
2669 | + if (ret || threadio->stop) | ||
2670 | break; | ||
2671 | } | ||
2672 | |||
2673 | @@ -3231,11 +3230,11 @@ int vb2_thread_stop(struct vb2_queue *q) | ||
2674 | threadio->stop = true; | ||
2675 | vb2_internal_streamoff(q, q->type); | ||
2676 | call_void_qop(q, wait_prepare, q); | ||
2677 | + err = kthread_stop(threadio->thread); | ||
2678 | q->fileio = NULL; | ||
2679 | fileio->req.count = 0; | ||
2680 | vb2_reqbufs(q, &fileio->req); | ||
2681 | kfree(fileio); | ||
2682 | - err = kthread_stop(threadio->thread); | ||
2683 | threadio->thread = NULL; | ||
2684 | kfree(threadio); | ||
2685 | q->fileio = NULL; | ||
2686 | diff --git a/drivers/mfd/rtsx_usb.c b/drivers/mfd/rtsx_usb.c | ||
2687 | index 9cf98d142d9a..c2474cf6bfef 100644 | ||
2688 | --- a/drivers/mfd/rtsx_usb.c | ||
2689 | +++ b/drivers/mfd/rtsx_usb.c | ||
2690 | @@ -681,21 +681,9 @@ static void rtsx_usb_disconnect(struct usb_interface *intf) | ||
2691 | #ifdef CONFIG_PM | ||
2692 | static int rtsx_usb_suspend(struct usb_interface *intf, pm_message_t message) | ||
2693 | { | ||
2694 | - struct rtsx_ucr *ucr = | ||
2695 | - (struct rtsx_ucr *)usb_get_intfdata(intf); | ||
2696 | - | ||
2697 | dev_dbg(&intf->dev, "%s called with pm message 0x%04x\n", | ||
2698 | __func__, message.event); | ||
2699 | |||
2700 | - /* | ||
2701 | - * Call to make sure LED is off during suspend to save more power. | ||
2702 | - * It is NOT a permanent state and could be turned on anytime later. | ||
2703 | - * Thus no need to call turn_on when resunming. | ||
2704 | - */ | ||
2705 | - mutex_lock(&ucr->dev_mutex); | ||
2706 | - rtsx_usb_turn_off_led(ucr); | ||
2707 | - mutex_unlock(&ucr->dev_mutex); | ||
2708 | - | ||
2709 | return 0; | ||
2710 | } | ||
2711 | |||
2712 | diff --git a/drivers/mfd/tps65218.c b/drivers/mfd/tps65218.c | ||
2713 | index 0d256cb002eb..d6b764349f9d 100644 | ||
2714 | --- a/drivers/mfd/tps65218.c | ||
2715 | +++ b/drivers/mfd/tps65218.c | ||
2716 | @@ -125,10 +125,21 @@ int tps65218_clear_bits(struct tps65218 *tps, unsigned int reg, | ||
2717 | } | ||
2718 | EXPORT_SYMBOL_GPL(tps65218_clear_bits); | ||
2719 | |||
2720 | +static const struct regmap_range tps65218_yes_ranges[] = { | ||
2721 | + regmap_reg_range(TPS65218_REG_INT1, TPS65218_REG_INT2), | ||
2722 | + regmap_reg_range(TPS65218_REG_STATUS, TPS65218_REG_STATUS), | ||
2723 | +}; | ||
2724 | + | ||
2725 | +static const struct regmap_access_table tps65218_volatile_table = { | ||
2726 | + .yes_ranges = tps65218_yes_ranges, | ||
2727 | + .n_yes_ranges = ARRAY_SIZE(tps65218_yes_ranges), | ||
2728 | +}; | ||
2729 | + | ||
2730 | static struct regmap_config tps65218_regmap_config = { | ||
2731 | .reg_bits = 8, | ||
2732 | .val_bits = 8, | ||
2733 | .cache_type = REGCACHE_RBTREE, | ||
2734 | + .volatile_table = &tps65218_volatile_table, | ||
2735 | }; | ||
2736 | |||
2737 | static const struct regmap_irq tps65218_irqs[] = { | ||
2738 | @@ -193,6 +204,7 @@ static struct regmap_irq_chip tps65218_irq_chip = { | ||
2739 | |||
2740 | .num_regs = 2, | ||
2741 | .mask_base = TPS65218_REG_INT_MASK1, | ||
2742 | + .status_base = TPS65218_REG_INT1, | ||
2743 | }; | ||
2744 | |||
2745 | static const struct of_device_id of_tps65218_match_table[] = { | ||
2746 | diff --git a/drivers/net/can/dev.c b/drivers/net/can/dev.c | ||
2747 | index 2cfe5012e4e5..4b008c9c738d 100644 | ||
2748 | --- a/drivers/net/can/dev.c | ||
2749 | +++ b/drivers/net/can/dev.c | ||
2750 | @@ -729,10 +729,14 @@ static int can_changelink(struct net_device *dev, | ||
2751 | if (dev->flags & IFF_UP) | ||
2752 | return -EBUSY; | ||
2753 | cm = nla_data(data[IFLA_CAN_CTRLMODE]); | ||
2754 | - if (cm->flags & ~priv->ctrlmode_supported) | ||
2755 | + | ||
2756 | + /* check whether changed bits are allowed to be modified */ | ||
2757 | + if (cm->mask & ~priv->ctrlmode_supported) | ||
2758 | return -EOPNOTSUPP; | ||
2759 | + | ||
2760 | + /* clear bits to be modified and copy the flag values */ | ||
2761 | priv->ctrlmode &= ~cm->mask; | ||
2762 | - priv->ctrlmode |= cm->flags; | ||
2763 | + priv->ctrlmode |= (cm->flags & cm->mask); | ||
2764 | |||
2765 | /* CAN_CTRLMODE_FD can only be set when driver supports FD */ | ||
2766 | if (priv->ctrlmode & CAN_CTRLMODE_FD) | ||
2767 | diff --git a/drivers/net/can/m_can/m_can.c b/drivers/net/can/m_can/m_can.c | ||
2768 | index d7bc462aafdc..244529881be9 100644 | ||
2769 | --- a/drivers/net/can/m_can/m_can.c | ||
2770 | +++ b/drivers/net/can/m_can/m_can.c | ||
2771 | @@ -955,6 +955,11 @@ static struct net_device *alloc_m_can_dev(void) | ||
2772 | priv->can.data_bittiming_const = &m_can_data_bittiming_const; | ||
2773 | priv->can.do_set_mode = m_can_set_mode; | ||
2774 | priv->can.do_get_berr_counter = m_can_get_berr_counter; | ||
2775 | + | ||
2776 | + /* CAN_CTRLMODE_FD_NON_ISO is fixed with M_CAN IP v3.0.1 */ | ||
2777 | + priv->can.ctrlmode = CAN_CTRLMODE_FD_NON_ISO; | ||
2778 | + | ||
2779 | + /* CAN_CTRLMODE_FD_NON_ISO can not be changed with M_CAN IP v3.0.1 */ | ||
2780 | priv->can.ctrlmode_supported = CAN_CTRLMODE_LOOPBACK | | ||
2781 | CAN_CTRLMODE_LISTENONLY | | ||
2782 | CAN_CTRLMODE_BERR_REPORTING | | ||
2783 | diff --git a/drivers/net/wireless/iwlwifi/mvm/fw-api-scan.h b/drivers/net/wireless/iwlwifi/mvm/fw-api-scan.h | ||
2784 | index 1354c68f6468..be0527734170 100644 | ||
2785 | --- a/drivers/net/wireless/iwlwifi/mvm/fw-api-scan.h | ||
2786 | +++ b/drivers/net/wireless/iwlwifi/mvm/fw-api-scan.h | ||
2787 | @@ -672,6 +672,7 @@ struct iwl_scan_channel_opt { | ||
2788 | * @IWL_MVM_LMAC_SCAN_FLAG_FRAGMENTED: all passive scans will be fragmented | ||
2789 | * @IWL_MVM_LMAC_SCAN_FLAGS_RRM_ENABLED: insert WFA vendor-specific TPC report | ||
2790 | * and DS parameter set IEs into probe requests. | ||
2791 | + * @IWL_MVM_LMAC_SCAN_FLAG_MATCH: Send match found notification on matches | ||
2792 | */ | ||
2793 | enum iwl_mvm_lmac_scan_flags { | ||
2794 | IWL_MVM_LMAC_SCAN_FLAG_PASS_ALL = BIT(0), | ||
2795 | @@ -681,6 +682,7 @@ enum iwl_mvm_lmac_scan_flags { | ||
2796 | IWL_MVM_LMAC_SCAN_FLAG_MULTIPLE_SSIDS = BIT(4), | ||
2797 | IWL_MVM_LMAC_SCAN_FLAG_FRAGMENTED = BIT(5), | ||
2798 | IWL_MVM_LMAC_SCAN_FLAGS_RRM_ENABLED = BIT(6), | ||
2799 | + IWL_MVM_LMAC_SCAN_FLAG_MATCH = BIT(9), | ||
2800 | }; | ||
2801 | |||
2802 | enum iwl_scan_priority { | ||
2803 | diff --git a/drivers/net/wireless/iwlwifi/mvm/scan.c b/drivers/net/wireless/iwlwifi/mvm/scan.c | ||
2804 | index 7554f7053830..886b64710443 100644 | ||
2805 | --- a/drivers/net/wireless/iwlwifi/mvm/scan.c | ||
2806 | +++ b/drivers/net/wireless/iwlwifi/mvm/scan.c | ||
2807 | @@ -1334,6 +1334,7 @@ int iwl_mvm_unified_sched_scan_lmac(struct iwl_mvm *mvm, | ||
2808 | IWL_DEBUG_SCAN(mvm, | ||
2809 | "Sending scheduled scan with filtering, n_match_sets %d\n", | ||
2810 | req->n_match_sets); | ||
2811 | + flags |= IWL_MVM_LMAC_SCAN_FLAG_MATCH; | ||
2812 | } else { | ||
2813 | IWL_DEBUG_SCAN(mvm, | ||
2814 | "Sending Scheduled scan without filtering\n"); | ||
2815 | diff --git a/drivers/pci/bus.c b/drivers/pci/bus.c | ||
2816 | index 73aef51a28f0..8fb16188cd82 100644 | ||
2817 | --- a/drivers/pci/bus.c | ||
2818 | +++ b/drivers/pci/bus.c | ||
2819 | @@ -228,6 +228,49 @@ int pci_bus_alloc_resource(struct pci_bus *bus, struct resource *res, | ||
2820 | } | ||
2821 | EXPORT_SYMBOL(pci_bus_alloc_resource); | ||
2822 | |||
2823 | +/* | ||
2824 | + * The @idx resource of @dev should be a PCI-PCI bridge window. If this | ||
2825 | + * resource fits inside a window of an upstream bridge, do nothing. If it | ||
2826 | + * overlaps an upstream window but extends outside it, clip the resource so | ||
2827 | + * it fits completely inside. | ||
2828 | + */ | ||
2829 | +bool pci_bus_clip_resource(struct pci_dev *dev, int idx) | ||
2830 | +{ | ||
2831 | + struct pci_bus *bus = dev->bus; | ||
2832 | + struct resource *res = &dev->resource[idx]; | ||
2833 | + struct resource orig_res = *res; | ||
2834 | + struct resource *r; | ||
2835 | + int i; | ||
2836 | + | ||
2837 | + pci_bus_for_each_resource(bus, r, i) { | ||
2838 | + resource_size_t start, end; | ||
2839 | + | ||
2840 | + if (!r) | ||
2841 | + continue; | ||
2842 | + | ||
2843 | + if (resource_type(res) != resource_type(r)) | ||
2844 | + continue; | ||
2845 | + | ||
2846 | + start = max(r->start, res->start); | ||
2847 | + end = min(r->end, res->end); | ||
2848 | + | ||
2849 | + if (start > end) | ||
2850 | + continue; /* no overlap */ | ||
2851 | + | ||
2852 | + if (res->start == start && res->end == end) | ||
2853 | + return false; /* no change */ | ||
2854 | + | ||
2855 | + res->start = start; | ||
2856 | + res->end = end; | ||
2857 | + dev_printk(KERN_DEBUG, &dev->dev, "%pR clipped to %pR\n", | ||
2858 | + &orig_res, res); | ||
2859 | + | ||
2860 | + return true; | ||
2861 | + } | ||
2862 | + | ||
2863 | + return false; | ||
2864 | +} | ||
2865 | + | ||
2866 | void __weak pcibios_resource_survey_bus(struct pci_bus *bus) { } | ||
2867 | |||
2868 | /** | ||
2869 | diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c | ||
2870 | index 625a4ace10b4..0190d1ee36b7 100644 | ||
2871 | --- a/drivers/pci/pci.c | ||
2872 | +++ b/drivers/pci/pci.c | ||
2873 | @@ -3280,7 +3280,8 @@ static int pci_parent_bus_reset(struct pci_dev *dev, int probe) | ||
2874 | { | ||
2875 | struct pci_dev *pdev; | ||
2876 | |||
2877 | - if (pci_is_root_bus(dev->bus) || dev->subordinate || !dev->bus->self) | ||
2878 | + if (pci_is_root_bus(dev->bus) || dev->subordinate || | ||
2879 | + !dev->bus->self || dev->dev_flags & PCI_DEV_FLAGS_NO_BUS_RESET) | ||
2880 | return -ENOTTY; | ||
2881 | |||
2882 | list_for_each_entry(pdev, &dev->bus->devices, bus_list) | ||
2883 | @@ -3314,7 +3315,8 @@ static int pci_dev_reset_slot_function(struct pci_dev *dev, int probe) | ||
2884 | { | ||
2885 | struct pci_dev *pdev; | ||
2886 | |||
2887 | - if (dev->subordinate || !dev->slot) | ||
2888 | + if (dev->subordinate || !dev->slot || | ||
2889 | + dev->dev_flags & PCI_DEV_FLAGS_NO_BUS_RESET) | ||
2890 | return -ENOTTY; | ||
2891 | |||
2892 | list_for_each_entry(pdev, &dev->bus->devices, bus_list) | ||
2893 | @@ -3566,6 +3568,20 @@ int pci_try_reset_function(struct pci_dev *dev) | ||
2894 | } | ||
2895 | EXPORT_SYMBOL_GPL(pci_try_reset_function); | ||
2896 | |||
2897 | +/* Do any devices on or below this bus prevent a bus reset? */ | ||
2898 | +static bool pci_bus_resetable(struct pci_bus *bus) | ||
2899 | +{ | ||
2900 | + struct pci_dev *dev; | ||
2901 | + | ||
2902 | + list_for_each_entry(dev, &bus->devices, bus_list) { | ||
2903 | + if (dev->dev_flags & PCI_DEV_FLAGS_NO_BUS_RESET || | ||
2904 | + (dev->subordinate && !pci_bus_resetable(dev->subordinate))) | ||
2905 | + return false; | ||
2906 | + } | ||
2907 | + | ||
2908 | + return true; | ||
2909 | +} | ||
2910 | + | ||
2911 | /* Lock devices from the top of the tree down */ | ||
2912 | static void pci_bus_lock(struct pci_bus *bus) | ||
2913 | { | ||
2914 | @@ -3616,6 +3632,22 @@ unlock: | ||
2915 | return 0; | ||
2916 | } | ||
2917 | |||
2918 | +/* Do any devices on or below this slot prevent a bus reset? */ | ||
2919 | +static bool pci_slot_resetable(struct pci_slot *slot) | ||
2920 | +{ | ||
2921 | + struct pci_dev *dev; | ||
2922 | + | ||
2923 | + list_for_each_entry(dev, &slot->bus->devices, bus_list) { | ||
2924 | + if (!dev->slot || dev->slot != slot) | ||
2925 | + continue; | ||
2926 | + if (dev->dev_flags & PCI_DEV_FLAGS_NO_BUS_RESET || | ||
2927 | + (dev->subordinate && !pci_bus_resetable(dev->subordinate))) | ||
2928 | + return false; | ||
2929 | + } | ||
2930 | + | ||
2931 | + return true; | ||
2932 | +} | ||
2933 | + | ||
2934 | /* Lock devices from the top of the tree down */ | ||
2935 | static void pci_slot_lock(struct pci_slot *slot) | ||
2936 | { | ||
2937 | @@ -3737,7 +3769,7 @@ static int pci_slot_reset(struct pci_slot *slot, int probe) | ||
2938 | { | ||
2939 | int rc; | ||
2940 | |||
2941 | - if (!slot) | ||
2942 | + if (!slot || !pci_slot_resetable(slot)) | ||
2943 | return -ENOTTY; | ||
2944 | |||
2945 | if (!probe) | ||
2946 | @@ -3829,7 +3861,7 @@ EXPORT_SYMBOL_GPL(pci_try_reset_slot); | ||
2947 | |||
2948 | static int pci_bus_reset(struct pci_bus *bus, int probe) | ||
2949 | { | ||
2950 | - if (!bus->self) | ||
2951 | + if (!bus->self || !pci_bus_resetable(bus)) | ||
2952 | return -ENOTTY; | ||
2953 | |||
2954 | if (probe) | ||
2955 | diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h | ||
2956 | index 4a3902d8e6fe..b5defca86795 100644 | ||
2957 | --- a/drivers/pci/pci.h | ||
2958 | +++ b/drivers/pci/pci.h | ||
2959 | @@ -208,6 +208,7 @@ void __pci_bus_size_bridges(struct pci_bus *bus, | ||
2960 | void __pci_bus_assign_resources(const struct pci_bus *bus, | ||
2961 | struct list_head *realloc_head, | ||
2962 | struct list_head *fail_head); | ||
2963 | +bool pci_bus_clip_resource(struct pci_dev *dev, int idx); | ||
2964 | |||
2965 | /** | ||
2966 | * pci_ari_enabled - query ARI forwarding status | ||
2967 | diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c | ||
2968 | index 90acb32c85b1..b72e2cdfd59a 100644 | ||
2969 | --- a/drivers/pci/quirks.c | ||
2970 | +++ b/drivers/pci/quirks.c | ||
2971 | @@ -3008,6 +3008,20 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_REALTEK, 0x8169, | ||
2972 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MELLANOX, PCI_ANY_ID, | ||
2973 | quirk_broken_intx_masking); | ||
2974 | |||
2975 | +static void quirk_no_bus_reset(struct pci_dev *dev) | ||
2976 | +{ | ||
2977 | + dev->dev_flags |= PCI_DEV_FLAGS_NO_BUS_RESET; | ||
2978 | +} | ||
2979 | + | ||
2980 | +/* | ||
2981 | + * Atheros AR93xx chips do not behave after a bus reset. The device will | ||
2982 | + * throw a Link Down error on AER-capable systems and regardless of AER, | ||
2983 | + * config space of the device is never accessible again and typically | ||
2984 | + * causes the system to hang or reset when access is attempted. | ||
2985 | + * http://www.spinics.net/lists/linux-pci/msg34797.html | ||
2986 | + */ | ||
2987 | +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATHEROS, 0x0030, quirk_no_bus_reset); | ||
2988 | + | ||
2989 | #ifdef CONFIG_ACPI | ||
2990 | /* | ||
2991 | * Apple: Shutdown Cactus Ridge Thunderbolt controller. | ||
2992 | diff --git a/drivers/pci/setup-bus.c b/drivers/pci/setup-bus.c | ||
2993 | index 0482235eee92..e3e17f3c0f0f 100644 | ||
2994 | --- a/drivers/pci/setup-bus.c | ||
2995 | +++ b/drivers/pci/setup-bus.c | ||
2996 | @@ -530,9 +530,8 @@ EXPORT_SYMBOL(pci_setup_cardbus); | ||
2997 | config space writes, so it's quite possible that an I/O window of | ||
2998 | the bridge will have some undesirable address (e.g. 0) after the | ||
2999 | first write. Ditto 64-bit prefetchable MMIO. */ | ||
3000 | -static void pci_setup_bridge_io(struct pci_bus *bus) | ||
3001 | +static void pci_setup_bridge_io(struct pci_dev *bridge) | ||
3002 | { | ||
3003 | - struct pci_dev *bridge = bus->self; | ||
3004 | struct resource *res; | ||
3005 | struct pci_bus_region region; | ||
3006 | unsigned long io_mask; | ||
3007 | @@ -545,7 +544,7 @@ static void pci_setup_bridge_io(struct pci_bus *bus) | ||
3008 | io_mask = PCI_IO_1K_RANGE_MASK; | ||
3009 | |||
3010 | /* Set up the top and bottom of the PCI I/O segment for this bus. */ | ||
3011 | - res = bus->resource[0]; | ||
3012 | + res = &bridge->resource[PCI_BRIDGE_RESOURCES + 0]; | ||
3013 | pcibios_resource_to_bus(bridge->bus, ®ion, res); | ||
3014 | if (res->flags & IORESOURCE_IO) { | ||
3015 | pci_read_config_word(bridge, PCI_IO_BASE, &l); | ||
3016 | @@ -568,15 +567,14 @@ static void pci_setup_bridge_io(struct pci_bus *bus) | ||
3017 | pci_write_config_dword(bridge, PCI_IO_BASE_UPPER16, io_upper16); | ||
3018 | } | ||
3019 | |||
3020 | -static void pci_setup_bridge_mmio(struct pci_bus *bus) | ||
3021 | +static void pci_setup_bridge_mmio(struct pci_dev *bridge) | ||
3022 | { | ||
3023 | - struct pci_dev *bridge = bus->self; | ||
3024 | struct resource *res; | ||
3025 | struct pci_bus_region region; | ||
3026 | u32 l; | ||
3027 | |||
3028 | /* Set up the top and bottom of the PCI Memory segment for this bus. */ | ||
3029 | - res = bus->resource[1]; | ||
3030 | + res = &bridge->resource[PCI_BRIDGE_RESOURCES + 1]; | ||
3031 | pcibios_resource_to_bus(bridge->bus, ®ion, res); | ||
3032 | if (res->flags & IORESOURCE_MEM) { | ||
3033 | l = (region.start >> 16) & 0xfff0; | ||
3034 | @@ -588,9 +586,8 @@ static void pci_setup_bridge_mmio(struct pci_bus *bus) | ||
3035 | pci_write_config_dword(bridge, PCI_MEMORY_BASE, l); | ||
3036 | } | ||
3037 | |||
3038 | -static void pci_setup_bridge_mmio_pref(struct pci_bus *bus) | ||
3039 | +static void pci_setup_bridge_mmio_pref(struct pci_dev *bridge) | ||
3040 | { | ||
3041 | - struct pci_dev *bridge = bus->self; | ||
3042 | struct resource *res; | ||
3043 | struct pci_bus_region region; | ||
3044 | u32 l, bu, lu; | ||
3045 | @@ -602,7 +599,7 @@ static void pci_setup_bridge_mmio_pref(struct pci_bus *bus) | ||
3046 | |||
3047 | /* Set up PREF base/limit. */ | ||
3048 | bu = lu = 0; | ||
3049 | - res = bus->resource[2]; | ||
3050 | + res = &bridge->resource[PCI_BRIDGE_RESOURCES + 2]; | ||
3051 | pcibios_resource_to_bus(bridge->bus, ®ion, res); | ||
3052 | if (res->flags & IORESOURCE_PREFETCH) { | ||
3053 | l = (region.start >> 16) & 0xfff0; | ||
3054 | @@ -630,13 +627,13 @@ static void __pci_setup_bridge(struct pci_bus *bus, unsigned long type) | ||
3055 | &bus->busn_res); | ||
3056 | |||
3057 | if (type & IORESOURCE_IO) | ||
3058 | - pci_setup_bridge_io(bus); | ||
3059 | + pci_setup_bridge_io(bridge); | ||
3060 | |||
3061 | if (type & IORESOURCE_MEM) | ||
3062 | - pci_setup_bridge_mmio(bus); | ||
3063 | + pci_setup_bridge_mmio(bridge); | ||
3064 | |||
3065 | if (type & IORESOURCE_PREFETCH) | ||
3066 | - pci_setup_bridge_mmio_pref(bus); | ||
3067 | + pci_setup_bridge_mmio_pref(bridge); | ||
3068 | |||
3069 | pci_write_config_word(bridge, PCI_BRIDGE_CONTROL, bus->bridge_ctl); | ||
3070 | } | ||
3071 | @@ -649,6 +646,41 @@ void pci_setup_bridge(struct pci_bus *bus) | ||
3072 | __pci_setup_bridge(bus, type); | ||
3073 | } | ||
3074 | |||
3075 | + | ||
3076 | +int pci_claim_bridge_resource(struct pci_dev *bridge, int i) | ||
3077 | +{ | ||
3078 | + if (i < PCI_BRIDGE_RESOURCES || i > PCI_BRIDGE_RESOURCE_END) | ||
3079 | + return 0; | ||
3080 | + | ||
3081 | + if (pci_claim_resource(bridge, i) == 0) | ||
3082 | + return 0; /* claimed the window */ | ||
3083 | + | ||
3084 | + if ((bridge->class >> 8) != PCI_CLASS_BRIDGE_PCI) | ||
3085 | + return 0; | ||
3086 | + | ||
3087 | + if (!pci_bus_clip_resource(bridge, i)) | ||
3088 | + return -EINVAL; /* clipping didn't change anything */ | ||
3089 | + | ||
3090 | + switch (i - PCI_BRIDGE_RESOURCES) { | ||
3091 | + case 0: | ||
3092 | + pci_setup_bridge_io(bridge); | ||
3093 | + break; | ||
3094 | + case 1: | ||
3095 | + pci_setup_bridge_mmio(bridge); | ||
3096 | + break; | ||
3097 | + case 2: | ||
3098 | + pci_setup_bridge_mmio_pref(bridge); | ||
3099 | + break; | ||
3100 | + default: | ||
3101 | + return -EINVAL; | ||
3102 | + } | ||
3103 | + | ||
3104 | + if (pci_claim_resource(bridge, i) == 0) | ||
3105 | + return 0; /* claimed a smaller window */ | ||
3106 | + | ||
3107 | + return -EINVAL; | ||
3108 | +} | ||
3109 | + | ||
3110 | /* Check whether the bridge supports optional I/O and | ||
3111 | prefetchable memory ranges. If not, the respective | ||
3112 | base/limit registers must be read-only and read as 0. */ | ||
3113 | diff --git a/drivers/pinctrl/core.c b/drivers/pinctrl/core.c | ||
3114 | index e4f65510c87e..89dca77ca038 100644 | ||
3115 | --- a/drivers/pinctrl/core.c | ||
3116 | +++ b/drivers/pinctrl/core.c | ||
3117 | @@ -1801,14 +1801,15 @@ void pinctrl_unregister(struct pinctrl_dev *pctldev) | ||
3118 | if (pctldev == NULL) | ||
3119 | return; | ||
3120 | |||
3121 | - mutex_lock(&pinctrldev_list_mutex); | ||
3122 | mutex_lock(&pctldev->mutex); | ||
3123 | - | ||
3124 | pinctrl_remove_device_debugfs(pctldev); | ||
3125 | + mutex_unlock(&pctldev->mutex); | ||
3126 | |||
3127 | if (!IS_ERR(pctldev->p)) | ||
3128 | pinctrl_put(pctldev->p); | ||
3129 | |||
3130 | + mutex_lock(&pinctrldev_list_mutex); | ||
3131 | + mutex_lock(&pctldev->mutex); | ||
3132 | /* TODO: check that no pinmuxes are still active? */ | ||
3133 | list_del(&pctldev->node); | ||
3134 | /* Destroy descriptor tree */ | ||
3135 | diff --git a/drivers/pinctrl/qcom/pinctrl-msm.c b/drivers/pinctrl/qcom/pinctrl-msm.c | ||
3136 | index e730935fa457..ed7017df065d 100644 | ||
3137 | --- a/drivers/pinctrl/qcom/pinctrl-msm.c | ||
3138 | +++ b/drivers/pinctrl/qcom/pinctrl-msm.c | ||
3139 | @@ -865,10 +865,10 @@ static int msm_ps_hold_restart(struct notifier_block *nb, unsigned long action, | ||
3140 | |||
3141 | static void msm_pinctrl_setup_pm_reset(struct msm_pinctrl *pctrl) | ||
3142 | { | ||
3143 | - int i = 0; | ||
3144 | + int i; | ||
3145 | const struct msm_function *func = pctrl->soc->functions; | ||
3146 | |||
3147 | - for (; i <= pctrl->soc->nfunctions; i++) | ||
3148 | + for (i = 0; i < pctrl->soc->nfunctions; i++) | ||
3149 | if (!strcmp(func[i].name, "ps_hold")) { | ||
3150 | pctrl->restart_nb.notifier_call = msm_ps_hold_restart; | ||
3151 | pctrl->restart_nb.priority = 128; | ||
3152 | diff --git a/drivers/s390/crypto/ap_bus.c b/drivers/s390/crypto/ap_bus.c | ||
3153 | index 99485415dcc2..91e97ec01418 100644 | ||
3154 | --- a/drivers/s390/crypto/ap_bus.c | ||
3155 | +++ b/drivers/s390/crypto/ap_bus.c | ||
3156 | @@ -44,6 +44,7 @@ | ||
3157 | #include <linux/hrtimer.h> | ||
3158 | #include <linux/ktime.h> | ||
3159 | #include <asm/facility.h> | ||
3160 | +#include <linux/crypto.h> | ||
3161 | |||
3162 | #include "ap_bus.h" | ||
3163 | |||
3164 | @@ -71,7 +72,7 @@ MODULE_AUTHOR("IBM Corporation"); | ||
3165 | MODULE_DESCRIPTION("Adjunct Processor Bus driver, " \ | ||
3166 | "Copyright IBM Corp. 2006, 2012"); | ||
3167 | MODULE_LICENSE("GPL"); | ||
3168 | -MODULE_ALIAS("z90crypt"); | ||
3169 | +MODULE_ALIAS_CRYPTO("z90crypt"); | ||
3170 | |||
3171 | /* | ||
3172 | * Module parameter | ||
3173 | diff --git a/drivers/scsi/ipr.c b/drivers/scsi/ipr.c | ||
3174 | index 2a9578c116b7..c3bdca7bf1e9 100644 | ||
3175 | --- a/drivers/scsi/ipr.c | ||
3176 | +++ b/drivers/scsi/ipr.c | ||
3177 | @@ -683,6 +683,7 @@ static void ipr_init_ipr_cmnd(struct ipr_cmnd *ipr_cmd, | ||
3178 | ipr_reinit_ipr_cmnd(ipr_cmd); | ||
3179 | ipr_cmd->u.scratch = 0; | ||
3180 | ipr_cmd->sibling = NULL; | ||
3181 | + ipr_cmd->eh_comp = NULL; | ||
3182 | ipr_cmd->fast_done = fast_done; | ||
3183 | init_timer(&ipr_cmd->timer); | ||
3184 | } | ||
3185 | @@ -848,6 +849,8 @@ static void ipr_scsi_eh_done(struct ipr_cmnd *ipr_cmd) | ||
3186 | |||
3187 | scsi_dma_unmap(ipr_cmd->scsi_cmd); | ||
3188 | scsi_cmd->scsi_done(scsi_cmd); | ||
3189 | + if (ipr_cmd->eh_comp) | ||
3190 | + complete(ipr_cmd->eh_comp); | ||
3191 | list_add_tail(&ipr_cmd->queue, &ipr_cmd->hrrq->hrrq_free_q); | ||
3192 | } | ||
3193 | |||
3194 | @@ -4853,6 +4856,84 @@ static int ipr_slave_alloc(struct scsi_device *sdev) | ||
3195 | return rc; | ||
3196 | } | ||
3197 | |||
3198 | +/** | ||
3199 | + * ipr_match_lun - Match function for specified LUN | ||
3200 | + * @ipr_cmd: ipr command struct | ||
3201 | + * @device: device to match (sdev) | ||
3202 | + * | ||
3203 | + * Returns: | ||
3204 | + * 1 if command matches sdev / 0 if command does not match sdev | ||
3205 | + **/ | ||
3206 | +static int ipr_match_lun(struct ipr_cmnd *ipr_cmd, void *device) | ||
3207 | +{ | ||
3208 | + if (ipr_cmd->scsi_cmd && ipr_cmd->scsi_cmd->device == device) | ||
3209 | + return 1; | ||
3210 | + return 0; | ||
3211 | +} | ||
3212 | + | ||
3213 | +/** | ||
3214 | + * ipr_wait_for_ops - Wait for matching commands to complete | ||
3215 | + * @ipr_cmd: ipr command struct | ||
3216 | + * @device: device to match (sdev) | ||
3217 | + * @match: match function to use | ||
3218 | + * | ||
3219 | + * Returns: | ||
3220 | + * SUCCESS / FAILED | ||
3221 | + **/ | ||
3222 | +static int ipr_wait_for_ops(struct ipr_ioa_cfg *ioa_cfg, void *device, | ||
3223 | + int (*match)(struct ipr_cmnd *, void *)) | ||
3224 | +{ | ||
3225 | + struct ipr_cmnd *ipr_cmd; | ||
3226 | + int wait; | ||
3227 | + unsigned long flags; | ||
3228 | + struct ipr_hrr_queue *hrrq; | ||
3229 | + signed long timeout = IPR_ABORT_TASK_TIMEOUT; | ||
3230 | + DECLARE_COMPLETION_ONSTACK(comp); | ||
3231 | + | ||
3232 | + ENTER; | ||
3233 | + do { | ||
3234 | + wait = 0; | ||
3235 | + | ||
3236 | + for_each_hrrq(hrrq, ioa_cfg) { | ||
3237 | + spin_lock_irqsave(hrrq->lock, flags); | ||
3238 | + list_for_each_entry(ipr_cmd, &hrrq->hrrq_pending_q, queue) { | ||
3239 | + if (match(ipr_cmd, device)) { | ||
3240 | + ipr_cmd->eh_comp = ∁ | ||
3241 | + wait++; | ||
3242 | + } | ||
3243 | + } | ||
3244 | + spin_unlock_irqrestore(hrrq->lock, flags); | ||
3245 | + } | ||
3246 | + | ||
3247 | + if (wait) { | ||
3248 | + timeout = wait_for_completion_timeout(&comp, timeout); | ||
3249 | + | ||
3250 | + if (!timeout) { | ||
3251 | + wait = 0; | ||
3252 | + | ||
3253 | + for_each_hrrq(hrrq, ioa_cfg) { | ||
3254 | + spin_lock_irqsave(hrrq->lock, flags); | ||
3255 | + list_for_each_entry(ipr_cmd, &hrrq->hrrq_pending_q, queue) { | ||
3256 | + if (match(ipr_cmd, device)) { | ||
3257 | + ipr_cmd->eh_comp = NULL; | ||
3258 | + wait++; | ||
3259 | + } | ||
3260 | + } | ||
3261 | + spin_unlock_irqrestore(hrrq->lock, flags); | ||
3262 | + } | ||
3263 | + | ||
3264 | + if (wait) | ||
3265 | + dev_err(&ioa_cfg->pdev->dev, "Timed out waiting for aborted commands\n"); | ||
3266 | + LEAVE; | ||
3267 | + return wait ? FAILED : SUCCESS; | ||
3268 | + } | ||
3269 | + } | ||
3270 | + } while (wait); | ||
3271 | + | ||
3272 | + LEAVE; | ||
3273 | + return SUCCESS; | ||
3274 | +} | ||
3275 | + | ||
3276 | static int ipr_eh_host_reset(struct scsi_cmnd *cmd) | ||
3277 | { | ||
3278 | struct ipr_ioa_cfg *ioa_cfg; | ||
3279 | @@ -5072,11 +5153,17 @@ static int __ipr_eh_dev_reset(struct scsi_cmnd *scsi_cmd) | ||
3280 | static int ipr_eh_dev_reset(struct scsi_cmnd *cmd) | ||
3281 | { | ||
3282 | int rc; | ||
3283 | + struct ipr_ioa_cfg *ioa_cfg; | ||
3284 | + | ||
3285 | + ioa_cfg = (struct ipr_ioa_cfg *) cmd->device->host->hostdata; | ||
3286 | |||
3287 | spin_lock_irq(cmd->device->host->host_lock); | ||
3288 | rc = __ipr_eh_dev_reset(cmd); | ||
3289 | spin_unlock_irq(cmd->device->host->host_lock); | ||
3290 | |||
3291 | + if (rc == SUCCESS) | ||
3292 | + rc = ipr_wait_for_ops(ioa_cfg, cmd->device, ipr_match_lun); | ||
3293 | + | ||
3294 | return rc; | ||
3295 | } | ||
3296 | |||
3297 | @@ -5254,13 +5341,18 @@ static int ipr_eh_abort(struct scsi_cmnd *scsi_cmd) | ||
3298 | { | ||
3299 | unsigned long flags; | ||
3300 | int rc; | ||
3301 | + struct ipr_ioa_cfg *ioa_cfg; | ||
3302 | |||
3303 | ENTER; | ||
3304 | |||
3305 | + ioa_cfg = (struct ipr_ioa_cfg *) scsi_cmd->device->host->hostdata; | ||
3306 | + | ||
3307 | spin_lock_irqsave(scsi_cmd->device->host->host_lock, flags); | ||
3308 | rc = ipr_cancel_op(scsi_cmd); | ||
3309 | spin_unlock_irqrestore(scsi_cmd->device->host->host_lock, flags); | ||
3310 | |||
3311 | + if (rc == SUCCESS) | ||
3312 | + rc = ipr_wait_for_ops(ioa_cfg, scsi_cmd->device, ipr_match_lun); | ||
3313 | LEAVE; | ||
3314 | return rc; | ||
3315 | } | ||
3316 | diff --git a/drivers/scsi/ipr.h b/drivers/scsi/ipr.h | ||
3317 | index d0201ceb4aac..fa82c003bc32 100644 | ||
3318 | --- a/drivers/scsi/ipr.h | ||
3319 | +++ b/drivers/scsi/ipr.h | ||
3320 | @@ -1608,6 +1608,7 @@ struct ipr_cmnd { | ||
3321 | struct scsi_device *sdev; | ||
3322 | } u; | ||
3323 | |||
3324 | + struct completion *eh_comp; | ||
3325 | struct ipr_hrr_queue *hrrq; | ||
3326 | struct ipr_ioa_cfg *ioa_cfg; | ||
3327 | }; | ||
3328 | diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c | ||
3329 | index 9df5d6ec7eec..f3a9d831d0f9 100644 | ||
3330 | --- a/drivers/xen/swiotlb-xen.c | ||
3331 | +++ b/drivers/xen/swiotlb-xen.c | ||
3332 | @@ -449,7 +449,7 @@ static void xen_unmap_single(struct device *hwdev, dma_addr_t dev_addr, | ||
3333 | |||
3334 | /* NOTE: We use dev_addr here, not paddr! */ | ||
3335 | if (is_xen_swiotlb_buffer(dev_addr)) { | ||
3336 | - swiotlb_tbl_unmap_single(hwdev, dev_addr, size, dir); | ||
3337 | + swiotlb_tbl_unmap_single(hwdev, paddr, size, dir); | ||
3338 | return; | ||
3339 | } | ||
3340 | |||
3341 | diff --git a/fs/cifs/ioctl.c b/fs/cifs/ioctl.c | ||
3342 | index 45cb59bcc791..8b7898b7670f 100644 | ||
3343 | --- a/fs/cifs/ioctl.c | ||
3344 | +++ b/fs/cifs/ioctl.c | ||
3345 | @@ -86,21 +86,16 @@ static long cifs_ioctl_clone(unsigned int xid, struct file *dst_file, | ||
3346 | } | ||
3347 | |||
3348 | src_inode = file_inode(src_file.file); | ||
3349 | + rc = -EINVAL; | ||
3350 | + if (S_ISDIR(src_inode->i_mode)) | ||
3351 | + goto out_fput; | ||
3352 | |||
3353 | /* | ||
3354 | * Note: cifs case is easier than btrfs since server responsible for | ||
3355 | * checks for proper open modes and file type and if it wants | ||
3356 | * server could even support copy of range where source = target | ||
3357 | */ | ||
3358 | - | ||
3359 | - /* so we do not deadlock racing two ioctls on same files */ | ||
3360 | - if (target_inode < src_inode) { | ||
3361 | - mutex_lock_nested(&target_inode->i_mutex, I_MUTEX_PARENT); | ||
3362 | - mutex_lock_nested(&src_inode->i_mutex, I_MUTEX_CHILD); | ||
3363 | - } else { | ||
3364 | - mutex_lock_nested(&src_inode->i_mutex, I_MUTEX_PARENT); | ||
3365 | - mutex_lock_nested(&target_inode->i_mutex, I_MUTEX_CHILD); | ||
3366 | - } | ||
3367 | + lock_two_nondirectories(target_inode, src_inode); | ||
3368 | |||
3369 | /* determine range to clone */ | ||
3370 | rc = -EINVAL; | ||
3371 | @@ -124,13 +119,7 @@ static long cifs_ioctl_clone(unsigned int xid, struct file *dst_file, | ||
3372 | out_unlock: | ||
3373 | /* although unlocking in the reverse order from locking is not | ||
3374 | strictly necessary here it is a little cleaner to be consistent */ | ||
3375 | - if (target_inode < src_inode) { | ||
3376 | - mutex_unlock(&src_inode->i_mutex); | ||
3377 | - mutex_unlock(&target_inode->i_mutex); | ||
3378 | - } else { | ||
3379 | - mutex_unlock(&target_inode->i_mutex); | ||
3380 | - mutex_unlock(&src_inode->i_mutex); | ||
3381 | - } | ||
3382 | + unlock_two_nondirectories(src_inode, target_inode); | ||
3383 | out_fput: | ||
3384 | fdput(src_file); | ||
3385 | out_drop_write: | ||
3386 | diff --git a/include/acpi/acpi_bus.h b/include/acpi/acpi_bus.h | ||
3387 | index f34a0835aa4f..8de31d472fad 100644 | ||
3388 | --- a/include/acpi/acpi_bus.h | ||
3389 | +++ b/include/acpi/acpi_bus.h | ||
3390 | @@ -312,6 +312,7 @@ struct acpi_device_wakeup_flags { | ||
3391 | u8 valid:1; /* Can successfully enable wakeup? */ | ||
3392 | u8 run_wake:1; /* Run-Wake GPE devices */ | ||
3393 | u8 notifier_present:1; /* Wake-up notify handler has been installed */ | ||
3394 | + u8 enabled:1; /* Enabled for wakeup */ | ||
3395 | }; | ||
3396 | |||
3397 | struct acpi_device_wakeup_context { | ||
3398 | diff --git a/include/linux/crypto.h b/include/linux/crypto.h | ||
3399 | index d45e949699ea..dc34dfc766b5 100644 | ||
3400 | --- a/include/linux/crypto.h | ||
3401 | +++ b/include/linux/crypto.h | ||
3402 | @@ -26,6 +26,19 @@ | ||
3403 | #include <linux/uaccess.h> | ||
3404 | |||
3405 | /* | ||
3406 | + * Autoloaded crypto modules should only use a prefixed name to avoid allowing | ||
3407 | + * arbitrary modules to be loaded. Loading from userspace may still need the | ||
3408 | + * unprefixed names, so retains those aliases as well. | ||
3409 | + * This uses __MODULE_INFO directly instead of MODULE_ALIAS because pre-4.3 | ||
3410 | + * gcc (e.g. avr32 toolchain) uses __LINE__ for uniqueness, and this macro | ||
3411 | + * expands twice on the same line. Instead, use a separate base name for the | ||
3412 | + * alias. | ||
3413 | + */ | ||
3414 | +#define MODULE_ALIAS_CRYPTO(name) \ | ||
3415 | + __MODULE_INFO(alias, alias_userspace, name); \ | ||
3416 | + __MODULE_INFO(alias, alias_crypto, "crypto-" name) | ||
3417 | + | ||
3418 | +/* | ||
3419 | * Algorithm masks and types. | ||
3420 | */ | ||
3421 | #define CRYPTO_ALG_TYPE_MASK 0x0000000f | ||
3422 | diff --git a/include/linux/libata.h b/include/linux/libata.h | ||
3423 | index bd5fefeaf548..fe0bf8dc83bb 100644 | ||
3424 | --- a/include/linux/libata.h | ||
3425 | +++ b/include/linux/libata.h | ||
3426 | @@ -230,6 +230,7 @@ enum { | ||
3427 | ATA_FLAG_SW_ACTIVITY = (1 << 22), /* driver supports sw activity | ||
3428 | * led */ | ||
3429 | ATA_FLAG_NO_DIPM = (1 << 23), /* host not happy with DIPM */ | ||
3430 | + ATA_FLAG_LOWTAG = (1 << 24), /* host wants lowest available tag */ | ||
3431 | |||
3432 | /* bits 24:31 of ap->flags are reserved for LLD specific flags */ | ||
3433 | |||
3434 | diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h | ||
3435 | index 7ea069cd3257..4b3736f7065c 100644 | ||
3436 | --- a/include/linux/pagemap.h | ||
3437 | +++ b/include/linux/pagemap.h | ||
3438 | @@ -251,7 +251,7 @@ pgoff_t page_cache_prev_hole(struct address_space *mapping, | ||
3439 | #define FGP_NOWAIT 0x00000020 | ||
3440 | |||
3441 | struct page *pagecache_get_page(struct address_space *mapping, pgoff_t offset, | ||
3442 | - int fgp_flags, gfp_t cache_gfp_mask, gfp_t radix_gfp_mask); | ||
3443 | + int fgp_flags, gfp_t cache_gfp_mask); | ||
3444 | |||
3445 | /** | ||
3446 | * find_get_page - find and get a page reference | ||
3447 | @@ -266,13 +266,13 @@ struct page *pagecache_get_page(struct address_space *mapping, pgoff_t offset, | ||
3448 | static inline struct page *find_get_page(struct address_space *mapping, | ||
3449 | pgoff_t offset) | ||
3450 | { | ||
3451 | - return pagecache_get_page(mapping, offset, 0, 0, 0); | ||
3452 | + return pagecache_get_page(mapping, offset, 0, 0); | ||
3453 | } | ||
3454 | |||
3455 | static inline struct page *find_get_page_flags(struct address_space *mapping, | ||
3456 | pgoff_t offset, int fgp_flags) | ||
3457 | { | ||
3458 | - return pagecache_get_page(mapping, offset, fgp_flags, 0, 0); | ||
3459 | + return pagecache_get_page(mapping, offset, fgp_flags, 0); | ||
3460 | } | ||
3461 | |||
3462 | /** | ||
3463 | @@ -292,7 +292,7 @@ static inline struct page *find_get_page_flags(struct address_space *mapping, | ||
3464 | static inline struct page *find_lock_page(struct address_space *mapping, | ||
3465 | pgoff_t offset) | ||
3466 | { | ||
3467 | - return pagecache_get_page(mapping, offset, FGP_LOCK, 0, 0); | ||
3468 | + return pagecache_get_page(mapping, offset, FGP_LOCK, 0); | ||
3469 | } | ||
3470 | |||
3471 | /** | ||
3472 | @@ -319,7 +319,7 @@ static inline struct page *find_or_create_page(struct address_space *mapping, | ||
3473 | { | ||
3474 | return pagecache_get_page(mapping, offset, | ||
3475 | FGP_LOCK|FGP_ACCESSED|FGP_CREAT, | ||
3476 | - gfp_mask, gfp_mask & GFP_RECLAIM_MASK); | ||
3477 | + gfp_mask); | ||
3478 | } | ||
3479 | |||
3480 | /** | ||
3481 | @@ -340,8 +340,7 @@ static inline struct page *grab_cache_page_nowait(struct address_space *mapping, | ||
3482 | { | ||
3483 | return pagecache_get_page(mapping, index, | ||
3484 | FGP_LOCK|FGP_CREAT|FGP_NOFS|FGP_NOWAIT, | ||
3485 | - mapping_gfp_mask(mapping), | ||
3486 | - GFP_NOFS); | ||
3487 | + mapping_gfp_mask(mapping)); | ||
3488 | } | ||
3489 | |||
3490 | struct page *find_get_entry(struct address_space *mapping, pgoff_t offset); | ||
3491 | diff --git a/include/linux/pci.h b/include/linux/pci.h | ||
3492 | index 4c8ac5fcc224..2882c13c6391 100644 | ||
3493 | --- a/include/linux/pci.h | ||
3494 | +++ b/include/linux/pci.h | ||
3495 | @@ -175,6 +175,8 @@ enum pci_dev_flags { | ||
3496 | PCI_DEV_FLAGS_DMA_ALIAS_DEVFN = (__force pci_dev_flags_t) (1 << 4), | ||
3497 | /* Use a PCIe-to-PCI bridge alias even if !pci_is_pcie */ | ||
3498 | PCI_DEV_FLAG_PCIE_BRIDGE_ALIAS = (__force pci_dev_flags_t) (1 << 5), | ||
3499 | + /* Do not use bus resets for device */ | ||
3500 | + PCI_DEV_FLAGS_NO_BUS_RESET = (__force pci_dev_flags_t) (1 << 6), | ||
3501 | }; | ||
3502 | |||
3503 | enum pci_irq_reroute_variant { | ||
3504 | @@ -1062,6 +1064,7 @@ resource_size_t pcibios_retrieve_fw_addr(struct pci_dev *dev, int idx); | ||
3505 | void pci_bus_assign_resources(const struct pci_bus *bus); | ||
3506 | void pci_bus_size_bridges(struct pci_bus *bus); | ||
3507 | int pci_claim_resource(struct pci_dev *, int); | ||
3508 | +int pci_claim_bridge_resource(struct pci_dev *bridge, int i); | ||
3509 | void pci_assign_unassigned_resources(void); | ||
3510 | void pci_assign_unassigned_bridge_resources(struct pci_dev *bridge); | ||
3511 | void pci_assign_unassigned_bus_resources(struct pci_bus *bus); | ||
3512 | diff --git a/include/linux/time.h b/include/linux/time.h | ||
3513 | index 8c42cf8d2444..5989b0ead1ec 100644 | ||
3514 | --- a/include/linux/time.h | ||
3515 | +++ b/include/linux/time.h | ||
3516 | @@ -99,6 +99,19 @@ static inline bool timespec_valid_strict(const struct timespec *ts) | ||
3517 | return true; | ||
3518 | } | ||
3519 | |||
3520 | +static inline bool timeval_valid(const struct timeval *tv) | ||
3521 | +{ | ||
3522 | + /* Dates before 1970 are bogus */ | ||
3523 | + if (tv->tv_sec < 0) | ||
3524 | + return false; | ||
3525 | + | ||
3526 | + /* Can't have more microseconds then a second */ | ||
3527 | + if (tv->tv_usec < 0 || tv->tv_usec >= USEC_PER_SEC) | ||
3528 | + return false; | ||
3529 | + | ||
3530 | + return true; | ||
3531 | +} | ||
3532 | + | ||
3533 | extern struct timespec timespec_trunc(struct timespec t, unsigned gran); | ||
3534 | |||
3535 | #define CURRENT_TIME (current_kernel_time()) | ||
3536 | diff --git a/include/uapi/linux/can/netlink.h b/include/uapi/linux/can/netlink.h | ||
3537 | index 3e4323a3918d..94ffe0c83ce7 100644 | ||
3538 | --- a/include/uapi/linux/can/netlink.h | ||
3539 | +++ b/include/uapi/linux/can/netlink.h | ||
3540 | @@ -98,6 +98,7 @@ struct can_ctrlmode { | ||
3541 | #define CAN_CTRLMODE_BERR_REPORTING 0x10 /* Bus-error reporting */ | ||
3542 | #define CAN_CTRLMODE_FD 0x20 /* CAN FD mode */ | ||
3543 | #define CAN_CTRLMODE_PRESUME_ACK 0x40 /* Ignore missing CAN ACKs */ | ||
3544 | +#define CAN_CTRLMODE_FD_NON_ISO 0x80 /* CAN FD in non-ISO mode */ | ||
3545 | |||
3546 | /* | ||
3547 | * CAN device statistics | ||
3548 | diff --git a/kernel/time/ntp.c b/kernel/time/ntp.c | ||
3549 | index 87a346fd6d61..28bf91c60a0b 100644 | ||
3550 | --- a/kernel/time/ntp.c | ||
3551 | +++ b/kernel/time/ntp.c | ||
3552 | @@ -633,6 +633,13 @@ int ntp_validate_timex(struct timex *txc) | ||
3553 | if ((txc->modes & ADJ_SETOFFSET) && (!capable(CAP_SYS_TIME))) | ||
3554 | return -EPERM; | ||
3555 | |||
3556 | + if (txc->modes & ADJ_FREQUENCY) { | ||
3557 | + if (LONG_MIN / PPM_SCALE > txc->freq) | ||
3558 | + return -EINVAL; | ||
3559 | + if (LONG_MAX / PPM_SCALE < txc->freq) | ||
3560 | + return -EINVAL; | ||
3561 | + } | ||
3562 | + | ||
3563 | return 0; | ||
3564 | } | ||
3565 | |||
3566 | diff --git a/kernel/time/time.c b/kernel/time/time.c | ||
3567 | index a9ae20fb0b11..22d5d3b73970 100644 | ||
3568 | --- a/kernel/time/time.c | ||
3569 | +++ b/kernel/time/time.c | ||
3570 | @@ -196,6 +196,10 @@ SYSCALL_DEFINE2(settimeofday, struct timeval __user *, tv, | ||
3571 | if (tv) { | ||
3572 | if (copy_from_user(&user_tv, tv, sizeof(*tv))) | ||
3573 | return -EFAULT; | ||
3574 | + | ||
3575 | + if (!timeval_valid(&user_tv)) | ||
3576 | + return -EINVAL; | ||
3577 | + | ||
3578 | new_ts.tv_sec = user_tv.tv_sec; | ||
3579 | new_ts.tv_nsec = user_tv.tv_usec * NSEC_PER_USEC; | ||
3580 | } | ||
3581 | diff --git a/kernel/workqueue.c b/kernel/workqueue.c | ||
3582 | index 09b685daee3d..66940a53d128 100644 | ||
3583 | --- a/kernel/workqueue.c | ||
3584 | +++ b/kernel/workqueue.c | ||
3585 | @@ -1841,17 +1841,11 @@ static void pool_mayday_timeout(unsigned long __pool) | ||
3586 | * spin_lock_irq(pool->lock) which may be released and regrabbed | ||
3587 | * multiple times. Does GFP_KERNEL allocations. Called only from | ||
3588 | * manager. | ||
3589 | - * | ||
3590 | - * Return: | ||
3591 | - * %false if no action was taken and pool->lock stayed locked, %true | ||
3592 | - * otherwise. | ||
3593 | */ | ||
3594 | -static bool maybe_create_worker(struct worker_pool *pool) | ||
3595 | +static void maybe_create_worker(struct worker_pool *pool) | ||
3596 | __releases(&pool->lock) | ||
3597 | __acquires(&pool->lock) | ||
3598 | { | ||
3599 | - if (!need_to_create_worker(pool)) | ||
3600 | - return false; | ||
3601 | restart: | ||
3602 | spin_unlock_irq(&pool->lock); | ||
3603 | |||
3604 | @@ -1877,7 +1871,6 @@ restart: | ||
3605 | */ | ||
3606 | if (need_to_create_worker(pool)) | ||
3607 | goto restart; | ||
3608 | - return true; | ||
3609 | } | ||
3610 | |||
3611 | /** | ||
3612 | @@ -1897,16 +1890,14 @@ restart: | ||
3613 | * multiple times. Does GFP_KERNEL allocations. | ||
3614 | * | ||
3615 | * Return: | ||
3616 | - * %false if the pool don't need management and the caller can safely start | ||
3617 | - * processing works, %true indicates that the function released pool->lock | ||
3618 | - * and reacquired it to perform some management function and that the | ||
3619 | - * conditions that the caller verified while holding the lock before | ||
3620 | - * calling the function might no longer be true. | ||
3621 | + * %false if the pool doesn't need management and the caller can safely | ||
3622 | + * start processing works, %true if management function was performed and | ||
3623 | + * the conditions that the caller verified before calling the function may | ||
3624 | + * no longer be true. | ||
3625 | */ | ||
3626 | static bool manage_workers(struct worker *worker) | ||
3627 | { | ||
3628 | struct worker_pool *pool = worker->pool; | ||
3629 | - bool ret = false; | ||
3630 | |||
3631 | /* | ||
3632 | * Anyone who successfully grabs manager_arb wins the arbitration | ||
3633 | @@ -1919,12 +1910,12 @@ static bool manage_workers(struct worker *worker) | ||
3634 | * actual management, the pool may stall indefinitely. | ||
3635 | */ | ||
3636 | if (!mutex_trylock(&pool->manager_arb)) | ||
3637 | - return ret; | ||
3638 | + return false; | ||
3639 | |||
3640 | - ret |= maybe_create_worker(pool); | ||
3641 | + maybe_create_worker(pool); | ||
3642 | |||
3643 | mutex_unlock(&pool->manager_arb); | ||
3644 | - return ret; | ||
3645 | + return true; | ||
3646 | } | ||
3647 | |||
3648 | /** | ||
3649 | diff --git a/mm/filemap.c b/mm/filemap.c | ||
3650 | index 14b4642279f1..37beab98b416 100644 | ||
3651 | --- a/mm/filemap.c | ||
3652 | +++ b/mm/filemap.c | ||
3653 | @@ -1046,8 +1046,7 @@ EXPORT_SYMBOL(find_lock_entry); | ||
3654 | * @mapping: the address_space to search | ||
3655 | * @offset: the page index | ||
3656 | * @fgp_flags: PCG flags | ||
3657 | - * @cache_gfp_mask: gfp mask to use for the page cache data page allocation | ||
3658 | - * @radix_gfp_mask: gfp mask to use for radix tree node allocation | ||
3659 | + * @gfp_mask: gfp mask to use for the page cache data page allocation | ||
3660 | * | ||
3661 | * Looks up the page cache slot at @mapping & @offset. | ||
3662 | * | ||
3663 | @@ -1056,11 +1055,9 @@ EXPORT_SYMBOL(find_lock_entry); | ||
3664 | * FGP_ACCESSED: the page will be marked accessed | ||
3665 | * FGP_LOCK: Page is return locked | ||
3666 | * FGP_CREAT: If page is not present then a new page is allocated using | ||
3667 | - * @cache_gfp_mask and added to the page cache and the VM's LRU | ||
3668 | - * list. If radix tree nodes are allocated during page cache | ||
3669 | - * insertion then @radix_gfp_mask is used. The page is returned | ||
3670 | - * locked and with an increased refcount. Otherwise, %NULL is | ||
3671 | - * returned. | ||
3672 | + * @gfp_mask and added to the page cache and the VM's LRU | ||
3673 | + * list. The page is returned locked and with an increased | ||
3674 | + * refcount. Otherwise, %NULL is returned. | ||
3675 | * | ||
3676 | * If FGP_LOCK or FGP_CREAT are specified then the function may sleep even | ||
3677 | * if the GFP flags specified for FGP_CREAT are atomic. | ||
3678 | @@ -1068,7 +1065,7 @@ EXPORT_SYMBOL(find_lock_entry); | ||
3679 | * If there is a page cache page, it is returned with an increased refcount. | ||
3680 | */ | ||
3681 | struct page *pagecache_get_page(struct address_space *mapping, pgoff_t offset, | ||
3682 | - int fgp_flags, gfp_t cache_gfp_mask, gfp_t radix_gfp_mask) | ||
3683 | + int fgp_flags, gfp_t gfp_mask) | ||
3684 | { | ||
3685 | struct page *page; | ||
3686 | |||
3687 | @@ -1105,13 +1102,11 @@ no_page: | ||
3688 | if (!page && (fgp_flags & FGP_CREAT)) { | ||
3689 | int err; | ||
3690 | if ((fgp_flags & FGP_WRITE) && mapping_cap_account_dirty(mapping)) | ||
3691 | - cache_gfp_mask |= __GFP_WRITE; | ||
3692 | - if (fgp_flags & FGP_NOFS) { | ||
3693 | - cache_gfp_mask &= ~__GFP_FS; | ||
3694 | - radix_gfp_mask &= ~__GFP_FS; | ||
3695 | - } | ||
3696 | + gfp_mask |= __GFP_WRITE; | ||
3697 | + if (fgp_flags & FGP_NOFS) | ||
3698 | + gfp_mask &= ~__GFP_FS; | ||
3699 | |||
3700 | - page = __page_cache_alloc(cache_gfp_mask); | ||
3701 | + page = __page_cache_alloc(gfp_mask); | ||
3702 | if (!page) | ||
3703 | return NULL; | ||
3704 | |||
3705 | @@ -1122,7 +1117,8 @@ no_page: | ||
3706 | if (fgp_flags & FGP_ACCESSED) | ||
3707 | __SetPageReferenced(page); | ||
3708 | |||
3709 | - err = add_to_page_cache_lru(page, mapping, offset, radix_gfp_mask); | ||
3710 | + err = add_to_page_cache_lru(page, mapping, offset, | ||
3711 | + gfp_mask & GFP_RECLAIM_MASK); | ||
3712 | if (unlikely(err)) { | ||
3713 | page_cache_release(page); | ||
3714 | page = NULL; | ||
3715 | @@ -2443,8 +2439,7 @@ struct page *grab_cache_page_write_begin(struct address_space *mapping, | ||
3716 | fgp_flags |= FGP_NOFS; | ||
3717 | |||
3718 | page = pagecache_get_page(mapping, index, fgp_flags, | ||
3719 | - mapping_gfp_mask(mapping), | ||
3720 | - GFP_KERNEL); | ||
3721 | + mapping_gfp_mask(mapping)); | ||
3722 | if (page) | ||
3723 | wait_for_stable_page(page); | ||
3724 | |||
3725 | diff --git a/net/netfilter/ipvs/ip_vs_ftp.c b/net/netfilter/ipvs/ip_vs_ftp.c | ||
3726 | index 1d5341f3761d..5d3daae98bf0 100644 | ||
3727 | --- a/net/netfilter/ipvs/ip_vs_ftp.c | ||
3728 | +++ b/net/netfilter/ipvs/ip_vs_ftp.c | ||
3729 | @@ -183,6 +183,8 @@ static int ip_vs_ftp_out(struct ip_vs_app *app, struct ip_vs_conn *cp, | ||
3730 | struct nf_conn *ct; | ||
3731 | struct net *net; | ||
3732 | |||
3733 | + *diff = 0; | ||
3734 | + | ||
3735 | #ifdef CONFIG_IP_VS_IPV6 | ||
3736 | /* This application helper doesn't work with IPv6 yet, | ||
3737 | * so turn this into a no-op for IPv6 packets | ||
3738 | @@ -191,8 +193,6 @@ static int ip_vs_ftp_out(struct ip_vs_app *app, struct ip_vs_conn *cp, | ||
3739 | return 1; | ||
3740 | #endif | ||
3741 | |||
3742 | - *diff = 0; | ||
3743 | - | ||
3744 | /* Only useful for established sessions */ | ||
3745 | if (cp->state != IP_VS_TCP_S_ESTABLISHED) | ||
3746 | return 1; | ||
3747 | @@ -322,6 +322,9 @@ static int ip_vs_ftp_in(struct ip_vs_app *app, struct ip_vs_conn *cp, | ||
3748 | struct ip_vs_conn *n_cp; | ||
3749 | struct net *net; | ||
3750 | |||
3751 | + /* no diff required for incoming packets */ | ||
3752 | + *diff = 0; | ||
3753 | + | ||
3754 | #ifdef CONFIG_IP_VS_IPV6 | ||
3755 | /* This application helper doesn't work with IPv6 yet, | ||
3756 | * so turn this into a no-op for IPv6 packets | ||
3757 | @@ -330,9 +333,6 @@ static int ip_vs_ftp_in(struct ip_vs_app *app, struct ip_vs_conn *cp, | ||
3758 | return 1; | ||
3759 | #endif | ||
3760 | |||
3761 | - /* no diff required for incoming packets */ | ||
3762 | - *diff = 0; | ||
3763 | - | ||
3764 | /* Only useful for established sessions */ | ||
3765 | if (cp->state != IP_VS_TCP_S_ESTABLISHED) | ||
3766 | return 1; | ||
3767 | diff --git a/net/netfilter/nf_conntrack_core.c b/net/netfilter/nf_conntrack_core.c | ||
3768 | index 5016a6929085..c5880124ec0d 100644 | ||
3769 | --- a/net/netfilter/nf_conntrack_core.c | ||
3770 | +++ b/net/netfilter/nf_conntrack_core.c | ||
3771 | @@ -611,16 +611,15 @@ __nf_conntrack_confirm(struct sk_buff *skb) | ||
3772 | */ | ||
3773 | NF_CT_ASSERT(!nf_ct_is_confirmed(ct)); | ||
3774 | pr_debug("Confirming conntrack %p\n", ct); | ||
3775 | - /* We have to check the DYING flag inside the lock to prevent | ||
3776 | - a race against nf_ct_get_next_corpse() possibly called from | ||
3777 | - user context, else we insert an already 'dead' hash, blocking | ||
3778 | - further use of that particular connection -JM */ | ||
3779 | + /* We have to check the DYING flag after unlink to prevent | ||
3780 | + * a race against nf_ct_get_next_corpse() possibly called from | ||
3781 | + * user context, else we insert an already 'dead' hash, blocking | ||
3782 | + * further use of that particular connection -JM. | ||
3783 | + */ | ||
3784 | + nf_ct_del_from_dying_or_unconfirmed_list(ct); | ||
3785 | |||
3786 | - if (unlikely(nf_ct_is_dying(ct))) { | ||
3787 | - nf_conntrack_double_unlock(hash, reply_hash); | ||
3788 | - local_bh_enable(); | ||
3789 | - return NF_ACCEPT; | ||
3790 | - } | ||
3791 | + if (unlikely(nf_ct_is_dying(ct))) | ||
3792 | + goto out; | ||
3793 | |||
3794 | /* See if there's one in the list already, including reverse: | ||
3795 | NAT could have grabbed it without realizing, since we're | ||
3796 | @@ -636,8 +635,6 @@ __nf_conntrack_confirm(struct sk_buff *skb) | ||
3797 | zone == nf_ct_zone(nf_ct_tuplehash_to_ctrack(h))) | ||
3798 | goto out; | ||
3799 | |||
3800 | - nf_ct_del_from_dying_or_unconfirmed_list(ct); | ||
3801 | - | ||
3802 | /* Timer relative to confirmation time, not original | ||
3803 | setting time, otherwise we'd get timer wrap in | ||
3804 | weird delay cases. */ | ||
3805 | @@ -673,6 +670,7 @@ __nf_conntrack_confirm(struct sk_buff *skb) | ||
3806 | return NF_ACCEPT; | ||
3807 | |||
3808 | out: | ||
3809 | + nf_ct_add_to_dying_list(ct); | ||
3810 | nf_conntrack_double_unlock(hash, reply_hash); | ||
3811 | NF_CT_STAT_INC(net, insert_failed); | ||
3812 | local_bh_enable(); | ||
3813 | diff --git a/net/netfilter/nf_tables_api.c b/net/netfilter/nf_tables_api.c | ||
3814 | index 66e8425dbfe7..71b574c7bde9 100644 | ||
3815 | --- a/net/netfilter/nf_tables_api.c | ||
3816 | +++ b/net/netfilter/nf_tables_api.c | ||
3817 | @@ -713,16 +713,12 @@ static int nft_flush_table(struct nft_ctx *ctx) | ||
3818 | struct nft_chain *chain, *nc; | ||
3819 | struct nft_set *set, *ns; | ||
3820 | |||
3821 | - list_for_each_entry_safe(chain, nc, &ctx->table->chains, list) { | ||
3822 | + list_for_each_entry(chain, &ctx->table->chains, list) { | ||
3823 | ctx->chain = chain; | ||
3824 | |||
3825 | err = nft_delrule_by_chain(ctx); | ||
3826 | if (err < 0) | ||
3827 | goto out; | ||
3828 | - | ||
3829 | - err = nft_delchain(ctx); | ||
3830 | - if (err < 0) | ||
3831 | - goto out; | ||
3832 | } | ||
3833 | |||
3834 | list_for_each_entry_safe(set, ns, &ctx->table->sets, list) { | ||
3835 | @@ -735,6 +731,14 @@ static int nft_flush_table(struct nft_ctx *ctx) | ||
3836 | goto out; | ||
3837 | } | ||
3838 | |||
3839 | + list_for_each_entry_safe(chain, nc, &ctx->table->chains, list) { | ||
3840 | + ctx->chain = chain; | ||
3841 | + | ||
3842 | + err = nft_delchain(ctx); | ||
3843 | + if (err < 0) | ||
3844 | + goto out; | ||
3845 | + } | ||
3846 | + | ||
3847 | err = nft_deltable(ctx); | ||
3848 | out: | ||
3849 | return err; | ||
3850 | diff --git a/net/netfilter/nfnetlink.c b/net/netfilter/nfnetlink.c | ||
3851 | index 13c2e17bbe27..1aa7049c93f5 100644 | ||
3852 | --- a/net/netfilter/nfnetlink.c | ||
3853 | +++ b/net/netfilter/nfnetlink.c | ||
3854 | @@ -321,7 +321,8 @@ replay: | ||
3855 | nlh = nlmsg_hdr(skb); | ||
3856 | err = 0; | ||
3857 | |||
3858 | - if (nlh->nlmsg_len < NLMSG_HDRLEN) { | ||
3859 | + if (nlmsg_len(nlh) < sizeof(struct nfgenmsg) || | ||
3860 | + skb->len < nlh->nlmsg_len) { | ||
3861 | err = -EINVAL; | ||
3862 | goto ack; | ||
3863 | } | ||
3864 | @@ -469,7 +470,7 @@ static int nfnetlink_bind(int group) | ||
3865 | int type; | ||
3866 | |||
3867 | if (group <= NFNLGRP_NONE || group > NFNLGRP_MAX) | ||
3868 | - return -EINVAL; | ||
3869 | + return 0; | ||
3870 | |||
3871 | type = nfnl_group2type[group]; | ||
3872 | |||
3873 | diff --git a/scripts/recordmcount.pl b/scripts/recordmcount.pl | ||
3874 | index d4b665610d67..1f9f08ae60c1 100755 | ||
3875 | --- a/scripts/recordmcount.pl | ||
3876 | +++ b/scripts/recordmcount.pl | ||
3877 | @@ -255,7 +255,6 @@ if ($arch eq "x86_64") { | ||
3878 | # force flags for this arch | ||
3879 | $ld .= " -m shlelf_linux"; | ||
3880 | $objcopy .= " -O elf32-sh-linux"; | ||
3881 | - $cc .= " -m32"; | ||
3882 | |||
3883 | } elsif ($arch eq "powerpc") { | ||
3884 | $local_regex = "^[0-9a-fA-F]+\\s+t\\s+(\\.?\\S+)"; | ||
3885 | diff --git a/security/keys/gc.c b/security/keys/gc.c | ||
3886 | index 9609a7f0faea..c7952375ac53 100644 | ||
3887 | --- a/security/keys/gc.c | ||
3888 | +++ b/security/keys/gc.c | ||
3889 | @@ -148,12 +148,12 @@ static noinline void key_gc_unused_keys(struct list_head *keys) | ||
3890 | if (test_bit(KEY_FLAG_INSTANTIATED, &key->flags)) | ||
3891 | atomic_dec(&key->user->nikeys); | ||
3892 | |||
3893 | - key_user_put(key->user); | ||
3894 | - | ||
3895 | /* now throw away the key memory */ | ||
3896 | if (key->type->destroy) | ||
3897 | key->type->destroy(key); | ||
3898 | |||
3899 | + key_user_put(key->user); | ||
3900 | + | ||
3901 | kfree(key->description); | ||
3902 | |||
3903 | #ifdef KEY_DEBUGGING | ||
3904 | diff --git a/sound/usb/mixer.c b/sound/usb/mixer.c | ||
3905 | index 6e354d326858..a712d754431c 100644 | ||
3906 | --- a/sound/usb/mixer.c | ||
3907 | +++ b/sound/usb/mixer.c | ||
3908 | @@ -909,6 +909,7 @@ static void volume_control_quirks(struct usb_mixer_elem_info *cval, | ||
3909 | case USB_ID(0x046d, 0x0807): /* Logitech Webcam C500 */ | ||
3910 | case USB_ID(0x046d, 0x0808): | ||
3911 | case USB_ID(0x046d, 0x0809): | ||
3912 | + case USB_ID(0x046d, 0x0819): /* Logitech Webcam C210 */ | ||
3913 | case USB_ID(0x046d, 0x081b): /* HD Webcam c310 */ | ||
3914 | case USB_ID(0x046d, 0x081d): /* HD Webcam c510 */ | ||
3915 | case USB_ID(0x046d, 0x0825): /* HD Webcam c270 */ |