Messages in this thread | ![/](/images/icornerl.gif) | | Date | Thu, 11 Apr 2024 08:23:23 +0900 | Subject | Re: [PATCH 0/3] tso: aarch64: Expose TSO for virtualized linux on Apple Silicon | From | Hector Martin <> |
| |
On 2024/04/11 6:16, Zayd Qumsieh wrote: > 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.
Well this is unexpected, given I talked to Justin Lu at Apple back in December and I thought our plan was to work together on the series I've had cooking in the Asahi tree [1] for a while now, which is actually shipping in thousands of Asahi Linux systems in production and actually already supported by the FEX-Emu project with our ABI. You CCed 30+ people, but not me nor the asahi@lists.linux.dev mailing list...
[1] https://github.com/AsahiLinux/linux/tree/bits/220-tso
Given that we're here now, I'll send out my series for review and see what people think about that one.
> > 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 >
- Hector
| ![\](/images/icornerr.gif) |