提交 e1ba4073 编写于 作者: J Jiri Denemark

qemu_command: Use consistent syntax for CPU features

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: NJiri Denemark <jdenemar@redhat.com>
Reviewed-by: NJán Tomko <jtomko@redhat.com>
上级 4c402598
...@@ -7039,6 +7039,19 @@ qemuBuildGlobalControllerCommandLine(virCommandPtr cmd, ...@@ -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 static int
qemuBuildCpuModelArgStr(virQEMUDriverPtr driver, qemuBuildCpuModelArgStr(virQEMUDriverPtr driver,
const virDomainDef *def, const virDomainDef *def,
...@@ -7109,18 +7122,12 @@ qemuBuildCpuModelArgStr(virQEMUDriverPtr driver, ...@@ -7109,18 +7122,12 @@ qemuBuildCpuModelArgStr(virQEMUDriverPtr driver,
switch ((virCPUFeaturePolicy) cpu->features[i].policy) { switch ((virCPUFeaturePolicy) cpu->features[i].policy) {
case VIR_CPU_FEATURE_FORCE: case VIR_CPU_FEATURE_FORCE:
case VIR_CPU_FEATURE_REQUIRE: case VIR_CPU_FEATURE_REQUIRE:
if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_QUERY_CPU_MODEL_EXPANSION)) qemuBuildCpuFeature(qemuCaps, buf, cpu->features[i].name, true);
virBufferAsprintf(buf, ",%s=on", cpu->features[i].name);
else
virBufferAsprintf(buf, ",+%s", cpu->features[i].name);
break; break;
case VIR_CPU_FEATURE_DISABLE: case VIR_CPU_FEATURE_DISABLE:
case VIR_CPU_FEATURE_FORBID: case VIR_CPU_FEATURE_FORBID:
if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_QUERY_CPU_MODEL_EXPANSION)) qemuBuildCpuFeature(qemuCaps, buf, cpu->features[i].name, false);
virBufferAsprintf(buf, ",%s=off", cpu->features[i].name);
else
virBufferAsprintf(buf, ",-%s", cpu->features[i].name);
break; break;
case VIR_CPU_FEATURE_OPTIONAL: case VIR_CPU_FEATURE_OPTIONAL:
...@@ -7179,8 +7186,8 @@ qemuBuildCpuCommandLine(virCommandPtr cmd, ...@@ -7179,8 +7186,8 @@ qemuBuildCpuCommandLine(virCommandPtr cmd,
if (timer->name == VIR_DOMAIN_TIMER_NAME_KVMCLOCK && if (timer->name == VIR_DOMAIN_TIMER_NAME_KVMCLOCK &&
timer->present != -1) { timer->present != -1) {
virBufferAsprintf(&buf, ",%ckvmclock", qemuBuildCpuFeature(qemuCaps, &buf, "kvmclock",
timer->present ? '+' : '-'); !!timer->present);
} else if (timer->name == VIR_DOMAIN_TIMER_NAME_HYPERVCLOCK && } else if (timer->name == VIR_DOMAIN_TIMER_NAME_HYPERVCLOCK &&
timer->present == 1) { timer->present == 1) {
virBufferAddLit(&buf, ",hv_time"); virBufferAddLit(&buf, ",hv_time");
...@@ -7191,24 +7198,13 @@ qemuBuildCpuCommandLine(virCommandPtr cmd, ...@@ -7191,24 +7198,13 @@ qemuBuildCpuCommandLine(virCommandPtr cmd,
} }
if (def->apic_eoi) { if (def->apic_eoi) {
char sign; qemuBuildCpuFeature(qemuCaps, &buf, "kvm_pv_eoi",
if (def->apic_eoi == VIR_TRISTATE_SWITCH_ON) def->apic_eoi == VIR_TRISTATE_SWITCH_ON);
sign = '+';
else
sign = '-';
virBufferAsprintf(&buf, ",%ckvm_pv_eoi", sign);
} }
if (def->features[VIR_DOMAIN_FEATURE_PVSPINLOCK]) { if (def->features[VIR_DOMAIN_FEATURE_PVSPINLOCK]) {
char sign; qemuBuildCpuFeature(qemuCaps, &buf, "kvm_pv_unhalt",
if (def->features[VIR_DOMAIN_FEATURE_PVSPINLOCK] == def->features[VIR_DOMAIN_FEATURE_PVSPINLOCK] == VIR_TRISTATE_SWITCH_ON);
VIR_TRISTATE_SWITCH_ON)
sign = '+';
else
sign = '-';
virBufferAsprintf(&buf, ",%ckvm_pv_unhalt", sign);
} }
if (def->features[VIR_DOMAIN_FEATURE_HYPERV] == VIR_TRISTATE_SWITCH_ON) { if (def->features[VIR_DOMAIN_FEATURE_HYPERV] == VIR_TRISTATE_SWITCH_ON) {
......
...@@ -13,7 +13,7 @@ QEMU_AUDIO_DRV=none \ ...@@ -13,7 +13,7 @@ QEMU_AUDIO_DRV=none \
-object secret,id=masterKey0,format=raw,\ -object secret,id=masterKey0,format=raw,\
file=/tmp/lib/domain--1-QEMUGuest1/master-key.aes \ file=/tmp/lib/domain--1-QEMUGuest1/master-key.aes \
-machine pc,accel=tcg,usb=off,dump-guest-core=off \ -machine pc,accel=tcg,usb=off,dump-guest-core=off \
-cpu qemu32,-kvm_pv_eoi \ -cpu qemu32,kvm_pv_eoi=off \
-m 214 \ -m 214 \
-overcommit mem-lock=off \ -overcommit mem-lock=off \
-smp 6,sockets=6,cores=1,threads=1 \ -smp 6,sockets=6,cores=1,threads=1 \
......
...@@ -13,7 +13,7 @@ QEMU_AUDIO_DRV=none \ ...@@ -13,7 +13,7 @@ QEMU_AUDIO_DRV=none \
-object secret,id=masterKey0,format=raw,\ -object secret,id=masterKey0,format=raw,\
file=/tmp/lib/domain--1-QEMUGuest1/master-key.aes \ file=/tmp/lib/domain--1-QEMUGuest1/master-key.aes \
-machine pc,accel=tcg,usb=off,dump-guest-core=off \ -machine pc,accel=tcg,usb=off,dump-guest-core=off \
-cpu qemu32,+kvm_pv_eoi \ -cpu qemu32,kvm_pv_eoi=on \
-m 214 \ -m 214 \
-overcommit mem-lock=off \ -overcommit mem-lock=off \
-smp 6,sockets=6,cores=1,threads=1 \ -smp 6,sockets=6,cores=1,threads=1 \
......
...@@ -13,7 +13,7 @@ QEMU_AUDIO_DRV=none \ ...@@ -13,7 +13,7 @@ QEMU_AUDIO_DRV=none \
-object secret,id=masterKey0,format=raw,\ -object secret,id=masterKey0,format=raw,\
file=/tmp/lib/domain--1-QEMUGuest1/master-key.aes \ file=/tmp/lib/domain--1-QEMUGuest1/master-key.aes \
-machine pc,accel=tcg,usb=off,dump-guest-core=off \ -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 \ -m 214 \
-overcommit mem-lock=off \ -overcommit mem-lock=off \
-smp 6,sockets=6,cores=1,threads=1 \ -smp 6,sockets=6,cores=1,threads=1 \
......
...@@ -13,7 +13,7 @@ QEMU_AUDIO_DRV=none \ ...@@ -13,7 +13,7 @@ QEMU_AUDIO_DRV=none \
-object secret,id=masterKey0,format=raw,\ -object secret,id=masterKey0,format=raw,\
file=/tmp/lib/domain--1-QEMUGuest1/master-key.aes \ file=/tmp/lib/domain--1-QEMUGuest1/master-key.aes \
-machine pc,accel=tcg,usb=off,dump-guest-core=off \ -machine pc,accel=tcg,usb=off,dump-guest-core=off \
-cpu qemu32,-kvm_pv_unhalt \ -cpu qemu32,kvm_pv_unhalt=off \
-m 214 \ -m 214 \
-overcommit mem-lock=off \ -overcommit mem-lock=off \
-smp 6,sockets=6,cores=1,threads=1 \ -smp 6,sockets=6,cores=1,threads=1 \
......
...@@ -13,7 +13,7 @@ QEMU_AUDIO_DRV=none \ ...@@ -13,7 +13,7 @@ QEMU_AUDIO_DRV=none \
-object secret,id=masterKey0,format=raw,\ -object secret,id=masterKey0,format=raw,\
file=/tmp/lib/domain--1-QEMUGuest1/master-key.aes \ file=/tmp/lib/domain--1-QEMUGuest1/master-key.aes \
-machine pc,accel=tcg,usb=off,dump-guest-core=off \ -machine pc,accel=tcg,usb=off,dump-guest-core=off \
-cpu qemu32,+kvm_pv_unhalt \ -cpu qemu32,kvm_pv_unhalt=on \
-m 214 \ -m 214 \
-overcommit mem-lock=off \ -overcommit mem-lock=off \
-smp 6,sockets=6,cores=1,threads=1 \ -smp 6,sockets=6,cores=1,threads=1 \
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册