Back to home page

OSCL-LXR

 
 

    


0001 #
0002 # Feature name:          membarrier-sync-core
0003 #         Kconfig:       ARCH_HAS_MEMBARRIER_SYNC_CORE
0004 #         description:   arch supports core serializing membarrier
0005 #
0006 # Architecture requirements
0007 #
0008 # * arm/arm64/powerpc
0009 #
0010 # Rely on implicit context synchronization as a result of exception return
0011 # when returning from IPI handler, and when returning to user-space.
0012 #
0013 # * x86
0014 #
0015 # x86-32 uses IRET as return from interrupt, which takes care of the IPI.
0016 # However, it uses both IRET and SYSEXIT to go back to user-space. The IRET
0017 # instruction is core serializing, but not SYSEXIT.
0018 #
0019 # x86-64 uses IRET as return from interrupt, which takes care of the IPI.
0020 # However, it can return to user-space through either SYSRETL (compat code),
0021 # SYSRETQ, or IRET.
0022 #
0023 # Given that neither SYSRET{L,Q}, nor SYSEXIT, are core serializing, we rely
0024 # instead on write_cr3() performed by switch_mm() to provide core serialization
0025 # after changing the current mm, and deal with the special case of kthread ->
0026 # uthread (temporarily keeping current mm into active_mm) by issuing a
0027 # sync_core_before_usermode() in that specific case.
0028 #
0029     -----------------------
0030     |         arch |status|
0031     -----------------------
0032     |       alpha: | TODO |
0033     |         arc: | TODO |
0034     |         arm: |  ok  |
0035     |       arm64: |  ok  |
0036     |        csky: | TODO |
0037     |     hexagon: | TODO |
0038     |        ia64: | TODO |
0039     |       loong: | TODO |
0040     |        m68k: | TODO |
0041     |  microblaze: | TODO |
0042     |        mips: | TODO |
0043     |       nios2: | TODO |
0044     |    openrisc: | TODO |
0045     |      parisc: | TODO |
0046     |     powerpc: |  ok  |
0047     |       riscv: | TODO |
0048     |        s390: | TODO |
0049     |          sh: | TODO |
0050     |       sparc: | TODO |
0051     |          um: | TODO |
0052     |         x86: |  ok  |
0053     |      xtensa: | TODO |
0054     -----------------------