[libvirt PATCH v2 1/1] qemuProcessUpdateGuestCPU: Check host cpu for forbidden features
Daniel Henrique Barboza
danielhb413 at gmail.com
Thu Mar 4 11:38:56 UTC 2021
On 2/25/21 10:23 AM, Tim Wiederhake wrote:
> See https://bugzilla.redhat.com/show_bug.cgi?id=1840770
>
> Signed-off-by: Tim Wiederhake <twiederh at redhat.com>
> ---
Reviewed-by: Daniel Henrique Barboza <danielhb413 at gmail.com>
> src/qemu/qemu_process.c | 27 +++++++++++++++++++++++++++
> 1 file changed, 27 insertions(+)
>
> diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
> index bfa742577f..cecf606312 100644
> --- a/src/qemu/qemu_process.c
> +++ b/src/qemu/qemu_process.c
> @@ -6149,6 +6149,33 @@ qemuProcessUpdateGuestCPU(virDomainDefPtr def,
> if (virCPUConvertLegacy(hostarch, def->cpu) < 0)
> return -1;
>
> + if (def->cpu->check != VIR_CPU_CHECK_NONE) {
> + virCPUDefPtr host;
> + size_t i;
> +
> + host = virQEMUCapsGetHostModel(qemuCaps, def->virtType,
> + VIR_QEMU_CAPS_HOST_CPU_FULL);
> +
> + for (i = 0; i < def->cpu->nfeatures; ++i) {
> + virCPUFeatureDefPtr feature;
> +
> + if (def->cpu->features[i].policy != VIR_CPU_FEATURE_FORBID)
> + continue;
> +
> + feature = virCPUDefFindFeature(host, def->cpu->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'"),
> + def->cpu->features[i].name);
> + return -1;
> + }
> + }
> +
> /* nothing to update for host-passthrough / maximum */
> if (def->cpu->mode != VIR_CPU_MODE_HOST_PASSTHROUGH &&
> def->cpu->mode != VIR_CPU_MODE_MAXIMUM) {
>
More information about the libvir-list
mailing list