Earlier this year, we reported on the Linux kernel’s work for better handling of Windows games / applications that create system call instructions that bypass the Windows API. Making system calls directly without going through WinAPI has become an increasingly common phenomenon for modern Windows games, possibly as part of their digital rights management schemes. Syscall User Dispatch is now the latest version of this effort.
Support for syscall user redirection was led by Collabora engineers working in cooperation with Valve. This work has evolved into the “Syscall User Dispatch” feature which is now in its seventh code revision and will likely be integrated into the Linux kernel soon.
The Syscall User Dispatch (SUD) function allows system calls to be redirected more efficiently and allows this to be done only for part of a binary. These system calls are redirected to user space so that they can be emulated by Wine. The SUD feature can be enabled through a PRCTL interface and allows threaded control to trigger a SIGSYS when a system call is attempted. Wine can handle this prctl interface when running the Windows binary, and then disable it when running the Wine code.
It looks like everything is largely sorted out with user syscall dispatch code and maybe could see it merged as early as Linux 5.11 if all goes well. Today, although Gabriel Krisman Bertazi started a new round of discussions making sure that the support for Syscall User Dispatch coincides with the folks in the C library (libc). Before merging the code, comments are requested from the developers of (g) libc to ensure that this SUD functionality will not impose any constraints with this new interface or other issues. So we’ll see how it goes and ideally in early 2021 the Linux kernel will support Syscall User Dispatch so Post-6.0 Wine can start using it to handle new Windows games.