render / rpms / libvirt

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