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(a)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