]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
cpu_x86: Implement virCPUValidateFeatures
authorJiri Denemark <jdenemar@redhat.com>
Thu, 14 Sep 2017 14:14:40 +0000 (16:14 +0200)
committerJiri Denemark <jdenemar@redhat.com>
Mon, 18 Sep 2017 08:40:12 +0000 (10:40 +0200)
The function checks whether all CPU features used in a CPU definition
are specified in cpu_map.xml.

https://bugzilla.redhat.com/show_bug.cgi?id=1460086

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
src/cpu/cpu_x86.c

index 2864454211ee1d9c0673861200f8524fb404f068..5ce205f9c1ce98278f49af6f7d8003c617af0a10 100644 (file)
@@ -2925,6 +2925,28 @@ virCPUx86CopyMigratable(virCPUDefPtr cpu)
 }
 
 
+static int
+virCPUx86ValidateFeatures(virCPUDefPtr cpu)
+{
+    virCPUx86MapPtr map;
+    size_t i;
+
+    if (!(map = virCPUx86GetMap()))
+        return -1;
+
+    for (i = 0; i < cpu->nfeatures; i++) {
+        if (!x86FeatureFind(map, cpu->features[i].name)) {
+            virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+                           _("unknown CPU feature: %s"),
+                           cpu->features[i].name);
+            return -1;
+        }
+    }
+
+    return 0;
+}
+
+
 int
 virCPUx86DataAddCPUID(virCPUDataPtr cpuData,
                       const virCPUx86CPUID *cpuid)
@@ -3001,4 +3023,5 @@ struct cpuArchDriver cpuDriverX86 = {
     .translate  = virCPUx86Translate,
     .expandFeatures = virCPUx86ExpandFeatures,
     .copyMigratable = virCPUx86CopyMigratable,
+    .validateFeatures = virCPUx86ValidateFeatures,
 };