============================ Feature membarrier-sync-core ============================ :Subsystem: sched :Kconfig: ARCH_HAS_MEMBARRIER_SYNC_CORE Arch supports core serializing membarrier. Comments -------- Architecture requirements * arm/arm64 Rely on implicit context synchronization as a result of exception return when returning from IPI handler, and when returning to user-space. * x86 x86-32 uses IRET as return from interrupt, which takes care of the IPI. However, it uses both IRET and SYSEXIT to go back to user-space. The IRET instruction is core serializing, but not SYSEXIT. x86-64 uses IRET as return from interrupt, which takes care of the IPI. However, it can return to user-space through either SYSRETL (compat code), SYSRETQ, or IRET. Given that neither SYSRET{L,Q}, nor SYSEXIT, are core serializing, we rely instead on write_cr3() performed by switch_mm() to provide core serialization after changing the current mm, and deal with the special case of kthread -> uthread (temporarily keeping current mm into active_mm) by issuing a sync_core_before_usermode() in that specific case. ============ ====== Architecture Status ============ ====== alpha TODO arc TODO arm ok arm64 ok c6x TODO csky TODO h8300 TODO hexagon TODO ia64 TODO m68k TODO microblaze TODO mips TODO nds32 TODO nios2 TODO openrisc TODO parisc TODO powerpc TODO riscv TODO s390 TODO sh TODO sparc TODO um TODO unicore32 TODO x86 ok xtensa TODO ============ ======