From: Tim Wiederhake Date: Tue, 23 Mar 2021 10:01:54 +0000 (+0100) Subject: cpu: Introduce virCPUCheckForbiddenFeatures X-Git-Tag: v7.2.0-rc1~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a839fcbe620fb3fbd0944cb344b70d27918ccaae;p=thirdparty%2Flibvirt.git cpu: Introduce virCPUCheckForbiddenFeatures Signed-off-by: Tim Wiederhake Reviewed-by: Jiri Denemark nfeatures; ++i) { + virCPUFeatureDefPtr feature; + + if (guest->features[i].policy != VIR_CPU_FEATURE_FORBID) + continue; + + feature = virCPUDefFindFeature(host, guest->features[i].name); + if (!feature) + continue; + + if (feature->policy == VIR_CPU_FEATURE_DISABLE) + continue; + + virReportError(VIR_ERR_CPU_INCOMPATIBLE, + _("Host CPU provides forbidden feature '%s'"), + guest->features[i].name); + return -1; + } + + return 0; +} + + /** * virCPUDataCheckFeature: * diff --git a/src/cpu/cpu.h b/src/cpu/cpu.h index ff4fb7e103..0b00f0b98d 100644 --- a/src/cpu/cpu.h +++ b/src/cpu/cpu.h @@ -228,6 +228,12 @@ virCPUCheckFeature(virArch arch, ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3); +int +virCPUCheckForbiddenFeatures(virCPUDefPtr guest, + const virCPUDef *host) + ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); + + int virCPUDataCheckFeature(const virCPUData *data, const char *feature) diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 6cf087f779..cb9fe7c80a 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1421,6 +1421,7 @@ cpuEncode; virCPUArchIsSupported; virCPUBaseline; virCPUCheckFeature; +virCPUCheckForbiddenFeatures; virCPUCompare; virCPUCompareXML; virCPUConvertLegacy;