Skip to content

Commit 2840cf0

Browse files
compudjIngo Molnar
authored andcommitted
sched/membarrier: Call sync_core only before usermode for same mm
When the prev and next task's mm change, switch_mm() provides the core serializing guarantees before returning to usermode. The only case where an explicit core serialization is needed is when the scheduler keeps the same mm for prev and next. Suggested-by: Oleg Nesterov <oleg@redhat.com> Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Cc: Chris Metcalf <cmetcalf@ezchip.com> Cc: Christoph Lameter <cl@linux.com> Cc: Eric W. Biederman <ebiederm@xmission.com> Cc: Kirill Tkhai <tkhai@yandex.ru> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Mike Galbraith <efault@gmx.de> Cc: Paul E. McKenney <paulmck@linux.ibm.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Russell King - ARM Linux admin <linux@armlinux.org.uk> Cc: Thomas Gleixner <tglx@linutronix.de> Link: https://lkml.kernel.org/r/20190919173705.2181-4-mathieu.desnoyers@efficios.com Signed-off-by: Ingo Molnar <mingo@kernel.org>
1 parent 0955400 commit 2840cf0

File tree

1 file changed

+2
-0
lines changed
  • include/linux/sched

1 file changed

+2
-0
lines changed

include/linux/sched/mm.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -362,6 +362,8 @@ enum {
362362

363363
static inline void membarrier_mm_sync_core_before_usermode(struct mm_struct *mm)
364364
{
365+
if (current->mm != mm)
366+
return;
365367
if (likely(!(atomic_read(&mm->membarrier_state) &
366368
MEMBARRIER_STATE_PRIVATE_EXPEDITED_SYNC_CORE)))
367369
return;

0 commit comments

Comments
 (0)