From: Jiri Denemark Date: Thu, 14 Sep 2017 14:14:40 +0000 (+0200) Subject: cpu_x86: Implement virCPUValidateFeatures X-Git-Tag: v3.8.0-rc1~99 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ea9741f6009c4654ed865314dfb1fce3eec5adb1;p=thirdparty%2Flibvirt.git cpu_x86: Implement virCPUValidateFeatures 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 --- diff --git a/src/cpu/cpu_x86.c b/src/cpu/cpu_x86.c index 2864454211..5ce205f9c1 100644 --- a/src/cpu/cpu_x86.c +++ b/src/cpu/cpu_x86.c @@ -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, };