From af78cb04867263900ecb682279d79e8b9af84b7b Mon Sep 17 00:00:00 2001 From: Maxim Nestratov Date: Fri, 9 Dec 2016 17:28:05 +0300 Subject: [PATCH] qemu: Allow to specify pit timer tick policy=discard Separate out the "policy=discard" into it's own specific qemu command line. We'll rename "kvm-pit-device" test case to be "kvm-pit-discard" since it has the syntax we'd be using. Signed-off-by: Maxim Nestratov --- src/qemu/qemu_command.c | 10 ++++++++-- ...t-device.args => qemuxml2argv-kvm-pit-discard.args} | 0 ...pit-device.xml => qemuxml2argv-kvm-pit-discard.xml} | 2 +- tests/qemuxml2argvtest.c | 1 + 4 files changed, 10 insertions(+), 3 deletions(-) rename tests/qemuxml2argvdata/{qemuxml2argv-kvm-pit-device.args => qemuxml2argv-kvm-pit-discard.args} (100%) rename tests/qemuxml2argvdata/{qemuxml2argv-kvm-pit-device.xml => qemuxml2argv-kvm-pit-discard.xml} (95%) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 10325e3e5e..d459f8e3e3 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -6261,9 +6261,15 @@ qemuBuildClockCommandLine(virCommandPtr cmd, return -1; } break; - case VIR_DOMAIN_TIMER_TICKPOLICY_MERGE: case VIR_DOMAIN_TIMER_TICKPOLICY_DISCARD: - /* no way to support these modes for pit in qemu */ + if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_KVM_PIT_TICK_POLICY)) + virCommandAddArgList(cmd, "-global", + "kvm-pit.lost_tick_policy=discard", NULL); + else if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_NO_KVM_PIT)) + virCommandAddArg(cmd, "-no-kvm-pit-reinjection"); + break; + case VIR_DOMAIN_TIMER_TICKPOLICY_MERGE: + /* no way to support this mode for pit in qemu */ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("unsupported pit tickpolicy '%s'"), virDomainTimerTickpolicyTypeToString(def->clock.timers[i]->tickpolicy)); diff --git a/tests/qemuxml2argvdata/qemuxml2argv-kvm-pit-device.args b/tests/qemuxml2argvdata/qemuxml2argv-kvm-pit-discard.args similarity index 100% rename from tests/qemuxml2argvdata/qemuxml2argv-kvm-pit-device.args rename to tests/qemuxml2argvdata/qemuxml2argv-kvm-pit-discard.args diff --git a/tests/qemuxml2argvdata/qemuxml2argv-kvm-pit-device.xml b/tests/qemuxml2argvdata/qemuxml2argv-kvm-pit-discard.xml similarity index 95% rename from tests/qemuxml2argvdata/qemuxml2argv-kvm-pit-device.xml rename to tests/qemuxml2argvdata/qemuxml2argv-kvm-pit-discard.xml index 7835a1b03b..d8ddcbaf4c 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-kvm-pit-device.xml +++ b/tests/qemuxml2argvdata/qemuxml2argv-kvm-pit-discard.xml @@ -9,7 +9,7 @@ - + destroy restart diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index 559dd3ba53..ba5e3b87b6 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -2275,6 +2275,7 @@ mymain(void) qemuTestSetHostArch(driver.caps, VIR_ARCH_NONE); DO_TEST("kvm-pit-delay", QEMU_CAPS_KVM_PIT_TICK_POLICY); + DO_TEST("kvm-pit-discard", QEMU_CAPS_KVM_PIT_TICK_POLICY); DO_TEST("panic", QEMU_CAPS_DEVICE_PANIC, QEMU_CAPS_NODEFCONFIG);