On Wed, Nov 8, 2017 at 10:35 AM, Mathieu Desnoyers <mathieu.desnoyers@xxxxxxxxxxxx> wrote: > +/* > + * x86-64 implements return to user-space through sysret, which is not a > + * core-serializing instruction. Therefore, we need an explicit core > + * serializing instruction after going from kernel thread back to > + * user-space thread (active_mm moved back to current mm). > + */ > +static inline void membarrier_arch_mm_sync_core(struct mm_struct *mm) > +{ > + if (likely(!(atomic_read(&mm->membarrier_state) & > + MEMBARRIER_STATE_SYNC_CORE))) > + return; > + sync_core(); > +} IMO there should be an extremely clear specification somewhere for what this function is supposed to do. If I remember correctly, it's supposed to promise that the icache is synced before the next time we return to usermode for the current mm on this CPU. If that's correct, then let's document it very explicitly and let's also drop the "membarrier" from the name -- it's a primitive we'll need anyway given the existing migration bug. -- To unsubscribe from this list: send the line "unsubscribe linux-api" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html