From 5b36410f375aa30fbe0a3610adddc157409e0d8e Mon Sep 17 00:00:00 2001 From: Dawid Zamirski Date: Mon, 23 May 2016 17:22:54 -0400 Subject: [PATCH] esx: Add VMCI device for virtualHW >= 7 This patch fixes an issue where vMotion fails when VMCI device is not present in the vmx file. --- src/vmx/vmx.c | 32 +++++++++++-------- .../xml2vmx-fusion-in-the-wild-1.vmx | 1 + .../xml2vmx-serial-network-client.vmx | 1 + .../xml2vmx-serial-network-server.vmx | 1 + .../xml2vmxdata/xml2vmx-ws-in-the-wild-1.vmx | 1 + .../xml2vmxdata/xml2vmx-ws-in-the-wild-2.vmx | 1 + 6 files changed, 23 insertions(+), 14 deletions(-) diff --git a/src/vmx/vmx.c b/src/vmx/vmx.c index f2ce4bf463..4727503251 100644 --- a/src/vmx/vmx.c +++ b/src/vmx/vmx.c @@ -3383,24 +3383,28 @@ virVMXFormatConfig(virVMXContext *ctx, virDomainXMLOptionPtr xmlopt, virDomainDe goto cleanup; } - if (virtualHW_version >= 7 && hasSCSI) { - virBufferAddLit(&buffer, "pciBridge0.present = \"true\"\n"); + if (virtualHW_version >= 7) { + if (hasSCSI) { + virBufferAddLit(&buffer, "pciBridge0.present = \"true\"\n"); - virBufferAddLit(&buffer, "pciBridge4.present = \"true\"\n"); - virBufferAddLit(&buffer, "pciBridge4.virtualDev = \"pcieRootPort\"\n"); - virBufferAddLit(&buffer, "pciBridge4.functions = \"8\"\n"); + virBufferAddLit(&buffer, "pciBridge4.present = \"true\"\n"); + virBufferAddLit(&buffer, "pciBridge4.virtualDev = \"pcieRootPort\"\n"); + virBufferAddLit(&buffer, "pciBridge4.functions = \"8\"\n"); - virBufferAddLit(&buffer, "pciBridge5.present = \"true\"\n"); - virBufferAddLit(&buffer, "pciBridge5.virtualDev = \"pcieRootPort\"\n"); - virBufferAddLit(&buffer, "pciBridge5.functions = \"8\"\n"); + virBufferAddLit(&buffer, "pciBridge5.present = \"true\"\n"); + virBufferAddLit(&buffer, "pciBridge5.virtualDev = \"pcieRootPort\"\n"); + virBufferAddLit(&buffer, "pciBridge5.functions = \"8\"\n"); - virBufferAddLit(&buffer, "pciBridge6.present = \"true\"\n"); - virBufferAddLit(&buffer, "pciBridge6.virtualDev = \"pcieRootPort\"\n"); - virBufferAddLit(&buffer, "pciBridge6.functions = \"8\"\n"); + virBufferAddLit(&buffer, "pciBridge6.present = \"true\"\n"); + virBufferAddLit(&buffer, "pciBridge6.virtualDev = \"pcieRootPort\"\n"); + virBufferAddLit(&buffer, "pciBridge6.functions = \"8\"\n"); - virBufferAddLit(&buffer, "pciBridge7.present = \"true\"\n"); - virBufferAddLit(&buffer, "pciBridge7.virtualDev = \"pcieRootPort\"\n"); - virBufferAddLit(&buffer, "pciBridge7.functions = \"8\"\n"); + virBufferAddLit(&buffer, "pciBridge7.present = \"true\"\n"); + virBufferAddLit(&buffer, "pciBridge7.virtualDev = \"pcieRootPort\"\n"); + virBufferAddLit(&buffer, "pciBridge7.functions = \"8\"\n"); + } + + virBufferAddLit(&buffer, "vmci0.present = \"true\"\n"); } /* Get final VMX output */ diff --git a/tests/xml2vmxdata/xml2vmx-fusion-in-the-wild-1.vmx b/tests/xml2vmxdata/xml2vmx-fusion-in-the-wild-1.vmx index ab09bc926d..9605e2d6ac 100644 --- a/tests/xml2vmxdata/xml2vmx-fusion-in-the-wild-1.vmx +++ b/tests/xml2vmxdata/xml2vmx-fusion-in-the-wild-1.vmx @@ -41,3 +41,4 @@ pciBridge6.functions = "8" pciBridge7.present = "true" pciBridge7.virtualDev = "pcieRootPort" pciBridge7.functions = "8" +vmci0.present = "true" diff --git a/tests/xml2vmxdata/xml2vmx-serial-network-client.vmx b/tests/xml2vmxdata/xml2vmx-serial-network-client.vmx index 00ed186457..5e21903095 100644 --- a/tests/xml2vmxdata/xml2vmx-serial-network-client.vmx +++ b/tests/xml2vmxdata/xml2vmx-serial-network-client.vmx @@ -13,3 +13,4 @@ serial0.fileType = "network" serial0.fileName = "tcp://192.168.0.17:42001" serial0.network.endPoint = "client" serial0.yieldOnMsrRead = "true" +vmci0.present = "true" diff --git a/tests/xml2vmxdata/xml2vmx-serial-network-server.vmx b/tests/xml2vmxdata/xml2vmx-serial-network-server.vmx index ff2384f24e..e65f175882 100644 --- a/tests/xml2vmxdata/xml2vmx-serial-network-server.vmx +++ b/tests/xml2vmxdata/xml2vmx-serial-network-server.vmx @@ -13,3 +13,4 @@ serial0.fileType = "network" serial0.fileName = "ssl://0.0.0.0:42001" serial0.network.endPoint = "server" serial0.yieldOnMsrRead = "true" +vmci0.present = "true" diff --git a/tests/xml2vmxdata/xml2vmx-ws-in-the-wild-1.vmx b/tests/xml2vmxdata/xml2vmx-ws-in-the-wild-1.vmx index acdf7721a9..b43c933666 100644 --- a/tests/xml2vmxdata/xml2vmx-ws-in-the-wild-1.vmx +++ b/tests/xml2vmxdata/xml2vmx-ws-in-the-wild-1.vmx @@ -33,3 +33,4 @@ pciBridge6.functions = "8" pciBridge7.present = "true" pciBridge7.virtualDev = "pcieRootPort" pciBridge7.functions = "8" +vmci0.present = "true" diff --git a/tests/xml2vmxdata/xml2vmx-ws-in-the-wild-2.vmx b/tests/xml2vmxdata/xml2vmx-ws-in-the-wild-2.vmx index 5086605467..f7f40ec300 100644 --- a/tests/xml2vmxdata/xml2vmx-ws-in-the-wild-2.vmx +++ b/tests/xml2vmxdata/xml2vmx-ws-in-the-wild-2.vmx @@ -33,3 +33,4 @@ pciBridge6.functions = "8" pciBridge7.present = "true" pciBridge7.virtualDev = "pcieRootPort" pciBridge7.functions = "8" +vmci0.present = "true"