[libvirt] [PATCH 04/24] qemu: Filter CPU features in active XML
Ján Tomko
jtomko at redhat.com
Wed Jun 19 11:39:46 UTC 2019
On Wed, Jun 19, 2019 at 11:38:01AM +0200, Jiri Denemark wrote:
>Properly filter features which should not be passed to QEMU because they
>were never supported by QEMU or they did nothing and QEMU dropped them.
>
>Currently they are just silently ignored by the command line generator.
>Let's make this process more visible and clean by dropping the features
>from the domain's active definition in qemuProcessUpdateGuestCPU.
>
>Signed-off-by: Jiri Denemark <jdenemar at redhat.com>
>---
> src/qemu/qemu_command.c | 3 ---
> src/qemu/qemu_process.c | 38 +++++++++++++++++++++-----------------
> 2 files changed, 21 insertions(+), 20 deletions(-)
>
>diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
>index 6cc165a118..a23e428322 100644
>--- a/src/qemu/qemu_command.c
>+++ b/src/qemu/qemu_command.c
>@@ -7106,9 +7106,6 @@ qemuBuildCpuModelArgStr(virQEMUDriverPtr driver,
> virBufferAsprintf(buf, ",vendor=%s", cpu->vendor_id);
>
> for (i = 0; i < cpu->nfeatures; i++) {
>- if (!virQEMUCapsCPUFilterFeatures(cpu->features[i].name,
>- (virArch *)&def->os.arch))
>- continue;
> switch ((virCPUFeaturePolicy) cpu->features[i].policy) {
> case VIR_CPU_FEATURE_FORCE:
> case VIR_CPU_FEATURE_REQUIRE:
>diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
>index 144328c148..47e84e5ef0 100644
>--- a/src/qemu/qemu_process.c
>+++ b/src/qemu/qemu_process.c
>@@ -5928,26 +5928,30 @@ qemuProcessUpdateGuestCPU(virDomainDefPtr def,
> return -1;
>
> /* nothing to update for host-passthrough */
>- if (def->cpu->mode == VIR_CPU_MODE_HOST_PASSTHROUGH)
>- return 0;
>+ if (def->cpu->mode != VIR_CPU_MODE_HOST_PASSTHROUGH) {
>+ if (def->cpu->check == VIR_CPU_CHECK_PARTIAL &&
>+ virCPUCompare(caps->host.arch,
>+ virQEMUCapsGetHostModel(qemuCaps, def->virtType,
>+ VIR_QEMU_CAPS_HOST_CPU_FULL),
>+ def->cpu, true) < 0)
>+ return -1;
>
>- if (def->cpu->check == VIR_CPU_CHECK_PARTIAL &&
>- virCPUCompare(caps->host.arch,
>- virQEMUCapsGetHostModel(qemuCaps, def->virtType,
>- VIR_QEMU_CAPS_HOST_CPU_FULL),
>- def->cpu, true) < 0)
>+ if (virCPUUpdate(def->os.arch, def->cpu,
>+ virQEMUCapsGetHostModel(qemuCaps, def->virtType,
>+ VIR_QEMU_CAPS_HOST_CPU_MIGRATABLE)) < 0)
>+ return -1;
>+
>+ if (virCPUTranslate(def->os.arch, def->cpu,
>+ virQEMUCapsGetCPUDefinitions(qemuCaps, def->virtType)) < 0)
>+ return -1;
>+
>+ def->cpu->fallback = VIR_CPU_FALLBACK_FORBID;
>+ }
>+
Splitting the condition inversion and resulting indentation change would make this patch nicer.
Reviewed-by: Ján Tomko <jtomko at redhat.com>
Jano
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20190619/af28c2bc/attachment-0001.sig>
More information about the libvir-list
mailing list