mirror of
https://github.com/torvalds/linux.git
synced 2026-09-23 22:14:03 +02:00
s390/percpu: Fix MVIY_PERCPU() with older binutils
Commita737737cdb("s390/percpu: Infrastructure for more efficient this_cpu operations") introduced MVIY_PERCPU(), which stringifies arguments that are already C string literals. This generates an assembler macro invocation with whitespace-separated quoted arguments: GEN_MVIY "459712" "%r3" GNU as versions prior to binutils 2.39 drop the separating whitespace between quoted macro arguments during input scrubbing. They consequently parse the invocation as a single argument and emit repeated warnings: Warning: missing closing `"' The .ifc in GEN_MVIY never matches and GNU as exits successfully without emitting the mviy instruction. As a result, the interrupted per-CPU sequence is not marked in lowcore and the exception return path cannot repair the per-CPU address register after migration. All MVIY_PERCPU() callers pass C string literals. Use them directly and separate the assembler macro arguments with an explicit comma. The resulting invocation is: GEN_MVIY 459712, %r3 This form is unambiguous for GNU as and LLVM's integrated assembler. This behavior was fixed in GNU as from binutils 2.39, but Linux supports binutils 2.30. Fixes:a737737cdb("s390/percpu: Infrastructure for more efficient this_cpu operations") Cc: stable@vger.kernel.org Assisted-by: Codex:gpt-5.6-sol Signed-off-by: Karl Mehltretter <kmehltretter@gmail.com> Reviewed-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
This commit is contained in:
parent
445c31ac63
commit
101782f894
|
|
@ -107,8 +107,8 @@
|
|||
" .endif\n" \
|
||||
".endr\n" \
|
||||
".endm\n" \
|
||||
ALTERNATIVE("GEN_MVIY " __stringify(disp) " " __stringify(reg) "\n", \
|
||||
"GEN_MVIY " __stringify(dispalt) " " __stringify(reg) "\n", \
|
||||
ALTERNATIVE("GEN_MVIY " disp ", " reg "\n", \
|
||||
"GEN_MVIY " dispalt ", " reg "\n", \
|
||||
ALT_FEATURE(MFEATURE_LOWCORE)) \
|
||||
".purgem GEN_MVIY\n"
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user