OpenBSD has supported mandatory BTI/IBT on Intel CPUs (11th Gen+) and arm64 (Apple M2) since 7.4 (Oct 16, 2023).
https://www.openbsd.org/innovations.html
"Mandatory enforcement of indirect branch targets (BTI on arm64, IBT on Intel amd64), unless a linker flag (-Wl,-z,nobtcfi) requests no enforcement."
https://marc.info/?l=openbsd-ports&m=168899645126958&w=2
OpenBSD recently disabled retpolines by default because they are incompatible with IBT, so there has been some work done recently that this patch could help with, e.g: adding missing indirect branch target instructions (endbr64), previously hidden by retpoline. OpenBSD has done a lot of work to push these changes into the entire software ecosystem.
I haven't followed this and surely misrepresent the facts above. This is just a plea for someone in the know to clarify the situation.
How much of a performance flow mitigation is this, 3-5%?
ARM's Pointer Authentication extension is an interesting alternative which does all of this in one feature by cryptographically signing pointers in memory.
Techniques like CHERI could replace MMUs in some environments, potentially improving performance.
You do have to generate correct code but that's actually a solvable problem, web assembly did it.
In theory this could unlock tons of performance (and free up some silicon) if we could ever get the rest of the system away from C
The full patch is at https://github.com/openbsd/src/commit/88580652a3669007813512...
I'm not sure if this patch is noteworthy on its own, but perhaps it was posted because it implies this CPU feature is now supported or soon to be supported by OpenBSD.