forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.8 KiB
54 lines
1.8 KiB
# |
|
# Feature name: membarrier-sync-core |
|
# Kconfig: ARCH_HAS_MEMBARRIER_SYNC_CORE |
|
# description: arch supports core serializing membarrier |
|
# |
|
# Architecture requirements |
|
# |
|
# * arm/arm64/powerpc |
|
# |
|
# 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 | |
|
| csky: | TODO | |
|
| hexagon: | TODO | |
|
| ia64: | TODO | |
|
| loong: | TODO | |
|
| m68k: | TODO | |
|
| microblaze: | TODO | |
|
| mips: | TODO | |
|
| nios2: | TODO | |
|
| openrisc: | TODO | |
|
| parisc: | TODO | |
|
| powerpc: | ok | |
|
| riscv: | TODO | |
|
| s390: | TODO | |
|
| sh: | TODO | |
|
| sparc: | TODO | |
|
| um: | TODO | |
|
| x86: | ok | |
|
| xtensa: | TODO | |
|
-----------------------
|
|
|