render / rpms / libvirt

Forked from rpms/libvirt 9 months ago
Clone
a41c76
From 882e0241f82b5bcbe239cf00134950e141de642a Mon Sep 17 00:00:00 2001
a41c76
Message-Id: <882e0241f82b5bcbe239cf00134950e141de642a@dist-git>
a41c76
From: Jiri Denemark <jdenemar@redhat.com>
a41c76
Date: Tue, 26 May 2020 10:58:59 +0200
a41c76
Subject: [PATCH] cpu_x86: Drop noTSX hint for incompatible CPUs
a41c76
MIME-Version: 1.0
a41c76
Content-Type: text/plain; charset=UTF-8
a41c76
Content-Transfer-Encoding: 8bit
a41c76
a41c76
The hint was introduced a long time ago when broken TSX implementation
a41c76
was found in Haswell and Broadwell CPUs. Since then many more CPUs with
a41c76
TSX were introduced and and disabled due to TAA vulnerability.
a41c76
a41c76
Thus the hint is not very useful and I think removing it is a better
a41c76
choice then updating it to cover all current noTSX models.
a41c76
a41c76
This partially reverts:
a41c76
commit 7f127ded657b24e0e55cd5f3539ef5b2dc935908
a41c76
    cpu: Rework cpuCompare* APIs
a41c76
a41c76
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
a41c76
Reviewed-by: Ján Tomko <jtomko@redhat.com>
a41c76
(cherry picked from commit 8452779049ef785b1d2e373b4d42633d4a929a60)
a41c76
a41c76
https://bugzilla.redhat.com/show_bug.cgi?id=1840010
a41c76
a41c76
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
a41c76
Message-Id: <1126fcc8a0e18f0eed38c182013429fd7266c274.1590483392.git.jdenemar@redhat.com>
a41c76
Reviewed-by: Ján Tomko <jtomko@redhat.com>
a41c76
---
a41c76
 src/cpu/cpu_x86.c | 44 ++++++--------------------------------------
a41c76
 1 file changed, 6 insertions(+), 38 deletions(-)
a41c76
a41c76
diff --git a/src/cpu/cpu_x86.c b/src/cpu/cpu_x86.c
a41c76
index b4d5c795f7..1b388ec1b2 100644
a41c76
--- a/src/cpu/cpu_x86.c
a41c76
+++ b/src/cpu/cpu_x86.c
a41c76
@@ -1937,8 +1937,6 @@ virCPUx86Compare(virCPUDefPtr host,
a41c76
                  bool failIncompatible)
a41c76
 {
a41c76
     virCPUCompareResult ret = VIR_CPU_COMPARE_ERROR;
a41c76
-    virCPUx86MapPtr map;
a41c76
-    virCPUx86ModelPtr model = NULL;
a41c76
     char *message = NULL;
a41c76
 
a41c76
     if (!host || !host->model) {
a41c76
@@ -1954,46 +1952,16 @@ virCPUx86Compare(virCPUDefPtr host,
a41c76
 
a41c76
     ret = x86Compute(host, cpu, NULL, &message);
a41c76
 
a41c76
-    if (ret == VIR_CPU_COMPARE_INCOMPATIBLE) {
a41c76
-        bool noTSX = false;
a41c76
-
a41c76
-        if (STREQ_NULLABLE(cpu->model, "Haswell") ||
a41c76
-            STREQ_NULLABLE(cpu->model, "Broadwell")) {
a41c76
-            if (!(map = virCPUx86GetMap()))
a41c76
-                goto cleanup;
a41c76
-
a41c76
-            if (!(model = x86ModelFromCPU(cpu, map, -1)))
a41c76
-                goto cleanup;
a41c76
-
a41c76
-            noTSX = !x86FeatureInData("hle", &model->data, map) ||
a41c76
-                    !x86FeatureInData("rtm", &model->data, map);
a41c76
-        }
a41c76
-
a41c76
-        if (failIncompatible) {
a41c76
-            ret = VIR_CPU_COMPARE_ERROR;
a41c76
-            if (message) {
a41c76
-                if (noTSX) {
a41c76
-                    virReportError(VIR_ERR_CPU_INCOMPATIBLE,
a41c76
-                                   _("%s; try using '%s-noTSX' CPU model"),
a41c76
-                                   message, cpu->model);
a41c76
-                } else {
a41c76
-                    virReportError(VIR_ERR_CPU_INCOMPATIBLE, "%s", message);
a41c76
-                }
a41c76
-            } else {
a41c76
-                if (noTSX) {
a41c76
-                    virReportError(VIR_ERR_CPU_INCOMPATIBLE,
a41c76
-                                   _("try using '%s-noTSX' CPU model"),
a41c76
-                                   cpu->model);
a41c76
-                } else {
a41c76
-                    virReportError(VIR_ERR_CPU_INCOMPATIBLE, NULL);
a41c76
-                }
a41c76
-            }
a41c76
-        }
a41c76
+    if (ret == VIR_CPU_COMPARE_INCOMPATIBLE && failIncompatible) {
a41c76
+        ret = VIR_CPU_COMPARE_ERROR;
a41c76
+        if (message)
a41c76
+            virReportError(VIR_ERR_CPU_INCOMPATIBLE, "%s", message);
a41c76
+        else
a41c76
+            virReportError(VIR_ERR_CPU_INCOMPATIBLE, NULL);
a41c76
     }
a41c76
 
a41c76
  cleanup:
a41c76
     VIR_FREE(message);
a41c76
-    x86ModelFree(model);
a41c76
     return ret;
a41c76
 }
a41c76
 
a41c76
-- 
a41c76
2.26.2
a41c76