]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu_command: Use consistent syntax for CPU features
authorJiri Denemark <jdenemar@redhat.com>
Tue, 11 Jun 2019 12:47:46 +0000 (14:47 +0200)
committerJiri Denemark <jdenemar@redhat.com>
Wed, 19 Jun 2019 22:22:38 +0000 (00:22 +0200)
Normal CPU features use modern -cpu ...,feature=on|off syntax when
available, but kvm features kept using the old +feature or -feature.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/qemu/qemu_command.c
tests/qemuxml2argvdata/eoi-disabled.x86_64-latest.args
tests/qemuxml2argvdata/eoi-enabled.x86_64-latest.args
tests/qemuxml2argvdata/kvmclock+eoi-disabled.x86_64-latest.args
tests/qemuxml2argvdata/pv-spinlock-disabled.x86_64-latest.args
tests/qemuxml2argvdata/pv-spinlock-enabled.x86_64-latest.args

index a23e4283227048f601a7214283b1c98537d7d249..08da30d10c8c35ec2efe6a31884fb19806419179 100644 (file)
@@ -7039,6 +7039,19 @@ qemuBuildGlobalControllerCommandLine(virCommandPtr cmd,
 }
 
 
+static void
+qemuBuildCpuFeature(virQEMUCapsPtr qemuCaps,
+                    virBufferPtr buf,
+                    const char *name,
+                    bool state)
+{
+    if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_QUERY_CPU_MODEL_EXPANSION))
+        virBufferAsprintf(buf, ",%s=%s", name, state ? "on" : "off");
+    else
+        virBufferAsprintf(buf, ",%c%s", state ? '+' : '-', name);
+}
+
+
 static int
 qemuBuildCpuModelArgStr(virQEMUDriverPtr driver,
                         const virDomainDef *def,
@@ -7109,18 +7122,12 @@ qemuBuildCpuModelArgStr(virQEMUDriverPtr driver,
         switch ((virCPUFeaturePolicy) cpu->features[i].policy) {
         case VIR_CPU_FEATURE_FORCE:
         case VIR_CPU_FEATURE_REQUIRE:
-            if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_QUERY_CPU_MODEL_EXPANSION))
-                virBufferAsprintf(buf, ",%s=on", cpu->features[i].name);
-            else
-                virBufferAsprintf(buf, ",+%s", cpu->features[i].name);
+            qemuBuildCpuFeature(qemuCaps, buf, cpu->features[i].name, true);
             break;
 
         case VIR_CPU_FEATURE_DISABLE:
         case VIR_CPU_FEATURE_FORBID:
-            if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_QUERY_CPU_MODEL_EXPANSION))
-                virBufferAsprintf(buf, ",%s=off", cpu->features[i].name);
-            else
-                virBufferAsprintf(buf, ",-%s", cpu->features[i].name);
+            qemuBuildCpuFeature(qemuCaps, buf, cpu->features[i].name, false);
             break;
 
         case VIR_CPU_FEATURE_OPTIONAL:
