[libvirt PATCH 5/8] cpu_x86: Consolidate signature match in x86DecodeUseCandidate

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Checking the signature in two different places makes no sense since the
code in between can only mark the candidate as the best option so far,
which is what the second signature match does as well.

Signed-off-by: Jiri Denemark <jdenemar@xxxxxxxxxx>
---
 src/cpu/cpu_x86.c | 31 ++++++++++++++-----------------
 1 file changed, 14 insertions(+), 17 deletions(-)

diff --git a/src/cpu/cpu_x86.c b/src/cpu/cpu_x86.c
index a5eac7601c..80019ebd70 100644
--- a/src/cpu/cpu_x86.c
+++ b/src/cpu/cpu_x86.c
@@ -2006,15 +2006,22 @@ x86DecodeUseCandidate(virCPUx86Model *current,
     }
 
     /* Ideally we want to select a model with family/model equal to
-     * family/model of the real CPU. Once we found such model, we only
+     * family/model of the real CPU and once we found such model, we only
      * consider candidates with matching family/model.
      */
-    if (signature &&
-        virCPUx86SignaturesMatch(current->signatures, signature) &&
-        !virCPUx86SignaturesMatch(candidate->signatures, signature)) {
-        VIR_DEBUG("%s differs in signature from matching %s",
-                  cpuCandidate->model, cpuCurrent->model);
-        return 0;
+    if (signature) {
+        if (virCPUx86SignaturesMatch(current->signatures, signature) &&
+            !virCPUx86SignaturesMatch(candidate->signatures, signature)) {
+            VIR_DEBUG("%s differs in signature from matching %s",
+                      cpuCandidate->model, cpuCurrent->model);
+            return 0;
+        }
+
+        if (!virCPUx86SignaturesMatch(current->signatures, signature) &&
+            virCPUx86SignaturesMatch(candidate->signatures, signature)) {
+            VIR_DEBUG("%s provides matching signature", cpuCandidate->model);
+            return 1;
+        }
     }
 
     if (cpuCurrent->nfeatures > cpuCandidate->nfeatures) {
@@ -2023,16 +2030,6 @@ x86DecodeUseCandidate(virCPUx86Model *current,
         return 1;
     }
 
-    /* Prefer a candidate with matching signature even though it would
-     * result in longer list of features.
-     */
-    if (signature &&
-        virCPUx86SignaturesMatch(candidate->signatures, signature) &&
-        !virCPUx86SignaturesMatch(current->signatures, signature)) {
-        VIR_DEBUG("%s provides matching signature", cpuCandidate->model);
-        return 1;
-    }
-
     VIR_DEBUG("%s does not result in shorter feature list than %s",
               cpuCandidate->model, cpuCurrent->model);
     return 0;
-- 
2.35.1




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux