[libvirt] [PATCH 1/4] cpu_conf: Fix default value for CPU match attribute

Jiri Denemark jdenemar at redhat.com
Thu Nov 14 15:44:55 UTC 2019


Commit v0.8.4-66-g95ff6b18ec (9 years ago) changed the default value for
the cpu/@match attribute to 'exact' in a rather complicated way. It did
so only if <model> subelement was present and set -1 otherwise (which is
not expected to ever happen). Thus the following two equivalent XML
elements:

    <cpu mode='host-model'/>

and

    <cpu mode='host-model'>
      <model/>
    </cpu>

would be parsed differently. The former would end up with match == -1
while the latter would have match == 1 ('exact'). This is not a big deal
since the match attribute is ignored for host-model CPUs, but we can
simplify the code and make it a little bit saner anyway.

Signed-off-by: Jiri Denemark <jdenemar at redhat.com>
---

Notes:
    Well, thanks to a bug (fixed in another patch in this series) the
    s390 CPU driver actually looks at the match attribute even for
    host-model CPUs.

 src/conf/cpu_conf.c | 9 ++-------
 src/conf/cpu_conf.h | 2 +-
 2 files changed, 3 insertions(+), 8 deletions(-)

diff --git a/src/conf/cpu_conf.c b/src/conf/cpu_conf.c
index 2a1bd7c9b2..3641b5ef4c 100644
--- a/src/conf/cpu_conf.c
+++ b/src/conf/cpu_conf.c
@@ -46,8 +46,8 @@ VIR_ENUM_IMPL(virCPUMode,
 
 VIR_ENUM_IMPL(virCPUMatch,
               VIR_CPU_MATCH_LAST,
-              "minimum",
               "exact",
+              "minimum",
               "strict",
 );
 
@@ -388,12 +388,7 @@ virCPUDefParseXML(xmlXPathContextPtr ctxt,
         char *match = virXMLPropString(ctxt->node, "match");
         char *check;
 
-        if (!match) {
-            if (virXPathBoolean("boolean(./model)", ctxt))
-                def->match = VIR_CPU_MATCH_EXACT;
-            else
-                def->match = -1;
-        } else {
+        if (match) {
             def->match = virCPUMatchTypeFromString(match);
             VIR_FREE(match);
 
diff --git a/src/conf/cpu_conf.h b/src/conf/cpu_conf.h
index e41d47d1ae..96fda3e6b3 100644
--- a/src/conf/cpu_conf.h
+++ b/src/conf/cpu_conf.h
@@ -52,8 +52,8 @@ typedef enum {
 VIR_ENUM_DECL(virCPUMode);
 
 typedef enum {
-    VIR_CPU_MATCH_MINIMUM,
     VIR_CPU_MATCH_EXACT,
+    VIR_CPU_MATCH_MINIMUM,
     VIR_CPU_MATCH_STRICT,
 
     VIR_CPU_MATCH_LAST
-- 
2.24.0




More information about the libvir-list mailing list