3e5111
From 56208ffe874c42274add74ba412059345e5c018d Mon Sep 17 00:00:00 2001
3e5111
Message-Id: <56208ffe874c42274add74ba412059345e5c018d@dist-git>
3e5111
From: Andrea Bolognani <abologna@redhat.com>
3e5111
Date: Tue, 4 Apr 2017 14:59:27 +0200
3e5111
Subject: [PATCH] qemu: Split virQEMUCapsInitArchQMPBasic()
3e5111
3e5111
Instead of having a single function that probes the
3e5111
architecture from the monitor and then sets a bunch of
3e5111
basic capabilities based on it, have a separate function
3e5111
for each part: virQEMUCapsInitQMPArch() only sets the
3e5111
architecture, and virQEMUCapsInitQMPBasicArch() only sets
3e5111
the capabilities.
3e5111
3e5111
This split will be useful later on, when we will want to
3e5111
set basic capabilities from the test suite without having
3e5111
to go through the pain of mocking the monitor.
3e5111
3e5111
(cherry picked from commit a8fc7ef83439c235a3b1115cf6d7b80e096f4af2)
3e5111
3e5111
Bug: https://bugzilla.redhat.com/show_bug.cgi?id=1429509
3e5111
3e5111
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
3e5111
---
3e5111
 src/qemu/qemu_capabilities.c | 42 +++++++++++++++++++++++++++++++-----------
3e5111
 1 file changed, 31 insertions(+), 11 deletions(-)
3e5111
3e5111
diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
3e5111
index 83ebcd020..b568a0f5e 100644
3e5111
--- a/src/qemu/qemu_capabilities.c
3e5111
+++ b/src/qemu/qemu_capabilities.c
3e5111
@@ -4262,18 +4262,25 @@ virQEMUCapsInitQMPBasic(virQEMUCapsPtr qemuCaps)
3e5111
     virQEMUCapsSet(qemuCaps, QEMU_CAPS_DISPLAY);
3e5111
 }
3e5111
 
3e5111
-/* Capabilities that are architecture depending
3e5111
- * initialized for QEMU.
3e5111
+
3e5111
+/**
3e5111
+ * virQEMUCapsInitQMPArch:
3e5111
+ * @qemuCaps: QEMU capabilities
3e5111
+ * @mon: QEMU monitor
3e5111
+ *
3e5111
+ * Initialize the architecture for @qemuCaps by asking @mon.
3e5111
+ *
3e5111
+ * Returns: 0 on success, <0 on failure
3e5111
  */
3e5111
 static int
3e5111
-virQEMUCapsInitArchQMPBasic(virQEMUCapsPtr qemuCaps,
3e5111
+virQEMUCapsInitQMPArch(virQEMUCapsPtr qemuCaps,
3e5111
                             qemuMonitorPtr mon)
3e5111
 {
3e5111
     char *archstr = NULL;
3e5111
     int ret = -1;
3e5111
 
3e5111
     if (!(archstr = qemuMonitorGetTargetArch(mon)))
3e5111
-        return -1;
3e5111
+        goto cleanup;
3e5111
 
3e5111
     if ((qemuCaps->arch = virQEMUCapsArchFromString(archstr)) == VIR_ARCH_NONE) {
3e5111
         virReportError(VIR_ERR_INTERNAL_ERROR,
3e5111
@@ -4281,18 +4288,29 @@ virQEMUCapsInitArchQMPBasic(virQEMUCapsPtr qemuCaps,
3e5111
         goto cleanup;
3e5111
     }
3e5111
 
3e5111
+    ret = 0;
3e5111
+
3e5111
+ cleanup:
3e5111
+    VIR_FREE(archstr);
3e5111
+    return ret;
3e5111
+}
3e5111
+
3e5111
+
3e5111
+/**
3e5111
+ * virQEMUCapsInitQMPBasicArch:
3e5111
+ * @qemuCaps: QEMU capabilities
3e5111
+ *
3e5111
+ * Initialize @qemuCaps with basic architecture-dependent capabilities.
3e5111
+ */
3e5111
+static void
3e5111
+virQEMUCapsInitQMPBasicArch(virQEMUCapsPtr qemuCaps)
3e5111
+{
3e5111
     /* ACPI/HPET/KVM PIT are x86 specific */
3e5111
     if (ARCH_IS_X86(qemuCaps->arch)) {
3e5111
         virQEMUCapsSet(qemuCaps, QEMU_CAPS_NO_ACPI);
3e5111
         virQEMUCapsSet(qemuCaps, QEMU_CAPS_NO_HPET);
3e5111
         virQEMUCapsSet(qemuCaps, QEMU_CAPS_NO_KVM_PIT);
3e5111
     }
3e5111
-
3e5111
-    ret = 0;
3e5111
-
3e5111
- cleanup:
3e5111
-    VIR_FREE(archstr);
3e5111
-    return ret;
3e5111
 }
3e5111
 
3e5111
 
3e5111
@@ -4517,9 +4535,11 @@ virQEMUCapsInitQMPMonitor(virQEMUCapsPtr qemuCaps,
3e5111
 
3e5111
     virQEMUCapsInitQMPBasic(qemuCaps);
3e5111
 
3e5111
-    if (virQEMUCapsInitArchQMPBasic(qemuCaps, mon) < 0)
3e5111
+    if (virQEMUCapsInitQMPArch(qemuCaps, mon) < 0)
3e5111
         goto cleanup;
3e5111
 
3e5111
+    virQEMUCapsInitQMPBasicArch(qemuCaps);
3e5111
+
3e5111
     /* USB option is supported v1.3.0 onwards */
3e5111
     if (qemuCaps->version >= 1003000)
3e5111
         virQEMUCapsSet(qemuCaps, QEMU_CAPS_MACHINE_USB_OPT);
3e5111
-- 
3e5111
2.12.2
3e5111