VMWare Server 1.0.10 - CPU Detection Fix (For running x64 guests under newer AMD CPUs)

Hi All, This page offers a solution to users of VMWare Server 1.x that are not able to run x64 guests using their AMD CPUs.

VMware Server v1 uses Binary Translation to virtualize 64-bit CPUs (BT64) when used with and AMD64 host CPU,
BT64 requires that the CPU will support the LAHF and SAHF instructions, which are missing from earlier AMD64 models (See "Revision Guide for AMD Athlon 64 and AMD Opteron Processors")

VMware Server v1 detect if the CPU has these instructions using the processor Family, Extended Family and Extended Model that are reported by the CPU.
However, after this detection mechanism was written, AMD introduced newer CPUs that support the LAHF and SAHF instructions as well ([Phenom / Phenom II] / Turion X2 Ultra / Bobcat / Fusion / Bulldozer),
These newer CPUs are not properly detected by this old detection mechanism*.

*You will get the following error message when starting the machine:
You have configured this virtual machine as a 64-bit guest operating system. However,
this host's CPU is not capable of running 64-bit virtual machines or this virtual machine
has 64-bit support disabled.
For more detailed information, see http://www.vmware.com/info?id=152

If you have such new CPU and are looking to run 64-bit guests, you have come to the right place!
Download the fixed executables: AMD_CPU_Detection_Fix.zip
(You must stop 'VMWare Registration Service' and terminate all running instances of vmware-vmx.exe before replacing the files)

Overview of the patched files:

CPU family and model information is read into the EAX register using the CPUID instruction (EAX = 1),
The relevant parts are: (More info)
# 11:8 - Family
# 19:16 - Extended Model
# 27:20 - Extended Family

BT64 is supported by every AMD processor that belong to family F, except when Extended Family is 0 AND Extended Model is 0.

vmserverdWin32.exe
This change will prevent the "64-bit operating systems are not supported by this host and will not run" warning from appearing for newer AMD CPUs.

vmware-vmx.exe
This change will allow the VM to use BT64 for newer AMD CPUs.
Note: When reaching offset 0x5CB4FC, the EAX register contains the value that the EAX register was set to after the CPUID instruction was called with EAX=1.

Patched executables were created using OllyDbg.

Feel free to contact me: tal.aloni.il@gmail.com
Tal Aloni