On Fri, Dec 2, 2016 at 12:41 PM, Andy Lutomirski <l...@amacapital.net> wrote: > > Because, if so, we should maybe serialize whenever we migrate a > process to a different CPU.
The intel docs are bad on this issue. Technically what we do could fall under the "cross-modifying code" case, where one CPU does the write, and then we run it on another CPU. And no, we do *not* do a serializing instruction before returning to user space. Sure, we might do an iret (which is serializing), but we equally well might be doing a systret (which is not). Honestly, I think Intel should clean up their documentation. > (We *definitely* need to flush the store buffer when migrating, There is no such thing as flushing the store buffer. But we do end up doing a memory barrier which gives you the required semantics. That's not a problem. Those operations are fast. The serializing instructions are not. Linus