Basically what I want to do is to be able to "mask" the CPUID in a VM for testing purposes. For example be able to make the software think it's running on an Intel CPU on an AMD host machine. I've tried to edit the .vmx file with ecx,edx etc. values and during the XP install process on the first screen it locks up when it says "starting windows" in the grey bar. Anyone have any idea how to accomplish this?
From my knowledge, which is limited, you can't hide intel cpu and let it appear as AMD cpu or vice versa. The reason is that the CPU is not emulated.
You can however try to mask some features of a newer CPU to look like an older CPU. This was used for ESX server farms where different generations of CPUs had been used and you wanted to use vMotion between different CPUs from the same vendor (AMD/Intel). Today you can use EVC for this but for sure the farm is then limited to the 'oldest' cpu if you wish to use vMotion across different CPU generations.
So in short I would tend to say no.
Yes, it is possible to mask the CPUID values in a VM (except for user mode code when using binary translation). However, masking only changes what CPUID reports; it doesn't change the way the processor behaves. Thus, masking may cause unexpected guest behavior.
The general format for CPUID masking is:
cpuid.<leaf>.<register> = xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx
The right hand side is a binary representation of the desired value, most significant bit first. Aside from '0' and '1,' two other important symbols are 'h,' which means to pass through the bit from the host CPUID and '-,' which means not to override the normal handling for this bit.
Specifying a different CPU vendor is not recommended.
I won't be running this permanently. Basically this VM will just be used in the short term for testing for "CPU Dispatcher" bias in certain programs. So "complete compatibility" (i.e. optimization flags etc) isn't a huge concern ATM. Here's what I tried. I opened up the .vmx file (was I wrong to use word to edit it?) and added the values specified at this site after the "CPUID" line that specifies cores -
Can't seem to get it to work though so obviously I'm doing something wrong :smileylaugh:
I was hoping to see your edits. 🙂
In any event, the first thing to do is to pretend to be an AMD CPU. These settings should accomplish that:
cpuid.0.ebx = "0110:1000:0111:0100:0111:0101:0100:0001"
cpuid.0.ecx = "0100:0100:0100:1101:0100:0001:0110:0011"
cpuid.0.edx = "0110:1001:0111:0100:0110:1110:0110:0101"
Then you want to claim the family, model, and stepping of an actual AMD CPU. This setting should do that (claiming to be an early 64-bit Opteron):
Even with these settings, some guests may still be unhappy.
Okay, I'm not understanding what you're saying. I have eax, abx etc with each having their own line.
Edit - Oooohh....I see. In notepad it's all strung together. When I open it in wordpad it looks correct. Got it. let me give that a try.
You can either use hardware-assisted virtualization (on supported processors) or disable acceleration for binary translation. This option is available on the processors tab of your VM settings.