copy->threads = cpu->threads;
copy->arch = cpu->arch;
copy->migratable = cpu->migratable;
+ copy->sigFamily = cpu->sigFamily;
+ copy->sigModel = cpu->sigModel;
+ copy->sigStepping = cpu->sigStepping;
if (cpu->cache) {
copy->cache = g_new0(virCPUCacheDef, 1);
if (def->type == VIR_CPU_TYPE_HOST) {
g_autofree char *arch = virXPathString("string(./arch[1])", ctxt);
xmlNodePtr counter_node = NULL;
+ xmlNodePtr signature_node = NULL;
if (!arch) {
virReportError(VIR_ERR_XML_ERROR, "%s",
return -1;
}
+ if ((signature_node = virXPathNode("./signature[1]", ctxt))) {
+ if (virXMLPropUInt(signature_node, "family", 10,
+ VIR_XML_PROP_REQUIRED | VIR_XML_PROP_NONZERO,
+ &def->sigFamily) < 0) {
+ return -1;
+ }
+
+ if (virXMLPropUInt(signature_node, "model", 10,
+ VIR_XML_PROP_REQUIRED,
+ &def->sigModel) < 0) {
+ return -1;
+ }
+
+ if (virXMLPropUInt(signature_node, "stepping", 10,
+ VIR_XML_PROP_REQUIRED,
+ &def->sigStepping) < 0) {
+ return -1;
+ }
+ }
+
if ((counter_node = virXPathNode("./counter[@name='tsc']", ctxt))) {
tsc = g_new0(virHostCPUTscInfo, 1);
virBufferAsprintf(buf, "<microcode version='%u'/>\n",
def->microcodeVersion);
+ if (def->type == VIR_CPU_TYPE_HOST && def->sigFamily) {
+ virBufferAddLit(buf, "<signature");
+ virBufferAsprintf(buf, " family='%u'", def->sigFamily);
+ virBufferAsprintf(buf, " model='%u'", def->sigModel);
+ virBufferAsprintf(buf, " stepping='%u'", def->sigStepping);
+ virBufferAddLit(buf, "/>\n");
+ }
+
if (def->type == VIR_CPU_TYPE_HOST && def->tsc) {
virBufferAddLit(buf, "<counter name='tsc'");
virBufferAsprintf(buf, " frequency='%llu'", def->tsc->frequency);
unsigned int dies;
unsigned int cores;
unsigned int threads;
+ unsigned int sigFamily;
+ unsigned int sigModel;
+ unsigned int sigStepping;
size_t nfeatures;
size_t nfeatures_max;
virCPUFeatureDef *features;
</attribute>
</element>
</optional>
+ <optional>
+ <element name="signature">
+ <attribute name="family">
+ <ref name="positiveInteger"/>
+ </attribute>
+ <attribute name="model">
+ <ref name="unsignedInt"/>
+ </attribute>
+ <attribute name="stepping">
+ <ref name="unsignedInt"/>
+ </attribute>
+ </element>
+ </optional>
<optional>
<element name="counter">
<attribute name="name">
cpuModel->nfeatures = 0;
cpu->nfeatures_max = cpuModel->nfeatures_max;
cpuModel->nfeatures_max = 0;
+ cpu->sigFamily = sigFamily;
+ cpu->sigModel = sigModel;
+ cpu->sigStepping = sigStepping;
return 0;
}
<arch>x86_64</arch>
<model>Opteron_G5</model>
<vendor>AMD</vendor>
+ <signature family='21' model='16' stepping='1'/>
<feature name='vme'/>
<feature name='ht'/>
<feature name='monitor'/>
<arch>x86_64</arch>
<model>n270</model>
<vendor>Intel</vendor>
+ <signature family='6' model='28' stepping='10'/>
<feature name='pse36'/>
<feature name='ds'/>
<feature name='acpi'/>
<arch>x86_64</arch>
<model>n270</model>
<vendor>Intel</vendor>
+ <signature family='6' model='28' stepping='10'/>
<feature name='ds'/>
<feature name='acpi'/>
<feature name='ss'/>
<arch>x86_64</arch>
<model>Westmere-IBRS</model>
<vendor>Intel</vendor>
+ <signature family='6' model='134' stepping='5'/>
<feature name='vme'/>
<feature name='ds'/>
<feature name='acpi'/>
<arch>x86_64</arch>
<model>Cooperlake</model>
<vendor>Intel</vendor>
+ <signature family='6' model='85' stepping='11'/>
<feature name='ds'/>
<feature name='acpi'/>
<feature name='ss'/>
<arch>x86_64</arch>
<model>SandyBridge</model>
<vendor>Intel</vendor>
+ <signature family='6' model='42' stepping='7'/>
<feature name='vme'/>
<feature name='ds'/>
<feature name='acpi'/>
<arch>x86_64</arch>
<model>SandyBridge</model>
<vendor>Intel</vendor>
+ <signature family='6' model='42' stepping='7'/>
<feature name='vme'/>
<feature name='ds'/>
<feature name='acpi'/>
<arch>x86_64</arch>
<model>Haswell-noTSX</model>
<vendor>Intel</vendor>
+ <signature family='6' model='60' stepping='3'/>
<feature name='vme'/>
<feature name='ds'/>
<feature name='acpi'/>
<arch>x86_64</arch>
<model>Westmere</model>
<vendor>Intel</vendor>
+ <signature family='6' model='37' stepping='2'/>
<feature name='vme'/>
<feature name='ds'/>
<feature name='acpi'/>
<arch>x86_64</arch>
<model>Skylake-Client</model>
<vendor>Intel</vendor>
+ <signature family='6' model='94' stepping='3'/>
<feature name='ds'/>
<feature name='acpi'/>
<feature name='ss'/>
<arch>x86_64</arch>
<model>SandyBridge</model>
<vendor>Intel</vendor>
+ <signature family='6' model='42' stepping='7'/>
<feature name='vme'/>
<feature name='ds'/>
<feature name='acpi'/>
<arch>x86_64</arch>
<model>SandyBridge</model>
<vendor>Intel</vendor>
+ <signature family='6' model='42' stepping='7'/>
<feature name='vme'/>
<feature name='ds'/>
<feature name='acpi'/>
<arch>x86_64</arch>
<model>IvyBridge</model>
<vendor>Intel</vendor>
+ <signature family='6' model='58' stepping='9'/>
<feature name='ds'/>
<feature name='acpi'/>
<feature name='ss'/>
<arch>x86_64</arch>
<model>IvyBridge</model>
<vendor>Intel</vendor>
+ <signature family='6' model='58' stepping='9'/>
<feature name='ds'/>
<feature name='acpi'/>
<feature name='ss'/>
<arch>x86_64</arch>
<model>IvyBridge</model>
<vendor>Intel</vendor>
+ <signature family='6' model='58' stepping='9'/>
<feature name='ds'/>
<feature name='acpi'/>
<feature name='ss'/>
<arch>x86_64</arch>
<model>Westmere</model>
<vendor>Intel</vendor>
+ <signature family='6' model='69' stepping='1'/>
<feature name='vme'/>
<feature name='ds'/>
<feature name='acpi'/>
<arch>x86_64</arch>
<model>Haswell-noTSX</model>
<vendor>Intel</vendor>
+ <signature family='6' model='69' stepping='1'/>
<feature name='vme'/>
<feature name='ds'/>
<feature name='acpi'/>
<arch>x86_64</arch>
<model>Broadwell</model>
<vendor>Intel</vendor>
+ <signature family='6' model='61' stepping='4'/>
<feature name='vme'/>
<feature name='ds'/>
<feature name='acpi'/>
<arch>x86_64</arch>
<model>Broadwell</model>
<vendor>Intel</vendor>
+ <signature family='6' model='61' stepping='4'/>
<feature name='vme'/>
<feature name='ds'/>
<feature name='acpi'/>
<arch>x86_64</arch>
<model>Broadwell-IBRS</model>
<vendor>Intel</vendor>
+ <signature family='6' model='61' stepping='4'/>
<feature name='vme'/>
<feature name='ds'/>
<feature name='acpi'/>
<arch>x86_64</arch>
<model>Skylake-Client-IBRS</model>
<vendor>Intel</vendor>
+ <signature family='6' model='142' stepping='9'/>
<feature name='ds'/>
<feature name='acpi'/>
<feature name='ss'/>
<arch>x86_64</arch>
<model>Skylake-Client</model>
<vendor>Intel</vendor>
+ <signature family='6' model='158' stepping='9'/>
<feature name='ds'/>
<feature name='acpi'/>
<feature name='ss'/>
<arch>x86_64</arch>
<model>Skylake-Client-noTSX-IBRS</model>
<vendor>Intel</vendor>
+ <signature family='6' model='142' stepping='10'/>
<feature name='ds'/>
<feature name='acpi'/>
<feature name='ss'/>
<arch>x86_64</arch>
<model>Skylake-Client-IBRS</model>
<vendor>Intel</vendor>
+ <signature family='6' model='158' stepping='10'/>
<feature name='ds'/>
<feature name='acpi'/>
<feature name='ss'/>
<arch>x86_64</arch>
<model>Conroe</model>
<vendor>Intel</vendor>
+ <signature family='6' model='15' stepping='11'/>
<feature name='vme'/>
<feature name='ds'/>
<feature name='acpi'/>
<arch>x86_64</arch>
<model>Penryn</model>
<vendor>Intel</vendor>
+ <signature family='6' model='23' stepping='10'/>
<feature name='vme'/>
<feature name='ds'/>
<feature name='acpi'/>
<arch>x86_64</arch>
<model>EPYC-Rome</model>
<vendor>AMD</vendor>
+ <signature family='23' model='49' stepping='0'/>
<feature name='ht'/>
<feature name='monitor'/>
<feature name='osxsave'/>
<arch>x86_64</arch>
<model>EPYC</model>
<vendor>AMD</vendor>
+ <signature family='23' model='1' stepping='2'/>
<feature name='ht'/>
<feature name='monitor'/>
<feature name='osxsave'/>
<arch>x86_64</arch>
<model>EPYC-IBPB</model>
<vendor>AMD</vendor>
+ <signature family='23' model='1' stepping='2'/>
<feature name='ht'/>
<feature name='monitor'/>
<feature name='osxsave'/>
<arch>x86_64</arch>
<model>Opteron_G4</model>
<vendor>AMD</vendor>
+ <signature family='21' model='1' stepping='2'/>
<feature name='vme'/>
<feature name='ht'/>
<feature name='monitor'/>
<arch>x86_64</arch>
<model>Dhyana</model>
<vendor>Hygon</vendor>
+ <signature family='24' model='0' stepping='1'/>
<feature name='ht'/>
<feature name='monitor'/>
<feature name='osxsave'/>
<arch>x86_64</arch>
<model>Icelake-Server</model>
<vendor>Intel</vendor>
+ <signature family='6' model='106' stepping='0'/>
<feature name='ds'/>
<feature name='acpi'/>
<feature name='ss'/>
<arch>x86_64</arch>
<model>Opteron_G3</model>
<vendor>AMD</vendor>
+ <signature family='16' model='2' stepping='3'/>
<feature name='vme'/>
<feature name='ht'/>
<feature name='monitor'/>
<arch>x86_64</arch>
<model>Opteron_G3</model>
<vendor>AMD</vendor>
+ <signature family='16' model='2' stepping='3'/>
<feature name='vme'/>
<feature name='ht'/>
<feature name='monitor'/>
<arch>x86_64</arch>
<model>Opteron_G4</model>
<vendor>AMD</vendor>
+ <signature family='21' model='1' stepping='2'/>
<feature name='vme'/>
<feature name='ht'/>
<feature name='monitor'/>
<arch>x86_64</arch>
<model>Opteron_G4</model>
<vendor>AMD</vendor>
+ <signature family='21' model='1' stepping='2'/>
<feature name='vme'/>
<feature name='ht'/>
<feature name='monitor'/>
<arch>x86_64</arch>
<model>core2duo</model>
<vendor>Intel</vendor>
+ <signature family='6' model='37' stepping='5'/>
<feature name='ds'/>
<feature name='acpi'/>
<feature name='ss'/>
<arch>x86_64</arch>
<model>athlon</model>
<vendor>AMD</vendor>
+ <signature family='16' model='4' stepping='2'/>
<feature name='mca'/>
<feature name='clflush'/>
<feature name='ht'/>
<arch>x86_64</arch>
<model>EPYC</model>
<vendor>AMD</vendor>
+ <signature family='23' model='1' stepping='1'/>
<feature name='ht'/>
<feature name='monitor'/>
<feature name='osxsave'/>
<arch>x86_64</arch>
<model>EPYC-Rome</model>
<vendor>AMD</vendor>
+ <signature family='23' model='113' stepping='0'/>
<feature name='ht'/>
<feature name='monitor'/>
<feature name='osxsave'/>
<arch>x86_64</arch>
<model>Conroe</model>
<vendor>Intel</vendor>
+ <signature family='6' model='15' stepping='6'/>
<feature name='vme'/>
<feature name='ds'/>
<feature name='acpi'/>
<arch>x86_64</arch>
<model>Skylake-Client-IBRS</model>
<vendor>Intel</vendor>
+ <signature family='6' model='94' stepping='3'/>
<feature name='ds'/>
<feature name='acpi'/>
<feature name='ss'/>
<arch>x86_64</arch>
<model>Skylake-Client</model>
<vendor>Intel</vendor>
+ <signature family='6' model='94' stepping='3'/>
<feature name='ds'/>
<feature name='acpi'/>
<feature name='ss'/>
<arch>x86_64</arch>
<model>Haswell-noTSX-IBRS</model>
<vendor>Intel</vendor>
+ <signature family='6' model='63' stepping='2'/>
<feature name='vme'/>
<feature name='ds'/>
<feature name='acpi'/>
<arch>x86_64</arch>
<model>Broadwell-IBRS</model>
<vendor>Intel</vendor>
+ <signature family='6' model='79' stepping='1'/>
<feature name='vme'/>
<feature name='ds'/>
<feature name='acpi'/>
<arch>x86_64</arch>
<model>Haswell-noTSX</model>
<vendor>Intel</vendor>
+ <signature family='6' model='63' stepping='2'/>
<feature name='vme'/>
<feature name='ds'/>
<feature name='acpi'/>
<arch>x86_64</arch>
<model>Broadwell</model>
<vendor>Intel</vendor>
+ <signature family='6' model='79' stepping='1'/>
<feature name='vme'/>
<feature name='ds'/>
<feature name='acpi'/>
<arch>x86_64</arch>
<model>SandyBridge-IBRS</model>
<vendor>Intel</vendor>
+ <signature family='6' model='45' stepping='7'/>
<feature name='vme'/>
<feature name='ds'/>
<feature name='acpi'/>
<arch>x86_64</arch>
<model>Haswell-noTSX</model>
<vendor>Intel</vendor>
+ <signature family='6' model='63' stepping='2'/>
<feature name='vme'/>
<feature name='ds'/>
<feature name='acpi'/>
<arch>x86_64</arch>
<model>Broadwell</model>
<vendor>Intel</vendor>
+ <signature family='6' model='79' stepping='1'/>
<feature name='vme'/>
<feature name='ds'/>
<feature name='acpi'/>
<arch>x86_64</arch>
<model>Westmere</model>
<vendor>Intel</vendor>
+ <signature family='6' model='47' stepping='2'/>
<feature name='vme'/>
<feature name='ds'/>
<feature name='acpi'/>
<arch>x86_64</arch>
<model>Westmere</model>
<vendor>Intel</vendor>
+ <signature family='6' model='47' stepping='2'/>
<feature name='vme'/>
<feature name='ds'/>
<feature name='acpi'/>
<arch>x86_64</arch>
<model>Haswell</model>
<vendor>Intel</vendor>
+ <signature family='6' model='63' stepping='4'/>
<feature name='vme'/>
<feature name='ds'/>
<feature name='acpi'/>
<arch>x86_64</arch>
<model>Nehalem-IBRS</model>
<vendor>Intel</vendor>
+ <signature family='6' model='46' stepping='6'/>
<feature name='vme'/>
<feature name='ds'/>
<feature name='acpi'/>
<arch>x86_64</arch>
<model>Skylake-Server-IBRS</model>
<vendor>Intel</vendor>
+ <signature family='6' model='85' stepping='4'/>
<feature name='ds'/>
<feature name='acpi'/>
<feature name='ss'/>
<arch>x86_64</arch>
<model>Skylake-Server-IBRS</model>
<vendor>Intel</vendor>
+ <signature family='6' model='85' stepping='4'/>
<feature name='ds'/>
<feature name='acpi'/>
<feature name='ss'/>
<arch>x86_64</arch>
<model>Skylake-Server</model>
<vendor>Intel</vendor>
+ <signature family='6' model='85' stepping='4'/>
<feature name='ds'/>
<feature name='acpi'/>
<feature name='ss'/>
<arch>x86_64</arch>
<model>Cascadelake-Server</model>
<vendor>Intel</vendor>
+ <signature family='6' model='85' stepping='6'/>
<feature name='ds'/>
<feature name='acpi'/>
<feature name='ss'/>
<arch>x86_64</arch>
<model>Cascadelake-Server</model>
<vendor>Intel</vendor>
+ <signature family='6' model='85' stepping='7'/>
<feature name='ds'/>
<feature name='acpi'/>
<feature name='ss'/>
<arch>x86_64</arch>
<model>Nehalem</model>
<vendor>Intel</vendor>
+ <signature family='6' model='26' stepping='5'/>
<feature name='vme'/>
<feature name='ds'/>
<feature name='acpi'/>
<arch>x86_64</arch>
<model>Penryn</model>
<vendor>Intel</vendor>
+ <signature family='6' model='23' stepping='6'/>
<feature name='vme'/>
<feature name='ds'/>
<feature name='acpi'/>