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.
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?
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
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.
If you find this instruction missing with a Core 2 processor, updating your BIOS should fix it.
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
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?
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:
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...
I see, thanks. That sounds like a bug and should probably be discussed in its own issue.
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?