]> git.ipfire.org Git - thirdparty/linux.git/commit
membarrier: riscv: Provide core serializing command
authorAndrea Parri <parri.andrea@gmail.com>
Wed, 31 Jan 2024 14:49:36 +0000 (15:49 +0100)
committerPalmer Dabbelt <palmer@rivosinc.com>
Thu, 15 Feb 2024 16:04:14 +0000 (08:04 -0800)
commitcd9b29014dc69609489261efe351d0c7709ae8bf
tree0af8570de35f1c6b075dd7e53835fe0ffc5e379b
parent4ff4c745a16c4c151a71863420811e7f406c3ec2
membarrier: riscv: Provide core serializing command

RISC-V uses xRET instructions on return from interrupt and to go back
to user-space; the xRET instruction is not core serializing.

Use FENCE.I for providing core serialization as follows:

 - by calling sync_core_before_usermode() on return from interrupt (cf.
   ipi_sync_core()),

 - via switch_mm() and sync_core_before_usermode() (respectively, for
   uthread->uthread and kthread->uthread transitions) before returning
   to user-space.

On RISC-V, the serialization in switch_mm() is activated by resetting
the icache_stale_mask of the mm at prepare_sync_core_cmd().

Suggested-by: Palmer Dabbelt <palmer@dabbelt.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-5-parri.andrea@gmail.com
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
Documentation/features/sched/membarrier-sync-core/arch-support.txt
MAINTAINERS
arch/riscv/Kconfig
arch/riscv/include/asm/membarrier.h
arch/riscv/include/asm/sync_core.h [new file with mode: 0644]
kernel/sched/core.c
kernel/sched/membarrier.c