core/ cBPF-JIT : TODO | core/ eBPF-JIT : TODO | core/ generic-idle-thread : ok | core/ jump-labels : TODO | core/ tracehook : ok | debug/ KASAN : TODO | debug/ gcov-profile-all : TODO | debug/ kgdb : TODO | debug/ kprobes-on-ftrace : TODO | debug/ kprobes : TODO | debug/ kretprobes : TODO | debug/ optprobes : TODO | debug/ stackprotector : TODO | debug/ uprobes : TODO | debug/ user-ret-profiler : TODO | io/ dma-contiguous : ok | locking/ cmpxchg-local : TODO | locking/ lockdep : TODO | locking/ queued-rwlocks : ok | locking/ queued-spinlocks : TODO | locking/ rwsem-optimized : TODO | perf/ kprobes-event : TODO | perf/ perf-regs : TODO | perf/ perf-stackdump : TODO | sched/ membarrier-sync-core : TODO | sched/ numa-balancing : .. | seccomp/ seccomp-filter : TODO | time/ arch-tick-broadcast : TODO | time/ clockevents : ok | time/ context-tracking : TODO | time/ irq-time-acct : TODO | time/ modern-timekeeping : ok | time/ virt-cpuacct : TODO | vm/ ELF-ASLR : TODO | vm/ PG_uncached : TODO | vm/ THP : .. | vm/ batch-unmap-tlb-flush: TODO | vm/ huge-vmap : TODO | vm/ ioremap_prot : TODO | vm/ numa-memblock : .. | vm/ pte_special : TODO | Signed-off-by: Guo Ren <ren_guo@c-sky.com> Cc: Arnd Bergmann <arnd@arndb.de>
58 lines
1.9 KiB
Plaintext
58 lines
1.9 KiB
Plaintext
#
|
|
# Feature name: membarrier-sync-core
|
|
# Kconfig: ARCH_HAS_MEMBARRIER_SYNC_CORE
|
|
# description: arch supports core serializing membarrier
|
|
#
|
|
# 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.
|
|
#
|
|
-----------------------
|
|
| arch |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 |
|
|
-----------------------
|