| From ea70ebb4f46da72c4aa7feb5aab5f17b077efcbb Mon Sep 17 00:00:00 2001 |
| From: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> |
| Date: Thu, 19 Sep 2019 13:37:01 -0400 |
| Subject: [PATCH] sched/membarrier: Call sync_core only before usermode for |
| same mm |
| |
| commit 2840cf02fae627860156737e83326df354ee4ec6 upstream. |
| |
| 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> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/include/linux/sched/mm.h b/include/linux/sched/mm.h |
| index 4a7944078cc3..8557ec664213 100644 |
| --- a/include/linux/sched/mm.h |
| +++ b/include/linux/sched/mm.h |
| @@ -362,6 +362,8 @@ enum { |
| |
| static inline void membarrier_mm_sync_core_before_usermode(struct mm_struct *mm) |
| { |
| + if (current->mm != mm) |
| + return; |
| if (likely(!(atomic_read(&mm->membarrier_state) & |
| MEMBARRIER_STATE_PRIVATE_EXPEDITED_SYNC_CORE))) |
| return; |
| -- |
| 2.7.4 |
| |