提交 3a7cd180 编写于 作者: J Jiri Denemark

cpu_x86: Use array of features in CPU map

There's no reason for keeping the features in a linked list. Especially
when we know upfront the total number of features we are loading.
Signed-off-by: NJiri Denemark <jdenemar@redhat.com>
上级 22137d39
......@@ -56,8 +56,6 @@ typedef virCPUx86Feature *virCPUx86FeaturePtr;
struct _virCPUx86Feature {
char *name;
virCPUx86Data *data;
virCPUx86FeaturePtr next;
};
typedef struct _virCPUx86KVMFeature virCPUx86KVMFeature;
......@@ -102,10 +100,12 @@ typedef virCPUx86Map *virCPUx86MapPtr;
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;
......@@ -412,15 +412,15 @@ x86DataToCPUFeatures(virCPUDefPtr cpu,
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;
......@@ -599,40 +599,15 @@ x86FeatureFree(virCPUx86FeaturePtr feature)
}
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;
......@@ -646,21 +621,20 @@ x86FeatureNames(virCPUx86MapPtr map,
{
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);
......@@ -746,19 +720,13 @@ x86FeatureLoad(xmlXPathContextPtr ctxt,
goto cleanup;
}
if (!migratable) {
virCPUx86FeaturePtr blocker;
if (!(blocker = x86FeatureCopy(feature)))
if (!migratable &&
VIR_APPEND_ELEMENT_COPY(map->migrate_blockers,
map->nblockers, feature) < 0)
goto cleanup;
blocker->next = map->migrate_blockers;
map->migrate_blockers = blocker;
}
feature->next = map->features;
map->features = feature;
feature = NULL;
if (VIR_APPEND_ELEMENT(map->features, map->nfeatures, feature) < 0)
goto cleanup;
ret = 0;
......@@ -1106,11 +1074,9 @@ x86MapFree(virCPUx86MapPtr map)
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]);
......@@ -1120,11 +1086,10 @@ x86MapFree(virCPUx86MapPtr map)
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);
}
......@@ -1157,14 +1122,19 @@ x86MapLoadInternalFeatures(virCPUx86MapPtr 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()))
......@@ -1176,8 +1146,7 @@ x86MapLoadInternalFeatures(virCPUx86MapPtr map)
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;
}
......@@ -1651,11 +1620,13 @@ x86Decode(virCPUDefPtr cpu,
* 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);
}
}
}
......@@ -2106,7 +2077,6 @@ x86UpdateHostModel(virCPUDefPtr guest,
{
virCPUDefPtr oldguest = NULL;
virCPUx86MapPtr map;
virCPUx86FeaturePtr feat;
size_t i;
int ret = -1;
......@@ -2131,8 +2101,9 @@ x86UpdateHostModel(virCPUDefPtr guest,
* 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>
......@@ -8,7 +8,7 @@ QEMU_AUDIO_DRV=none \
-name QEMUGuest1 \
-S \
-M pc \
-cpu Haswell,-rtm,-hle \
-cpu Haswell,-hle,-rtm \
-m 214 \
-smp 6 \
-uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
......
......@@ -8,7 +8,7 @@ QEMU_AUDIO_DRV=none \
-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 \
......
......@@ -8,7 +8,7 @@ QEMU_AUDIO_DRV=none \
-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 \
......
......@@ -8,7 +8,7 @@ QEMU_AUDIO_DRV=none \
-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 \
......
......@@ -8,8 +8,8 @@ QEMU_AUDIO_DRV=none \
-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 \
......
......@@ -8,8 +8,8 @@ QEMU_AUDIO_DRV=none \
-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 \
......
......@@ -8,8 +8,8 @@ QEMU_AUDIO_DRV=none \
-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 \
......
......@@ -8,8 +8,8 @@ QEMU_AUDIO_DRV=none \
-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 \
......
......@@ -8,8 +8,8 @@ QEMU_AUDIO_DRV=none \
-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 \
......
......@@ -8,7 +8,7 @@ QEMU_AUDIO_DRV=none \
-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 \
......
......@@ -8,8 +8,8 @@ QEMU_AUDIO_DRV=spice \
-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 \
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册