Annotation of /trunk/kernel-alx/patches-5.4/0302-5.4.203-all-fixes.patch
Parent Directory | Revision Log
Revision 3635 -
(hide annotations)
(download)
Mon Oct 24 12:34:12 2022 UTC (18 months, 2 weeks ago) by niro
File size: 41738 byte(s)
Mon Oct 24 12:34:12 2022 UTC (18 months, 2 weeks ago) by niro
File size: 41738 byte(s)
-sync kernel patches
1 | niro | 3635 | diff --git a/Makefile b/Makefile |
2 | index 021878dc23f9b..86f518e49c333 100644 | ||
3 | --- a/Makefile | ||
4 | +++ b/Makefile | ||
5 | @@ -1,7 +1,7 @@ | ||
6 | # SPDX-License-Identifier: GPL-2.0 | ||
7 | VERSION = 5 | ||
8 | PATCHLEVEL = 4 | ||
9 | -SUBLEVEL = 202 | ||
10 | +SUBLEVEL = 203 | ||
11 | EXTRAVERSION = | ||
12 | NAME = Kleptomaniac Octopus | ||
13 | |||
14 | diff --git a/arch/arm/boot/bootp/init.S b/arch/arm/boot/bootp/init.S | ||
15 | index 5c476bd2b4ce9..b562da2f70408 100644 | ||
16 | --- a/arch/arm/boot/bootp/init.S | ||
17 | +++ b/arch/arm/boot/bootp/init.S | ||
18 | @@ -13,7 +13,7 @@ | ||
19 | * size immediately following the kernel, we could build this into | ||
20 | * a binary blob, and concatenate the zImage using the cat command. | ||
21 | */ | ||
22 | - .section .start,#alloc,#execinstr | ||
23 | + .section .start, "ax" | ||
24 | .type _start, #function | ||
25 | .globl _start | ||
26 | |||
27 | diff --git a/arch/arm/boot/compressed/big-endian.S b/arch/arm/boot/compressed/big-endian.S | ||
28 | index 88e2a88d324b2..0e092c36da2f2 100644 | ||
29 | --- a/arch/arm/boot/compressed/big-endian.S | ||
30 | +++ b/arch/arm/boot/compressed/big-endian.S | ||
31 | @@ -6,7 +6,7 @@ | ||
32 | * Author: Nicolas Pitre | ||
33 | */ | ||
34 | |||
35 | - .section ".start", #alloc, #execinstr | ||
36 | + .section ".start", "ax" | ||
37 | |||
38 | mrc p15, 0, r0, c1, c0, 0 @ read control reg | ||
39 | orr r0, r0, #(1 << 7) @ enable big endian mode | ||
40 | diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S | ||
41 | index 0a2410adc25b3..17f87f4c74f51 100644 | ||
42 | --- a/arch/arm/boot/compressed/head.S | ||
43 | +++ b/arch/arm/boot/compressed/head.S | ||
44 | @@ -140,7 +140,7 @@ | ||
45 | #endif | ||
46 | .endm | ||
47 | |||
48 | - .section ".start", #alloc, #execinstr | ||
49 | + .section ".start", "ax" | ||
50 | /* | ||
51 | * sort out different calling conventions | ||
52 | */ | ||
53 | @@ -1274,7 +1274,7 @@ iflush: | ||
54 | __armv5tej_mmu_cache_flush: | ||
55 | tst r4, #1 | ||
56 | movne pc, lr | ||
57 | -1: mrc p15, 0, r15, c7, c14, 3 @ test,clean,invalidate D cache | ||
58 | +1: mrc p15, 0, APSR_nzcv, c7, c14, 3 @ test,clean,invalidate D cache | ||
59 | bne 1b | ||
60 | mcr p15, 0, r0, c7, c5, 0 @ flush I cache | ||
61 | mcr p15, 0, r0, c7, c10, 4 @ drain WB | ||
62 | diff --git a/arch/arm/boot/compressed/piggy.S b/arch/arm/boot/compressed/piggy.S | ||
63 | index 0284f84dcf380..27577644ee721 100644 | ||
64 | --- a/arch/arm/boot/compressed/piggy.S | ||
65 | +++ b/arch/arm/boot/compressed/piggy.S | ||
66 | @@ -1,5 +1,5 @@ | ||
67 | /* SPDX-License-Identifier: GPL-2.0 */ | ||
68 | - .section .piggydata,#alloc | ||
69 | + .section .piggydata, "a" | ||
70 | .globl input_data | ||
71 | input_data: | ||
72 | .incbin "arch/arm/boot/compressed/piggy_data" | ||
73 | diff --git a/arch/arm/crypto/Kconfig b/arch/arm/crypto/Kconfig | ||
74 | index 043b0b18bf7e0..f747caea10ffa 100644 | ||
75 | --- a/arch/arm/crypto/Kconfig | ||
76 | +++ b/arch/arm/crypto/Kconfig | ||
77 | @@ -30,7 +30,7 @@ config CRYPTO_SHA1_ARM_NEON | ||
78 | |||
79 | config CRYPTO_SHA1_ARM_CE | ||
80 | tristate "SHA1 digest algorithm (ARM v8 Crypto Extensions)" | ||
81 | - depends on KERNEL_MODE_NEON | ||
82 | + depends on KERNEL_MODE_NEON && (CC_IS_CLANG || GCC_VERSION >= 40800) | ||
83 | select CRYPTO_SHA1_ARM | ||
84 | select CRYPTO_HASH | ||
85 | help | ||
86 | @@ -39,7 +39,7 @@ config CRYPTO_SHA1_ARM_CE | ||
87 | |||
88 | config CRYPTO_SHA2_ARM_CE | ||
89 | tristate "SHA-224/256 digest algorithm (ARM v8 Crypto Extensions)" | ||
90 | - depends on KERNEL_MODE_NEON | ||
91 | + depends on KERNEL_MODE_NEON && (CC_IS_CLANG || GCC_VERSION >= 40800) | ||
92 | select CRYPTO_SHA256_ARM | ||
93 | select CRYPTO_HASH | ||
94 | help | ||
95 | @@ -96,7 +96,7 @@ config CRYPTO_AES_ARM_BS | ||
96 | |||
97 | config CRYPTO_AES_ARM_CE | ||
98 | tristate "Accelerated AES using ARMv8 Crypto Extensions" | ||
99 | - depends on KERNEL_MODE_NEON | ||
100 | + depends on KERNEL_MODE_NEON && (CC_IS_CLANG || GCC_VERSION >= 40800) | ||
101 | select CRYPTO_BLKCIPHER | ||
102 | select CRYPTO_LIB_AES | ||
103 | select CRYPTO_SIMD | ||
104 | @@ -106,7 +106,7 @@ config CRYPTO_AES_ARM_CE | ||
105 | |||
106 | config CRYPTO_GHASH_ARM_CE | ||
107 | tristate "PMULL-accelerated GHASH using NEON/ARMv8 Crypto Extensions" | ||
108 | - depends on KERNEL_MODE_NEON | ||
109 | + depends on KERNEL_MODE_NEON && (CC_IS_CLANG || GCC_VERSION >= 40800) | ||
110 | select CRYPTO_HASH | ||
111 | select CRYPTO_CRYPTD | ||
112 | select CRYPTO_GF128MUL | ||
113 | @@ -118,12 +118,14 @@ config CRYPTO_GHASH_ARM_CE | ||
114 | |||
115 | config CRYPTO_CRCT10DIF_ARM_CE | ||
116 | tristate "CRCT10DIF digest algorithm using PMULL instructions" | ||
117 | - depends on KERNEL_MODE_NEON && CRC_T10DIF | ||
118 | + depends on KERNEL_MODE_NEON && (CC_IS_CLANG || GCC_VERSION >= 40800) | ||
119 | + depends on CRC_T10DIF | ||
120 | select CRYPTO_HASH | ||
121 | |||
122 | config CRYPTO_CRC32_ARM_CE | ||
123 | tristate "CRC32(C) digest algorithm using CRC and/or PMULL instructions" | ||
124 | - depends on KERNEL_MODE_NEON && CRC32 | ||
125 | + depends on KERNEL_MODE_NEON && (CC_IS_CLANG || GCC_VERSION >= 40800) | ||
126 | + depends on CRC32 | ||
127 | select CRYPTO_HASH | ||
128 | |||
129 | config CRYPTO_CHACHA20_NEON | ||
130 | diff --git a/arch/arm/crypto/Makefile b/arch/arm/crypto/Makefile | ||
131 | index 4180f3a13512c..c0d36771a6934 100644 | ||
132 | --- a/arch/arm/crypto/Makefile | ||
133 | +++ b/arch/arm/crypto/Makefile | ||
134 | @@ -12,32 +12,12 @@ obj-$(CONFIG_CRYPTO_SHA512_ARM) += sha512-arm.o | ||
135 | obj-$(CONFIG_CRYPTO_CHACHA20_NEON) += chacha-neon.o | ||
136 | obj-$(CONFIG_CRYPTO_NHPOLY1305_NEON) += nhpoly1305-neon.o | ||
137 | |||
138 | -ce-obj-$(CONFIG_CRYPTO_AES_ARM_CE) += aes-arm-ce.o | ||
139 | -ce-obj-$(CONFIG_CRYPTO_SHA1_ARM_CE) += sha1-arm-ce.o | ||
140 | -ce-obj-$(CONFIG_CRYPTO_SHA2_ARM_CE) += sha2-arm-ce.o | ||
141 | -ce-obj-$(CONFIG_CRYPTO_GHASH_ARM_CE) += ghash-arm-ce.o | ||
142 | -ce-obj-$(CONFIG_CRYPTO_CRCT10DIF_ARM_CE) += crct10dif-arm-ce.o | ||
143 | -crc-obj-$(CONFIG_CRYPTO_CRC32_ARM_CE) += crc32-arm-ce.o | ||
144 | - | ||
145 | -ifneq ($(crc-obj-y)$(crc-obj-m),) | ||
146 | -ifeq ($(call as-instr,.arch armv8-a\n.arch_extension crc,y,n),y) | ||
147 | -ce-obj-y += $(crc-obj-y) | ||
148 | -ce-obj-m += $(crc-obj-m) | ||
149 | -else | ||
150 | -$(warning These CRC Extensions modules need binutils 2.23 or higher) | ||
151 | -$(warning $(crc-obj-y) $(crc-obj-m)) | ||
152 | -endif | ||
153 | -endif | ||
154 | - | ||
155 | -ifneq ($(ce-obj-y)$(ce-obj-m),) | ||
156 | -ifeq ($(call as-instr,.fpu crypto-neon-fp-armv8,y,n),y) | ||
157 | -obj-y += $(ce-obj-y) | ||
158 | -obj-m += $(ce-obj-m) | ||
159 | -else | ||
160 | -$(warning These ARMv8 Crypto Extensions modules need binutils 2.23 or higher) | ||
161 | -$(warning $(ce-obj-y) $(ce-obj-m)) | ||
162 | -endif | ||
163 | -endif | ||
164 | +obj-$(CONFIG_CRYPTO_AES_ARM_CE) += aes-arm-ce.o | ||
165 | +obj-$(CONFIG_CRYPTO_SHA1_ARM_CE) += sha1-arm-ce.o | ||
166 | +obj-$(CONFIG_CRYPTO_SHA2_ARM_CE) += sha2-arm-ce.o | ||
167 | +obj-$(CONFIG_CRYPTO_GHASH_ARM_CE) += ghash-arm-ce.o | ||
168 | +obj-$(CONFIG_CRYPTO_CRCT10DIF_ARM_CE) += crct10dif-arm-ce.o | ||
169 | +obj-$(CONFIG_CRYPTO_CRC32_ARM_CE) += crc32-arm-ce.o | ||
170 | |||
171 | aes-arm-y := aes-cipher-core.o aes-cipher-glue.o | ||
172 | aes-arm-bs-y := aes-neonbs-core.o aes-neonbs-glue.o | ||
173 | diff --git a/arch/arm/crypto/crct10dif-ce-core.S b/arch/arm/crypto/crct10dif-ce-core.S | ||
174 | index 86be258a803fa..46c02c518a300 100644 | ||
175 | --- a/arch/arm/crypto/crct10dif-ce-core.S | ||
176 | +++ b/arch/arm/crypto/crct10dif-ce-core.S | ||
177 | @@ -72,7 +72,7 @@ | ||
178 | #endif | ||
179 | |||
180 | .text | ||
181 | - .arch armv7-a | ||
182 | + .arch armv8-a | ||
183 | .fpu crypto-neon-fp-armv8 | ||
184 | |||
185 | init_crc .req r0 | ||
186 | diff --git a/arch/arm/crypto/ghash-ce-core.S b/arch/arm/crypto/ghash-ce-core.S | ||
187 | index c47fe81abcb01..9f51e3fa45268 100644 | ||
188 | --- a/arch/arm/crypto/ghash-ce-core.S | ||
189 | +++ b/arch/arm/crypto/ghash-ce-core.S | ||
190 | @@ -8,6 +8,9 @@ | ||
191 | #include <linux/linkage.h> | ||
192 | #include <asm/assembler.h> | ||
193 | |||
194 | + .arch armv8-a | ||
195 | + .fpu crypto-neon-fp-armv8 | ||
196 | + | ||
197 | SHASH .req q0 | ||
198 | T1 .req q1 | ||
199 | XL .req q2 | ||
200 | @@ -88,7 +91,6 @@ | ||
201 | T3_H .req d17 | ||
202 | |||
203 | .text | ||
204 | - .fpu crypto-neon-fp-armv8 | ||
205 | |||
206 | .macro __pmull_p64, rd, rn, rm, b1, b2, b3, b4 | ||
207 | vmull.p64 \rd, \rn, \rm | ||
208 | diff --git a/arch/arm/crypto/sha1-ce-core.S b/arch/arm/crypto/sha1-ce-core.S | ||
209 | index 49a74a441aec7..8a702e051738a 100644 | ||
210 | --- a/arch/arm/crypto/sha1-ce-core.S | ||
211 | +++ b/arch/arm/crypto/sha1-ce-core.S | ||
212 | @@ -10,6 +10,7 @@ | ||
213 | #include <asm/assembler.h> | ||
214 | |||
215 | .text | ||
216 | + .arch armv8-a | ||
217 | .fpu crypto-neon-fp-armv8 | ||
218 | |||
219 | k0 .req q0 | ||
220 | diff --git a/arch/arm/crypto/sha2-ce-core.S b/arch/arm/crypto/sha2-ce-core.S | ||
221 | index 4ad517577e230..b6369d2440a19 100644 | ||
222 | --- a/arch/arm/crypto/sha2-ce-core.S | ||
223 | +++ b/arch/arm/crypto/sha2-ce-core.S | ||
224 | @@ -10,6 +10,7 @@ | ||
225 | #include <asm/assembler.h> | ||
226 | |||
227 | .text | ||
228 | + .arch armv8-a | ||
229 | .fpu crypto-neon-fp-armv8 | ||
230 | |||
231 | k0 .req q7 | ||
232 | diff --git a/arch/arm/crypto/sha256-armv4.pl b/arch/arm/crypto/sha256-armv4.pl | ||
233 | index a03cf4dfb7818..d927483985c2d 100644 | ||
234 | --- a/arch/arm/crypto/sha256-armv4.pl | ||
235 | +++ b/arch/arm/crypto/sha256-armv4.pl | ||
236 | @@ -175,7 +175,6 @@ $code=<<___; | ||
237 | #else | ||
238 | .syntax unified | ||
239 | # ifdef __thumb2__ | ||
240 | -# define adrl adr | ||
241 | .thumb | ||
242 | # else | ||
243 | .code 32 | ||
244 | @@ -471,7 +470,8 @@ sha256_block_data_order_neon: | ||
245 | stmdb sp!,{r4-r12,lr} | ||
246 | |||
247 | sub $H,sp,#16*4+16 | ||
248 | - adrl $Ktbl,K256 | ||
249 | + adr $Ktbl,.Lsha256_block_data_order | ||
250 | + sub $Ktbl,$Ktbl,#.Lsha256_block_data_order-K256 | ||
251 | bic $H,$H,#15 @ align for 128-bit stores | ||
252 | mov $t2,sp | ||
253 | mov sp,$H @ alloca | ||
254 | diff --git a/arch/arm/crypto/sha256-core.S_shipped b/arch/arm/crypto/sha256-core.S_shipped | ||
255 | index 054aae0edfce5..9deb515f3c9f2 100644 | ||
256 | --- a/arch/arm/crypto/sha256-core.S_shipped | ||
257 | +++ b/arch/arm/crypto/sha256-core.S_shipped | ||
258 | @@ -56,7 +56,6 @@ | ||
259 | #else | ||
260 | .syntax unified | ||
261 | # ifdef __thumb2__ | ||
262 | -# define adrl adr | ||
263 | .thumb | ||
264 | # else | ||
265 | .code 32 | ||
266 | @@ -1885,7 +1884,8 @@ sha256_block_data_order_neon: | ||
267 | stmdb sp!,{r4-r12,lr} | ||
268 | |||
269 | sub r11,sp,#16*4+16 | ||
270 | - adrl r14,K256 | ||
271 | + adr r14,.Lsha256_block_data_order | ||
272 | + sub r14,r14,#.Lsha256_block_data_order-K256 | ||
273 | bic r11,r11,#15 @ align for 128-bit stores | ||
274 | mov r12,sp | ||
275 | mov sp,r11 @ alloca | ||
276 | diff --git a/arch/arm/crypto/sha512-armv4.pl b/arch/arm/crypto/sha512-armv4.pl | ||
277 | index 788c17b56ecce..2a0bdf7dd87c3 100644 | ||
278 | --- a/arch/arm/crypto/sha512-armv4.pl | ||
279 | +++ b/arch/arm/crypto/sha512-armv4.pl | ||
280 | @@ -212,7 +212,6 @@ $code=<<___; | ||
281 | #else | ||
282 | .syntax unified | ||
283 | # ifdef __thumb2__ | ||
284 | -# define adrl adr | ||
285 | .thumb | ||
286 | # else | ||
287 | .code 32 | ||
288 | @@ -602,7 +601,8 @@ sha512_block_data_order_neon: | ||
289 | dmb @ errata #451034 on early Cortex A8 | ||
290 | add $len,$inp,$len,lsl#7 @ len to point at the end of inp | ||
291 | VFP_ABI_PUSH | ||
292 | - adrl $Ktbl,K512 | ||
293 | + adr $Ktbl,.Lsha512_block_data_order | ||
294 | + sub $Ktbl,$Ktbl,.Lsha512_block_data_order-K512 | ||
295 | vldmia $ctx,{$A-$H} @ load context | ||
296 | .Loop_neon: | ||
297 | ___ | ||
298 | diff --git a/arch/arm/crypto/sha512-core.S_shipped b/arch/arm/crypto/sha512-core.S_shipped | ||
299 | index 710ea309769e7..cf5a7a70ff008 100644 | ||
300 | --- a/arch/arm/crypto/sha512-core.S_shipped | ||
301 | +++ b/arch/arm/crypto/sha512-core.S_shipped | ||
302 | @@ -79,7 +79,6 @@ | ||
303 | #else | ||
304 | .syntax unified | ||
305 | # ifdef __thumb2__ | ||
306 | -# define adrl adr | ||
307 | .thumb | ||
308 | # else | ||
309 | .code 32 | ||
310 | @@ -543,7 +542,8 @@ sha512_block_data_order_neon: | ||
311 | dmb @ errata #451034 on early Cortex A8 | ||
312 | add r2,r1,r2,lsl#7 @ len to point at the end of inp | ||
313 | VFP_ABI_PUSH | ||
314 | - adrl r3,K512 | ||
315 | + adr r3,.Lsha512_block_data_order | ||
316 | + sub r3,r3,.Lsha512_block_data_order-K512 | ||
317 | vldmia r0,{d16-d23} @ load context | ||
318 | .Loop_neon: | ||
319 | vshr.u64 d24,d20,#14 @ 0 | ||
320 | diff --git a/arch/arm/include/asm/assembler.h b/arch/arm/include/asm/assembler.h | ||
321 | index 6b3e64e19fb6f..70e1c23feedb7 100644 | ||
322 | --- a/arch/arm/include/asm/assembler.h | ||
323 | +++ b/arch/arm/include/asm/assembler.h | ||
324 | @@ -279,10 +279,9 @@ | ||
325 | .endif ;\ | ||
326 | .popsection | ||
327 | #define ALT_UP_B(label) \ | ||
328 | - .equ up_b_offset, label - 9998b ;\ | ||
329 | .pushsection ".alt.smp.init", "a" ;\ | ||
330 | .long 9998b ;\ | ||
331 | - W(b) . + up_b_offset ;\ | ||
332 | + W(b) . + (label - 9998b) ;\ | ||
333 | .popsection | ||
334 | #else | ||
335 | #define ALT_SMP(instr...) | ||
336 | diff --git a/arch/arm/include/asm/vfpmacros.h b/arch/arm/include/asm/vfpmacros.h | ||
337 | index 628c336e8e3b2..947ee5395e1fb 100644 | ||
338 | --- a/arch/arm/include/asm/vfpmacros.h | ||
339 | +++ b/arch/arm/include/asm/vfpmacros.h | ||
340 | @@ -19,23 +19,25 @@ | ||
341 | |||
342 | @ read all the working registers back into the VFP | ||
343 | .macro VFPFLDMIA, base, tmp | ||
344 | + .fpu vfpv2 | ||
345 | #if __LINUX_ARM_ARCH__ < 6 | ||
346 | - LDC p11, cr0, [\base],#33*4 @ FLDMIAX \base!, {d0-d15} | ||
347 | + fldmiax \base!, {d0-d15} | ||
348 | #else | ||
349 | - LDC p11, cr0, [\base],#32*4 @ FLDMIAD \base!, {d0-d15} | ||
350 | + vldmia \base!, {d0-d15} | ||
351 | #endif | ||
352 | #ifdef CONFIG_VFPv3 | ||
353 | + .fpu vfpv3 | ||
354 | #if __LINUX_ARM_ARCH__ <= 6 | ||
355 | ldr \tmp, =elf_hwcap @ may not have MVFR regs | ||
356 | ldr \tmp, [\tmp, #0] | ||
357 | tst \tmp, #HWCAP_VFPD32 | ||
358 | - ldclne p11, cr0, [\base],#32*4 @ FLDMIAD \base!, {d16-d31} | ||
359 | + vldmiane \base!, {d16-d31} | ||
360 | addeq \base, \base, #32*4 @ step over unused register space | ||
361 | #else | ||
362 | VFPFMRX \tmp, MVFR0 @ Media and VFP Feature Register 0 | ||
363 | and \tmp, \tmp, #MVFR0_A_SIMD_MASK @ A_SIMD field | ||
364 | cmp \tmp, #2 @ 32 x 64bit registers? | ||
365 | - ldcleq p11, cr0, [\base],#32*4 @ FLDMIAD \base!, {d16-d31} | ||
366 | + vldmiaeq \base!, {d16-d31} | ||
367 | addne \base, \base, #32*4 @ step over unused register space | ||
368 | #endif | ||
369 | #endif | ||
370 | @@ -44,22 +46,23 @@ | ||
371 | @ write all the working registers out of the VFP | ||
372 | .macro VFPFSTMIA, base, tmp | ||
373 | #if __LINUX_ARM_ARCH__ < 6 | ||
374 | - STC p11, cr0, [\base],#33*4 @ FSTMIAX \base!, {d0-d15} | ||
375 | + fstmiax \base!, {d0-d15} | ||
376 | #else | ||
377 | - STC p11, cr0, [\base],#32*4 @ FSTMIAD \base!, {d0-d15} | ||
378 | + vstmia \base!, {d0-d15} | ||
379 | #endif | ||
380 | #ifdef CONFIG_VFPv3 | ||
381 | + .fpu vfpv3 | ||
382 | #if __LINUX_ARM_ARCH__ <= 6 | ||
383 | ldr \tmp, =elf_hwcap @ may not have MVFR regs | ||
384 | ldr \tmp, [\tmp, #0] | ||
385 | tst \tmp, #HWCAP_VFPD32 | ||
386 | - stclne p11, cr0, [\base],#32*4 @ FSTMIAD \base!, {d16-d31} | ||
387 | + vstmiane \base!, {d16-d31} | ||
388 | addeq \base, \base, #32*4 @ step over unused register space | ||
389 | #else | ||
390 | VFPFMRX \tmp, MVFR0 @ Media and VFP Feature Register 0 | ||
391 | and \tmp, \tmp, #MVFR0_A_SIMD_MASK @ A_SIMD field | ||
392 | cmp \tmp, #2 @ 32 x 64bit registers? | ||
393 | - stcleq p11, cr0, [\base],#32*4 @ FSTMIAD \base!, {d16-d31} | ||
394 | + vstmiaeq \base!, {d16-d31} | ||
395 | addne \base, \base, #32*4 @ step over unused register space | ||
396 | #endif | ||
397 | #endif | ||
398 | diff --git a/arch/arm/kernel/iwmmxt.S b/arch/arm/kernel/iwmmxt.S | ||
399 | index 0dcae787b004d..d2b4ac06e4ed8 100644 | ||
400 | --- a/arch/arm/kernel/iwmmxt.S | ||
401 | +++ b/arch/arm/kernel/iwmmxt.S | ||
402 | @@ -16,6 +16,7 @@ | ||
403 | #include <asm/thread_info.h> | ||
404 | #include <asm/asm-offsets.h> | ||
405 | #include <asm/assembler.h> | ||
406 | +#include "iwmmxt.h" | ||
407 | |||
408 | #if defined(CONFIG_CPU_PJ4) || defined(CONFIG_CPU_PJ4B) | ||
409 | #define PJ4(code...) code | ||
410 | @@ -113,33 +114,33 @@ concan_save: | ||
411 | |||
412 | concan_dump: | ||
413 | |||
414 | - wstrw wCSSF, [r1, #MMX_WCSSF] | ||
415 | - wstrw wCASF, [r1, #MMX_WCASF] | ||
416 | - wstrw wCGR0, [r1, #MMX_WCGR0] | ||
417 | - wstrw wCGR1, [r1, #MMX_WCGR1] | ||
418 | - wstrw wCGR2, [r1, #MMX_WCGR2] | ||
419 | - wstrw wCGR3, [r1, #MMX_WCGR3] | ||
420 | + wstrw wCSSF, r1, MMX_WCSSF | ||
421 | + wstrw wCASF, r1, MMX_WCASF | ||
422 | + wstrw wCGR0, r1, MMX_WCGR0 | ||
423 | + wstrw wCGR1, r1, MMX_WCGR1 | ||
424 | + wstrw wCGR2, r1, MMX_WCGR2 | ||
425 | + wstrw wCGR3, r1, MMX_WCGR3 | ||
426 | |||
427 | 1: @ MUP? wRn | ||
428 | tst r2, #0x2 | ||
429 | beq 2f | ||
430 | |||
431 | - wstrd wR0, [r1, #MMX_WR0] | ||
432 | - wstrd wR1, [r1, #MMX_WR1] | ||
433 | - wstrd wR2, [r1, #MMX_WR2] | ||
434 | - wstrd wR3, [r1, #MMX_WR3] | ||
435 | - wstrd wR4, [r1, #MMX_WR4] | ||
436 | - wstrd wR5, [r1, #MMX_WR5] | ||
437 | - wstrd wR6, [r1, #MMX_WR6] | ||
438 | - wstrd wR7, [r1, #MMX_WR7] | ||
439 | - wstrd wR8, [r1, #MMX_WR8] | ||
440 | - wstrd wR9, [r1, #MMX_WR9] | ||
441 | - wstrd wR10, [r1, #MMX_WR10] | ||
442 | - wstrd wR11, [r1, #MMX_WR11] | ||
443 | - wstrd wR12, [r1, #MMX_WR12] | ||
444 | - wstrd wR13, [r1, #MMX_WR13] | ||
445 | - wstrd wR14, [r1, #MMX_WR14] | ||
446 | - wstrd wR15, [r1, #MMX_WR15] | ||
447 | + wstrd wR0, r1, MMX_WR0 | ||
448 | + wstrd wR1, r1, MMX_WR1 | ||
449 | + wstrd wR2, r1, MMX_WR2 | ||
450 | + wstrd wR3, r1, MMX_WR3 | ||
451 | + wstrd wR4, r1, MMX_WR4 | ||
452 | + wstrd wR5, r1, MMX_WR5 | ||
453 | + wstrd wR6, r1, MMX_WR6 | ||
454 | + wstrd wR7, r1, MMX_WR7 | ||
455 | + wstrd wR8, r1, MMX_WR8 | ||
456 | + wstrd wR9, r1, MMX_WR9 | ||
457 | + wstrd wR10, r1, MMX_WR10 | ||
458 | + wstrd wR11, r1, MMX_WR11 | ||
459 | + wstrd wR12, r1, MMX_WR12 | ||
460 | + wstrd wR13, r1, MMX_WR13 | ||
461 | + wstrd wR14, r1, MMX_WR14 | ||
462 | + wstrd wR15, r1, MMX_WR15 | ||
463 | |||
464 | 2: teq r0, #0 @ anything to load? | ||
465 | reteq lr @ if not, return | ||
466 | @@ -147,30 +148,30 @@ concan_dump: | ||
467 | concan_load: | ||
468 | |||
469 | @ Load wRn | ||
470 | - wldrd wR0, [r0, #MMX_WR0] | ||
471 | - wldrd wR1, [r0, #MMX_WR1] | ||
472 | - wldrd wR2, [r0, #MMX_WR2] | ||
473 | - wldrd wR3, [r0, #MMX_WR3] | ||
474 | - wldrd wR4, [r0, #MMX_WR4] | ||
475 | - wldrd wR5, [r0, #MMX_WR5] | ||
476 | - wldrd wR6, [r0, #MMX_WR6] | ||
477 | - wldrd wR7, [r0, #MMX_WR7] | ||
478 | - wldrd wR8, [r0, #MMX_WR8] | ||
479 | - wldrd wR9, [r0, #MMX_WR9] | ||
480 | - wldrd wR10, [r0, #MMX_WR10] | ||
481 | - wldrd wR11, [r0, #MMX_WR11] | ||
482 | - wldrd wR12, [r0, #MMX_WR12] | ||
483 | - wldrd wR13, [r0, #MMX_WR13] | ||
484 | - wldrd wR14, [r0, #MMX_WR14] | ||
485 | - wldrd wR15, [r0, #MMX_WR15] | ||
486 | + wldrd wR0, r0, MMX_WR0 | ||
487 | + wldrd wR1, r0, MMX_WR1 | ||
488 | + wldrd wR2, r0, MMX_WR2 | ||
489 | + wldrd wR3, r0, MMX_WR3 | ||
490 | + wldrd wR4, r0, MMX_WR4 | ||
491 | + wldrd wR5, r0, MMX_WR5 | ||
492 | + wldrd wR6, r0, MMX_WR6 | ||
493 | + wldrd wR7, r0, MMX_WR7 | ||
494 | + wldrd wR8, r0, MMX_WR8 | ||
495 | + wldrd wR9, r0, MMX_WR9 | ||
496 | + wldrd wR10, r0, MMX_WR10 | ||
497 | + wldrd wR11, r0, MMX_WR11 | ||
498 | + wldrd wR12, r0, MMX_WR12 | ||
499 | + wldrd wR13, r0, MMX_WR13 | ||
500 | + wldrd wR14, r0, MMX_WR14 | ||
501 | + wldrd wR15, r0, MMX_WR15 | ||
502 | |||
503 | @ Load wCx | ||
504 | - wldrw wCSSF, [r0, #MMX_WCSSF] | ||
505 | - wldrw wCASF, [r0, #MMX_WCASF] | ||
506 | - wldrw wCGR0, [r0, #MMX_WCGR0] | ||
507 | - wldrw wCGR1, [r0, #MMX_WCGR1] | ||
508 | - wldrw wCGR2, [r0, #MMX_WCGR2] | ||
509 | - wldrw wCGR3, [r0, #MMX_WCGR3] | ||
510 | + wldrw wCSSF, r0, MMX_WCSSF | ||
511 | + wldrw wCASF, r0, MMX_WCASF | ||
512 | + wldrw wCGR0, r0, MMX_WCGR0 | ||
513 | + wldrw wCGR1, r0, MMX_WCGR1 | ||
514 | + wldrw wCGR2, r0, MMX_WCGR2 | ||
515 | + wldrw wCGR3, r0, MMX_WCGR3 | ||
516 | |||
517 | @ clear CUP/MUP (only if r1 != 0) | ||
518 | teq r1, #0 | ||
519 | diff --git a/arch/arm/kernel/iwmmxt.h b/arch/arm/kernel/iwmmxt.h | ||
520 | new file mode 100644 | ||
521 | index 0000000000000..fb627286f5bb9 | ||
522 | --- /dev/null | ||
523 | +++ b/arch/arm/kernel/iwmmxt.h | ||
524 | @@ -0,0 +1,47 @@ | ||
525 | +/* SPDX-License-Identifier: GPL-2.0 */ | ||
526 | + | ||
527 | +#ifndef __IWMMXT_H__ | ||
528 | +#define __IWMMXT_H__ | ||
529 | + | ||
530 | +.irp b, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 | ||
531 | +.set .LwR\b, \b | ||
532 | +.set .Lr\b, \b | ||
533 | +.endr | ||
534 | + | ||
535 | +.set .LwCSSF, 0x2 | ||
536 | +.set .LwCASF, 0x3 | ||
537 | +.set .LwCGR0, 0x8 | ||
538 | +.set .LwCGR1, 0x9 | ||
539 | +.set .LwCGR2, 0xa | ||
540 | +.set .LwCGR3, 0xb | ||
541 | + | ||
542 | +.macro wldrd, reg:req, base:req, offset:req | ||
543 | +.inst 0xedd00100 | (.L\reg << 12) | (.L\base << 16) | (\offset >> 2) | ||
544 | +.endm | ||
545 | + | ||
546 | +.macro wldrw, reg:req, base:req, offset:req | ||
547 | +.inst 0xfd900100 | (.L\reg << 12) | (.L\base << 16) | (\offset >> 2) | ||
548 | +.endm | ||
549 | + | ||
550 | +.macro wstrd, reg:req, base:req, offset:req | ||
551 | +.inst 0xedc00100 | (.L\reg << 12) | (.L\base << 16) | (\offset >> 2) | ||
552 | +.endm | ||
553 | + | ||
554 | +.macro wstrw, reg:req, base:req, offset:req | ||
555 | +.inst 0xfd800100 | (.L\reg << 12) | (.L\base << 16) | (\offset >> 2) | ||
556 | +.endm | ||
557 | + | ||
558 | +#ifdef __clang__ | ||
559 | + | ||
560 | +#define wCon c1 | ||
561 | + | ||
562 | +.macro tmrc, dest:req, control:req | ||
563 | +mrc p1, 0, \dest, \control, c0, 0 | ||
564 | +.endm | ||
565 | + | ||
566 | +.macro tmcr, control:req, src:req | ||
567 | +mcr p1, 0, \src, \control, c0, 0 | ||
568 | +.endm | ||
569 | +#endif | ||
570 | + | ||
571 | +#endif | ||
572 | diff --git a/arch/arm/mach-omap2/sleep34xx.S b/arch/arm/mach-omap2/sleep34xx.S | ||
573 | index ac1324c6453b5..c4e97d35c310d 100644 | ||
574 | --- a/arch/arm/mach-omap2/sleep34xx.S | ||
575 | +++ b/arch/arm/mach-omap2/sleep34xx.S | ||
576 | @@ -72,7 +72,7 @@ ENTRY(enable_omap3630_toggle_l2_on_restore) | ||
577 | stmfd sp!, {lr} @ save registers on stack | ||
578 | /* Setup so that we will disable and enable l2 */ | ||
579 | mov r1, #0x1 | ||
580 | - adrl r3, l2dis_3630_offset @ may be too distant for plain adr | ||
581 | + adr r3, l2dis_3630_offset | ||
582 | ldr r2, [r3] @ value for offset | ||
583 | str r1, [r2, r3] @ write to l2dis_3630 | ||
584 | ldmfd sp!, {pc} @ restore regs and return | ||
585 | diff --git a/arch/arm/mm/proc-arm1020.S b/arch/arm/mm/proc-arm1020.S | ||
586 | index 4fa5371bc6624..2785da387c910 100644 | ||
587 | --- a/arch/arm/mm/proc-arm1020.S | ||
588 | +++ b/arch/arm/mm/proc-arm1020.S | ||
589 | @@ -491,7 +491,7 @@ cpu_arm1020_name: | ||
590 | |||
591 | .align | ||
592 | |||
593 | - .section ".proc.info.init", #alloc | ||
594 | + .section ".proc.info.init", "a" | ||
595 | |||
596 | .type __arm1020_proc_info,#object | ||
597 | __arm1020_proc_info: | ||
598 | diff --git a/arch/arm/mm/proc-arm1020e.S b/arch/arm/mm/proc-arm1020e.S | ||
599 | index 5d8a8339e09a4..e9ea237ed7852 100644 | ||
600 | --- a/arch/arm/mm/proc-arm1020e.S | ||
601 | +++ b/arch/arm/mm/proc-arm1020e.S | ||
602 | @@ -449,7 +449,7 @@ arm1020e_crval: | ||
603 | |||
604 | .align | ||
605 | |||
606 | - .section ".proc.info.init", #alloc | ||
607 | + .section ".proc.info.init", "a" | ||
608 | |||
609 | .type __arm1020e_proc_info,#object | ||
610 | __arm1020e_proc_info: | ||
611 | diff --git a/arch/arm/mm/proc-arm1022.S b/arch/arm/mm/proc-arm1022.S | ||
612 | index b3dd95c345e48..920c279e7879d 100644 | ||
613 | --- a/arch/arm/mm/proc-arm1022.S | ||
614 | +++ b/arch/arm/mm/proc-arm1022.S | ||
615 | @@ -443,7 +443,7 @@ arm1022_crval: | ||
616 | |||
617 | .align | ||
618 | |||
619 | - .section ".proc.info.init", #alloc | ||
620 | + .section ".proc.info.init", "a" | ||
621 | |||
622 | .type __arm1022_proc_info,#object | ||
623 | __arm1022_proc_info: | ||
624 | diff --git a/arch/arm/mm/proc-arm1026.S b/arch/arm/mm/proc-arm1026.S | ||
625 | index ac5afde12f35c..0bdf25a95b107 100644 | ||
626 | --- a/arch/arm/mm/proc-arm1026.S | ||
627 | +++ b/arch/arm/mm/proc-arm1026.S | ||
628 | @@ -138,7 +138,7 @@ ENTRY(arm1026_flush_kern_cache_all) | ||
629 | mov ip, #0 | ||
630 | __flush_whole_cache: | ||
631 | #ifndef CONFIG_CPU_DCACHE_DISABLE | ||
632 | -1: mrc p15, 0, r15, c7, c14, 3 @ test, clean, invalidate | ||
633 | +1: mrc p15, 0, APSR_nzcv, c7, c14, 3 @ test, clean, invalidate | ||
634 | bne 1b | ||
635 | #endif | ||
636 | tst r2, #VM_EXEC | ||
637 | @@ -363,7 +363,7 @@ ENTRY(cpu_arm1026_switch_mm) | ||
638 | #ifdef CONFIG_MMU | ||
639 | mov r1, #0 | ||
640 | #ifndef CONFIG_CPU_DCACHE_DISABLE | ||
641 | -1: mrc p15, 0, r15, c7, c14, 3 @ test, clean, invalidate | ||
642 | +1: mrc p15, 0, APSR_nzcv, c7, c14, 3 @ test, clean, invalidate | ||
643 | bne 1b | ||
644 | #endif | ||
645 | #ifndef CONFIG_CPU_ICACHE_DISABLE | ||
646 | @@ -437,7 +437,7 @@ arm1026_crval: | ||
647 | string cpu_arm1026_name, "ARM1026EJ-S" | ||
648 | .align | ||
649 | |||
650 | - .section ".proc.info.init", #alloc | ||
651 | + .section ".proc.info.init", "a" | ||
652 | |||
653 | .type __arm1026_proc_info,#object | ||
654 | __arm1026_proc_info: | ||
655 | diff --git a/arch/arm/mm/proc-arm720.S b/arch/arm/mm/proc-arm720.S | ||
656 | index c99d24363f32e..39361e196d61b 100644 | ||
657 | --- a/arch/arm/mm/proc-arm720.S | ||
658 | +++ b/arch/arm/mm/proc-arm720.S | ||
659 | @@ -172,7 +172,7 @@ arm720_crval: | ||
660 | * See <asm/procinfo.h> for a definition of this structure. | ||
661 | */ | ||
662 | |||
663 | - .section ".proc.info.init", #alloc | ||
664 | + .section ".proc.info.init", "a" | ||
665 | |||
666 | .macro arm720_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req, cpu_flush:req | ||
667 | .type __\name\()_proc_info,#object | ||
668 | diff --git a/arch/arm/mm/proc-arm740.S b/arch/arm/mm/proc-arm740.S | ||
669 | index 1b4a3838393fb..1a94bbf6e53fc 100644 | ||
670 | --- a/arch/arm/mm/proc-arm740.S | ||
671 | +++ b/arch/arm/mm/proc-arm740.S | ||
672 | @@ -128,7 +128,7 @@ __arm740_setup: | ||
673 | |||
674 | .align | ||
675 | |||
676 | - .section ".proc.info.init", #alloc | ||
677 | + .section ".proc.info.init", "a" | ||
678 | .type __arm740_proc_info,#object | ||
679 | __arm740_proc_info: | ||
680 | .long 0x41807400 | ||
681 | diff --git a/arch/arm/mm/proc-arm7tdmi.S b/arch/arm/mm/proc-arm7tdmi.S | ||
682 | index 17a4687065c7f..52b66cf0259e3 100644 | ||
683 | --- a/arch/arm/mm/proc-arm7tdmi.S | ||
684 | +++ b/arch/arm/mm/proc-arm7tdmi.S | ||
685 | @@ -72,7 +72,7 @@ __arm7tdmi_setup: | ||
686 | |||
687 | .align | ||
688 | |||
689 | - .section ".proc.info.init", #alloc | ||
690 | + .section ".proc.info.init", "a" | ||
691 | |||
692 | .macro arm7tdmi_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req, \ | ||
693 | extra_hwcaps=0 | ||
694 | diff --git a/arch/arm/mm/proc-arm920.S b/arch/arm/mm/proc-arm920.S | ||
695 | index 298c76b47749f..31ac8acc34dc5 100644 | ||
696 | --- a/arch/arm/mm/proc-arm920.S | ||
697 | +++ b/arch/arm/mm/proc-arm920.S | ||
698 | @@ -434,7 +434,7 @@ arm920_crval: | ||
699 | |||
700 | .align | ||
701 | |||
702 | - .section ".proc.info.init", #alloc | ||
703 | + .section ".proc.info.init", "a" | ||
704 | |||
705 | .type __arm920_proc_info,#object | ||
706 | __arm920_proc_info: | ||
707 | diff --git a/arch/arm/mm/proc-arm922.S b/arch/arm/mm/proc-arm922.S | ||
708 | index 824be3a0bc238..ca2c7ca8af214 100644 | ||
709 | --- a/arch/arm/mm/proc-arm922.S | ||
710 | +++ b/arch/arm/mm/proc-arm922.S | ||
711 | @@ -412,7 +412,7 @@ arm922_crval: | ||
712 | |||
713 | .align | ||
714 | |||
715 | - .section ".proc.info.init", #alloc | ||
716 | + .section ".proc.info.init", "a" | ||
717 | |||
718 | .type __arm922_proc_info,#object | ||
719 | __arm922_proc_info: | ||
720 | diff --git a/arch/arm/mm/proc-arm925.S b/arch/arm/mm/proc-arm925.S | ||
721 | index d40cff8f102c2..a381a0c9f1092 100644 | ||
722 | --- a/arch/arm/mm/proc-arm925.S | ||
723 | +++ b/arch/arm/mm/proc-arm925.S | ||
724 | @@ -477,7 +477,7 @@ arm925_crval: | ||
725 | |||
726 | .align | ||
727 | |||
728 | - .section ".proc.info.init", #alloc | ||
729 | + .section ".proc.info.init", "a" | ||
730 | |||
731 | .macro arm925_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req, cache | ||
732 | .type __\name\()_proc_info,#object | ||
733 | diff --git a/arch/arm/mm/proc-arm926.S b/arch/arm/mm/proc-arm926.S | ||
734 | index f3cd08f353f00..1ba253c2bce19 100644 | ||
735 | --- a/arch/arm/mm/proc-arm926.S | ||
736 | +++ b/arch/arm/mm/proc-arm926.S | ||
737 | @@ -131,7 +131,7 @@ __flush_whole_cache: | ||
738 | #ifdef CONFIG_CPU_DCACHE_WRITETHROUGH | ||
739 | mcr p15, 0, ip, c7, c6, 0 @ invalidate D cache | ||
740 | #else | ||
741 | -1: mrc p15, 0, r15, c7, c14, 3 @ test,clean,invalidate | ||
742 | +1: mrc p15, 0, APSR_nzcv, c7, c14, 3 @ test,clean,invalidate | ||
743 | bne 1b | ||
744 | #endif | ||
745 | tst r2, #VM_EXEC | ||
746 | @@ -358,7 +358,7 @@ ENTRY(cpu_arm926_switch_mm) | ||
747 | mcr p15, 0, ip, c7, c6, 0 @ invalidate D cache | ||
748 | #else | ||
749 | @ && 'Clean & Invalidate whole DCache' | ||
750 | -1: mrc p15, 0, r15, c7, c14, 3 @ test,clean,invalidate | ||
751 | +1: mrc p15, 0, APSR_nzcv, c7, c14, 3 @ test,clean,invalidate | ||
752 | bne 1b | ||
753 | #endif | ||
754 | mcr p15, 0, ip, c7, c5, 0 @ invalidate I cache | ||
755 | @@ -460,7 +460,7 @@ arm926_crval: | ||
756 | |||
757 | .align | ||
758 | |||
759 | - .section ".proc.info.init", #alloc | ||
760 | + .section ".proc.info.init", "a" | ||
761 | |||
762 | .type __arm926_proc_info,#object | ||
763 | __arm926_proc_info: | ||
764 | diff --git a/arch/arm/mm/proc-arm940.S b/arch/arm/mm/proc-arm940.S | ||
765 | index 1c26d991386d7..4b8a00220cc97 100644 | ||
766 | --- a/arch/arm/mm/proc-arm940.S | ||
767 | +++ b/arch/arm/mm/proc-arm940.S | ||
768 | @@ -340,7 +340,7 @@ __arm940_setup: | ||
769 | |||
770 | .align | ||
771 | |||
772 | - .section ".proc.info.init", #alloc | ||
773 | + .section ".proc.info.init", "a" | ||
774 | |||
775 | .type __arm940_proc_info,#object | ||
776 | __arm940_proc_info: | ||
777 | diff --git a/arch/arm/mm/proc-arm946.S b/arch/arm/mm/proc-arm946.S | ||
778 | index 2dc1c75a4fd4a..555becf9c758d 100644 | ||
779 | --- a/arch/arm/mm/proc-arm946.S | ||
780 | +++ b/arch/arm/mm/proc-arm946.S | ||
781 | @@ -395,7 +395,7 @@ __arm946_setup: | ||
782 | |||
783 | .align | ||
784 | |||
785 | - .section ".proc.info.init", #alloc | ||
786 | + .section ".proc.info.init", "a" | ||
787 | .type __arm946_proc_info,#object | ||
788 | __arm946_proc_info: | ||
789 | .long 0x41009460 | ||
790 | diff --git a/arch/arm/mm/proc-arm9tdmi.S b/arch/arm/mm/proc-arm9tdmi.S | ||
791 | index 913c06e590af5..ef517530130b0 100644 | ||
792 | --- a/arch/arm/mm/proc-arm9tdmi.S | ||
793 | +++ b/arch/arm/mm/proc-arm9tdmi.S | ||
794 | @@ -66,7 +66,7 @@ __arm9tdmi_setup: | ||
795 | |||
796 | .align | ||
797 | |||
798 | - .section ".proc.info.init", #alloc | ||
799 | + .section ".proc.info.init", "a" | ||
800 | |||
801 | .macro arm9tdmi_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req | ||
802 | .type __\name\()_proc_info, #object | ||
803 | diff --git a/arch/arm/mm/proc-fa526.S b/arch/arm/mm/proc-fa526.S | ||
804 | index 8120b6f4dbb83..dddf833fe0007 100644 | ||
805 | --- a/arch/arm/mm/proc-fa526.S | ||
806 | +++ b/arch/arm/mm/proc-fa526.S | ||
807 | @@ -185,7 +185,7 @@ fa526_cr1_set: | ||
808 | |||
809 | .align | ||
810 | |||
811 | - .section ".proc.info.init", #alloc | ||
812 | + .section ".proc.info.init", "a" | ||
813 | |||
814 | .type __fa526_proc_info,#object | ||
815 | __fa526_proc_info: | ||
816 | diff --git a/arch/arm/mm/proc-feroceon.S b/arch/arm/mm/proc-feroceon.S | ||
817 | index bb6dc34d42a37..b12b76bc8d30c 100644 | ||
818 | --- a/arch/arm/mm/proc-feroceon.S | ||
819 | +++ b/arch/arm/mm/proc-feroceon.S | ||
820 | @@ -571,7 +571,7 @@ feroceon_crval: | ||
821 | |||
822 | .align | ||
823 | |||
824 | - .section ".proc.info.init", #alloc | ||
825 | + .section ".proc.info.init", "a" | ||
826 | |||
827 | .macro feroceon_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req, cache:req | ||
828 | .type __\name\()_proc_info,#object | ||
829 | diff --git a/arch/arm/mm/proc-mohawk.S b/arch/arm/mm/proc-mohawk.S | ||
830 | index f083085788857..d47d6c5cee63a 100644 | ||
831 | --- a/arch/arm/mm/proc-mohawk.S | ||
832 | +++ b/arch/arm/mm/proc-mohawk.S | ||
833 | @@ -416,7 +416,7 @@ mohawk_crval: | ||
834 | |||
835 | .align | ||
836 | |||
837 | - .section ".proc.info.init", #alloc | ||
838 | + .section ".proc.info.init", "a" | ||
839 | |||
840 | .type __88sv331x_proc_info,#object | ||
841 | __88sv331x_proc_info: | ||
842 | diff --git a/arch/arm/mm/proc-sa110.S b/arch/arm/mm/proc-sa110.S | ||
843 | index d5bc5d7025639..baba503ba8166 100644 | ||
844 | --- a/arch/arm/mm/proc-sa110.S | ||
845 | +++ b/arch/arm/mm/proc-sa110.S | ||
846 | @@ -196,7 +196,7 @@ sa110_crval: | ||
847 | |||
848 | .align | ||
849 | |||
850 | - .section ".proc.info.init", #alloc | ||
851 | + .section ".proc.info.init", "a" | ||
852 | |||
853 | .type __sa110_proc_info,#object | ||
854 | __sa110_proc_info: | ||
855 | diff --git a/arch/arm/mm/proc-sa1100.S b/arch/arm/mm/proc-sa1100.S | ||
856 | index be7b611c76c76..75ebacc8e4e5c 100644 | ||
857 | --- a/arch/arm/mm/proc-sa1100.S | ||
858 | +++ b/arch/arm/mm/proc-sa1100.S | ||
859 | @@ -239,7 +239,7 @@ sa1100_crval: | ||
860 | |||
861 | .align | ||
862 | |||
863 | - .section ".proc.info.init", #alloc | ||
864 | + .section ".proc.info.init", "a" | ||
865 | |||
866 | .macro sa1100_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req | ||
867 | .type __\name\()_proc_info,#object | ||
868 | diff --git a/arch/arm/mm/proc-v6.S b/arch/arm/mm/proc-v6.S | ||
869 | index c1c85eb3484f3..1dd0d5ca27da8 100644 | ||
870 | --- a/arch/arm/mm/proc-v6.S | ||
871 | +++ b/arch/arm/mm/proc-v6.S | ||
872 | @@ -261,7 +261,7 @@ v6_crval: | ||
873 | string cpu_elf_name, "v6" | ||
874 | .align | ||
875 | |||
876 | - .section ".proc.info.init", #alloc | ||
877 | + .section ".proc.info.init", "a" | ||
878 | |||
879 | /* | ||
880 | * Match any ARMv6 processor core. | ||
881 | diff --git a/arch/arm/mm/proc-v7.S b/arch/arm/mm/proc-v7.S | ||
882 | index c4e8006a1a8cd..48e0ef6f0dccf 100644 | ||
883 | --- a/arch/arm/mm/proc-v7.S | ||
884 | +++ b/arch/arm/mm/proc-v7.S | ||
885 | @@ -644,7 +644,7 @@ __v7_setup_stack: | ||
886 | string cpu_elf_name, "v7" | ||
887 | .align | ||
888 | |||
889 | - .section ".proc.info.init", #alloc | ||
890 | + .section ".proc.info.init", "a" | ||
891 | |||
892 | /* | ||
893 | * Standard v7 proc info content | ||
894 | diff --git a/arch/arm/mm/proc-v7m.S b/arch/arm/mm/proc-v7m.S | ||
895 | index 1a49d503eafc8..84459c1d31b87 100644 | ||
896 | --- a/arch/arm/mm/proc-v7m.S | ||
897 | +++ b/arch/arm/mm/proc-v7m.S | ||
898 | @@ -93,7 +93,7 @@ ENTRY(cpu_cm7_proc_fin) | ||
899 | ret lr | ||
900 | ENDPROC(cpu_cm7_proc_fin) | ||
901 | |||
902 | - .section ".init.text", #alloc, #execinstr | ||
903 | + .section ".init.text", "ax" | ||
904 | |||
905 | __v7m_cm7_setup: | ||
906 | mov r8, #(V7M_SCB_CCR_DC | V7M_SCB_CCR_IC| V7M_SCB_CCR_BP) | ||
907 | @@ -177,7 +177,7 @@ ENDPROC(__v7m_setup) | ||
908 | string cpu_elf_name "v7m" | ||
909 | string cpu_v7m_name "ARMv7-M" | ||
910 | |||
911 | - .section ".proc.info.init", #alloc | ||
912 | + .section ".proc.info.init", "a" | ||
913 | |||
914 | .macro __v7m_proc name, initfunc, cache_fns = nop_cache_fns, hwcaps = 0, proc_fns = v7m_processor_functions | ||
915 | .long 0 /* proc_info_list.__cpu_mm_mmu_flags */ | ||
916 | diff --git a/arch/arm/mm/proc-xsc3.S b/arch/arm/mm/proc-xsc3.S | ||
917 | index 1ac0fbbe9f127..42eaecc43cfef 100644 | ||
918 | --- a/arch/arm/mm/proc-xsc3.S | ||
919 | +++ b/arch/arm/mm/proc-xsc3.S | ||
920 | @@ -496,7 +496,7 @@ xsc3_crval: | ||
921 | |||
922 | .align | ||
923 | |||
924 | - .section ".proc.info.init", #alloc | ||
925 | + .section ".proc.info.init", "a" | ||
926 | |||
927 | .macro xsc3_proc_info name:req, cpu_val:req, cpu_mask:req | ||
928 | .type __\name\()_proc_info,#object | ||
929 | diff --git a/arch/arm/mm/proc-xscale.S b/arch/arm/mm/proc-xscale.S | ||
930 | index bdb2b7749b039..18ac5a1f89225 100644 | ||
931 | --- a/arch/arm/mm/proc-xscale.S | ||
932 | +++ b/arch/arm/mm/proc-xscale.S | ||
933 | @@ -610,7 +610,7 @@ xscale_crval: | ||
934 | |||
935 | .align | ||
936 | |||
937 | - .section ".proc.info.init", #alloc | ||
938 | + .section ".proc.info.init", "a" | ||
939 | |||
940 | .macro xscale_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req, cache | ||
941 | .type __\name\()_proc_info,#object | ||
942 | diff --git a/arch/arm/vfp/Makefile b/arch/arm/vfp/Makefile | ||
943 | index 9975b63ac3b0d..749901a72d6dc 100644 | ||
944 | --- a/arch/arm/vfp/Makefile | ||
945 | +++ b/arch/arm/vfp/Makefile | ||
946 | @@ -8,6 +8,4 @@ | ||
947 | # ccflags-y := -DDEBUG | ||
948 | # asflags-y := -DDEBUG | ||
949 | |||
950 | -KBUILD_AFLAGS :=$(KBUILD_AFLAGS:-msoft-float=-Wa,-mfpu=softvfp+vfp -mfloat-abi=soft) | ||
951 | - | ||
952 | obj-y += vfpmodule.o entry.o vfphw.o vfpsingle.o vfpdouble.o | ||
953 | diff --git a/arch/arm/vfp/vfphw.S b/arch/arm/vfp/vfphw.S | ||
954 | index b530db8f2c6c8..772c6a3b1f724 100644 | ||
955 | --- a/arch/arm/vfp/vfphw.S | ||
956 | +++ b/arch/arm/vfp/vfphw.S | ||
957 | @@ -253,11 +253,14 @@ vfp_current_hw_state_address: | ||
958 | |||
959 | ENTRY(vfp_get_float) | ||
960 | tbl_branch r0, r3, #3 | ||
961 | + .fpu vfpv2 | ||
962 | .irp dr,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 | ||
963 | -1: mrc p10, 0, r0, c\dr, c0, 0 @ fmrs r0, s0 | ||
964 | +1: vmov r0, s\dr | ||
965 | ret lr | ||
966 | .org 1b + 8 | ||
967 | -1: mrc p10, 0, r0, c\dr, c0, 4 @ fmrs r0, s1 | ||
968 | + .endr | ||
969 | + .irp dr,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31 | ||
970 | +1: vmov r0, s\dr | ||
971 | ret lr | ||
972 | .org 1b + 8 | ||
973 | .endr | ||
974 | @@ -265,11 +268,14 @@ ENDPROC(vfp_get_float) | ||
975 | |||
976 | ENTRY(vfp_put_float) | ||
977 | tbl_branch r1, r3, #3 | ||
978 | + .fpu vfpv2 | ||
979 | .irp dr,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 | ||
980 | -1: mcr p10, 0, r0, c\dr, c0, 0 @ fmsr r0, s0 | ||
981 | +1: vmov s\dr, r0 | ||
982 | ret lr | ||
983 | .org 1b + 8 | ||
984 | -1: mcr p10, 0, r0, c\dr, c0, 4 @ fmsr r0, s1 | ||
985 | + .endr | ||
986 | + .irp dr,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31 | ||
987 | +1: vmov s\dr, r0 | ||
988 | ret lr | ||
989 | .org 1b + 8 | ||
990 | .endr | ||
991 | @@ -277,15 +283,17 @@ ENDPROC(vfp_put_float) | ||
992 | |||
993 | ENTRY(vfp_get_double) | ||
994 | tbl_branch r0, r3, #3 | ||
995 | + .fpu vfpv2 | ||
996 | .irp dr,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 | ||
997 | -1: fmrrd r0, r1, d\dr | ||
998 | +1: vmov r0, r1, d\dr | ||
999 | ret lr | ||
1000 | .org 1b + 8 | ||
1001 | .endr | ||
1002 | #ifdef CONFIG_VFPv3 | ||
1003 | @ d16 - d31 registers | ||
1004 | - .irp dr,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 | ||
1005 | -1: mrrc p11, 3, r0, r1, c\dr @ fmrrd r0, r1, d\dr | ||
1006 | + .fpu vfpv3 | ||
1007 | + .irp dr,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31 | ||
1008 | +1: vmov r0, r1, d\dr | ||
1009 | ret lr | ||
1010 | .org 1b + 8 | ||
1011 | .endr | ||
1012 | @@ -299,15 +307,17 @@ ENDPROC(vfp_get_double) | ||
1013 | |||
1014 | ENTRY(vfp_put_double) | ||
1015 | tbl_branch r2, r3, #3 | ||
1016 | + .fpu vfpv2 | ||
1017 | .irp dr,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 | ||
1018 | -1: fmdrr d\dr, r0, r1 | ||
1019 | +1: vmov d\dr, r0, r1 | ||
1020 | ret lr | ||
1021 | .org 1b + 8 | ||
1022 | .endr | ||
1023 | #ifdef CONFIG_VFPv3 | ||
1024 | + .fpu vfpv3 | ||
1025 | @ d16 - d31 registers | ||
1026 | - .irp dr,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 | ||
1027 | -1: mcrr p11, 3, r0, r1, c\dr @ fmdrr r0, r1, d\dr | ||
1028 | + .irp dr,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31 | ||
1029 | +1: vmov d\dr, r0, r1 | ||
1030 | ret lr | ||
1031 | .org 1b + 8 | ||
1032 | .endr | ||
1033 | diff --git a/arch/powerpc/include/asm/ftrace.h b/arch/powerpc/include/asm/ftrace.h | ||
1034 | index f54a08a2cd709..017336f2b0864 100644 | ||
1035 | --- a/arch/powerpc/include/asm/ftrace.h | ||
1036 | +++ b/arch/powerpc/include/asm/ftrace.h | ||
1037 | @@ -96,7 +96,7 @@ static inline bool arch_syscall_match_sym_name(const char *sym, const char *name | ||
1038 | #endif /* PPC64_ELF_ABI_v1 */ | ||
1039 | #endif /* CONFIG_FTRACE_SYSCALLS */ | ||
1040 | |||
1041 | -#ifdef CONFIG_PPC64 | ||
1042 | +#if defined(CONFIG_PPC64) && defined(CONFIG_FUNCTION_TRACER) | ||
1043 | #include <asm/paca.h> | ||
1044 | |||
1045 | static inline void this_cpu_disable_ftrace(void) | ||
1046 | @@ -108,9 +108,12 @@ static inline void this_cpu_enable_ftrace(void) | ||
1047 | { | ||
1048 | get_paca()->ftrace_enabled = 1; | ||
1049 | } | ||
1050 | + | ||
1051 | +void ftrace_free_init_tramp(void); | ||
1052 | #else /* CONFIG_PPC64 */ | ||
1053 | static inline void this_cpu_disable_ftrace(void) { } | ||
1054 | static inline void this_cpu_enable_ftrace(void) { } | ||
1055 | +static inline void ftrace_free_init_tramp(void) { } | ||
1056 | #endif /* CONFIG_PPC64 */ | ||
1057 | #endif /* !__ASSEMBLY__ */ | ||
1058 | |||
1059 | diff --git a/arch/powerpc/kernel/trace/ftrace.c b/arch/powerpc/kernel/trace/ftrace.c | ||
1060 | index 7ea0ca044b650..d816e714f2f48 100644 | ||
1061 | --- a/arch/powerpc/kernel/trace/ftrace.c | ||
1062 | +++ b/arch/powerpc/kernel/trace/ftrace.c | ||
1063 | @@ -328,9 +328,7 @@ static int setup_mcount_compiler_tramp(unsigned long tramp) | ||
1064 | |||
1065 | /* Is this a known long jump tramp? */ | ||
1066 | for (i = 0; i < NUM_FTRACE_TRAMPS; i++) | ||
1067 | - if (!ftrace_tramps[i]) | ||
1068 | - break; | ||
1069 | - else if (ftrace_tramps[i] == tramp) | ||
1070 | + if (ftrace_tramps[i] == tramp) | ||
1071 | return 0; | ||
1072 | |||
1073 | /* Is this a known plt tramp? */ | ||
1074 | @@ -868,6 +866,17 @@ void arch_ftrace_update_code(int command) | ||
1075 | |||
1076 | extern unsigned int ftrace_tramp_text[], ftrace_tramp_init[]; | ||
1077 | |||
1078 | +void ftrace_free_init_tramp(void) | ||
1079 | +{ | ||
1080 | + int i; | ||
1081 | + | ||
1082 | + for (i = 0; i < NUM_FTRACE_TRAMPS && ftrace_tramps[i]; i++) | ||
1083 | + if (ftrace_tramps[i] == (unsigned long)ftrace_tramp_init) { | ||
1084 | + ftrace_tramps[i] = 0; | ||
1085 | + return; | ||
1086 | + } | ||
1087 | +} | ||
1088 | + | ||
1089 | int __init ftrace_dyn_arch_init(void) | ||
1090 | { | ||
1091 | int i; | ||
1092 | diff --git a/arch/powerpc/mm/mem.c b/arch/powerpc/mm/mem.c | ||
1093 | index c48705c726ac6..d427f70556eab 100644 | ||
1094 | --- a/arch/powerpc/mm/mem.c | ||
1095 | +++ b/arch/powerpc/mm/mem.c | ||
1096 | @@ -48,6 +48,7 @@ | ||
1097 | #include <asm/fixmap.h> | ||
1098 | #include <asm/swiotlb.h> | ||
1099 | #include <asm/rtas.h> | ||
1100 | +#include <asm/ftrace.h> | ||
1101 | |||
1102 | #include <mm/mmu_decl.h> | ||
1103 | |||
1104 | @@ -346,6 +347,7 @@ void free_initmem(void) | ||
1105 | mark_initmem_nx(); | ||
1106 | init_mem_is_free = true; | ||
1107 | free_initmem_default(POISON_FREE_INITMEM); | ||
1108 | + ftrace_free_init_tramp(); | ||
1109 | } | ||
1110 | |||
1111 | /** | ||
1112 | diff --git a/arch/s390/include/asm/kexec.h b/arch/s390/include/asm/kexec.h | ||
1113 | index 7f3c9ac34bd8d..63098df81c9f2 100644 | ||
1114 | --- a/arch/s390/include/asm/kexec.h | ||
1115 | +++ b/arch/s390/include/asm/kexec.h | ||
1116 | @@ -9,6 +9,8 @@ | ||
1117 | #ifndef _S390_KEXEC_H | ||
1118 | #define _S390_KEXEC_H | ||
1119 | |||
1120 | +#include <linux/module.h> | ||
1121 | + | ||
1122 | #include <asm/processor.h> | ||
1123 | #include <asm/page.h> | ||
1124 | #include <asm/setup.h> | ||
1125 | @@ -83,4 +85,12 @@ struct kimage_arch { | ||
1126 | extern const struct kexec_file_ops s390_kexec_image_ops; | ||
1127 | extern const struct kexec_file_ops s390_kexec_elf_ops; | ||
1128 | |||
1129 | +#ifdef CONFIG_KEXEC_FILE | ||
1130 | +struct purgatory_info; | ||
1131 | +int arch_kexec_apply_relocations_add(struct purgatory_info *pi, | ||
1132 | + Elf_Shdr *section, | ||
1133 | + const Elf_Shdr *relsec, | ||
1134 | + const Elf_Shdr *symtab); | ||
1135 | +#define arch_kexec_apply_relocations_add arch_kexec_apply_relocations_add | ||
1136 | +#endif | ||
1137 | #endif /*_S390_KEXEC_H */ | ||
1138 | diff --git a/arch/x86/include/asm/kexec.h b/arch/x86/include/asm/kexec.h | ||
1139 | index 5e7d6b46de97d..367da081f7d9d 100644 | ||
1140 | --- a/arch/x86/include/asm/kexec.h | ||
1141 | +++ b/arch/x86/include/asm/kexec.h | ||
1142 | @@ -22,6 +22,7 @@ | ||
1143 | |||
1144 | #include <linux/string.h> | ||
1145 | #include <linux/kernel.h> | ||
1146 | +#include <linux/module.h> | ||
1147 | |||
1148 | #include <asm/page.h> | ||
1149 | #include <asm/ptrace.h> | ||
1150 | @@ -201,6 +202,14 @@ extern int arch_kexec_post_alloc_pages(void *vaddr, unsigned int pages, | ||
1151 | extern void arch_kexec_pre_free_pages(void *vaddr, unsigned int pages); | ||
1152 | #define arch_kexec_pre_free_pages arch_kexec_pre_free_pages | ||
1153 | |||
1154 | +#ifdef CONFIG_KEXEC_FILE | ||
1155 | +struct purgatory_info; | ||
1156 | +int arch_kexec_apply_relocations_add(struct purgatory_info *pi, | ||
1157 | + Elf_Shdr *section, | ||
1158 | + const Elf_Shdr *relsec, | ||
1159 | + const Elf_Shdr *symtab); | ||
1160 | +#define arch_kexec_apply_relocations_add arch_kexec_apply_relocations_add | ||
1161 | +#endif | ||
1162 | #endif | ||
1163 | |||
1164 | typedef void crash_vmclear_fn(void); | ||
1165 | diff --git a/drivers/gpu/drm/drm_crtc_helper_internal.h b/drivers/gpu/drm/drm_crtc_helper_internal.h | ||
1166 | index b5ac1581e6231..d595697d3d7e0 100644 | ||
1167 | --- a/drivers/gpu/drm/drm_crtc_helper_internal.h | ||
1168 | +++ b/drivers/gpu/drm/drm_crtc_helper_internal.h | ||
1169 | @@ -32,16 +32,6 @@ | ||
1170 | #include <drm/drm_encoder.h> | ||
1171 | #include <drm/drm_modes.h> | ||
1172 | |||
1173 | -/* drm_fb_helper.c */ | ||
1174 | -#ifdef CONFIG_DRM_FBDEV_EMULATION | ||
1175 | -int drm_fb_helper_modinit(void); | ||
1176 | -#else | ||
1177 | -static inline int drm_fb_helper_modinit(void) | ||
1178 | -{ | ||
1179 | - return 0; | ||
1180 | -} | ||
1181 | -#endif | ||
1182 | - | ||
1183 | /* drm_dp_aux_dev.c */ | ||
1184 | #ifdef CONFIG_DRM_DP_AUX_CHARDEV | ||
1185 | int drm_dp_aux_dev_init(void); | ||
1186 | diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c | ||
1187 | index 02ffde5fd7226..4ae68bf048920 100644 | ||
1188 | --- a/drivers/gpu/drm/drm_fb_helper.c | ||
1189 | +++ b/drivers/gpu/drm/drm_fb_helper.c | ||
1190 | @@ -2415,24 +2415,3 @@ int drm_fbdev_generic_setup(struct drm_device *dev, unsigned int preferred_bpp) | ||
1191 | return 0; | ||
1192 | } | ||
1193 | EXPORT_SYMBOL(drm_fbdev_generic_setup); | ||
1194 | - | ||
1195 | -/* The Kconfig DRM_KMS_HELPER selects FRAMEBUFFER_CONSOLE (if !EXPERT) | ||
1196 | - * but the module doesn't depend on any fb console symbols. At least | ||
1197 | - * attempt to load fbcon to avoid leaving the system without a usable console. | ||
1198 | - */ | ||
1199 | -int __init drm_fb_helper_modinit(void) | ||
1200 | -{ | ||
1201 | -#if defined(CONFIG_FRAMEBUFFER_CONSOLE_MODULE) && !defined(CONFIG_EXPERT) | ||
1202 | - const char name[] = "fbcon"; | ||
1203 | - struct module *fbcon; | ||
1204 | - | ||
1205 | - mutex_lock(&module_mutex); | ||
1206 | - fbcon = find_module(name); | ||
1207 | - mutex_unlock(&module_mutex); | ||
1208 | - | ||
1209 | - if (!fbcon) | ||
1210 | - request_module_nowait(name); | ||
1211 | -#endif | ||
1212 | - return 0; | ||
1213 | -} | ||
1214 | -EXPORT_SYMBOL(drm_fb_helper_modinit); | ||
1215 | diff --git a/drivers/gpu/drm/drm_kms_helper_common.c b/drivers/gpu/drm/drm_kms_helper_common.c | ||
1216 | index 221a8528c9937..f933da1656eb5 100644 | ||
1217 | --- a/drivers/gpu/drm/drm_kms_helper_common.c | ||
1218 | +++ b/drivers/gpu/drm/drm_kms_helper_common.c | ||
1219 | @@ -64,19 +64,18 @@ MODULE_PARM_DESC(edid_firmware, | ||
1220 | |||
1221 | static int __init drm_kms_helper_init(void) | ||
1222 | { | ||
1223 | - int ret; | ||
1224 | - | ||
1225 | - /* Call init functions from specific kms helpers here */ | ||
1226 | - ret = drm_fb_helper_modinit(); | ||
1227 | - if (ret < 0) | ||
1228 | - goto out; | ||
1229 | - | ||
1230 | - ret = drm_dp_aux_dev_init(); | ||
1231 | - if (ret < 0) | ||
1232 | - goto out; | ||
1233 | - | ||
1234 | -out: | ||
1235 | - return ret; | ||
1236 | + /* | ||
1237 | + * The Kconfig DRM_KMS_HELPER selects FRAMEBUFFER_CONSOLE (if !EXPERT) | ||
1238 | + * but the module doesn't depend on any fb console symbols. At least | ||
1239 | + * attempt to load fbcon to avoid leaving the system without a usable | ||
1240 | + * console. | ||
1241 | + */ | ||
1242 | + if (IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) && | ||
1243 | + IS_MODULE(CONFIG_FRAMEBUFFER_CONSOLE) && | ||
1244 | + !IS_ENABLED(CONFIG_EXPERT)) | ||
1245 | + request_module_nowait("fbcon"); | ||
1246 | + | ||
1247 | + return drm_dp_aux_dev_init(); | ||
1248 | } | ||
1249 | |||
1250 | static void __exit drm_kms_helper_exit(void) | ||
1251 | diff --git a/drivers/net/ethernet/mscc/ocelot.c b/drivers/net/ethernet/mscc/ocelot.c | ||
1252 | index bf7832b34a000..acddb3aa53de4 100644 | ||
1253 | --- a/drivers/net/ethernet/mscc/ocelot.c | ||
1254 | +++ b/drivers/net/ethernet/mscc/ocelot.c | ||
1255 | @@ -2153,8 +2153,12 @@ int ocelot_init(struct ocelot *ocelot) | ||
1256 | ocelot_write_rix(ocelot, | ||
1257 | ANA_PGID_PGID_PGID(GENMASK(ocelot->num_phys_ports, 0)), | ||
1258 | ANA_PGID_PGID, PGID_MC); | ||
1259 | - ocelot_write_rix(ocelot, 0, ANA_PGID_PGID, PGID_MCIPV4); | ||
1260 | - ocelot_write_rix(ocelot, 0, ANA_PGID_PGID, PGID_MCIPV6); | ||
1261 | + ocelot_write_rix(ocelot, | ||
1262 | + ANA_PGID_PGID_PGID(GENMASK(ocelot->num_phys_ports, 0)), | ||
1263 | + ANA_PGID_PGID, PGID_MCIPV4); | ||
1264 | + ocelot_write_rix(ocelot, | ||
1265 | + ANA_PGID_PGID_PGID(GENMASK(ocelot->num_phys_ports, 0)), | ||
1266 | + ANA_PGID_PGID, PGID_MCIPV6); | ||
1267 | |||
1268 | /* CPU port Injection/Extraction configuration */ | ||
1269 | ocelot_write_rix(ocelot, QSYS_SWITCH_PORT_MODE_INGRESS_DROP_MODE | | ||
1270 | diff --git a/include/linux/kexec.h b/include/linux/kexec.h | ||
1271 | index a1cffce3de8cd..64f23bab6255d 100644 | ||
1272 | --- a/include/linux/kexec.h | ||
1273 | +++ b/include/linux/kexec.h | ||
1274 | @@ -186,14 +186,6 @@ void *kexec_purgatory_get_symbol_addr(struct kimage *image, const char *name); | ||
1275 | int __weak arch_kexec_kernel_image_probe(struct kimage *image, void *buf, | ||
1276 | unsigned long buf_len); | ||
1277 | void * __weak arch_kexec_kernel_image_load(struct kimage *image); | ||
1278 | -int __weak arch_kexec_apply_relocations_add(struct purgatory_info *pi, | ||
1279 | - Elf_Shdr *section, | ||
1280 | - const Elf_Shdr *relsec, | ||
1281 | - const Elf_Shdr *symtab); | ||
1282 | -int __weak arch_kexec_apply_relocations(struct purgatory_info *pi, | ||
1283 | - Elf_Shdr *section, | ||
1284 | - const Elf_Shdr *relsec, | ||
1285 | - const Elf_Shdr *symtab); | ||
1286 | |||
1287 | extern int kexec_add_buffer(struct kexec_buf *kbuf); | ||
1288 | int kexec_locate_mem_hole(struct kexec_buf *kbuf); | ||
1289 | @@ -216,6 +208,44 @@ extern int crash_exclude_mem_range(struct crash_mem *mem, | ||
1290 | unsigned long long mend); | ||
1291 | extern int crash_prepare_elf64_headers(struct crash_mem *mem, int kernel_map, | ||
1292 | void **addr, unsigned long *sz); | ||
1293 | + | ||
1294 | +#ifndef arch_kexec_apply_relocations_add | ||
1295 | +/* | ||
1296 | + * arch_kexec_apply_relocations_add - apply relocations of type RELA | ||
1297 | + * @pi: Purgatory to be relocated. | ||
1298 | + * @section: Section relocations applying to. | ||
1299 | + * @relsec: Section containing RELAs. | ||
1300 | + * @symtab: Corresponding symtab. | ||
1301 | + * | ||
1302 | + * Return: 0 on success, negative errno on error. | ||
1303 | + */ | ||
1304 | +static inline int | ||
1305 | +arch_kexec_apply_relocations_add(struct purgatory_info *pi, Elf_Shdr *section, | ||
1306 | + const Elf_Shdr *relsec, const Elf_Shdr *symtab) | ||
1307 | +{ | ||
1308 | + pr_err("RELA relocation unsupported.\n"); | ||
1309 | + return -ENOEXEC; | ||
1310 | +} | ||
1311 | +#endif | ||
1312 | + | ||
1313 | +#ifndef arch_kexec_apply_relocations | ||
1314 | +/* | ||
1315 | + * arch_kexec_apply_relocations - apply relocations of type REL | ||
1316 | + * @pi: Purgatory to be relocated. | ||
1317 | + * @section: Section relocations applying to. | ||
1318 | + * @relsec: Section containing RELs. | ||
1319 | + * @symtab: Corresponding symtab. | ||
1320 | + * | ||
1321 | + * Return: 0 on success, negative errno on error. | ||
1322 | + */ | ||
1323 | +static inline int | ||
1324 | +arch_kexec_apply_relocations(struct purgatory_info *pi, Elf_Shdr *section, | ||
1325 | + const Elf_Shdr *relsec, const Elf_Shdr *symtab) | ||
1326 | +{ | ||
1327 | + pr_err("REL relocation unsupported.\n"); | ||
1328 | + return -ENOEXEC; | ||
1329 | +} | ||
1330 | +#endif | ||
1331 | #endif /* CONFIG_KEXEC_FILE */ | ||
1332 | |||
1333 | #ifdef CONFIG_KEXEC_ELF | ||
1334 | diff --git a/kernel/kexec_file.c b/kernel/kexec_file.c | ||
1335 | index b17998fa03f12..5b58149bcd900 100644 | ||
1336 | --- a/kernel/kexec_file.c | ||
1337 | +++ b/kernel/kexec_file.c | ||
1338 | @@ -107,40 +107,6 @@ int __weak arch_kexec_kernel_verify_sig(struct kimage *image, void *buf, | ||
1339 | } | ||
1340 | #endif | ||
1341 | |||
1342 | -/* | ||
1343 | - * arch_kexec_apply_relocations_add - apply relocations of type RELA | ||
1344 | - * @pi: Purgatory to be relocated. | ||
1345 | - * @section: Section relocations applying to. | ||
1346 | - * @relsec: Section containing RELAs. | ||
1347 | - * @symtab: Corresponding symtab. | ||
1348 | - * | ||
1349 | - * Return: 0 on success, negative errno on error. | ||
1350 | - */ | ||
1351 | -int __weak | ||
1352 | -arch_kexec_apply_relocations_add(struct purgatory_info *pi, Elf_Shdr *section, | ||
1353 | - const Elf_Shdr *relsec, const Elf_Shdr *symtab) | ||
1354 | -{ | ||
1355 | - pr_err("RELA relocation unsupported.\n"); | ||
1356 | - return -ENOEXEC; | ||
1357 | -} | ||
1358 | - | ||
1359 | -/* | ||
1360 | - * arch_kexec_apply_relocations - apply relocations of type REL | ||
1361 | - * @pi: Purgatory to be relocated. | ||
1362 | - * @section: Section relocations applying to. | ||
1363 | - * @relsec: Section containing RELs. | ||
1364 | - * @symtab: Corresponding symtab. | ||
1365 | - * | ||
1366 | - * Return: 0 on success, negative errno on error. | ||
1367 | - */ | ||
1368 | -int __weak | ||
1369 | -arch_kexec_apply_relocations(struct purgatory_info *pi, Elf_Shdr *section, | ||
1370 | - const Elf_Shdr *relsec, const Elf_Shdr *symtab) | ||
1371 | -{ | ||
1372 | - pr_err("REL relocation unsupported.\n"); | ||
1373 | - return -ENOEXEC; | ||
1374 | -} | ||
1375 | - | ||
1376 | /* | ||
1377 | * Free up memory used by kernel, initrd, and command line. This is temporary | ||
1378 | * memory allocation which is not needed any more after these buffers have |