
Search the Knowledge Base: |
Search the Knowledge Base: |
This article provides overriding VMotion CPU compatibility restrictions between ESX Servers.
If you have recent Intel 45nm Core 2 CPUs and were directed to this article by a message in VirtualCenter, refer to VMotion errors between different Intel 45nm Core 2 revisions (1008315) before continuing.
Compatible CPUs for VMotion purposes means that source and target CPUs must have the same manufacturer (Intel or AMD) and be members of the same basic processor family, Pentium 4 or Core, for example. Within a given processor family, the source and target CPUs must also have certain common and extended features implemented (or not implemented, depending on the specific feature) for VMotion to succeed.
To determine if the source and target CPUs meet VMotion requirements, VirtualCenter compares the target CPU to a default bit mask definition. The default bit mask has evolved with each version of VirtualCenter to support (or preclude) VMotion migration given a specific set of CPU features. For example, the VirtualCenter 1.x bit mask does not flag the NX (Intel) or XD (AMD) bits, but the VirtualCenter 2.x bit mask does.
At the same time, manufacturers (Intel and AMD, specifically) continually improve their CPUs, releasing new features that may or may not be compatible with VMotion.
To circumvent VMotion’s CPU-compatibility checking for a specific feature or extended feature, you can modify the default bit mask. The bit mask-modification process (sometimes referred to in various VMware documents as “relaxing” a particular constraint) varies according to VirtualCenter Server version and ESX version.
A full discussion of the underlying components and how VirtualCenter Server and ESX Server host systems handle them is beyond the scope of this article. For more information, see CPU Compatibility Masks and Configuring Virtual Machines in the Basic System Administration Guide. Another useful resource is the technical paper on VMware VMotion and CPU Compatibility.
For specific information about Intel and AMD CPUs and VMotion compatibility, see:
The process of modifying VMotion compatibility settings depends on the VirtualCenter version and the ESX Server host system running the virtual machines. Also varying by VirtualCenter Server version and ESX Server version, is the scope of modifications to the default bit mask, as follows:
To obtain information about a host system’s CPU, you can use the appropriate vendor’s tool or VMware’s CPUID tool, depending on the system:
VirtualCenter Server 1.x bit mask applies to all virtual machines on the ESX Server 2.x host system. VirtualCenter Server 1.x uses a locally stored text file, config.ini , for configuration information.
| CPU Feature | VirtualCenter Server 1.x | Vendor | Supported? |
| SSE3 | migrate.ignore.extfeature.bits = 0xE5BD | Intel, AMD | No |
| SSSE3 | migrate.ignore.extfeature.bits = 0x4E7BC | Intel | No |
|
migrate.ignore.feature.bits = 0x20000 | |||
| SSE4.1 | migrate.ignore.extfeature.bits = 0x8E5BC | Intel | No |
| Single-core-Dual-core | migrate.ignore.feature.bits = 0x90000000 | AMD | Yes |
| PERF_MSR | migrate.ignore.extfeature.bits = 0xE5A0 | Intel | Yes |
VirtualCenter Server 2.x provides two different ways to modify VMotion CPU constraints, depending on the version of ESX Server being used:
In Virtual Center 2.x, the default bit mask for VMotion constraints among ESX Server 3.x systems can be applied on a per-virtual-machine basis using the VI Client. Regardless of CPU type or mask modifications, accessing the necessary dialog boxes is generally the same, as follows:
To modify the mask for a specific feature, enter the series of dashes and 0s as shown in the table below.
| Feature | Level | Row | Mask |
| SSE3 | 1 | ecx |
---- ---- ---- ---- ---- ---- ---0 -0-0 |
| SSSE3 | 1 | ecx |
---- ---- ---- -0-- ---- --0- ---0 -0-- |
| 1 | edx |
---- ---- ---- --0- ---- ---- ---- ---- | |
| SSE4.1 | 1 | ecx |
---- ---- ---- 0--- ---- ---- ---- ---- |
To modify the mask for a specific feature, enter the series of dashes and 0s as shown in the table below.
| Feature | Level | Row | Mask |
| SSE3 | 1 | ecx |
---- ---- ---- ---- ---- ---- ---- ---0 |
| RDTSCP | 80000001 | edx |
---- 0--- ---- ---- ---- ---- ---- ---- |
| 80000001 | ecx |
---- ---- ---- ---- ---- ---- ---- 0--- | |
|
CMPXCH16B |
1 | ecx |
---- ---- ---- ---- --0- ---- ---- ---- |
| FFXSR | 80000001 | edx |
---- --0- ---- ---- ---- ---- ---- ---- |
| 3DNPREFETCH | 80000001 | ecx |
---- ---- ---- ---- ---- ---0 ---- ---- |
<guestOSDescriptor> —Direct descendant (child) tag of <vpxd> element. The vpxd.cfg can contain a single guestOSDescriptor element. <host-product-and-version> —Between the opening and closing <guestOSDescriptor> tags, you can nest multiple host-product-and-version-tags that specify the version and host to which the masks you define apply. For ESX Server hosts, the <host-product-and-version> tags can be specified generally, as in <esx-2-x-x> for an ESX Server 2.x host, <esx-3-x-x> for an ESX Server 3.x host or can be specified precisely—<esx-3-5-0> , for example. The tag <esx-2-5-x> identifies various maintenance release levels of the ESX Server to which the subsequently nested mask applies. <virtual-machine-configuration-hardware-version> —Allows for the configuration to be restricted by virtual machine hardware version. For example, <all-versions> , <vmx-03> , or <vmx-04> . In the example below <all-versions> is specified, meaning that the mask applies to all virtual machine hardware versions. <virtual-machine guest version> —Allows for a guest version to be specified. For example, <all-guests> , <winXPPro64Guest> , <winVistaGuest> , and so on. In the example shown below, <all-guests> is specified, and therefore the mask applies to all guest versions. <cpuFeatureMask> —This tag precedes the actual mask. The mask is then defined for <default-vendor> , <amd> , or <intel> , depending on your needs. Tag elements that are used to define the mask, identify the CPU mask. The element details include vendor, CPU ID level, and the CPU register. The valid choices for these are:
CPU vendor <default-vendor>, <amd>, <intel> CPU ID level <level-0>, <level-1>, <level-80000000>, <level-80000001> CPU register <eax>, <ebx>, <ecx>, <edx>
Tags must be embedded in the order shown in the table. A CPU-vendor tag is followed by a CPU-ID-level tag, followed by a CPU-register tag. Immediately following the CPU-register tag is the sequence of 32 dashes and x-s that represent the actual 32-bit register mask appropriate for the feature being modified. The mask is then followed by the CPU-register-, CPU-ID-level-, and CPU-vendor-closing tags.
Note: A mask defined using <default-vendor> tag is used by the system only when no vendor-specific mask has been specified for the same CPU ID level.
When you have finished defining masks, close with </guestOSDescriptor> .
The following are example masks for several common CPU feature masks. Copy, paste, and modify them as required for the environment. VMware does not support or recommend modifying the VMotion constraints for CPU extended features because of the risk of application or guest operating system failure after migration.