Merge tag 'arc-4.15-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/vgupta/arc
[sfrench/cifs-2.6.git] / Documentation / features / sched / membarrier-sync-core / arch-support.txt
1 #
2 # Feature name:          membarrier-sync-core
3 #         Kconfig:       ARCH_HAS_MEMBARRIER_SYNC_CORE
4 #         description:   arch supports core serializing membarrier
5 #
6 # Architecture requirements
7 #
8 # * arm64
9 #
10 # Rely on eret context synchronization when returning from IPI handler, and
11 # when returning to user-space.
12 #
13 # * x86
14 #
15 # x86-32 uses IRET as return from interrupt, which takes care of the IPI.
16 # However, it uses both IRET and SYSEXIT to go back to user-space. The IRET
17 # instruction is core serializing, but not SYSEXIT.
18 #
19 # x86-64 uses IRET as return from interrupt, which takes care of the IPI.
20 # However, it can return to user-space through either SYSRETL (compat code),
21 # SYSRETQ, or IRET.
22 #
23 # Given that neither SYSRET{L,Q}, nor SYSEXIT, are core serializing, we rely
24 # instead on write_cr3() performed by switch_mm() to provide core serialization
25 # after changing the current mm, and deal with the special case of kthread ->
26 # uthread (temporarily keeping current mm into active_mm) by issuing a
27 # sync_core_before_usermode() in that specific case.
28 #
29     -----------------------
30     |         arch |status|
31     -----------------------
32     |       alpha: | TODO |
33     |         arc: | TODO |
34     |         arm: | TODO |
35     |       arm64: |  ok  |
36     |    blackfin: | TODO |
37     |         c6x: | TODO |
38     |        cris: | TODO |
39     |         frv: | TODO |
40     |       h8300: | TODO |
41     |     hexagon: | TODO |
42     |        ia64: | TODO |
43     |        m32r: | TODO |
44     |        m68k: | TODO |
45     |       metag: | TODO |
46     |  microblaze: | TODO |
47     |        mips: | TODO |
48     |     mn10300: | TODO |
49     |       nios2: | TODO |
50     |    openrisc: | TODO |
51     |      parisc: | TODO |
52     |     powerpc: | TODO |
53     |        s390: | TODO |
54     |       score: | TODO |
55     |          sh: | TODO |
56     |       sparc: | TODO |
57     |        tile: | TODO |
58     |          um: | TODO |
59     |   unicore32: | TODO |
60     |         x86: |  ok  |
61     |      xtensa: | TODO |
62     -----------------------