]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
parallels: set cpu mode when applying xml configuration
authorMikhail Feoktistov <mfeoktistov@parallels.com>
Fri, 13 Mar 2015 15:40:40 +0000 (18:40 +0300)
committerMichal Privoznik <mprivozn@redhat.com>
Tue, 17 Mar 2015 14:34:59 +0000 (15:34 +0100)
Otherwise exporting existing domain config and defining a new one like this:
virsh -c parallels:///system dumpxml instance01 > my.xml
virsh -c parallels:///system define my.xml
leads to an error because PCS default x64 mode turns to x32.
Thus, we need to set correct cpuMode in prlsdkDoApplyConfig() explicitly.

Signed-off-by: Mikhail Feoktistov <mfeoktistov@parallels.com>
Signed-off-by: Maxim Nestratov <mnestratov@parallels.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
src/parallels/parallels_sdk.c

index 0b2478e418642d3ca68bc2f6a4eada856e81796b..3a7efe378014694bd186cb551270c6a322853086 100644 (file)
@@ -2886,6 +2886,21 @@ prlsdkDoApplyConfig(PRL_HANDLE sdkdom,
     prlsdkCheckRetGoto(pret, error);
     VIR_FREE(mask);
 
+    switch (def->os.arch) {
+        case VIR_ARCH_X86_64:
+            pret = PrlVmCfg_SetCpuMode(sdkdom, PCM_CPU_MODE_64);
+            break;
+        case VIR_ARCH_I686:
+            pret = PrlVmCfg_SetCpuMode(sdkdom, PCM_CPU_MODE_32);
+            break;
+        default:
+            virReportError(VIR_ERR_INTERNAL_ERROR,
+                           _("Unknown CPU mode: %s"),
+                           virArchToString(def->os.arch));
+            goto error;
+    }
+    prlsdkCheckRetGoto(pret, error);
+
     if (prlsdkClearDevices(sdkdom) < 0)
         goto error;