@@ -7179,8 +7186,8 @@ qemuBuildCpuCommandLine(virCommandPtr cmd,
 
         if (timer->name == VIR_DOMAIN_TIMER_NAME_KVMCLOCK &&
             timer->present != -1) {
-            virBufferAsprintf(&buf, ",%ckvmclock",
-                              timer->present ? '+' : '-');
+            qemuBuildCpuFeature(qemuCaps, &buf, "kvmclock",
+                                !!timer->present);
         } else if (timer->name == VIR_DOMAIN_TIMER_NAME_HYPERVCLOCK &&
                    timer->present == 1) {
             virBufferAddLit(&buf, ",hv_time");
@@ -7191,24 +7198,13 @@ qemuBuildCpuCommandLine(virCommandPtr cmd,
     }
 
     if (def->apic_eoi) {
-        char sign;
-        if (def->apic_eoi == VIR_TRISTATE_SWITCH_ON)
-            sign = '+';
-        else
-            sign = '-';
-
-        virBufferAsprintf(&buf, ",%ckvm_pv_eoi", sign);
+        qemuBuildCpuFeature(qemuCaps, &buf, "kvm_pv_eoi",
+                            def->apic_eoi == VIR_TRISTATE_SWITCH_ON);
     }
 
     if (def->features[VIR_DOMAIN_FEATURE_PVSPINLOCK]) {
-        char sign;
-        if (def->features[VIR_DOMAIN_FEATURE_PVSPINLOCK] ==
-            VIR_TRISTATE_SWITCH_ON)
-            sign = '+';
-        else
-            sign = '-';
-
-        virBufferAsprintf(&buf, ",%ckvm_pv_unhalt", sign);
+        qemuBuildCpuFeature(qemuCaps, &buf, "kvm_pv_unhalt",
+                            def->features[VIR_DOMAIN_FEATURE_PVSPINLOCK] == VIR_TRISTATE_SWITCH_ON);
     }
 
     if (def->features[VIR_DOMAIN_FEATURE_HYPERV] == VIR_TRISTATE_SWITCH_ON) {
index e59d0ab29be449279ac4dafdaa8eb2786cb15289..caae868abf8f63951ae7e88034cec623fcdd8216 100644 (file)
@@ -13,7 +13,7 @@ QEMU_AUDIO_DRV=none \
 -object secret,id=masterKey0,format=raw,\
 file=/tmp/lib/domain--1-QEMUGuest1/master-key.aes \
 -machine pc,accel=tcg,usb=off,dump-guest-core=off \
--cpu qemu32,-kvm_pv_eoi \
+-cpu qemu32,kvm_pv_eoi=off \
 -m 214 \
 -overcommit mem-lock=off \
 -smp 6,sockets=6,cores=1,threads=1 \
index fed8deb6884e024949f2ee177cbfc6cb6a14ecdb..abafafa4113cdd1a2464af00b4139d74139ca490 100644 (file)
@@ -13,7 +13,7 @@ QEMU_AUDIO_DRV=none \
 -object secret,id=masterKey0,format=raw,\
 file=/tmp/lib/domain--1-QEMUGuest1/master-key.aes \
 -machine pc,accel=tcg,usb=off,dump-guest-core=off \
--cpu qemu32,+kvm_pv_eoi \
+-cpu qemu32,kvm_pv_eoi=on \
 -m 214 \
 -overcommit mem-lock=off \
 -smp 6,sockets=6,cores=1,threads=1 \
index c1c6e2b62187dc32f2bb993f86c5498dc771397c..23d2bcb87e73f2376717f03902b28a5109d95a44 100644 (file)
@@ -13,7 +13,7 @@ QEMU_AUDIO_DRV=none \
 -object secret,id=masterKey0,format=raw,\
 file=/tmp/lib/domain--1-QEMUGuest1/master-key.aes \
 -machine pc,accel=tcg,usb=off,dump-guest-core=off \
--cpu qemu32,-kvmclock,-kvm_pv_eoi \
+-cpu qemu32,kvmclock=off,kvm_pv_eoi=off \
 -m 214 \
 -overcommit mem-lock=off \
 -smp 6,sockets=6,cores=1,threads=1 \
index 52a36ca07560043877d170f9717830b1763d8788..b78533cf39882806880f1c4e0b85457a9edfb1f7 100644 (file)
@@ -13,7 +13,7 @@ QEMU_AUDIO_DRV=none \
 -object secret,id=masterKey0,format=raw,\
 file=/tmp/lib/domain--1-QEMUGuest1/master-key.aes \
 -machine pc,accel=tcg,usb=off,dump-guest-core=off \
--cpu qemu32,-kvm_pv_unhalt \
+-cpu qemu32,kvm_pv_unhalt=off \
 -m 214 \
 -overcommit mem-lock=off \
 -smp 6,sockets=6,cores=1,threads=1 \
index 4f1ab219af20c138dd34a1fe1dd26fafc61e1bde..a016e800168e5292483dfd1ba42bd080802121fd 100644 (file)
@@ -13,7 +13,7 @@ QEMU_AUDIO_DRV=none \
 -object secret,id=masterKey0,format=raw,\
 file=/tmp/lib/domain--1-QEMUGuest1/master-key.aes \
 -machine pc,accel=tcg,usb=off,dump-guest-core=off \
--cpu qemu32,+kvm_pv_unhalt \
+-cpu qemu32,kvm_pv_unhalt=on \
 -m 214 \
 -overcommit mem-lock=off \
 -smp 6,sockets=6,cores=1,threads=1 \