protonscr

Since when is CMPXCHG16B a requirement?

steamclosed
ValveSoftware/steam-for-linux#7046 · opened 2020-04-17 by anohren · updated 2020-05-03 · 10 comments · github
Aanohren 2020-04-17 github

I'm wondering when CMPXCHG16B became a requirement for the Linux client? Since the initial release?

Was the client designated beta software when it happened?

Kkisak-valve maintainer 2020-04-17 github

Hello @anohren, CMPXCHG16B is a 64 bit instruction, and has always been a requirement in some form for 64 bit components. It became a hard requirement for Steam when Chrome dropped 32 bit support back in 2015/2016 and the Steam client needed to transition to a 64 bit build of libcef in order to maintain a regular cadence of security updates.

Aanohren 2020-04-19 github

Thanks for the quick answer!

Did I understand correctly that the only option that's offered for running on older hardware like this is to use the 32 bit Steam client for Windows?

Ssutaburosu 2020-04-30 github

Did I understand correctly that the only option that's offered for running on older hardware like this is to use the 32 bit Steam client for Windows?

@anohren, you could try faking your CPU flags. As root:

cp /proc/cpuinfo /etc/cpuinfo
nano -w /etc/cpuinfo  # and add lm, cx16 and pni to all of the flags lines.
mount --bind /etc/cpuinfo /proc/cpuinfo
Kkisak-valve maintainer 2020-04-30 github

Hello @sutaburosu, for clarity, this issue report was a follow up question from #7018. @anohren's Athlon 64 3700+ legitimately does not support the required cpu instruction and it is not a BIOS bug. This issue report also predates the newly added sanity check.

Llibcg 2020-05-01 github

If you find this instruction missing with a Core 2 processor, updating your BIOS should fix it.

Oowlshrimp 2020-05-02 github

I have a dual socket system with two Xeon 5150 CPUs and 32 GB of ram which has Ubuntu 18.04, Steam, and dozens of games installed. It has run fine with absolutely no complaints whatsoever until the update that rolled out very recently. Indeed, this OS install is less than 5 months old, and the install of steam even younger than that.

I find it frustrating that VALVe would roll out an update suddenly making all of my games unplayable by adding a hard requirement with a hard failure mode and absolutely no warning period. I hope that a workaroud for this check can be provided soon, being as there seems to be absolutely no impact from not having this check.

Edit: these old CPUs do support the CMPXCHG16B instruction, despite it not being detected correctly:
http://www.cpu-world.com/CPUs/Xeon/Intel-Xeon 5150 - HH80556KJ0674M (BX805565150A - BX805565150P).html
This CPU is an original Intel Core CPU (predating Core 2). It seems this check should only apply to early AMD CPUs which occasionally lacked this instruction. See https://github.com/ValveSoftware/steam-for-linux/issues/4196

Rrigred 2020-05-02 github

None of these changes make much sense from valves side
Ancient Prescott/Presler CPU's support the requested CMPXCHG16B instructions as well as most of AM2.
I'm seeing a bunch of Core 2 Quads error out which are still plenty powerful for 80% of steam games casual users play.

Unless it's actually not CMPXCHG16B that's the issue, but an unlisted PREFETCHW requirement?

Aanohren 2020-05-02 github

I'm unsure what "check" is being mentioned here. I'm going to assume it's the very check that I requested after finding out that this requirement had been added to the list of requirements several months after I started experiencing the problem with no warning. We now know the requirement shuold have been added to the list of requirements in 2015/2016.

None of these changes make much sense from valves side

I found their explanation understandable. Personally, whether or not it is excusable comes down to this:

  • I don't believe Steam-for-linux was even a thing when my transitional 64-bit hardware was sold, so I didn't exactly count on it to work when this ancient hardware was purchased.
  • Steam supports Windows 10 32-bit, which in turn still supports that hardware.
  • I am assuming that the Steam-for-linux client is either still in Beta, or that Valve otherwise prevented customers on non-supported architectures from purchasing content they would subsequently be locked out of due to arbitrary changes in requirements for the Steam client, considering this requirement apparently was not clearly mentioned until january 2020. Or in other words, I have never purchased content with the intention of running it on Linux in what appears to be a non-beta Steam client on an architecture that Valve has deprecated without a mention.

If the mandatory steam client has grown so complex that Valve does not have control over what requirements it has, regardless of whether it's because they're depending on libraries with such a big attack surface that it needs updates as often as an entire OS, then that's a warning flag for me. I only need a button that installs and launches a game; I don't need a built-in Chrome browser, I don't care about all the extra features I never use, and I don't see why the basic use case of installing and launching a game has to depend on all of that.

My very uninformed solution would of course be for Valve to have a fast lane with a minimal codebase that they have more control over, for those who just want to install and launch games. That would free Valve up to cram every sexy feature into the heavy client, and lock anyone out of it at the whim of its dependencies. Unfortunately, it is seldom that easy in reality...

Aanohren 2020-05-03 github

I see, thanks. That sounds like a bug and should probably be discussed in its own issue.