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);
|
||||
|
||||
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 */
|
||||
if (def->cpumask && virBitmapSize(def->cpumask) > 0) {
|
||||
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-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-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-2", "gsx-in-the-wild-2", 4);
|
||||
|
Loading…
Reference in New Issue
Block a user