
2009/9/2 Jiri Denemark <jdenemar@redhat.com>:
Hi,
We need to provide support for CPU ID masking. Xen and VMware ESX are examples of current hypervisors which support such masking.
[...]
<domain type='xen' id='42'> ... <features> <pae/> <acpi/> <apic/> <cpuid> <mask level='1' register='ebx'> xxxx:xxxx:0000:1010:xxxx:xxxx:xxxx:xxxx </mask> <mask level='1' register='ecx'> xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xx1x:xxxx </mask> <mask level='1' register='edx'> xxx1:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx </mask> <mask level='80000001' register='ecx'> xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xx1x </mask> <mask level='80000008' register='ecx'> xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xx00:1001 </mask> </cpuid> </features> ... </domain>
I like the proposed mapping for the domain XML, because it's an 1:1 mapping of what VMware uses in the VI API [1] and the VMX config. Beside that VMware has two more possible values for the CPUID bits: H and R. Both are used to define how to handle/interpret those bits in the context of VMotion (migration). For example the domain XML snippet above maps to this VMX snippet: cpuid.1.ebx = "XXXXXXXX00001010XXXXXXXXXXXXXXXX" cpuid.1.ecx = "XXXXXXXXXXXXXXXXXXXXXXXXXX1XXXXX" cpuid.1.edx = "XXX1XXXXXXXXXXXXXXXXXXXXXXXXXXXX" cpuid.80000001.ecx = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1X" cpuid.80000008.ecx = "XXXXXXXXXXXXXXXXXXXXXXXXXX001001" Matthias [1] http://www.vmware.com/support/developer/vc-sdk/visdk400pubs/ReferenceGuide/v...