After some six months of silence, this past week the NTSYNC LInux kernel driver patches were revived for completing this open-source driver to better match the Windows NT synchronization primitives to help with Wine / Proton (Steam Play) Windows gaming performance on Linux. Following those “v6” patches posted a few days ago, on Friday evening a seventh iteration of the patches were volleyed to offer up some API design improvements for this NTSYNC driver.
Now that the NTSYNC driver patches are back to being revived and discussed on the Linux kernel mailing list, hopefully within the next kernel cycle or two we’ll see the rest of these patches merged after the initial bits landed back in Linux 6.10 albeit incomplete in that early form.
The patches a few days ago re-based the NTSYNC patches to work against the current Linux 6.13 code while the new v7 patches make two API design improvements to the driver. Typically user-space API changes aren’t allowed for kernel drivers after being mainlined but for NTSYNC they are being permitted still since the early driver code upstreamed back in v6.10 concealed the driver behind the “BROKEN” Kconfig build option. So with the driver not really being useful in mainline to this point, the breaks are being permitted given the discussions on the kernel mailing list.
One of the changes in the updated patches is renaming NTSYNC_IOC_SEM_POST to NTSYNC_IOC_SEM_RELEASE to better match the Windows NT terminology rather than POSIX terminology.
The other change is modifying the object creation ioctls to return file descriptors (FDs) directly in the return value rather than through the arguments struct. This in turn simplifies the NTSYNC driver API a bit.
With that the v7 patches are now out for review. Hopefully now everything is all squared away for this NTSYNC driver so that it can be upstreamed and the likes of Wine and Proton (Steam Play) beginning to it since the performance gains can be quite compelling: