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 |