Linux Syscall User Dispatch Close To Mainline For Better Handling Windows Games
Earlier this year we reported on Linux kernel work for better handling Windows games/apps that make system call instructions that bypass the Windows API. Directly making the system calls without going through the WinAPI has become an increasingly common occurrence for modern Windows games, likely as part of their Digital Rights Management schemes. Syscall User Dispatch is now the latest take on that effort.
The syscall user redirection support has been led by Collabora engineers working in cooperation with Valve. That work evolved into the "Syscall User Dispatch" feature that is now up to its seventh code revision and likely soon to be mainlined in the Linux kernel.
The Syscall User Dispatch (SUD) feature is for more efficiently redirecting system calls and allows it to only be done for part of a binary. Those system calls are redirected back to user-space so they can be emulated by the likes of Wine. The SUD functionality can be enabled via a PRCTL interface and allows for per-thread control to raise a SIGSYS when any system call is attempted. Wine can handle this prctl interface when running the Windows binary and then disable it back when running Wine code.
It's looking like everything is largely squared away with the syscall user dispatch code and perhaps could see it merged as soon as Linux 5.11 if all goes well. Today though Gabriel Krisman Bertazi started a new round of discussion in ensuring the Syscall User Dispatch support jives with the C library (libc) folks. Before merging the code, feedback is being sought from (g)libc developers to ensure this SUD feature will not impose any constraints with this new interface or other problems. So we'll see how that goes and ideally in early 2021 the Linux kernel will support Syscall User Dispatch so Wine post-6.0 can begin making use of it for handling newer Windows games.
The syscall user redirection support has been led by Collabora engineers working in cooperation with Valve. That work evolved into the "Syscall User Dispatch" feature that is now up to its seventh code revision and likely soon to be mainlined in the Linux kernel.
The Syscall User Dispatch (SUD) feature is for more efficiently redirecting system calls and allows it to only be done for part of a binary. Those system calls are redirected back to user-space so they can be emulated by the likes of Wine. The SUD functionality can be enabled via a PRCTL interface and allows for per-thread control to raise a SIGSYS when any system call is attempted. Wine can handle this prctl interface when running the Windows binary and then disable it back when running Wine code.
It's looking like everything is largely squared away with the syscall user dispatch code and perhaps could see it merged as soon as Linux 5.11 if all goes well. Today though Gabriel Krisman Bertazi started a new round of discussion in ensuring the Syscall User Dispatch support jives with the C library (libc) folks. Before merging the code, feedback is being sought from (g)libc developers to ensure this SUD feature will not impose any constraints with this new interface or other problems. So we'll see how that goes and ideally in early 2021 the Linux kernel will support Syscall User Dispatch so Wine post-6.0 can begin making use of it for handling newer Windows games.
10 Comments