Pablo Greco 40546a
From f2962c42448d442414246715a30ae74c8dc9fef3 Mon Sep 17 00:00:00 2001
Pablo Greco 40546a
Message-Id: <f2962c42448d442414246715a30ae74c8dc9fef3@dist-git>
Pablo Greco 40546a
From: Jiri Denemark <jdenemar@redhat.com>
Pablo Greco 40546a
Date: Thu, 27 Feb 2020 15:23:04 +0100
Pablo Greco 40546a
Subject: [PATCH] qemu: Translate features in virQEMUCapsGetCPUFeatures
Pablo Greco 40546a
MIME-Version: 1.0
Pablo Greco 40546a
Content-Type: text/plain; charset=UTF-8
Pablo Greco 40546a
Content-Transfer-Encoding: 8bit
Pablo Greco 40546a
Pablo Greco 40546a
Starting with QEMU 4.1 qemuMonitorCPUModelInfo structure in virQEMUCaps
Pablo Greco 40546a
stores only canonical feature names which may differ from the name used
Pablo Greco 40546a
by libvirt. We need translate these canonical names into libvirt names
Pablo Greco 40546a
for further consumption.
Pablo Greco 40546a
Pablo Greco 40546a
This fixes a bug in qemuConnectBaselineHypervisorCPU which would remove
Pablo Greco 40546a
all features for which libvirt's spelling differs from the QEMU's
Pablo Greco 40546a
preferred name. For example, the following result of
Pablo Greco 40546a
qemuConnectBaselineHypervisorCPU on my host with QEMU 4.1 is wrong:
Pablo Greco 40546a
Pablo Greco 40546a
    <cpu mode='custom' match='exact'>
Pablo Greco 40546a
      <model fallback='forbid'>Skylake-Client</model>
Pablo Greco 40546a
      <vendor>Intel</vendor>
Pablo Greco 40546a
      <feature policy='require' name='ss'/>
Pablo Greco 40546a
      <feature policy='require' name='vmx'/>
Pablo Greco 40546a
      <feature policy='require' name='hypervisor'/>
Pablo Greco 40546a
      <feature policy='require' name='clflushopt'/>
Pablo Greco 40546a
      <feature policy='require' name='umip'/>
Pablo Greco 40546a
      <feature policy='require' name='arch-capabilities'/>
Pablo Greco 40546a
      <feature policy='require' name='xsaves'/>
Pablo Greco 40546a
      <feature policy='require' name='pdpe1gb'/>
Pablo Greco 40546a
      <feature policy='require' name='invtsc'/>
Pablo Greco 40546a
      <feature policy='disable' name='pclmuldq'/>
Pablo Greco 40546a
      <feature policy='disable' name='lahf_lm'/>
Pablo Greco 40546a
    </cpu>
Pablo Greco 40546a
Pablo Greco 40546a
The 'pclmuldq' and 'lahf_lm' should not be disabled in the baseline CPU
Pablo Greco 40546a
as they are supported by QEMU on this host.
Pablo Greco 40546a
Pablo Greco 40546a
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Pablo Greco 40546a
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
Pablo Greco 40546a
(cherry picked from commit 1fd28a2e79692babd63d6b8e9eea90168dd0897e)
Pablo Greco 40546a
Pablo Greco 40546a
https://bugzilla.redhat.com/show_bug.cgi?id=1804224
Pablo Greco 40546a
https://bugzilla.redhat.com/show_bug.cgi?id=1809510
Pablo Greco 40546a
Pablo Greco 40546a
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Pablo Greco 40546a
Message-Id: <d6d9ffeea42852d1baf6ff08b3174af22b113353.1582813158.git.jdenemar@redhat.com>
Pablo Greco 40546a
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Pablo Greco 40546a
---
Pablo Greco 40546a
 src/qemu/qemu_capabilities.c | 3 ++-
Pablo Greco 40546a
 1 file changed, 2 insertions(+), 1 deletion(-)
Pablo Greco 40546a
Pablo Greco 40546a
diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
Pablo Greco 40546a
index c25d8c3e1a..a7cc324105 100644
Pablo Greco 40546a
--- a/src/qemu/qemu_capabilities.c
Pablo Greco 40546a
+++ b/src/qemu/qemu_capabilities.c
Pablo Greco 40546a
@@ -2521,7 +2521,8 @@ virQEMUCapsGetCPUFeatures(virQEMUCapsPtr qemuCaps,
Pablo Greco 40546a
         if (migratable && prop->migratable == VIR_TRISTATE_BOOL_NO)
Pablo Greco 40546a
             continue;
Pablo Greco 40546a
 
Pablo Greco 40546a
-        if (VIR_STRDUP(list[n++], prop->name) < 0)
Pablo Greco 40546a
+        if (VIR_STRDUP(list[n++],
Pablo Greco 40546a
+                       virQEMUCapsCPUFeatureFromQEMU(qemuCaps, prop->name)) < 0)
Pablo Greco 40546a
             goto cleanup;
Pablo Greco 40546a
     }
Pablo Greco 40546a
 
Pablo Greco 40546a
-- 
Pablo Greco 40546a
2.25.1
Pablo Greco 40546a