On Sun, Jun 10, 2018 at 07:19:06AM -0700, Nadav Amit wrote: > #ifdef CONFIG_SMP > +.macro LOCK_PREFIX_HERE > .pushsection .smp_locks,"a" > .balign 4 > + .long 671f - . # offset > .popsection > +671: > +.endm > + > +.macro LOCK_PREFIX insn:vararg > + LOCK_PREFIX_HERE > + lock \insn > +.endm
Hurmph, the only reason we need to preserve that LOCK_PREFIX_HERE thing is arch_cmpxchg64 in cmpxchg_32.h. Is there really no other way we can write that one? I suppose the problem with using LOCK_PREFIX inside the alternative is that the .smp_locks fixup address gets computed wrong (inside the alternative_text section instead of in the regular text)? Oh well..