mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 05:35:25 +00:00
vmx: write cpuid.coresPerSocket back from CPU topology
When writing the VMX file from the domain XML, write cpuid.coresPerSocket if there is a specified CPU topology in the guest. Use the domain XML of esx-in-the-wild-9 in vmx2xml as testcase for xml2vmxtest. Signed-off-by: Pino Toscano <ptoscano@redhat.com> Acked-by: Richard W.M. Jones <rjones@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com> Signed-off-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
parent
5cceadcbac
commit
f10a1a95a2
@ -3246,6 +3246,35 @@ virVMXFormatConfig(virVMXContext *ctx, virDomainXMLOptionPtr xmlopt, virDomainDe
|
|||||||
|
|
||||||
virBufferAsprintf(&buffer, "numvcpus = \"%d\"\n", maxvcpus);
|
virBufferAsprintf(&buffer, "numvcpus = \"%d\"\n", maxvcpus);
|
||||||
|
|
||||||
|
if (def->cpu) {
|
||||||
|
unsigned int calculated_vcpus;
|
||||||
|
|
||||||
|
if (def->cpu->mode != VIR_CPU_MODE_CUSTOM) {
|
||||||
|
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||||
|
_("Expecting domain XML CPU mode 'custom' but "
|
||||||
|
"found '%s'"),
|
||||||
|
virCPUModeTypeToString(def->cpu->mode));
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (def->cpu->threads != 1) {
|
||||||
|
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
||||||
|
_("Only 1 thread per core is supported"));
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
calculated_vcpus = def->cpu->sockets * def->cpu->cores;
|
||||||
|
if (calculated_vcpus != maxvcpus) {
|
||||||
|
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||||
|
_("Expecting domain XML CPU sockets per core as %d "
|
||||||
|
"but found %d"),
|
||||||
|
maxvcpus, calculated_vcpus);
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
virBufferAsprintf(&buffer, "cpuid.coresPerSocket = \"%d\"\n", def->cpu->cores);
|
||||||
|
}
|
||||||
|
|
||||||
/* def:cpumask -> vmx:sched.cpu.affinity */
|
/* def:cpumask -> vmx:sched.cpu.affinity */
|
||||||
if (def->cpumask && virBitmapSize(def->cpumask) > 0) {
|
if (def->cpumask && virBitmapSize(def->cpumask) > 0) {
|
||||||
int bit;
|
int bit;
|
||||||
|
39
tests/xml2vmxdata/xml2vmx-esx-in-the-wild-9.vmx
Normal file
39
tests/xml2vmxdata/xml2vmx-esx-in-the-wild-9.vmx
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
.encoding = "UTF-8"
|
||||||
|
config.version = "8"
|
||||||
|
virtualHW.version = "10"
|
||||||
|
guestOS = "other-64"
|
||||||
|
uuid.bios = "42 00 93 72 17 da be 73-77 9d 00 7c cf 1b d2 28"
|
||||||
|
displayName = "v2v-windows-kkulkarn"
|
||||||
|
annotation = "MIQ GUID=b55c806d-99b9-4fa5-bbcc-a4de04f822e5"
|
||||||
|
memsize = "16384"
|
||||||
|
numvcpus = "16"
|
||||||
|
cpuid.coresPerSocket = "4"
|
||||||
|
sched.cpu.shares = "normal"
|
||||||
|
scsi0.present = "true"
|
||||||
|
scsi0.virtualDev = "lsisas1068"
|
||||||
|
scsi0:0.present = "true"
|
||||||
|
scsi0:0.deviceType = "scsi-hardDisk"
|
||||||
|
scsi0:0.fileName = "/vmfs/volumes/datastore/directory/v2v-windows-kkulkarn.vmdk"
|
||||||
|
floppy0.present = "false"
|
||||||
|
floppy1.present = "false"
|
||||||
|
ethernet0.present = "true"
|
||||||
|
ethernet0.virtualDev = "vmxnet3"
|
||||||
|
ethernet0.networkName = "VM Network"
|
||||||
|
ethernet0.connectionType = "bridged"
|
||||||
|
ethernet0.addressType = "vpx"
|
||||||
|
ethernet0.generatedAddress = "00:50:56:80:b3:81"
|
||||||
|
svga.vramSize = "8388608"
|
||||||
|
pciBridge0.present = "true"
|
||||||
|
pciBridge4.present = "true"
|
||||||
|
pciBridge4.virtualDev = "pcieRootPort"
|
||||||
|
pciBridge4.functions = "8"
|
||||||
|
pciBridge5.present = "true"
|
||||||
|
pciBridge5.virtualDev = "pcieRootPort"
|
||||||
|
pciBridge5.functions = "8"
|
||||||
|
pciBridge6.present = "true"
|
||||||
|
pciBridge6.virtualDev = "pcieRootPort"
|
||||||
|
pciBridge6.functions = "8"
|
||||||
|
pciBridge7.present = "true"
|
||||||
|
pciBridge7.virtualDev = "pcieRootPort"
|
||||||
|
pciBridge7.functions = "8"
|
||||||
|
vmci0.present = "true"
|
37
tests/xml2vmxdata/xml2vmx-esx-in-the-wild-9.xml
Normal file
37
tests/xml2vmxdata/xml2vmx-esx-in-the-wild-9.xml
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
<domain type='vmware'>
|
||||||
|
<name>v2v-windows-kkulkarn</name>
|
||||||
|
<uuid>42009372-17da-be73-779d-007ccf1bd228</uuid>
|
||||||
|
<description>MIQ GUID=b55c806d-99b9-4fa5-bbcc-a4de04f822e5</description>
|
||||||
|
<memory unit='KiB'>16777216</memory>
|
||||||
|
<currentMemory unit='KiB'>16777216</currentMemory>
|
||||||
|
<vcpu placement='static'>16</vcpu>
|
||||||
|
<cputune>
|
||||||
|
<shares>16000</shares>
|
||||||
|
</cputune>
|
||||||
|
<os>
|
||||||
|
<type arch='x86_64'>hvm</type>
|
||||||
|
</os>
|
||||||
|
<cpu>
|
||||||
|
<topology sockets='4' cores='4' threads='1'/>
|
||||||
|
</cpu>
|
||||||
|
<clock offset='utc'/>
|
||||||
|
<on_poweroff>destroy</on_poweroff>
|
||||||
|
<on_reboot>restart</on_reboot>
|
||||||
|
<on_crash>destroy</on_crash>
|
||||||
|
<devices>
|
||||||
|
<disk type='file' device='disk'>
|
||||||
|
<source file='[datastore] directory/v2v-windows-kkulkarn.vmdk'/>
|
||||||
|
<target dev='sda' bus='scsi'/>
|
||||||
|
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
|
||||||
|
</disk>
|
||||||
|
<controller type='scsi' index='0' model='lsisas1068'/>
|
||||||
|
<interface type='bridge'>
|
||||||
|
<mac address='00:50:56:80:b3:81'/>
|
||||||
|
<source bridge='VM Network'/>
|
||||||
|
<model type='vmxnet3'/>
|
||||||
|
</interface>
|
||||||
|
<video>
|
||||||
|
<model type='vmvga' vram='8192' primary='yes'/>
|
||||||
|
</video>
|
||||||
|
</devices>
|
||||||
|
</domain>
|
@ -279,6 +279,7 @@ mymain(void)
|
|||||||
DO_TEST("esx-in-the-wild-5", "esx-in-the-wild-5", 4);
|
DO_TEST("esx-in-the-wild-5", "esx-in-the-wild-5", 4);
|
||||||
DO_TEST("esx-in-the-wild-6", "esx-in-the-wild-6", 4);
|
DO_TEST("esx-in-the-wild-6", "esx-in-the-wild-6", 4);
|
||||||
DO_TEST("esx-in-the-wild-7", "esx-in-the-wild-7", 4);
|
DO_TEST("esx-in-the-wild-7", "esx-in-the-wild-7", 4);
|
||||||
|
DO_TEST("esx-in-the-wild-9", "esx-in-the-wild-9", 10);
|
||||||
|
|
||||||
DO_TEST("gsx-in-the-wild-1", "gsx-in-the-wild-1", 4);
|
DO_TEST("gsx-in-the-wild-1", "gsx-in-the-wild-1", 4);
|
||||||
DO_TEST("gsx-in-the-wild-2", "gsx-in-the-wild-2", 4);
|
DO_TEST("gsx-in-the-wild-2", "gsx-in-the-wild-2", 4);
|
||||||
|
Loading…
Reference in New Issue
Block a user