[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [libvirt] [RFC] Support for CPUID masking



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/vim.host.CpuIdInfo.html


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]