arm64 syscall ABI change

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view

arm64 syscall ABI change

Mark Kettenis
In order to fix a speculative execution issue on various ARM CPUs, the
OpenBSD/arm64 system call ABI has been changed.  System calls now skip
the two instructions immediately following the system call
instruction.  This allows us to insert a barrier that blocks the CPU
from speculating further without a significant performance penalty.
The speculative execution issue was originally brought to our
attention by Anthony Steinhauser.

This changed was rolled out in a way such that a smooth transition
over the ABI bump is possible.  As usual, we recommend updating your
systems using snapshots.  But if you want to upgrade from source, make
sure you have a userland built from sources dated after January 25th
before booting a new kernel.

Note that old static binaries (built on a userland from before January
25th) will break.  Code that rolls its own system calls (a practice we
strongly discourage) will need to be adjusted.  Fixes for go (which
rolls its own system calls) have been committed already, and the
latest arm64 package snapshot sould work fine.