From 111cfc5532596366bf6dc37d4a94333059522a0e Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Wed, 8 Mar 2023 18:58:51 +0100 Subject: [PATCH] qemu: capabilities: Fix testing of 'TCG' capabilities probing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The logic in 'virQEMUCapsInitQMP' invokes a second probe of qemu in case when acceleration is used and TCG is supported to specifically probe the CPU and features of non-accelerated guests. The same logic must then be used in 'qemucapabilitiestest' when replaying the data for testing otherwise the test would fail. Export 'virQEMUCapsHaveAccel' for test usage and use the same logic in 'testQemuCaps'. Fix the comment in 'virQEMUCapsInitQMP' to outline what's happening. Signed-off-by: Peter Krempa Reviewed-by: Martin Kletzander Reviewed-by: Ján Tomko --- src/qemu/qemu_capabilities.c | 6 +++--- src/qemu/qemu_capspriv.h | 3 +++ tests/qemucapabilitiestest.c | 3 ++- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index b2622a056e..c5f144d20a 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -883,7 +883,7 @@ virQEMUCapsTypeIsAccelerated(virDomainVirtType type) } -static bool +bool virQEMUCapsHaveAccel(virQEMUCaps *qemuCaps) { return virQEMUCapsGet(qemuCaps, QEMU_CAPS_KVM) || @@ -5748,8 +5748,8 @@ virQEMUCapsInitQMP(virQEMUCaps *qemuCaps, return -1; /* - * If KVM was enabled during the first probe, we need to explicitly probe - * for TCG capabilities by asking the same binary again and turning KVM + * If acceleration was enabled during the first probe, we need to explicitly + * probe for TCG capabilities by asking the same binary again and turning KVM * off. */ if (virQEMUCapsHaveAccel(qemuCaps) && diff --git a/src/qemu/qemu_capspriv.h b/src/qemu/qemu_capspriv.h index 60fdf02f06..be83b13ab5 100644 --- a/src/qemu/qemu_capspriv.h +++ b/src/qemu/qemu_capspriv.h @@ -116,3 +116,6 @@ virQEMUCapsAddMachine(virQEMUCaps *qemuCaps, const char *defaultRAMid, bool deprecated, virTristateBool acpi); + +bool +virQEMUCapsHaveAccel(virQEMUCaps *qemuCaps); diff --git a/tests/qemucapabilitiestest.c b/tests/qemucapabilitiestest.c index 081f14a6c3..7575f9fd44 100644 --- a/tests/qemucapabilitiestest.c +++ b/tests/qemucapabilitiestest.c @@ -101,7 +101,8 @@ testQemuCaps(const void *opaque) if (virQEMUCapsInitQMPMonitor(capsActual, qemuMonitorTestGetMonitor(mon)) < 0) return -1; - if (virQEMUCapsGet(capsActual, QEMU_CAPS_KVM)) { + if (virQEMUCapsHaveAccel(capsActual) && + virQEMUCapsGet(capsActual, QEMU_CAPS_TCG)) { qemuMonitorResetCommandID(qemuMonitorTestGetMonitor(mon)); if (qemuProcessQMPInitMonitor(qemuMonitorTestGetMonitor(mon)) < 0)