[libvirt] [PATCH] qemu: Implement a stub cpuArchDriver.baseline() handler for aarch64

Oleg Strikov oleg.strikov at canonical.com
Tue Feb 11 15:51:41 UTC 2014


Openstack Nova calls virConnectBaselineCPU() during initialization
of the instance to get a full list of CPU features.
This patch adds a stub to aarch64-specific code to handle
this request (no actual work is done). That's enough to have
this stub with limited functionality because qemu/kvm backend
supports only 'host-passthrough' cpu mode on aarch64.

Signed-off-by: Oleg Strikov <oleg.strikov at canonical.com>
---
 src/cpu/cpu_aarch64.c |   25 ++++++++++++++++++++++++-
 1 file changed, 24 insertions(+), 1 deletion(-)

diff --git a/src/cpu/cpu_aarch64.c b/src/cpu/cpu_aarch64.c
index f674bff..3c3e749 100644
--- a/src/cpu/cpu_aarch64.c
+++ b/src/cpu/cpu_aarch64.c
@@ -85,6 +85,29 @@ AArch64GuestData(virCPUDefPtr host ATTRIBUTE_UNUSED,
     return VIR_CPU_COMPARE_IDENTICAL;
 }
 
+static virCPUDefPtr
+AArch64Baseline(virCPUDefPtr *cpus,
+                unsigned int ncpus ATTRIBUTE_UNUSED,
+                const char **models ATTRIBUTE_UNUSED,
+                unsigned int nmodels ATTRIBUTE_UNUSED,
+                unsigned int flags)
+{
+    virCPUDefPtr cpu = NULL;
+
+    virCheckFlags(VIR_CONNECT_BASELINE_CPU_EXPAND_FEATURES, NULL);
+
+    if (VIR_ALLOC(cpu) < 0 ||
+        VIR_STRDUP(cpu->model, cpus[0]->model) < 0) {
+        virCPUDefFree(cpu);
+        return NULL;
+    }
+
+    cpu->type = VIR_CPU_TYPE_GUEST;
+    cpu->match = VIR_CPU_MATCH_EXACT;
+
+    return cpu;
+}
+
 struct cpuArchDriver cpuDriverAARCH64 = {
     .name = "aarch64",
     .arch = archs,
@@ -95,7 +118,7 @@ struct cpuArchDriver cpuDriverAARCH64 = {
     .free = AArch64DataFree,
     .nodeData = AArch64NodeData,
     .guestData = AArch64GuestData,
-    .baseline = NULL,
+    .baseline = AArch64Baseline,
     .update = AArch64Update,
     .hasFeature = NULL,
 };
-- 
1.7.9.5




More information about the libvir-list mailing list