On Tue, Feb 26, 2019 at 11:02:50AM -0800, Linus Torvalds wrote: > On Tue, Feb 26, 2019 at 10:33 AM Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote: > > > > Arguably we could fix that for __this_cpu_xchg(), which isn't IRQ-safe. > > Yeah, I guess x86 _should_ really do __this_cpu_xchg() as just a > read-write pair. See the patches I just send. > In general, a read-write pair is probably always the right thing to > do, and the only reason we can't just do it in an > architecture-independent way is that we'd want to avoid doing the > address generation twice (for architectures where that is an issue). The generic code has this right, see include/asm-generic/percpu.h:raw_cpu_generic_xchg(). That is used in the majority of the architectures. With the patch I just send, x86 will use two gs prefixed movs.