On Tue, Jul 25, 2017 at 09:49:00AM -0700, Paul E. McKenney wrote: > On Tue, Jul 25, 2017 at 06:33:18PM +0200, Peter Zijlstra wrote: > > On Mon, Jul 24, 2017 at 02:58:16PM -0700, Paul E. McKenney wrote: > > > The sys_membarrier() system call has proven too slow for some use > > > cases, which has prompted users to instead rely on TLB shootdown. > > > Although TLB shootdown is much faster, it has the slight disadvantage > > > of not working at all on arm and arm64. This commit therefore adds > > > an expedited option to the sys_membarrier() system call. > > > > > @@ -64,6 +65,10 @@ SYSCALL_DEFINE2(membarrier, int, cmd, int, flags) > > > if (num_online_cpus() > 1) > > > synchronize_sched(); > > > return 0; > > > + case MEMBARRIER_CMD_SHARED_EXPEDITED: > > > + if (num_online_cpus() > 1) > > > + synchronize_sched_expedited(); > > > + return 0; > > > > So you now give unprivileged userspace the means to IPI the entire > > machine? > > > > So what do we do when someone goes and does: > > > > for (;;) > > sys_membarrier(MEMBARRIER_CMD_SHARED_EXPEDITED, 0); > > > > on us? > > The same thing that happens when they call munmap().
munmap() TLB invalidate is limited to those CPUs that actually ran threads of their process, while this is machine wide.