0a7476
From b7a1f0836d350bb4ee6930784a6f219e600ef794 Mon Sep 17 00:00:00 2001
0a7476
Message-Id: <b7a1f0836d350bb4ee6930784a6f219e600ef794@dist-git>
0a7476
From: Jiri Denemark <jdenemar@redhat.com>
0a7476
Date: Tue, 4 Jun 2019 13:04:27 +0200
0a7476
Subject: [PATCH] qemu: Make virQEMUCapsProbeHostCPUForEmulator more generic
0a7476
MIME-Version: 1.0
0a7476
Content-Type: text/plain; charset=UTF-8
0a7476
Content-Transfer-Encoding: 8bit
0a7476
0a7476
The function is renamed as virQEMUCapsProbeHostCPU and it does not get
0a7476
the list of allowed CPU models from qemuCaps anymore. This is
0a7476
responsibility is moved to the caller. The result is just a very thin
0a7476
wrapper around virCPUGetHost mostly required mocking in tests.
0a7476
0a7476
The generic function is used in place of a direct call to virCPUGetHost
0a7476
in virQEMUCapsInitHostCPUModel to make sure tests don't accidentally
0a7476
probe host CPU.
0a7476
0a7476
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
0a7476
(cherry picked from commit dd3fc650de8ef8b05b491c9f362b660e07a857fd)
0a7476
0a7476
https://bugzilla.redhat.com/show_bug.cgi?id=1641702
0a7476
0a7476
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
0a7476
Message-Id: <36a308ac10a2c86970ea3188dcb197c75adddefe.1559646067.git.jdenemar@redhat.com>
0a7476
Reviewed-by: Ján Tomko <jtomko@redhat.com>
0a7476
---
0a7476
 src/qemu/qemu_capabilities.c | 14 ++++++--------
0a7476
 src/qemu/qemu_capspriv.h     |  5 ++---
0a7476
 tests/qemucpumock.c          |  5 ++---
0a7476
 3 files changed, 10 insertions(+), 14 deletions(-)
0a7476
0a7476
diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
0a7476
index 66eefae988..c5032f9192 100644
0a7476
--- a/src/qemu/qemu_capabilities.c
0a7476
+++ b/src/qemu/qemu_capabilities.c
0a7476
@@ -924,12 +924,10 @@ virQEMUCapsInitGuestFromBinary(virCapsPtr caps,
0a7476
 
0a7476
 
0a7476
 virCPUDefPtr
0a7476
-virQEMUCapsProbeHostCPUForEmulator(virArch hostArch,
0a7476
-                                   virQEMUCapsPtr qemuCaps,
0a7476
-                                   virDomainVirtType type)
0a7476
+virQEMUCapsProbeHostCPU(virArch hostArch,
0a7476
+                        virDomainCapsCPUModelsPtr models)
0a7476
 {
0a7476
-    return virCPUGetHost(hostArch, VIR_CPU_TYPE_GUEST, NULL,
0a7476
-                         virQEMUCapsGetCPUDefinitions(qemuCaps, type));
0a7476
+    return virCPUGetHost(hostArch, VIR_CPU_TYPE_GUEST, NULL, models);
0a7476
 }
0a7476
 
0a7476
 
0a7476
@@ -2960,7 +2958,8 @@ virQEMUCapsInitHostCPUModel(virQEMUCapsPtr qemuCaps,
0a7476
     } else if (rc == 1) {
0a7476
         VIR_DEBUG("No host CPU model info from QEMU; probing host CPU directly");
0a7476
 
0a7476
-        hostCPU = virQEMUCapsProbeHostCPUForEmulator(hostArch, qemuCaps, type);
0a7476
+        hostCPU = virQEMUCapsProbeHostCPU(hostArch,
0a7476
+                                          virQEMUCapsGetCPUDefinitions(qemuCaps, type));
0a7476
         if (!hostCPU ||
0a7476
             virCPUDefCopyModelFilter(cpu, hostCPU, true,
0a7476
                                      virQEMUCapsCPUFilterFeatures,
0a7476
@@ -2973,8 +2972,7 @@ virQEMUCapsInitHostCPUModel(virQEMUCapsPtr qemuCaps,
0a7476
         goto error;
0a7476
     } else if (type == VIR_DOMAIN_VIRT_KVM &&
0a7476
                virCPUGetHostIsSupported(qemuCaps->arch)) {
0a7476
-        if (!(fullCPU = virCPUGetHost(qemuCaps->arch, VIR_CPU_TYPE_GUEST,
0a7476
-                                      NULL, NULL)))
0a7476
+        if (!(fullCPU = virQEMUCapsProbeHostCPU(qemuCaps->arch, NULL)))
0a7476
             goto error;
0a7476
 
0a7476
         if (!(cpuExpanded = virCPUDefCopy(cpu)) ||
0a7476
diff --git a/src/qemu/qemu_capspriv.h b/src/qemu/qemu_capspriv.h
0a7476
index cb5e0dd9a9..8e458ef227 100644
0a7476
--- a/src/qemu/qemu_capspriv.h
0a7476
+++ b/src/qemu/qemu_capspriv.h
0a7476
@@ -81,9 +81,8 @@ virQEMUCapsSetCPUModelInfo(virQEMUCapsPtr qemuCaps,
0a7476
                            qemuMonitorCPUModelInfoPtr modelInfo);
0a7476
 
0a7476
 virCPUDefPtr
0a7476
-virQEMUCapsProbeHostCPUForEmulator(virArch hostArch,
0a7476
-                                   virQEMUCapsPtr qemuCaps,
0a7476
-                                   virDomainVirtType type) ATTRIBUTE_NOINLINE;
0a7476
+virQEMUCapsProbeHostCPU(virArch hostArch,
0a7476
+                        virDomainCapsCPUModelsPtr models) ATTRIBUTE_NOINLINE;
0a7476
 
0a7476
 void
0a7476
 virQEMUCapsSetGICCapabilities(virQEMUCapsPtr qemuCaps,
0a7476
diff --git a/tests/qemucpumock.c b/tests/qemucpumock.c
0a7476
index 74dcfa6291..0e89e9764f 100644
0a7476
--- a/tests/qemucpumock.c
0a7476
+++ b/tests/qemucpumock.c
0a7476
@@ -29,9 +29,8 @@
0a7476
 
0a7476
 
0a7476
 virCPUDefPtr
0a7476
-virQEMUCapsProbeHostCPUForEmulator(virArch hostArch ATTRIBUTE_UNUSED,
0a7476
-                                   virQEMUCapsPtr qemuCaps ATTRIBUTE_UNUSED,
0a7476
-                                   virDomainVirtType type ATTRIBUTE_UNUSED)
0a7476
+virQEMUCapsProbeHostCPU(virArch hostArch ATTRIBUTE_UNUSED,
0a7476
+                        virDomainCapsCPUModelsPtr models ATTRIBUTE_UNUSED)
0a7476
 {
0a7476
     const char *model = getenv("VIR_TEST_MOCK_FAKE_HOST_CPU");
0a7476
 
0a7476
-- 
0a7476
2.21.0
0a7476