On Wed, Nov 22, 2017 at 12:04:58PM +0000, Mark Rutland wrote: > On Wed, Nov 22, 2017 at 10:12:17AM +0000, Ard Biesheuvel wrote: > > On 22 November 2017 at 10:05, Alex Matveev <alxmtvv@xxxxxxxxx> wrote: > > > This is better than my simple fix, thank you. > > > > > > Out of curiosity, why doesn't NEON code use barrier() to prevent > > > reordering? > > > > Because barrier() affects ordering of memory accesses, not register accesses. > > My understanding was that barrier() also hazards with any volatile asm > (and that in general, volatile asm block couldn't be re-ordered w.r.t. > one another). I'm sure we rely on this, even if it's not true. :/ >From a quick scan, certainly in tls_thread_flush(), compat_arm_syscall(), elsewhere where we have isb() and other helpers like {read,write}_sysreg(). Mark.