echappatte
Contributor
Contributor

Hide CPU name/model in guests VMs

Hello,

All components of a ESXi host are virtualized. You have a vNIC, VRAM and vCPU. For this last, however, the virtualisation is not "full".

The name, model and frequency of CPU are shown in guest OS.

The problem happens when you changed ESXi hardware with new CPUs. When you do this, the next time you boot, Windows 7 detects new CPU, install it, and ask you to reboot. And if you have llinked clone this is endless : you reboot, VM is refreshed, restart, re-install CPU and ask you to reboot...

Your only solution is to boot master, install CPUs, reboot master and recompose your pool.

I have forgot something ? My configuration is wrong ? What should I do ?

Using diffrent CPU model in ESXi in the same cluster is therefore not possible ?

It would be nice if someone can give me some informations about how this work, why, and how do you do if possible

Thanks a lot in advance

e.chappatte

14 Replies
echappatte
Contributor
Contributor

Bump Smiley Happy

The question is still open... no one has an idea ?

How do you do when you change ESX host with linked clone VM desktop, refresh all masters ?

Thanks in advance for your advices and help

0 Kudos
mittim12
Immortal
Immortal

So are you wanting to know if that is typial behavior or you looking for a way for that not to happen?   The typical best practice is to use the same family of processings in a cluster and if needed make sue of the EVC features.  

0 Kudos
vedeht
Hot Shot
Hot Shot

There's really no way around this.  You should have the same type of servers in your vSphere clusters to prevent this from happening.  Is there a reason you don't have that?  Or is this for testing?

Try our VMWare View Demo on www.virtualdojo.com
0 Kudos
echappatte
Contributor
Contributor

Thank you for your reply.

As I have seen, it is a typical behavior. I am looking for a way for that not happen, but I am not sure it is possible ?

I explain a little bit more : yes we use same familly of CPU and yes we use EVC to keep features supported by all ESX and this way we can use vMotion.

But even with this, when you have diffenrent CPU on hosts, VM with Windows 7 / 2008 R2 detects the new CPU when rebooting. Not a big problem on servers, this can be anoying on desktop linked clone : at boot a message that we have a new CPU is displayed, and ask to reboot: for linked clones this mean endless reboot, until you make a new master and recompose the pool.

As I understand, this is worst than same type of CPU or EVC mode, we need hosts with exactly the same processor. Or I am wrong ?

0 Kudos
echappatte
Contributor
Contributor

Thank you for the answer.

Effectively, we have the same familly of CPU and we use EVC, see details above.

But I wonder if we have to use exactly the same CPU (same model number) to avoid what happend when Windows guests OS detects new CPU ?

This mean that we can not buy, for example, 7 ESX hosts with Xenon E5630 and two years later 7 hosts with Xenon E5640 to complete the cluster ?

0 Kudos
mittim12
Immortal
Immortal

I don't think that is necassary as long as they are in the same processor family but honestly I just moved a VM form an AMD cluster over to a Intel cluster and it didn't have to reboot at all.   

What version of WIndows 7 is it?

0 Kudos
indikaw
Contributor
Contributor

We are also experiencing the same issue here. It doesn't require a reboot after the migration. But if we reboot the VM after vmotion, (with windows 2008 R2 in our case) It says that it  needs a reboot since new hardware was added. We migrated between X5650 and E5-2697 V2 with westmere as EVC mode.

0 Kudos
admin
Immortal
Immortal

It is possible to mask the Processor Brand String, which is in CPUID leaves 0x800000002 through 0x800000004.  You will need advanced VM configuration options like the following (these are for a Westmere):

monitor_control.enable_fullcpuid="TRUE"

cpuid.80000002.0.eax="0110:0101:0111:0100:0110:1110:0100:1001"

cpuid.80000002.0.ebx="0010:1001:0101:0010:0010:1000:0110:1100"

cpuid.80000002.0.ecx="0110:1111:0110:0101:0101:1000:0010:0000"

cpuid.80000002.0.edx="0010:1001:0101:0010:0010:1000:0110:1110"

cpuid.80000003.0.eax="0101:0101:0101:0000:0100:0011:0010:0000"

cpuid.80000003.0.ebx="0010:0000:0010:0000:0010:0000:0010:0000"

cpuid.80000003.0.ecx="0010:0000:0010:0000:0010:0000:0010:0000"

cpuid.80000003.0.edx="0101:1000:0010:0000:0010:0000:0010:0000"

cpuid.80000004.0.eax="0011:0101:0011:0111:0011:0110:0011:0101"

cpuid.80000004.0.ebx="0010:0000:0100:0000:0010:0000:0010:0000"

cpuid.80000004.0.ecx="0011:0111:0011:0000:0010:1110:0011:0011"

cpuid.80000004.0.edx="0000:0000:0111:1010:0100:1000:0100:0111"


Normally, we do not mask these CPUID leaves.  The first option enables masking for all CPUID leaves.  The remaining options contain the binary representation of the Processor Brand String.

amircsco
Enthusiast
Enthusiast

could you please explain what is the different between normal cpuid and cpuid.8000000 ????

0 Kudos
admin
Immortal
Immortal

By convention, basic CPUID functions (0 through 0x14 today) are defined by Intel, and extended CPUID functions (0x80000000 through 0x8000001e today) are defined by AMD.

Intel has relinquished the range from 0x40000000 through 0x4fffffff.  AMD has reserved 0x40000000 through 0x400000ff for the use of hypervisors.  Microsoft defines 0x40000000 through 0x40000006 today, and VMware defines 0x40000010.

amircsco
Enthusiast
Enthusiast

oh this is very strange my freind, i have Intel Core i7 on my ESXi host but i can see 0x80000000 in vmx file of my virtual machine !!!!

according to your explanation it should be 0x40000000 through 0x4fffffff in vmx file not 0x80000000, right??

0 Kudos
admin
Immortal
Immortal

Perhaps my explanation was unclear.  Convention is that Intel defines the basic functions and AMD defines the extended functions, but all CPUs (regardless of vendor) report information for some basic functions and some extended functions.

MattPietrek
Contributor
Contributor

A couple of quick questions on this:

1) What is the meaning of the additional value (''.0') between say, "0x80000002" and ".eax" in your example? It's not specified in "normal" CPUID masking.

2) Can this extended masking of the brand string be used with the 0xXXXXXXXX syntax, in addition to the binary syntax you showed in the example?

0 Kudos
admin
Immortal
Immortal

MattPietrek wrote:

A couple of quick questions on this:

1) What is the meaning of the additional value (''.0') between say, "0x80000002" and ".eax" in your example? It's not specified in "normal" CPUID masking.

That's the ecx input value to CPUID.  I believe 0 is the default if you leave it off.

2) Can this extended masking of the brand string be used with the 0xXXXXXXXX syntax, in addition to the binary syntax you showed in the example?

I don't think any of the CPUID masking options can be specified in the simpler hexadecimal form.