struct _virCPUx86Feature {
char *name;
virCPUx86Data *data;
-
- virCPUx86FeaturePtr next;
};
typedef struct _virCPUx86KVMFeature virCPUx86KVMFeature;
struct _virCPUx86Map {
size_t nvendors;
virCPUx86VendorPtr *vendors;
- virCPUx86FeaturePtr features;
+ size_t nfeatures;
+ virCPUx86FeaturePtr *features;
size_t nmodels;
virCPUx86ModelPtr *models;
- virCPUx86FeaturePtr migrate_blockers;
+ size_t nblockers;
+ virCPUx86FeaturePtr *migrate_blockers;
};
static virCPUx86MapPtr cpuMap;
virCPUx86Data *data,
virCPUx86MapPtr map)
{
- virCPUx86FeaturePtr feature = map->features;
+ size_t i;
- while (feature) {
+ for (i = 0; i < map->nfeatures; i++) {
+ virCPUx86FeaturePtr feature = map->features[i];
if (x86DataIsSubset(data, feature->data)) {
x86DataSubtract(data, feature->data);
if (virCPUDefAddFeature(cpu, feature->name, policy) < 0)
return -1;
}
- feature = feature->next;
}
return 0;
}
-static virCPUx86FeaturePtr
-x86FeatureCopy(virCPUx86FeaturePtr src)
-{
- virCPUx86FeaturePtr feature;
-
- if (VIR_ALLOC(feature) < 0)
- return NULL;
-
- if (VIR_STRDUP(feature->name, src->name) < 0)
- goto error;
-
- if (!(feature->data = x86DataCopy(src->data)))
- goto error;
-
- return feature;
-
- error:
- x86FeatureFree(feature);
- return NULL;
-}
-
-
static virCPUx86FeaturePtr
x86FeatureFind(virCPUx86MapPtr map,
const char *name)
{
- virCPUx86FeaturePtr feature;
-
- feature = map->features;
- while (feature) {
- if (STREQ(feature->name, name))
- return feature;
+ size_t i;
- feature = feature->next;
+ for (i = 0; i < map->nfeatures; i++) {
+ if (STREQ(map->features[i]->name, name))
+ return map->features[i];
}
return NULL;
{
virBuffer ret = VIR_BUFFER_INITIALIZER;
bool first = true;
-
- virCPUx86FeaturePtr next_feature = map->features;
+ size_t i;
virBufferAdd(&ret, "", 0);
- while (next_feature) {
- if (x86DataIsSubset(data, next_feature->data)) {
+ for (i = 0; i < map->nfeatures; i++) {
+ virCPUx86FeaturePtr feature = map->features[i];
+ if (x86DataIsSubset(data, feature->data)) {
if (!first)
virBufferAdd(&ret, separator, -1);
else
first = false;
- virBufferAdd(&ret, next_feature->name, -1);
+ virBufferAdd(&ret, feature->name, -1);
}
- next_feature = next_feature->next;
}
return virBufferContentAndReset(&ret);
goto cleanup;
}
- if (!migratable) {
- virCPUx86FeaturePtr blocker;
-
- if (!(blocker = x86FeatureCopy(feature)))
- goto cleanup;
-
- blocker->next = map->migrate_blockers;
- map->migrate_blockers = blocker;
- }
+ if (!migratable &&
+ VIR_APPEND_ELEMENT_COPY(map->migrate_blockers,
+ map->nblockers, feature) < 0)
+ goto cleanup;
- feature->next = map->features;
- map->features = feature;
- feature = NULL;
+ if (VIR_APPEND_ELEMENT(map->features, map->nfeatures, feature) < 0)
+ goto cleanup;
ret = 0;
if (!map)
return;
- while (map->features) {
- virCPUx86FeaturePtr feature = map->features;
- map->features = feature->next;
- x86FeatureFree(feature);
- }
+ for (i = 0; i < map->nfeatures; i++)
+ x86FeatureFree(map->features[i]);
+ VIR_FREE(map->features);
for (i = 0; i < map->nmodels; i++)
x86ModelFree(map->models[i]);
x86VendorFree(map->vendors[i]);
VIR_FREE(map->vendors);
- while (map->migrate_blockers) {
- virCPUx86FeaturePtr migrate_blocker = map->migrate_blockers;
- map->migrate_blockers = migrate_blocker->next;
- x86FeatureFree(migrate_blocker);
- }
+ /* migrate_blockers only points to the features from map->features list,
+ * which were already freed above
+ */
+ VIR_FREE(map->migrate_blockers);
VIR_FREE(map);
}
{
size_t i;
virCPUx86FeaturePtr feature = NULL;
+ size_t nfeatures = map->nfeatures;
+ size_t count = ARRAY_CARDINALITY(x86_kvm_features);
+
+ if (VIR_EXPAND_N(map->features, nfeatures, count) < 0)
+ goto error;
- for (i = 0; i < ARRAY_CARDINALITY(x86_kvm_features); i++) {
+ for (i = 0; i < count; i++) {
const char *name = x86_kvm_features[i].name;
if (x86FeatureFind(map, name)) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("CPU feature %s already defined"), name);
- return -1;
+ goto error;
}
if (!(feature = x86FeatureNew()))
if (virCPUx86DataAddCPUID(feature->data, &x86_kvm_features[i].cpuid))
goto error;
- feature->next = map->features;
- map->features = feature;
+ map->features[map->nfeatures++] = feature;
feature = NULL;
}
* features directly */
if (flags & VIR_CONNECT_BASELINE_CPU_MIGRATABLE) {
for (i = 0; i < cpuModel->nfeatures; i++) {
- virCPUx86FeaturePtr feat;
- for (feat = map->migrate_blockers; feat; feat = feat->next) {
- if (STREQ(feat->name, cpuModel->features[i].name)) {
+ size_t j;
+ for (j = 0; j < map->nblockers; j++) {
+ if (STREQ(map->migrate_blockers[j]->name,
+ cpuModel->features[i].name)) {
VIR_FREE(cpuModel->features[i].name);
- VIR_DELETE_ELEMENT_INPLACE(cpuModel->features, i, cpuModel->nfeatures);
+ VIR_DELETE_ELEMENT_INPLACE(cpuModel->features, i,
+ cpuModel->nfeatures);
}
}
}
{
virCPUDefPtr oldguest = NULL;
virCPUx86MapPtr map;
- virCPUx86FeaturePtr feat;
size_t i;
int ret = -1;
* Note: this only works as long as no CPU model contains non-migratable
* features directly */
for (i = 0; i < guest->nfeatures; i++) {
- for (feat = map->migrate_blockers; feat; feat = feat->next) {
- if (STREQ(feat->name, guest->features[i].name)) {
+ size_t j;
+ for (j = 0; j < map->nblockers; j++) {
+ if (STREQ(map->migrate_blockers[j]->name, guest->features[i].name)) {
VIR_FREE(guest->features[i].name);
VIR_DELETE_ELEMENT_INPLACE(guest->features, i, guest->nfeatures);
}
<cpu mode='custom' match='exact'>
<model fallback='forbid'>Westmere</model>
- <feature policy='require' name='lahf_lm'/>
- <feature policy='require' name='lm'/>
- <feature policy='require' name='nx'/>
- <feature policy='require' name='syscall'/>
- <feature policy='require' name='aes'/>
- <feature policy='require' name='popcnt'/>
- <feature policy='require' name='sse4.2'/>
- <feature policy='require' name='sse4.1'/>
- <feature policy='require' name='cx16'/>
- <feature policy='require' name='ssse3'/>
- <feature policy='require' name='pni'/>
- <feature policy='require' name='sse2'/>
- <feature policy='require' name='sse'/>
- <feature policy='require' name='fxsr'/>
- <feature policy='require' name='mmx'/>
- <feature policy='require' name='clflush'/>
- <feature policy='require' name='pse36'/>
- <feature policy='require' name='pat'/>
- <feature policy='require' name='cmov'/>
- <feature policy='require' name='mca'/>
- <feature policy='require' name='pge'/>
- <feature policy='require' name='mtrr'/>
- <feature policy='require' name='sep'/>
- <feature policy='require' name='apic'/>
- <feature policy='require' name='cx8'/>
- <feature policy='require' name='mce'/>
- <feature policy='require' name='pae'/>
- <feature policy='require' name='msr'/>
- <feature policy='require' name='tsc'/>
- <feature policy='require' name='pse'/>
- <feature policy='require' name='de'/>
<feature policy='require' name='fpu'/>
+ <feature policy='require' name='de'/>
+ <feature policy='require' name='pse'/>
+ <feature policy='require' name='tsc'/>
+ <feature policy='require' name='msr'/>
+ <feature policy='require' name='pae'/>
+ <feature policy='require' name='mce'/>
+ <feature policy='require' name='cx8'/>
+ <feature policy='require' name='apic'/>
+ <feature policy='require' name='sep'/>
+ <feature policy='require' name='mtrr'/>
+ <feature policy='require' name='pge'/>
+ <feature policy='require' name='mca'/>
+ <feature policy='require' name='cmov'/>
+ <feature policy='require' name='pat'/>
+ <feature policy='require' name='pse36'/>
+ <feature policy='require' name='clflush'/>
+ <feature policy='require' name='mmx'/>
+ <feature policy='require' name='fxsr'/>
+ <feature policy='require' name='sse'/>
+ <feature policy='require' name='sse2'/>
+ <feature policy='require' name='pni'/>
+ <feature policy='require' name='ssse3'/>
+ <feature policy='require' name='cx16'/>
+ <feature policy='require' name='sse4.1'/>
+ <feature policy='require' name='sse4.2'/>
+ <feature policy='require' name='popcnt'/>
+ <feature policy='require' name='aes'/>
+ <feature policy='require' name='syscall'/>
+ <feature policy='require' name='nx'/>
+ <feature policy='require' name='lm'/>
+ <feature policy='require' name='lahf_lm'/>
</cpu>
<cpu mode='custom' match='exact'>
<model fallback='forbid'>Westmere</model>
<vendor>Intel</vendor>
- <feature policy='require' name='hypervisor'/>
- <feature policy='require' name='avx'/>
- <feature policy='require' name='osxsave'/>
- <feature policy='require' name='xsave'/>
- <feature policy='require' name='tsc-deadline'/>
- <feature policy='require' name='x2apic'/>
- <feature policy='require' name='pcid'/>
- <feature policy='require' name='pclmuldq'/>
- <feature policy='require' name='ss'/>
<feature policy='require' name='vme'/>
- <feature policy='require' name='lahf_lm'/>
- <feature policy='require' name='lm'/>
- <feature policy='require' name='nx'/>
- <feature policy='require' name='syscall'/>
- <feature policy='require' name='aes'/>
- <feature policy='require' name='popcnt'/>
- <feature policy='require' name='sse4.2'/>
- <feature policy='require' name='sse4.1'/>
- <feature policy='require' name='cx16'/>
- <feature policy='require' name='ssse3'/>
- <feature policy='require' name='pni'/>
- <feature policy='require' name='sse2'/>
- <feature policy='require' name='sse'/>
- <feature policy='require' name='fxsr'/>
- <feature policy='require' name='mmx'/>
- <feature policy='require' name='clflush'/>
- <feature policy='require' name='pse36'/>
- <feature policy='require' name='pat'/>
- <feature policy='require' name='cmov'/>
- <feature policy='require' name='mca'/>
- <feature policy='require' name='pge'/>
- <feature policy='require' name='mtrr'/>
- <feature policy='require' name='sep'/>
- <feature policy='require' name='apic'/>
- <feature policy='require' name='cx8'/>
- <feature policy='require' name='mce'/>
- <feature policy='require' name='pae'/>
- <feature policy='require' name='msr'/>
- <feature policy='require' name='tsc'/>
- <feature policy='require' name='pse'/>
- <feature policy='require' name='de'/>
+ <feature policy='require' name='ss'/>
+ <feature policy='require' name='pclmuldq'/>
+ <feature policy='require' name='pcid'/>
+ <feature policy='require' name='x2apic'/>
+ <feature policy='require' name='tsc-deadline'/>
+ <feature policy='require' name='xsave'/>
+ <feature policy='require' name='osxsave'/>
+ <feature policy='require' name='avx'/>
+ <feature policy='require' name='hypervisor'/>
<feature policy='require' name='fpu'/>
+ <feature policy='require' name='de'/>
+ <feature policy='require' name='pse'/>
+ <feature policy='require' name='tsc'/>
+ <feature policy='require' name='msr'/>
+ <feature policy='require' name='pae'/>
+ <feature policy='require' name='mce'/>
+ <feature policy='require' name='cx8'/>
+ <feature policy='require' name='apic'/>
+ <feature policy='require' name='sep'/>
+ <feature policy='require' name='mtrr'/>
+ <feature policy='require' name='pge'/>
+ <feature policy='require' name='mca'/>
+ <feature policy='require' name='cmov'/>
+ <feature policy='require' name='pat'/>
+ <feature policy='require' name='pse36'/>
+ <feature policy='require' name='clflush'/>
+ <feature policy='require' name='mmx'/>
+ <feature policy='require' name='fxsr'/>
+ <feature policy='require' name='sse'/>
+ <feature policy='require' name='sse2'/>
+ <feature policy='require' name='pni'/>
+ <feature policy='require' name='ssse3'/>
+ <feature policy='require' name='cx16'/>
+ <feature policy='require' name='sse4.1'/>
+ <feature policy='require' name='sse4.2'/>
+ <feature policy='require' name='popcnt'/>
+ <feature policy='require' name='aes'/>
+ <feature policy='require' name='syscall'/>
+ <feature policy='require' name='nx'/>
+ <feature policy='require' name='lm'/>
+ <feature policy='require' name='lahf_lm'/>
</cpu>
<cpu mode='custom' match='exact'>
<model fallback='forbid'>Westmere</model>
<vendor>Intel</vendor>
- <feature policy='require' name='hypervisor'/>
- <feature policy='require' name='avx'/>
- <feature policy='require' name='osxsave'/>
- <feature policy='require' name='xsave'/>
- <feature policy='require' name='tsc-deadline'/>
- <feature policy='require' name='x2apic'/>
- <feature policy='require' name='pcid'/>
- <feature policy='require' name='pclmuldq'/>
- <feature policy='require' name='ss'/>
<feature policy='require' name='vme'/>
+ <feature policy='require' name='ss'/>
+ <feature policy='require' name='pclmuldq'/>
+ <feature policy='require' name='pcid'/>
+ <feature policy='require' name='x2apic'/>
+ <feature policy='require' name='tsc-deadline'/>
+ <feature policy='require' name='xsave'/>
+ <feature policy='require' name='osxsave'/>
+ <feature policy='require' name='avx'/>
+ <feature policy='require' name='hypervisor'/>
</cpu>
<cpu mode='custom' match='exact'>
<model fallback='allow'>SandyBridge</model>
<vendor>Intel</vendor>
- <feature policy='require' name='hypervisor'/>
- <feature policy='require' name='osxsave'/>
- <feature policy='require' name='pcid'/>
- <feature policy='require' name='ss'/>
<feature policy='require' name='vme'/>
+ <feature policy='require' name='ss'/>
+ <feature policy='require' name='pcid'/>
+ <feature policy='require' name='osxsave'/>
+ <feature policy='require' name='hypervisor'/>
<feature policy='disable' name='rdtscp'/>
- <feature policy='require' name='lahf_lm'/>
- <feature policy='require' name='lm'/>
- <feature policy='require' name='nx'/>
- <feature policy='require' name='syscall'/>
- <feature policy='require' name='avx'/>
- <feature policy='require' name='xsave'/>
- <feature policy='require' name='aes'/>
- <feature policy='require' name='tsc-deadline'/>
- <feature policy='require' name='popcnt'/>
- <feature policy='require' name='x2apic'/>
- <feature policy='require' name='sse4.2'/>
- <feature policy='require' name='sse4.1'/>
- <feature policy='require' name='cx16'/>
- <feature policy='require' name='ssse3'/>
- <feature policy='require' name='pclmuldq'/>
- <feature policy='require' name='pni'/>
- <feature policy='require' name='sse2'/>
- <feature policy='require' name='sse'/>
- <feature policy='require' name='fxsr'/>
- <feature policy='require' name='mmx'/>
- <feature policy='require' name='clflush'/>
- <feature policy='require' name='pse36'/>
- <feature policy='require' name='pat'/>
- <feature policy='require' name='cmov'/>
- <feature policy='require' name='mca'/>
- <feature policy='require' name='pge'/>
- <feature policy='require' name='mtrr'/>
- <feature policy='require' name='sep'/>
- <feature policy='require' name='apic'/>
- <feature policy='require' name='cx8'/>
- <feature policy='require' name='mce'/>
- <feature policy='require' name='pae'/>
- <feature policy='require' name='msr'/>
- <feature policy='require' name='tsc'/>
- <feature policy='require' name='pse'/>
- <feature policy='require' name='de'/>
<feature policy='require' name='fpu'/>
+ <feature policy='require' name='de'/>
+ <feature policy='require' name='pse'/>
+ <feature policy='require' name='tsc'/>
+ <feature policy='require' name='msr'/>
+ <feature policy='require' name='pae'/>
+ <feature policy='require' name='mce'/>
+ <feature policy='require' name='cx8'/>
+ <feature policy='require' name='apic'/>
+ <feature policy='require' name='sep'/>
+ <feature policy='require' name='mtrr'/>
+ <feature policy='require' name='pge'/>
+ <feature policy='require' name='mca'/>
+ <feature policy='require' name='cmov'/>
+ <feature policy='require' name='pat'/>
+ <feature policy='require' name='pse36'/>
+ <feature policy='require' name='clflush'/>
+ <feature policy='require' name='mmx'/>
+ <feature policy='require' name='fxsr'/>
+ <feature policy='require' name='sse'/>
+ <feature policy='require' name='sse2'/>
+ <feature policy='require' name='pni'/>
+ <feature policy='require' name='pclmuldq'/>
+ <feature policy='require' name='ssse3'/>
+ <feature policy='require' name='cx16'/>
+ <feature policy='require' name='sse4.1'/>
+ <feature policy='require' name='sse4.2'/>
+ <feature policy='require' name='x2apic'/>
+ <feature policy='require' name='popcnt'/>
+ <feature policy='require' name='tsc-deadline'/>
+ <feature policy='require' name='aes'/>
+ <feature policy='require' name='xsave'/>
+ <feature policy='require' name='avx'/>
+ <feature policy='require' name='syscall'/>
+ <feature policy='require' name='nx'/>
+ <feature policy='require' name='lm'/>
+ <feature policy='require' name='lahf_lm'/>
</cpu>
<cpu mode='custom' match='exact'>
<model fallback='allow'>SandyBridge</model>
<vendor>Intel</vendor>
- <feature policy='require' name='hypervisor'/>
- <feature policy='require' name='osxsave'/>
- <feature policy='require' name='pcid'/>
- <feature policy='require' name='ss'/>
<feature policy='require' name='vme'/>
+ <feature policy='require' name='ss'/>
+ <feature policy='require' name='pcid'/>
+ <feature policy='require' name='osxsave'/>
+ <feature policy='require' name='hypervisor'/>
<feature policy='disable' name='rdtscp'/>
</cpu>
<cpu mode='custom' match='exact'>
<model fallback='allow'>SandyBridge</model>
<vendor>Intel</vendor>
- <feature policy='require' name='hypervisor'/>
- <feature policy='require' name='osxsave'/>
- <feature policy='require' name='pcid'/>
- <feature policy='require' name='ss'/>
<feature policy='require' name='vme'/>
+ <feature policy='require' name='ss'/>
+ <feature policy='require' name='pcid'/>
+ <feature policy='require' name='osxsave'/>
+ <feature policy='require' name='hypervisor'/>
<feature policy='disable' name='rdtscp'/>
</cpu>
<cpu mode='custom' match='exact'>
<model fallback='allow'>SandyBridge</model>
<vendor>Intel</vendor>
- <feature policy='require' name='invtsc'/>
- <feature policy='require' name='hypervisor'/>
- <feature policy='require' name='osxsave'/>
- <feature policy='require' name='pcid'/>
- <feature policy='require' name='ss'/>
<feature policy='require' name='vme'/>
+ <feature policy='require' name='ss'/>
+ <feature policy='require' name='pcid'/>
+ <feature policy='require' name='osxsave'/>
+ <feature policy='require' name='hypervisor'/>
+ <feature policy='require' name='invtsc'/>
<feature policy='disable' name='rdtscp'/>
</cpu>
<cpu mode='custom' match='exact'>
<arch>x86_64</arch>
<model fallback='allow'>486</model>
- <feature policy='require' name='svm'/>
- <feature policy='require' name='lahf_lm'/>
- <feature policy='require' name='3dnowext'/>
- <feature policy='require' name='lm'/>
- <feature policy='require' name='nx'/>
- <feature policy='require' name='syscall'/>
- <feature policy='require' name='sse4.1'/>
- <feature policy='require' name='dca'/>
- <feature policy='require' name='xtpr'/>
- <feature policy='require' name='cx16'/>
- <feature policy='require' name='ssse3'/>
- <feature policy='require' name='monitor'/>
- <feature policy='require' name='pni'/>
- <feature policy='require' name='pbe'/>
- <feature policy='require' name='sse2'/>
- <feature policy='require' name='fxsr'/>
- <feature policy='require' name='mmx'/>
- <feature policy='require' name='clflush'/>
- <feature policy='require' name='pse36'/>
- <feature policy='require' name='pat'/>
- <feature policy='require' name='cmov'/>
- <feature policy='require' name='mca'/>
- <feature policy='require' name='pge'/>
- <feature policy='require' name='mtrr'/>
- <feature policy='require' name='sep'/>
- <feature policy='require' name='apic'/>
- <feature policy='require' name='cx8'/>
- <feature policy='require' name='mce'/>
- <feature policy='require' name='pae'/>
- <feature policy='require' name='msr'/>
- <feature policy='require' name='tsc'/>
<feature policy='require' name='de'/>
+ <feature policy='require' name='tsc'/>
+ <feature policy='require' name='msr'/>
+ <feature policy='require' name='pae'/>
+ <feature policy='require' name='mce'/>
+ <feature policy='require' name='cx8'/>
+ <feature policy='require' name='apic'/>
+ <feature policy='require' name='sep'/>
+ <feature policy='require' name='mtrr'/>
+ <feature policy='require' name='pge'/>
+ <feature policy='require' name='mca'/>
+ <feature policy='require' name='cmov'/>
+ <feature policy='require' name='pat'/>
+ <feature policy='require' name='pse36'/>
+ <feature policy='require' name='clflush'/>
+ <feature policy='require' name='mmx'/>
+ <feature policy='require' name='fxsr'/>
+ <feature policy='require' name='sse2'/>
+ <feature policy='require' name='pbe'/>
+ <feature policy='require' name='pni'/>
+ <feature policy='require' name='monitor'/>
+ <feature policy='require' name='ssse3'/>
+ <feature policy='require' name='cx16'/>
+ <feature policy='require' name='xtpr'/>
+ <feature policy='require' name='dca'/>
+ <feature policy='require' name='sse4.1'/>
+ <feature policy='require' name='syscall'/>
+ <feature policy='require' name='nx'/>
+ <feature policy='require' name='lm'/>
+ <feature policy='require' name='3dnowext'/>
+ <feature policy='require' name='lahf_lm'/>
+ <feature policy='require' name='svm'/>
<feature policy='disable' name='vme'/>
</cpu>
<cpu mode='custom' match='exact'>
<arch>x86_64</arch>
<model fallback='allow'>Nehalem</model>
- <feature policy='require' name='svm'/>
- <feature policy='require' name='3dnowext'/>
- <feature policy='require' name='dca'/>
- <feature policy='require' name='xtpr'/>
- <feature policy='require' name='monitor'/>
<feature policy='require' name='pbe'/>
- <feature policy='disable' name='popcnt'/>
- <feature policy='disable' name='sse4.2'/>
+ <feature policy='require' name='monitor'/>
+ <feature policy='require' name='xtpr'/>
+ <feature policy='require' name='dca'/>
+ <feature policy='require' name='3dnowext'/>
+ <feature policy='require' name='svm'/>
<feature policy='disable' name='sse'/>
+ <feature policy='disable' name='sse4.2'/>
+ <feature policy='disable' name='popcnt'/>
</cpu>
<cpu mode='custom' match='exact'>
<arch>x86_64</arch>
<model fallback='allow'>qemu64</model>
- <feature policy='require' name='lahf_lm'/>
- <feature policy='require' name='3dnowext'/>
- <feature policy='require' name='sse4.1'/>
- <feature policy='require' name='dca'/>
- <feature policy='require' name='xtpr'/>
- <feature policy='require' name='ssse3'/>
- <feature policy='require' name='monitor'/>
<feature policy='require' name='pbe'/>
+ <feature policy='require' name='monitor'/>
+ <feature policy='require' name='ssse3'/>
+ <feature policy='require' name='xtpr'/>
+ <feature policy='require' name='dca'/>
+ <feature policy='require' name='sse4.1'/>
+ <feature policy='require' name='3dnowext'/>
+ <feature policy='require' name='lahf_lm'/>
<feature policy='disable' name='sse'/>
</cpu>
<cpu mode='custom' match='exact'>
<arch>x86_64</arch>
<model fallback='allow'>Nehalem</model>
- <feature policy='require' name='svm'/>
- <feature policy='require' name='3dnowext'/>
- <feature policy='require' name='dca'/>
- <feature policy='require' name='xtpr'/>
- <feature policy='require' name='monitor'/>
<feature policy='require' name='pbe'/>
- <feature policy='disable' name='popcnt'/>
- <feature policy='disable' name='sse4.2'/>
+ <feature policy='require' name='monitor'/>
+ <feature policy='require' name='xtpr'/>
+ <feature policy='require' name='dca'/>
+ <feature policy='require' name='3dnowext'/>
+ <feature policy='require' name='svm'/>
<feature policy='disable' name='sse'/>
+ <feature policy='disable' name='sse4.2'/>
+ <feature policy='disable' name='popcnt'/>
</cpu>
<cpu mode='custom' match='exact'>
<arch>x86_64</arch>
<model fallback='allow'>Penryn</model>
- <feature policy='require' name='svm'/>
- <feature policy='require' name='3dnowext'/>
- <feature policy='require' name='dca'/>
- <feature policy='require' name='xtpr'/>
- <feature policy='require' name='monitor'/>
<feature policy='require' name='pbe'/>
+ <feature policy='require' name='monitor'/>
+ <feature policy='require' name='xtpr'/>
+ <feature policy='require' name='dca'/>
+ <feature policy='require' name='3dnowext'/>
+ <feature policy='require' name='svm'/>
<feature policy='disable' name='sse'/>
</cpu>
<cpu mode='custom' match='exact'>
<arch>x86_64</arch>
<model fallback='allow'>core2duo</model>
- <feature policy='require' name='lahf_lm'/>
- <feature policy='require' name='sse4.1'/>
- <feature policy='require' name='dca'/>
- <feature policy='require' name='xtpr'/>
- <feature policy='require' name='cx16'/>
- <feature policy='require' name='tm2'/>
- <feature policy='require' name='est'/>
- <feature policy='require' name='vmx'/>
- <feature policy='require' name='ds_cpl'/>
- <feature policy='require' name='pbe'/>
- <feature policy='require' name='tm'/>
- <feature policy='require' name='ht'/>
- <feature policy='require' name='ss'/>
- <feature policy='require' name='acpi'/>
<feature policy='require' name='ds'/>
+ <feature policy='require' name='acpi'/>
+ <feature policy='require' name='ss'/>
+ <feature policy='require' name='ht'/>
+ <feature policy='require' name='tm'/>
+ <feature policy='require' name='pbe'/>
+ <feature policy='require' name='ds_cpl'/>
+ <feature policy='require' name='vmx'/>
+ <feature policy='require' name='est'/>
+ <feature policy='require' name='tm2'/>
+ <feature policy='require' name='cx16'/>
+ <feature policy='require' name='xtpr'/>
+ <feature policy='require' name='dca'/>
+ <feature policy='require' name='sse4.1'/>
+ <feature policy='require' name='lahf_lm'/>
</cpu>
<cpu mode='custom' match='exact'>
<model fallback='allow'>Penryn</model>
- <feature policy='require' name='dca'/>
- <feature policy='require' name='xtpr'/>
- <feature policy='require' name='tm2'/>
- <feature policy='require' name='est'/>
- <feature policy='require' name='vmx'/>
- <feature policy='require' name='ds_cpl'/>
- <feature policy='require' name='monitor'/>
- <feature policy='require' name='pbe'/>
- <feature policy='require' name='tm'/>
- <feature policy='require' name='ht'/>
- <feature policy='require' name='ss'/>
- <feature policy='require' name='acpi'/>
- <feature policy='require' name='ds'/>
<feature policy='require' name='vme'/>
+ <feature policy='require' name='ds'/>
+ <feature policy='require' name='acpi'/>
+ <feature policy='require' name='ss'/>
+ <feature policy='require' name='ht'/>
+ <feature policy='require' name='tm'/>
+ <feature policy='require' name='pbe'/>
+ <feature policy='require' name='monitor'/>
+ <feature policy='require' name='ds_cpl'/>
+ <feature policy='require' name='vmx'/>
+ <feature policy='require' name='est'/>
+ <feature policy='require' name='tm2'/>
+ <feature policy='require' name='xtpr'/>
+ <feature policy='require' name='dca'/>
</cpu>
<cpu mode='custom' match='exact'>
<model fallback='allow'>pentium3</model>
- <feature policy='require' name='lahf_lm'/>
- <feature policy='require' name='lm'/>
- <feature policy='require' name='nx'/>
- <feature policy='require' name='syscall'/>
- <feature policy='require' name='sse4.1'/>
- <feature policy='require' name='dca'/>
- <feature policy='require' name='xtpr'/>
- <feature policy='require' name='cx16'/>
- <feature policy='require' name='ssse3'/>
- <feature policy='require' name='tm2'/>
- <feature policy='require' name='est'/>
- <feature policy='require' name='vmx'/>
- <feature policy='require' name='ds_cpl'/>
- <feature policy='require' name='monitor'/>
- <feature policy='require' name='pni'/>
- <feature policy='require' name='pbe'/>
- <feature policy='require' name='tm'/>
- <feature policy='require' name='ht'/>
- <feature policy='require' name='ss'/>
- <feature policy='require' name='sse2'/>
- <feature policy='require' name='acpi'/>
- <feature policy='require' name='ds'/>
- <feature policy='require' name='clflush'/>
<feature policy='require' name='apic'/>
+ <feature policy='require' name='clflush'/>
+ <feature policy='require' name='ds'/>
+ <feature policy='require' name='acpi'/>
+ <feature policy='require' name='sse2'/>
+ <feature policy='require' name='ss'/>
+ <feature policy='require' name='ht'/>
+ <feature policy='require' name='tm'/>
+ <feature policy='require' name='pbe'/>
+ <feature policy='require' name='pni'/>
+ <feature policy='require' name='monitor'/>
+ <feature policy='require' name='ds_cpl'/>
+ <feature policy='require' name='vmx'/>
+ <feature policy='require' name='est'/>
+ <feature policy='require' name='tm2'/>
+ <feature policy='require' name='ssse3'/>
+ <feature policy='require' name='cx16'/>
+ <feature policy='require' name='xtpr'/>
+ <feature policy='require' name='dca'/>
+ <feature policy='require' name='sse4.1'/>
+ <feature policy='require' name='syscall'/>
+ <feature policy='require' name='nx'/>
+ <feature policy='require' name='lm'/>
+ <feature policy='require' name='lahf_lm'/>
</cpu>
<cpu mode='custom' match='exact'>
<arch>x86_64</arch>
<model fallback='allow'>Penryn</model>
- <feature policy='require' name='3dnow'/>
- <feature policy='require' name='dca'/>
- <feature policy='require' name='xtpr'/>
- <feature policy='require' name='tm2'/>
- <feature policy='require' name='est'/>
- <feature policy='require' name='vmx'/>
- <feature policy='require' name='ds_cpl'/>
- <feature policy='require' name='monitor'/>
- <feature policy='require' name='pbe'/>
- <feature policy='require' name='tm'/>
- <feature policy='require' name='ht'/>
- <feature policy='require' name='ss'/>
- <feature policy='require' name='acpi'/>
- <feature policy='require' name='ds'/>
<feature policy='require' name='vme'/>
+ <feature policy='require' name='ds'/>
+ <feature policy='require' name='acpi'/>
+ <feature policy='require' name='ss'/>
+ <feature policy='require' name='ht'/>
+ <feature policy='require' name='tm'/>
+ <feature policy='require' name='pbe'/>
+ <feature policy='require' name='monitor'/>
+ <feature policy='require' name='ds_cpl'/>
+ <feature policy='require' name='vmx'/>
+ <feature policy='require' name='est'/>
+ <feature policy='require' name='tm2'/>
+ <feature policy='require' name='xtpr'/>
+ <feature policy='require' name='dca'/>
+ <feature policy='require' name='3dnow'/>
</cpu>
<cpu mode='custom' match='exact'>
<arch>x86_64</arch>
<model fallback='allow'>Haswell</model>
- <feature policy='disable' name='rtm'/>
<feature policy='disable' name='hle'/>
+ <feature policy='disable' name='rtm'/>
</cpu>
<cpu mode='custom' match='exact'>
<arch>x86_64</arch>
<model fallback='allow'>Haswell</model>
- <feature policy='disable' name='rtm'/>
<feature policy='disable' name='hle'/>
+ <feature policy='disable' name='rtm'/>
</cpu>
<cpu mode='custom' match='exact'>
<arch>x86_64</arch>
<model fallback='allow'>core2duo</model>
- <feature policy='require' name='lahf_lm'/>
- <feature policy='require' name='popcnt'/>
- <feature policy='require' name='sse4.2'/>
- <feature policy='require' name='sse4.1'/>
- <feature policy='require' name='dca'/>
- <feature policy='require' name='xtpr'/>
- <feature policy='require' name='cx16'/>
- <feature policy='require' name='tm2'/>
- <feature policy='require' name='est'/>
- <feature policy='require' name='vmx'/>
- <feature policy='require' name='ds_cpl'/>
- <feature policy='require' name='pbe'/>
- <feature policy='require' name='tm'/>
- <feature policy='require' name='ht'/>
- <feature policy='require' name='ss'/>
- <feature policy='require' name='acpi'/>
<feature policy='require' name='ds'/>
+ <feature policy='require' name='acpi'/>
+ <feature policy='require' name='ss'/>
+ <feature policy='require' name='ht'/>
+ <feature policy='require' name='tm'/>
+ <feature policy='require' name='pbe'/>
+ <feature policy='require' name='ds_cpl'/>
+ <feature policy='require' name='vmx'/>
+ <feature policy='require' name='est'/>
+ <feature policy='require' name='tm2'/>
+ <feature policy='require' name='cx16'/>
+ <feature policy='require' name='xtpr'/>
+ <feature policy='require' name='dca'/>
+ <feature policy='require' name='sse4.1'/>
+ <feature policy='require' name='sse4.2'/>
+ <feature policy='require' name='popcnt'/>
+ <feature policy='require' name='lahf_lm'/>
</cpu>
<cpu mode='custom' match='exact'>
<arch>x86_64</arch>
<model fallback='allow'>pentium3</model>
- <feature policy='require' name='lahf_lm'/>
- <feature policy='require' name='lm'/>
- <feature policy='require' name='nx'/>
- <feature policy='require' name='syscall'/>
- <feature policy='require' name='popcnt'/>
- <feature policy='require' name='sse4.2'/>
- <feature policy='require' name='sse4.1'/>
- <feature policy='require' name='dca'/>
- <feature policy='require' name='xtpr'/>
- <feature policy='require' name='cx16'/>
- <feature policy='require' name='ssse3'/>
- <feature policy='require' name='tm2'/>
- <feature policy='require' name='est'/>
- <feature policy='require' name='vmx'/>
- <feature policy='require' name='ds_cpl'/>
- <feature policy='require' name='monitor'/>
- <feature policy='require' name='pni'/>
- <feature policy='require' name='pbe'/>
- <feature policy='require' name='tm'/>
- <feature policy='require' name='ht'/>
- <feature policy='require' name='ss'/>
- <feature policy='require' name='sse2'/>
- <feature policy='require' name='acpi'/>
- <feature policy='require' name='ds'/>
- <feature policy='require' name='clflush'/>
<feature policy='require' name='apic'/>
+ <feature policy='require' name='clflush'/>
+ <feature policy='require' name='ds'/>
+ <feature policy='require' name='acpi'/>
+ <feature policy='require' name='sse2'/>
+ <feature policy='require' name='ss'/>
+ <feature policy='require' name='ht'/>
+ <feature policy='require' name='tm'/>
+ <feature policy='require' name='pbe'/>
+ <feature policy='require' name='pni'/>
+ <feature policy='require' name='monitor'/>
+ <feature policy='require' name='ds_cpl'/>
+ <feature policy='require' name='vmx'/>
+ <feature policy='require' name='est'/>
+ <feature policy='require' name='tm2'/>
+ <feature policy='require' name='ssse3'/>
+ <feature policy='require' name='cx16'/>
+ <feature policy='require' name='xtpr'/>
+ <feature policy='require' name='dca'/>
+ <feature policy='require' name='sse4.1'/>
+ <feature policy='require' name='sse4.2'/>
+ <feature policy='require' name='popcnt'/>
+ <feature policy='require' name='syscall'/>
+ <feature policy='require' name='nx'/>
+ <feature policy='require' name='lm'/>
+ <feature policy='require' name='lahf_lm'/>
</cpu>
<cpu mode='custom' match='exact'>
<arch>x86_64</arch>
<model fallback='allow'>Nehalem</model>
- <feature policy='require' name='dca'/>
- <feature policy='require' name='xtpr'/>
- <feature policy='require' name='tm2'/>
- <feature policy='require' name='est'/>
- <feature policy='require' name='vmx'/>
- <feature policy='require' name='ds_cpl'/>
- <feature policy='require' name='monitor'/>
- <feature policy='require' name='pbe'/>
- <feature policy='require' name='tm'/>
- <feature policy='require' name='ht'/>
- <feature policy='require' name='ss'/>
- <feature policy='require' name='acpi'/>
- <feature policy='require' name='ds'/>
<feature policy='require' name='vme'/>
+ <feature policy='require' name='ds'/>
+ <feature policy='require' name='acpi'/>
+ <feature policy='require' name='ss'/>
+ <feature policy='require' name='ht'/>
+ <feature policy='require' name='tm'/>
+ <feature policy='require' name='pbe'/>
+ <feature policy='require' name='monitor'/>
+ <feature policy='require' name='ds_cpl'/>
+ <feature policy='require' name='vmx'/>
+ <feature policy='require' name='est'/>
+ <feature policy='require' name='tm2'/>
+ <feature policy='require' name='xtpr'/>
+ <feature policy='require' name='dca'/>
</cpu>
<cpu mode='custom' match='exact'>
<arch>x86_64</arch>
<model fallback='allow'>Penryn</model>
- <feature policy='require' name='svm'/>
- <feature policy='require' name='3dnowext'/>
- <feature policy='require' name='monitor'/>
<feature policy='require' name='pbe'/>
+ <feature policy='require' name='monitor'/>
+ <feature policy='require' name='3dnowext'/>
+ <feature policy='require' name='svm'/>
<feature policy='disable' name='sse'/>
</cpu>
-name QEMUGuest1 \
-S \
-M pc \
--cpu Haswell,-rtm,-hle \
+-cpu Haswell,-hle,-rtm \
-m 214 \
-smp 6 \
-uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
-name QEMUGuest1 \
-S \
-M pc \
--cpu qemu64,-svm,-lm,-nx,-syscall,-clflush,-pse36,-mca \
+-cpu qemu64,-mca,-pse36,-clflush,-syscall,-nx,-lm,-svm \
-m 214 \
-smp 6 \
-uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
-name QEMUGuest1 \
-S \
-M pc \
--cpu core2duo,+lahf_lm,+3dnowext,+xtpr,+ds_cpl,+tm,+ht,+ds,-nx \
+-cpu core2duo,+ds,+ht,+tm,+ds_cpl,+xtpr,+3dnowext,+lahf_lm,-nx \
-m 214 \
-smp 6 \
-uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
-name QEMUGuest1 \
-S \
-M pc \
--cpu core2duo,+lahf_lm,+3dnowext,+xtpr,+ds_cpl,+tm,+ht,+ds,-nx \
+-cpu core2duo,+ds,+ht,+tm,+ds_cpl,+xtpr,+3dnowext,+lahf_lm,-nx \
-m 214 \
-smp 6 \
-uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
-name QEMUGuest1 \
-S \
-M pc \
--cpu Penryn,+xtpr,+tm2,+est,+vmx,+ds_cpl,+monitor,+pbe,+tm,+ht,+ss,+acpi,+ds,\
-+vme,-sse4.1 \
+-cpu Penryn,+vme,+ds,+acpi,+ss,+ht,+tm,+pbe,+monitor,+ds_cpl,+vmx,+est,+tm2,\
++xtpr,-sse4.1 \
-m 214 \
-smp 6 \
-uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
-name QEMUGuest1 \
-S \
-M pc \
--cpu 'core2duo,vendor=Libvirt QEMU,+lahf_lm,+xtpr,+cx16,+tm2,+est,+vmx,+ds_cpl,\
-+pbe,+tm,+ht,+ss,+acpi,+ds' \
+-cpu 'core2duo,vendor=Libvirt QEMU,+ds,+acpi,+ss,+ht,+tm,+pbe,+ds_cpl,+vmx,+est,\
++tm2,+cx16,+xtpr,+lahf_lm' \
-m 214 \
-smp 6 \
-uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
-name QEMUGuest1 \
-S \
-M pc \
--cpu core2duo,+lahf_lm,+xtpr,+cx16,+tm2,+est,+vmx,+ds_cpl,+pbe,+tm,+ht,+ss,+acpi,\
-+ds \
+-cpu core2duo,+ds,+acpi,+ss,+ht,+tm,+pbe,+ds_cpl,+vmx,+est,+tm2,+cx16,+xtpr,\
++lahf_lm \
-m 214 \
-smp 6 \
-uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
-name QEMUGuest1 \
-S \
-M pc \
--cpu core2duo,+lahf_lm,+xtpr,+cx16,+tm2,+est,+vmx,+ds_cpl,+pbe,+tm,+ht,+ss,+acpi,\
-+ds \
+-cpu core2duo,+ds,+acpi,+ss,+ht,+tm,+pbe,+ds_cpl,+vmx,+est,+tm2,+cx16,+xtpr,\
++lahf_lm \
-m 214 \
-smp 6 \
-uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
-name QEMUGuest1 \
-S \
-M pc \
--cpu core2duo,+lahf_lm,+xtpr,+cx16,+tm2,+est,+vmx,+ds_cpl,+pbe,+tm,+ht,+ss,+acpi,\
-+ds,-lm,-nx,-syscall \
+-cpu core2duo,+ds,+acpi,+ss,+ht,+tm,+pbe,+ds_cpl,+vmx,+est,+tm2,+cx16,+xtpr,\
++lahf_lm,-syscall,-nx,-lm \
-m 214 \
-smp 6 \
-uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
-name QEMUGuest1 \
-S \
-M pc \
--cpu core2duo,+lahf_lm,+3dnowext,+xtpr,+est,+vmx,+ds_cpl,+tm,+ht,+acpi,+ds,-nx \
+-cpu core2duo,+ds,+acpi,+ht,+tm,+ds_cpl,+vmx,+est,+xtpr,+3dnowext,+lahf_lm,-nx \
-m 214 \
-smp 6 \
-uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
-name f14 \
-S \
-M pc \
--cpu core2duo,+lahf_lm,+xtpr,+cx16,+tm2,+est,+vmx,+ds_cpl,+pbe,+tm,+ht,+ss,+acpi,\
-+ds \
+-cpu core2duo,+ds,+acpi,+ss,+ht,+tm,+pbe,+ds_cpl,+vmx,+est,+tm2,+cx16,+xtpr,\
++lahf_lm \
-m 1024 \
-smp 2 \
-uuid 553effab-b5e1-2d80-dfe3-da4344826c43 \