membarrier() is unnecessarily tangled with the core scheduler. Clean it up. While we're at it, remove the documentation and drop the pretence that SYNC_CORE can ever be a well-defined cross-arch operation. Andy Lutomirski (8): membarrier: Document why membarrier() works x86/mm: Handle unlazying membarrier core sync in the arch code membarrier: Remove membarrier_arch_switch_mm() prototype in core code membarrier: Make the post-switch-mm barrier explicit membarrier, kthread: Use _ONCE accessors for task->mm powerpc/membarrier: Remove special barrier on mm switch membarrier: Remove arm (32) support for SYNC_CORE membarrier: Rewrite sync_core_before_usermode() and improve documentation .../membarrier-sync-core/arch-support.txt | 68 +++++------------ arch/arm/Kconfig | 1 - arch/arm64/include/asm/sync_core.h | 19 +++++ arch/powerpc/include/asm/membarrier.h | 27 ------- arch/powerpc/include/asm/sync_core.h | 14 ++++ arch/powerpc/mm/mmu_context.c | 2 - arch/x86/Kconfig | 1 - arch/x86/include/asm/sync_core.h | 7 +- arch/x86/kernel/alternative.c | 2 +- arch/x86/kernel/cpu/mce/core.c | 2 +- arch/x86/mm/tlb.c | 54 ++++++++++--- drivers/misc/sgi-gru/grufault.c | 2 +- drivers/misc/sgi-gru/gruhandles.c | 2 +- drivers/misc/sgi-gru/grukservices.c | 2 +- fs/exec.c | 2 +- include/linux/sched/mm.h | 42 +++++----- include/linux/sync_core.h | 21 ----- init/Kconfig | 3 - kernel/kthread.c | 16 +--- kernel/sched/core.c | 44 +++-------- kernel/sched/membarrier.c | 76 +++++++++++++++++-- 21 files changed, 210 insertions(+), 197 deletions(-) create mode 100644 arch/arm64/include/asm/sync_core.h delete mode 100644 arch/powerpc/include/asm/membarrier.h create mode 100644 arch/powerpc/include/asm/sync_core.h delete mode 100644 include/linux/sync_core.h -- 2.31.1