On Mon, Nov 25, 2024 at 14:46:39 -0500, Collin Walling wrote: > Add a new a attribute, deprecated_features='on|off' to the <cpu> > element. This is used to toggle features flagged as deprecated on the > CPU model on or off. When this attribute is paired with 'on', > deprecated features will not be filtered. When paired with 'off', any > CPU features that are flagged as deprecated will be listed under the > CPU model with the 'disable' policy. > > Example: > > <cpu mode='host-model' check='partial' deprecated_features='off'/> > > The absence of this attribute is equivalent to the 'on' option. > > The deprecated features that will populate the domain XML are the same > features that result in the virsh domcapabilities command with the > --disable-deprecated-features argument present. > > It is recommended to define a domain XML with this attribute set to > 'off' to ensure migration to machines that may outright drop these > features in the future. In addition to the comments from Boris... > diff --git a/src/conf/cpu_conf.c b/src/conf/cpu_conf.c > index dcc164d165..a9910e2195 100644 > --- a/src/conf/cpu_conf.c > +++ b/src/conf/cpu_conf.c > @@ -238,6 +238,7 @@ virCPUDefCopyWithoutModel(const virCPUDef *cpu) > copy->mode = cpu->mode; > copy->match = cpu->match; > copy->check = cpu->check; > + copy->deprecated_feats = cpu->deprecated_feats; > copy->fallback = cpu->fallback; > copy->sockets = cpu->sockets; > copy->dies = cpu->dies; > @@ -450,6 +451,11 @@ virCPUDefParseXML(xmlXPathContextPtr ctxt, > if (virXMLPropEnum(ctxt->node, "check", virCPUCheckTypeFromString, > VIR_XML_PROP_NONE, &def->check) < 0) > return -1; > + > + if (virXMLPropTristateSwitch(ctxt->node, "deprecated_features", > + VIR_XML_PROP_NONE, > + &def->deprecated_feats) < 0) > + return -1; > } > > if (def->type == VIR_CPU_TYPE_HOST) { > @@ -748,6 +754,10 @@ virCPUDefFormatBufFull(virBuffer *buf, > virBufferAsprintf(&attributeBuf, " migratable='%s'", > virTristateSwitchTypeToString(def->migratable)); > } > + > + if (def->deprecated_feats == VIR_TRISTATE_SWITCH_OFF) { the attribute should be formatted even if it is on and ignored only when it's absent. > + virBufferAddLit(&attributeBuf, " deprecated_features='off'"); > + } > } > > /* Format children */ Jirka