[PATCH 0/8] membarrier cleanups

From: Andy Lutomirski
Date: Tue Jun 15 2021 - 23:21:24 EST


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