-
Notifications
You must be signed in to change notification settings - Fork 63
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
membarrier: Create Documentation/scheduler/membarrier.rst
To gather the architecture requirements of the "private/global expedited" membarrier commands. The file will be expanded to integrate further information about the membarrier syscall (as needed/desired in the future). While at it, amend some related inline comments in the membarrier codebase. Suggested-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> Signed-off-by: Andrea Parri <parri.andrea@gmail.com> Reviewed-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> Link: https://lore.kernel.org/r/20240131144936.29190-3-parri.andrea@gmail.com Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
- Loading branch information
1 parent
d6cfd17
commit a14d11a
Showing
5 changed files
with
51 additions
and
5 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -7,6 +7,7 @@ Scheduler | |
|
||
|
||
completion | ||
membarrier | ||
sched-arch | ||
sched-bwc | ||
sched-deadline | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
.. SPDX-License-Identifier: GPL-2.0 | ||
======================== | ||
membarrier() System Call | ||
======================== | ||
|
||
MEMBARRIER_CMD_{PRIVATE,GLOBAL}_EXPEDITED - Architecture requirements | ||
===================================================================== | ||
|
||
Memory barriers before updating rq->curr | ||
---------------------------------------- | ||
|
||
The commands MEMBARRIER_CMD_PRIVATE_EXPEDITED and MEMBARRIER_CMD_GLOBAL_EXPEDITED | ||
require each architecture to have a full memory barrier after coming from | ||
user-space, before updating rq->curr. This barrier is implied by the sequence | ||
rq_lock(); smp_mb__after_spinlock() in __schedule(). The barrier matches a full | ||
barrier in the proximity of the membarrier system call exit, cf. | ||
membarrier_{private,global}_expedited(). | ||
|
||
Memory barriers after updating rq->curr | ||
--------------------------------------- | ||
|
||
The commands MEMBARRIER_CMD_PRIVATE_EXPEDITED and MEMBARRIER_CMD_GLOBAL_EXPEDITED | ||
require each architecture to have a full memory barrier after updating rq->curr, | ||
before returning to user-space. The schemes providing this barrier on the various | ||
architectures are as follows. | ||
|
||
- alpha, arc, arm, hexagon, mips rely on the full barrier implied by | ||
spin_unlock() in finish_lock_switch(). | ||
|
||
- arm64 relies on the full barrier implied by switch_to(). | ||
|
||
- powerpc, riscv, s390, sparc, x86 rely on the full barrier implied by | ||
switch_mm(), if mm is not NULL; they rely on the full barrier implied | ||
by mmdrop(), otherwise. On powerpc and riscv, switch_mm() relies on | ||
membarrier_arch_switch_mm(). | ||
|
||
The barrier matches a full barrier in the proximity of the membarrier system call | ||
entry, cf. membarrier_{private,global}_expedited(). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters