Linux 5.4 To Fix Many Newer 64-bit Windows Games On Wine / Steam Play
A kernel patch from CodeWeavers is landing in the Linux 5.4 kernel and will help some 64-bit Windows games run nicely under Wine (and the likes of CrossOver / Valve's Proton) with newer Intel and AMD systems.
With the few x86 Assembly patches for Linux 5.4 is a UMIP addition by CodeWeavers' Brendan Shanks that ends up being quite important for running a number of Windows games under Proton/Wine on newer AMD/Intel Linux systems.
The change is adding emulation/spoofing support for the SGDT (Store Global Descriptor Table Register), SIDT (Store Interrupt Descriptor Table), and SMSW (Store Machine Status Word) instructions for 64-bit processes. The User-Mode Instruction Prevention (UMIP) functionality on newer processors prevents these instructions from executing in user-mode. But the problem with that is these instructions are sometimes used by Windows programs and with Wine running entirely in user-space, hitting these instructions on UMIP-enabled CPUs can cause problems for some Windows software running on Wine.
The UMIP kernel code has already offered some instruction emulation and for 32-bit processes while with Linux 5.4, SGDT/SIDT/SMSW is covered for 64-bit processes. This in turn helps some Windows 64-bit games that rely on these instructions. Without this spoofing/emulation support, those games were crashing on recent CPUs when hitting the affected instructions.
Among the prominent 64-bit Windows games affected by the UMIP support include the likes of Metro Exodus, Shadow of the Tomb Raider, Wolfenstein: Youngblood, Soulcalibur VI, Grand Theft Auto, Devil May Cry 5, Team Sonic Racing, and others.
UMIP is supported by Intel Cannonlake CPUs and newer or AMD Ryzen 3000 "Zen 2" processors as well. For those with a UMIP-enabled system, one of the workarounds to disable the UMIP functionality to at least get games running in the meantime until upgrading to Linux 5.4+ is using the clearcpuid=514 kernel parameter.
With the few x86 Assembly patches for Linux 5.4 is a UMIP addition by CodeWeavers' Brendan Shanks that ends up being quite important for running a number of Windows games under Proton/Wine on newer AMD/Intel Linux systems.
The change is adding emulation/spoofing support for the SGDT (Store Global Descriptor Table Register), SIDT (Store Interrupt Descriptor Table), and SMSW (Store Machine Status Word) instructions for 64-bit processes. The User-Mode Instruction Prevention (UMIP) functionality on newer processors prevents these instructions from executing in user-mode. But the problem with that is these instructions are sometimes used by Windows programs and with Wine running entirely in user-space, hitting these instructions on UMIP-enabled CPUs can cause problems for some Windows software running on Wine.
The UMIP kernel code has already offered some instruction emulation and for 32-bit processes while with Linux 5.4, SGDT/SIDT/SMSW is covered for 64-bit processes. This in turn helps some Windows 64-bit games that rely on these instructions. Without this spoofing/emulation support, those games were crashing on recent CPUs when hitting the affected instructions.
Among the prominent 64-bit Windows games affected by the UMIP support include the likes of Metro Exodus, Shadow of the Tomb Raider, Wolfenstein: Youngblood, Soulcalibur VI, Grand Theft Auto, Devil May Cry 5, Team Sonic Racing, and others.
UMIP is supported by Intel Cannonlake CPUs and newer or AMD Ryzen 3000 "Zen 2" processors as well. For those with a UMIP-enabled system, one of the workarounds to disable the UMIP functionality to at least get games running in the meantime until upgrading to Linux 5.4+ is using the clearcpuid=514 kernel parameter.
3 Comments