Linux 5.10 To Bring SLDT/STR Emulation To Help Some Windows Games On Wine
Last year Wine itself added emulation for some CPU instructions now blocked by UMIP, the User-Mode Instruction Prevention functionality found in the latest Intel and AMD processors. Now slated for Linux 5.10 is the emulation/spoofing of two of those instructions by the kernel as another attempt to help a small number of Windows programs relying on those instructions.
Brendan Shanks of CodeWeavers who was responsible for the Wine UMIP patches last year has now added support to the UMIP kernel code for emulation/spoofing of SLDT and STR instructions. Those are two of the instructions protected by UMIP as found on Intel Cannonlake and newer or more prominently in AMD Zen 2. This patch is now queued in the x86 code ahead of the Linux 5.10 merge window later this year.
The patch allows the Store Local Descriptor Table Register and Store Task Register instructions to be spoofed by the kernel on UMIP-enabled Intel/AMD platforms. The emulation is returning the values that the kernel programmatically assigns. Previously these instructions were not emulated as they are "not commonly used in programs that run on WineHQ or DOSEMU2." But while still uncommon, there is enough usage that CodeWeavers is adding the emulation to the kernel.
So the change is sitting in the x86/cpu tree until the Linux 5.10 cycle. The patch confirms, "Wine users have found a small number of Windows apps using SLDT that were crashing when run on UMIP-enabled systems."
Since last year with the launch of the Ryzen 3000 series have been bug reports on WineHQ and the Proton issue tracker pertaining to several different games that have had issues running on UMIP-enabled systems.
Brendan Shanks of CodeWeavers who was responsible for the Wine UMIP patches last year has now added support to the UMIP kernel code for emulation/spoofing of SLDT and STR instructions. Those are two of the instructions protected by UMIP as found on Intel Cannonlake and newer or more prominently in AMD Zen 2. This patch is now queued in the x86 code ahead of the Linux 5.10 merge window later this year.
The patch allows the Store Local Descriptor Table Register and Store Task Register instructions to be spoofed by the kernel on UMIP-enabled Intel/AMD platforms. The emulation is returning the values that the kernel programmatically assigns. Previously these instructions were not emulated as they are "not commonly used in programs that run on WineHQ or DOSEMU2." But while still uncommon, there is enough usage that CodeWeavers is adding the emulation to the kernel.
So the change is sitting in the x86/cpu tree until the Linux 5.10 cycle. The patch confirms, "Wine users have found a small number of Windows apps using SLDT that were crashing when run on UMIP-enabled systems."
Since last year with the launch of the Ryzen 3000 series have been bug reports on WineHQ and the Proton issue tracker pertaining to several different games that have had issues running on UMIP-enabled systems.
4 Comments