Messages in this thread | | | From | Zayd Qumsieh <> | Subject | [PATCH 0/3] tso: aarch64: Expose TSO for virtualized linux on Apple Silicon | Date | Wed, 10 Apr 2024 14:16:38 -0700 |
| |
x86 CPUs use a TSO memory model. Apple Silicon CPUs have the ability to selectively use a TSO memory model. This can be done by setting the ACTLR.TSOEN bit to 1. This feature is useful for x86 emulators, since it removes the need for emulators to insert memory barriers in order to abide by the TSO memory model. This patch series will add ACTLR.TSOEN support to virtualized linux on Apple Silicon machines. Userspace will be able to use a prctl to change the memory model of the CPU from the default ARM64 memory model to a TSO memory model.
A simple test can be used to determine if the TSO memory model is in use. This must be done on Apple Silicon MacOS Sonoma version 14.4 or later, since earlier versions do not support modification of the TSOEN bit. https://github.com/saagarjha/TSOEnabler/blob/master/testtso/main.c
This program will hang indefinitely if TSO is in use, and will crash almost immediately if it is not in use.
Zayd Qumsieh (3): tso: aarch64: allow linux kernel to read/write ACTLR.TSOEN tso: aarch64: context-switch tso bit on thread switch tso: aarch64: allow userspace to set tso bit using prctl
arch/arm64/Kconfig | 19 +++++++++ arch/arm64/include/asm/processor.h | 4 ++ arch/arm64/include/asm/sysreg.h | 7 ++++ arch/arm64/include/asm/tso.h | 19 +++++++++ arch/arm64/kernel/Makefile | 2 +- arch/arm64/kernel/process.c | 61 +++++++++++++++++++++++++++++ arch/arm64/kernel/tso.c | 62 ++++++++++++++++++++++++++++++ include/uapi/linux/prctl.h | 9 +++++ kernel/sys.c | 11 ++++++ 9 files changed, 193 insertions(+), 1 deletion(-) create mode 100644 arch/arm64/include/asm/tso.h create mode 100644 arch/arm64/kernel/tso.c
-- 2.39.3 (Apple Git-146)
| |