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 <pkrempa@redhat.com>
Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
}
-static bool
+bool
virQEMUCapsHaveAccel(virQEMUCaps *qemuCaps)
{
return virQEMUCapsGet(qemuCaps, QEMU_CAPS_KVM) ||
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) &&
const char *defaultRAMid,
bool deprecated,
virTristateBool acpi);
+
+bool
+virQEMUCapsHaveAccel(virQEMUCaps *qemuCaps);
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)