提交 e9f8e1b8 编写于 作者: J Jiri Denemark

qemu: Parse unavailable features for CPU models

query-cpu-definitions QMP command returns a list of unavailable features
which prevent CPU models from being usable on the current host. So far
we only checked whether the list was empty to mark CPU models as
(un)usable. This patch parses all unavailable features for each CPU
model and stores them in virDomainCapsCPUModel as a list of usability
blockers.
Signed-off-by: NJiri Denemark <jdenemar@redhat.com>
Reviewed-by: NJohn Ferlan <jferlan@redhat.com>
上级 1255fa87
...@@ -3008,7 +3008,7 @@ virQEMUCapsProbeQMPCPUDefinitions(virQEMUCapsPtr qemuCaps, ...@@ -3008,7 +3008,7 @@ virQEMUCapsProbeQMPCPUDefinitions(virQEMUCapsPtr qemuCaps,
usable = VIR_DOMCAPS_CPU_USABLE_NO; usable = VIR_DOMCAPS_CPU_USABLE_NO;
if (virDomainCapsCPUModelsAddSteal(models, &cpus[i]->name, usable, if (virDomainCapsCPUModelsAddSteal(models, &cpus[i]->name, usable,
NULL) < 0) &cpus[i]->blockers) < 0)
goto cleanup; goto cleanup;
} }
......
...@@ -3736,6 +3736,8 @@ qemuMonitorCPUDefInfoFree(qemuMonitorCPUDefInfoPtr cpu) ...@@ -3736,6 +3736,8 @@ qemuMonitorCPUDefInfoFree(qemuMonitorCPUDefInfoPtr cpu)
{ {
if (!cpu) if (!cpu)
return; return;
virStringListFree(cpu->blockers);
VIR_FREE(cpu->name); VIR_FREE(cpu->name);
VIR_FREE(cpu); VIR_FREE(cpu);
} }
......
...@@ -973,6 +973,7 @@ typedef qemuMonitorCPUDefInfo *qemuMonitorCPUDefInfoPtr; ...@@ -973,6 +973,7 @@ typedef qemuMonitorCPUDefInfo *qemuMonitorCPUDefInfoPtr;
struct _qemuMonitorCPUDefInfo { struct _qemuMonitorCPUDefInfo {
virTristateBool usable; virTristateBool usable;
char *name; char *name;
char **blockers; /* NULL-terminated string list */
}; };
int qemuMonitorGetCPUDefinitions(qemuMonitorPtr mon, int qemuMonitorGetCPUDefinitions(qemuMonitorPtr mon,
......
...@@ -5078,6 +5078,8 @@ qemuMonitorJSONGetCPUDefinitions(qemuMonitorPtr mon, ...@@ -5078,6 +5078,8 @@ qemuMonitorJSONGetCPUDefinitions(qemuMonitorPtr mon,
if (virJSONValueObjectHasKey(child, "unavailable-features")) { if (virJSONValueObjectHasKey(child, "unavailable-features")) {
virJSONValuePtr blockers; virJSONValuePtr blockers;
size_t j;
int len;
blockers = virJSONValueObjectGetArray(child, blockers = virJSONValueObjectGetArray(child,
"unavailable-features"); "unavailable-features");
...@@ -5088,10 +5090,30 @@ qemuMonitorJSONGetCPUDefinitions(qemuMonitorPtr mon, ...@@ -5088,10 +5090,30 @@ qemuMonitorJSONGetCPUDefinitions(qemuMonitorPtr mon,
goto cleanup; goto cleanup;
} }
if (virJSONValueArraySize(blockers) > 0) len = virJSONValueArraySize(blockers);
cpu->usable = VIR_TRISTATE_BOOL_NO;
else if (len == 0) {
cpu->usable = VIR_TRISTATE_BOOL_YES; cpu->usable = VIR_TRISTATE_BOOL_YES;
continue;
}
cpu->usable = VIR_TRISTATE_BOOL_NO;
if (VIR_ALLOC_N(cpu->blockers, len + 1) < 0)
goto cleanup;
for (j = 0; j < len; j++) {
virJSONValuePtr blocker = virJSONValueArrayGet(blockers, j);
if (blocker->type != VIR_JSON_TYPE_STRING) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("unexpected value in unavailable-features "
"array"));
goto cleanup;
}
if (VIR_STRDUP(cpu->blockers[j], virJSONValueGetString(blocker)) < 0)
goto cleanup;
}
} }
} }
......
...@@ -701,7 +701,14 @@ ...@@ -701,7 +701,14 @@
<cpu type='kvm' name='base' usable='yes'/> <cpu type='kvm' name='base' usable='yes'/>
<cpu type='kvm' name='qemu64' usable='yes'/> <cpu type='kvm' name='qemu64' usable='yes'/>
<cpu type='kvm' name='qemu32' usable='yes'/> <cpu type='kvm' name='qemu32' usable='yes'/>
<cpu type='kvm' name='phenom' usable='no'/> <cpu type='kvm' name='phenom' usable='no'>
<blocker name='mmxext'/>
<blocker name='fxsr-opt'/>
<blocker name='3dnowext'/>
<blocker name='3dnow'/>
<blocker name='sse4a'/>
<blocker name='npt'/>
</cpu>
<cpu type='kvm' name='pentium3' usable='yes'/> <cpu type='kvm' name='pentium3' usable='yes'/>
<cpu type='kvm' name='pentium2' usable='yes'/> <cpu type='kvm' name='pentium2' usable='yes'/>
<cpu type='kvm' name='pentium' usable='yes'/> <cpu type='kvm' name='pentium' usable='yes'/>
...@@ -710,31 +717,104 @@ ...@@ -710,31 +717,104 @@
<cpu type='kvm' name='kvm32' usable='yes'/> <cpu type='kvm' name='kvm32' usable='yes'/>
<cpu type='kvm' name='coreduo' usable='yes'/> <cpu type='kvm' name='coreduo' usable='yes'/>
<cpu type='kvm' name='core2duo' usable='yes'/> <cpu type='kvm' name='core2duo' usable='yes'/>
<cpu type='kvm' name='athlon' usable='no'/> <cpu type='kvm' name='athlon' usable='no'>
<blocker name='mmxext'/>
<blocker name='3dnowext'/>
<blocker name='3dnow'/>
</cpu>
<cpu type='kvm' name='Westmere' usable='yes'/> <cpu type='kvm' name='Westmere' usable='yes'/>
<cpu type='kvm' name='Skylake-Server' usable='no'/> <cpu type='kvm' name='Skylake-Server' usable='no'>
<cpu type='kvm' name='Skylake-Client' usable='no'/> <blocker name='hle'/>
<blocker name='rtm'/>
<blocker name='mpx'/>
<blocker name='avx512f'/>
<blocker name='avx512dq'/>
<blocker name='rdseed'/>
<blocker name='adx'/>
<blocker name='smap'/>
<blocker name='clwb'/>
<blocker name='avx512cd'/>
<blocker name='avx512bw'/>
<blocker name='avx512vl'/>
<blocker name='3dnowprefetch'/>
<blocker name='xsavec'/>
<blocker name='xgetbv1'/>
<blocker name='mpx'/>
<blocker name='mpx'/>
<blocker name='avx512f'/>
<blocker name='avx512f'/>
<blocker name='avx512f'/>
</cpu>
<cpu type='kvm' name='Skylake-Client' usable='no'>
<blocker name='hle'/>
<blocker name='rtm'/>
<blocker name='mpx'/>
<blocker name='rdseed'/>
<blocker name='adx'/>
<blocker name='smap'/>
<blocker name='3dnowprefetch'/>
<blocker name='xsavec'/>
<blocker name='xgetbv1'/>
<blocker name='mpx'/>
<blocker name='mpx'/>
</cpu>
<cpu type='kvm' name='SandyBridge' usable='yes'/> <cpu type='kvm' name='SandyBridge' usable='yes'/>
<cpu type='kvm' name='Penryn' usable='yes'/> <cpu type='kvm' name='Penryn' usable='yes'/>
<cpu type='kvm' name='Opteron_G5' usable='no'/> <cpu type='kvm' name='Opteron_G5' usable='no'>
<cpu type='kvm' name='Opteron_G4' usable='no'/> <blocker name='sse4a'/>
<cpu type='kvm' name='Opteron_G3' usable='no'/> <blocker name='misalignsse'/>
<blocker name='3dnowprefetch'/>
<blocker name='xop'/>
<blocker name='fma4'/>
<blocker name='tbm'/>
</cpu>
<cpu type='kvm' name='Opteron_G4' usable='no'>
<blocker name='sse4a'/>
<blocker name='misalignsse'/>
<blocker name='3dnowprefetch'/>
<blocker name='xop'/>
<blocker name='fma4'/>
</cpu>
<cpu type='kvm' name='Opteron_G3' usable='no'>
<blocker name='sse4a'/>
<blocker name='misalignsse'/>
</cpu>
<cpu type='kvm' name='Opteron_G2' usable='yes'/> <cpu type='kvm' name='Opteron_G2' usable='yes'/>
<cpu type='kvm' name='Opteron_G1' usable='yes'/> <cpu type='kvm' name='Opteron_G1' usable='yes'/>
<cpu type='kvm' name='Nehalem' usable='yes'/> <cpu type='kvm' name='Nehalem' usable='yes'/>
<cpu type='kvm' name='IvyBridge' usable='yes'/> <cpu type='kvm' name='IvyBridge' usable='yes'/>
<cpu type='kvm' name='Haswell' usable='no'/> <cpu type='kvm' name='Haswell' usable='no'>
<blocker name='hle'/>
<blocker name='rtm'/>
</cpu>
<cpu type='kvm' name='Haswell-noTSX' usable='yes'/> <cpu type='kvm' name='Haswell-noTSX' usable='yes'/>
<cpu type='kvm' name='Conroe' usable='yes'/> <cpu type='kvm' name='Conroe' usable='yes'/>
<cpu type='kvm' name='Broadwell' usable='no'/> <cpu type='kvm' name='Broadwell' usable='no'>
<cpu type='kvm' name='Broadwell-noTSX' usable='no'/> <blocker name='hle'/>
<blocker name='rtm'/>
<blocker name='rdseed'/>
<blocker name='adx'/>
<blocker name='smap'/>
<blocker name='3dnowprefetch'/>
</cpu>
<cpu type='kvm' name='Broadwell-noTSX' usable='no'>
<blocker name='rdseed'/>
<blocker name='adx'/>
<blocker name='smap'/>
<blocker name='3dnowprefetch'/>
</cpu>
<cpu type='kvm' name='486' usable='yes'/> <cpu type='kvm' name='486' usable='yes'/>
<cpu type='tcg' name='max' usable='yes'/> <cpu type='tcg' name='max' usable='yes'/>
<cpu type='tcg' name='host' usable='no'/> <cpu type='tcg' name='host' usable='no'>
<blocker name='kvm'/>
</cpu>
<cpu type='tcg' name='base' usable='yes'/> <cpu type='tcg' name='base' usable='yes'/>
<cpu type='tcg' name='qemu64' usable='yes'/> <cpu type='tcg' name='qemu64' usable='yes'/>
<cpu type='tcg' name='qemu32' usable='yes'/> <cpu type='tcg' name='qemu32' usable='yes'/>
<cpu type='tcg' name='phenom' usable='no'/> <cpu type='tcg' name='phenom' usable='no'>
<blocker name='fxsr-opt'/>
<blocker name='npt'/>
</cpu>
<cpu type='tcg' name='pentium3' usable='yes'/> <cpu type='tcg' name='pentium3' usable='yes'/>
<cpu type='tcg' name='pentium2' usable='yes'/> <cpu type='tcg' name='pentium2' usable='yes'/>
<cpu type='tcg' name='pentium' usable='yes'/> <cpu type='tcg' name='pentium' usable='yes'/>
...@@ -745,22 +825,132 @@ ...@@ -745,22 +825,132 @@
<cpu type='tcg' name='core2duo' usable='yes'/> <cpu type='tcg' name='core2duo' usable='yes'/>
<cpu type='tcg' name='athlon' usable='yes'/> <cpu type='tcg' name='athlon' usable='yes'/>
<cpu type='tcg' name='Westmere' usable='yes'/> <cpu type='tcg' name='Westmere' usable='yes'/>
<cpu type='tcg' name='Skylake-Server' usable='no'/> <cpu type='tcg' name='Skylake-Server' usable='no'>
<cpu type='tcg' name='Skylake-Client' usable='no'/> <blocker name='fma'/>
<cpu type='tcg' name='SandyBridge' usable='no'/> <blocker name='pcid'/>
<blocker name='x2apic'/>
<blocker name='tsc-deadline'/>
<blocker name='avx'/>
<blocker name='f16c'/>
<blocker name='rdrand'/>
<blocker name='hle'/>
<blocker name='avx2'/>
<blocker name='invpcid'/>
<blocker name='rtm'/>
<blocker name='avx512f'/>
<blocker name='avx512dq'/>
<blocker name='rdseed'/>
<blocker name='avx512cd'/>
<blocker name='avx512bw'/>
<blocker name='avx512vl'/>
<blocker name='3dnowprefetch'/>
<blocker name='xsavec'/>
</cpu>
<cpu type='tcg' name='Skylake-Client' usable='no'>
<blocker name='fma'/>
<blocker name='pcid'/>
<blocker name='x2apic'/>
<blocker name='tsc-deadline'/>
<blocker name='avx'/>
<blocker name='f16c'/>
<blocker name='rdrand'/>
<blocker name='hle'/>
<blocker name='avx2'/>
<blocker name='invpcid'/>
<blocker name='rtm'/>
<blocker name='rdseed'/>
<blocker name='3dnowprefetch'/>
<blocker name='xsavec'/>
</cpu>
<cpu type='tcg' name='SandyBridge' usable='no'>
<blocker name='x2apic'/>
<blocker name='tsc-deadline'/>
<blocker name='avx'/>
</cpu>
<cpu type='tcg' name='Penryn' usable='yes'/> <cpu type='tcg' name='Penryn' usable='yes'/>
<cpu type='tcg' name='Opteron_G5' usable='no'/> <cpu type='tcg' name='Opteron_G5' usable='no'>
<cpu type='tcg' name='Opteron_G4' usable='no'/> <blocker name='fma'/>
<cpu type='tcg' name='Opteron_G3' usable='no'/> <blocker name='avx'/>
<blocker name='f16c'/>
<blocker name='misalignsse'/>
<blocker name='3dnowprefetch'/>
<blocker name='xop'/>
<blocker name='fma4'/>
<blocker name='tbm'/>
</cpu>
<cpu type='tcg' name='Opteron_G4' usable='no'>
<blocker name='avx'/>
<blocker name='misalignsse'/>
<blocker name='3dnowprefetch'/>
<blocker name='xop'/>
<blocker name='fma4'/>
</cpu>
<cpu type='tcg' name='Opteron_G3' usable='no'>
<blocker name='misalignsse'/>
</cpu>
<cpu type='tcg' name='Opteron_G2' usable='yes'/> <cpu type='tcg' name='Opteron_G2' usable='yes'/>
<cpu type='tcg' name='Opteron_G1' usable='yes'/> <cpu type='tcg' name='Opteron_G1' usable='yes'/>
<cpu type='tcg' name='Nehalem' usable='yes'/> <cpu type='tcg' name='Nehalem' usable='yes'/>
<cpu type='tcg' name='IvyBridge' usable='no'/> <cpu type='tcg' name='IvyBridge' usable='no'>
<cpu type='tcg' name='Haswell' usable='no'/> <blocker name='x2apic'/>
<cpu type='tcg' name='Haswell-noTSX' usable='no'/> <blocker name='tsc-deadline'/>
<blocker name='avx'/>
<blocker name='f16c'/>
<blocker name='rdrand'/>
</cpu>
<cpu type='tcg' name='Haswell' usable='no'>
<blocker name='fma'/>
<blocker name='pcid'/>
<blocker name='x2apic'/>
<blocker name='tsc-deadline'/>
<blocker name='avx'/>
<blocker name='f16c'/>
<blocker name='rdrand'/>
<blocker name='hle'/>
<blocker name='avx2'/>
<blocker name='invpcid'/>
<blocker name='rtm'/>
</cpu>
<cpu type='tcg' name='Haswell-noTSX' usable='no'>
<blocker name='fma'/>
<blocker name='pcid'/>
<blocker name='x2apic'/>
<blocker name='tsc-deadline'/>
<blocker name='avx'/>
<blocker name='f16c'/>
<blocker name='rdrand'/>
<blocker name='avx2'/>
<blocker name='invpcid'/>
</cpu>
<cpu type='tcg' name='Conroe' usable='yes'/> <cpu type='tcg' name='Conroe' usable='yes'/>
<cpu type='tcg' name='Broadwell' usable='no'/> <cpu type='tcg' name='Broadwell' usable='no'>
<cpu type='tcg' name='Broadwell-noTSX' usable='no'/> <blocker name='fma'/>
<blocker name='pcid'/>
<blocker name='x2apic'/>
<blocker name='tsc-deadline'/>
<blocker name='avx'/>
<blocker name='f16c'/>
<blocker name='rdrand'/>
<blocker name='hle'/>
<blocker name='avx2'/>
<blocker name='invpcid'/>
<blocker name='rtm'/>
<blocker name='rdseed'/>
<blocker name='3dnowprefetch'/>
</cpu>
<cpu type='tcg' name='Broadwell-noTSX' usable='no'>
<blocker name='fma'/>
<blocker name='pcid'/>
<blocker name='x2apic'/>
<blocker name='tsc-deadline'/>
<blocker name='avx'/>
<blocker name='f16c'/>
<blocker name='rdrand'/>
<blocker name='avx2'/>
<blocker name='invpcid'/>
<blocker name='rdseed'/>
<blocker name='3dnowprefetch'/>
</cpu>
<cpu type='tcg' name='486' usable='yes'/> <cpu type='tcg' name='486' usable='yes'/>
<machine name='pc-i440fx-2.10' alias='pc' hotplugCpus='yes' maxCpus='255'/> <machine name='pc-i440fx-2.10' alias='pc' hotplugCpus='yes' maxCpus='255'/>
<machine name='pc-0.12' hotplugCpus='yes' maxCpus='255'/> <machine name='pc-0.12' hotplugCpus='yes' maxCpus='255'/>
......
...@@ -217,7 +217,14 @@ ...@@ -217,7 +217,14 @@
<cpu type='kvm' name='host' usable='yes'/> <cpu type='kvm' name='host' usable='yes'/>
<cpu type='kvm' name='qemu64' usable='yes'/> <cpu type='kvm' name='qemu64' usable='yes'/>
<cpu type='kvm' name='qemu32' usable='yes'/> <cpu type='kvm' name='qemu32' usable='yes'/>
<cpu type='kvm' name='phenom' usable='no'/> <cpu type='kvm' name='phenom' usable='no'>
<blocker name='mmxext'/>
<blocker name='fxsr-opt'/>
<blocker name='3dnowext'/>
<blocker name='3dnow'/>
<blocker name='sse4a'/>
<blocker name='npt'/>
</cpu>
<cpu type='kvm' name='pentium3' usable='yes'/> <cpu type='kvm' name='pentium3' usable='yes'/>
<cpu type='kvm' name='pentium2' usable='yes'/> <cpu type='kvm' name='pentium2' usable='yes'/>
<cpu type='kvm' name='pentium' usable='yes'/> <cpu type='kvm' name='pentium' usable='yes'/>
...@@ -226,14 +233,32 @@ ...@@ -226,14 +233,32 @@
<cpu type='kvm' name='kvm32' usable='yes'/> <cpu type='kvm' name='kvm32' usable='yes'/>
<cpu type='kvm' name='coreduo' usable='yes'/> <cpu type='kvm' name='coreduo' usable='yes'/>
<cpu type='kvm' name='core2duo' usable='yes'/> <cpu type='kvm' name='core2duo' usable='yes'/>
<cpu type='kvm' name='athlon' usable='no'/> <cpu type='kvm' name='athlon' usable='no'>
<blocker name='mmxext'/>
<blocker name='3dnowext'/>
<blocker name='3dnow'/>
</cpu>
<cpu type='kvm' name='Westmere' usable='yes'/> <cpu type='kvm' name='Westmere' usable='yes'/>
<cpu type='kvm' name='Skylake-Client' usable='yes'/> <cpu type='kvm' name='Skylake-Client' usable='yes'/>
<cpu type='kvm' name='SandyBridge' usable='yes'/> <cpu type='kvm' name='SandyBridge' usable='yes'/>
<cpu type='kvm' name='Penryn' usable='yes'/> <cpu type='kvm' name='Penryn' usable='yes'/>
<cpu type='kvm' name='Opteron_G5' usable='no'/> <cpu type='kvm' name='Opteron_G5' usable='no'>
<cpu type='kvm' name='Opteron_G4' usable='no'/> <blocker name='sse4a'/>
<cpu type='kvm' name='Opteron_G3' usable='no'/> <blocker name='misalignsse'/>
<blocker name='xop'/>
<blocker name='fma4'/>
<blocker name='tbm'/>
</cpu>
<cpu type='kvm' name='Opteron_G4' usable='no'>
<blocker name='sse4a'/>
<blocker name='misalignsse'/>
<blocker name='xop'/>
<blocker name='fma4'/>
</cpu>
<cpu type='kvm' name='Opteron_G3' usable='no'>
<blocker name='sse4a'/>
<blocker name='misalignsse'/>
</cpu>
<cpu type='kvm' name='Opteron_G2' usable='yes'/> <cpu type='kvm' name='Opteron_G2' usable='yes'/>
<cpu type='kvm' name='Opteron_G1' usable='yes'/> <cpu type='kvm' name='Opteron_G1' usable='yes'/>
<cpu type='kvm' name='Nehalem' usable='yes'/> <cpu type='kvm' name='Nehalem' usable='yes'/>
...@@ -244,10 +269,15 @@ ...@@ -244,10 +269,15 @@
<cpu type='kvm' name='Broadwell' usable='yes'/> <cpu type='kvm' name='Broadwell' usable='yes'/>
<cpu type='kvm' name='Broadwell-noTSX' usable='yes'/> <cpu type='kvm' name='Broadwell-noTSX' usable='yes'/>
<cpu type='kvm' name='486' usable='yes'/> <cpu type='kvm' name='486' usable='yes'/>
<cpu type='tcg' name='host' usable='no'/> <cpu type='tcg' name='host' usable='no'>
<blocker name='kvm'/>
</cpu>
<cpu type='tcg' name='qemu64' usable='yes'/> <cpu type='tcg' name='qemu64' usable='yes'/>
<cpu type='tcg' name='qemu32' usable='yes'/> <cpu type='tcg' name='qemu32' usable='yes'/>
<cpu type='tcg' name='phenom' usable='no'/> <cpu type='tcg' name='phenom' usable='no'>
<blocker name='fxsr-opt'/>
<blocker name='npt'/>
</cpu>
<cpu type='tcg' name='pentium3' usable='yes'/> <cpu type='tcg' name='pentium3' usable='yes'/>
<cpu type='tcg' name='pentium2' usable='yes'/> <cpu type='tcg' name='pentium2' usable='yes'/>
<cpu type='tcg' name='pentium' usable='yes'/> <cpu type='tcg' name='pentium' usable='yes'/>
...@@ -258,21 +288,111 @@ ...@@ -258,21 +288,111 @@
<cpu type='tcg' name='core2duo' usable='yes'/> <cpu type='tcg' name='core2duo' usable='yes'/>
<cpu type='tcg' name='athlon' usable='yes'/> <cpu type='tcg' name='athlon' usable='yes'/>
<cpu type='tcg' name='Westmere' usable='yes'/> <cpu type='tcg' name='Westmere' usable='yes'/>
<cpu type='tcg' name='Skylake-Client' usable='no'/> <cpu type='tcg' name='Skylake-Client' usable='no'>
<cpu type='tcg' name='SandyBridge' usable='no'/> <blocker name='fma'/>
<blocker name='pcid'/>
<blocker name='x2apic'/>
<blocker name='tsc-deadline'/>
<blocker name='avx'/>
<blocker name='f16c'/>
<blocker name='rdrand'/>
<blocker name='hle'/>
<blocker name='avx2'/>
<blocker name='invpcid'/>
<blocker name='rtm'/>
<blocker name='rdseed'/>
<blocker name='3dnowprefetch'/>
<blocker name='xsavec'/>
</cpu>
<cpu type='tcg' name='SandyBridge' usable='no'>
<blocker name='x2apic'/>
<blocker name='tsc-deadline'/>
<blocker name='avx'/>
</cpu>
<cpu type='tcg' name='Penryn' usable='yes'/> <cpu type='tcg' name='Penryn' usable='yes'/>
<cpu type='tcg' name='Opteron_G5' usable='no'/> <cpu type='tcg' name='Opteron_G5' usable='no'>
<cpu type='tcg' name='Opteron_G4' usable='no'/> <blocker name='fma'/>
<cpu type='tcg' name='Opteron_G3' usable='no'/> <blocker name='avx'/>
<blocker name='f16c'/>
<blocker name='misalignsse'/>
<blocker name='3dnowprefetch'/>
<blocker name='xop'/>
<blocker name='fma4'/>
<blocker name='tbm'/>
</cpu>
<cpu type='tcg' name='Opteron_G4' usable='no'>
<blocker name='avx'/>
<blocker name='misalignsse'/>
<blocker name='3dnowprefetch'/>
<blocker name='xop'/>
<blocker name='fma4'/>
</cpu>
<cpu type='tcg' name='Opteron_G3' usable='no'>
<blocker name='misalignsse'/>
</cpu>
<cpu type='tcg' name='Opteron_G2' usable='yes'/> <cpu type='tcg' name='Opteron_G2' usable='yes'/>
<cpu type='tcg' name='Opteron_G1' usable='yes'/> <cpu type='tcg' name='Opteron_G1' usable='yes'/>
<cpu type='tcg' name='Nehalem' usable='yes'/> <cpu type='tcg' name='Nehalem' usable='yes'/>
<cpu type='tcg' name='IvyBridge' usable='no'/> <cpu type='tcg' name='IvyBridge' usable='no'>
<cpu type='tcg' name='Haswell' usable='no'/> <blocker name='x2apic'/>
<cpu type='tcg' name='Haswell-noTSX' usable='no'/> <blocker name='tsc-deadline'/>
<blocker name='avx'/>
<blocker name='f16c'/>
<blocker name='rdrand'/>
</cpu>
<cpu type='tcg' name='Haswell' usable='no'>
<blocker name='fma'/>
<blocker name='pcid'/>
<blocker name='x2apic'/>
<blocker name='tsc-deadline'/>
<blocker name='avx'/>
<blocker name='f16c'/>
<blocker name='rdrand'/>
<blocker name='hle'/>
<blocker name='avx2'/>
<blocker name='invpcid'/>
<blocker name='rtm'/>
</cpu>
<cpu type='tcg' name='Haswell-noTSX' usable='no'>
<blocker name='fma'/>
<blocker name='pcid'/>
<blocker name='x2apic'/>
<blocker name='tsc-deadline'/>
<blocker name='avx'/>
<blocker name='f16c'/>
<blocker name='rdrand'/>
<blocker name='avx2'/>
<blocker name='invpcid'/>
</cpu>
<cpu type='tcg' name='Conroe' usable='yes'/> <cpu type='tcg' name='Conroe' usable='yes'/>
<cpu type='tcg' name='Broadwell' usable='no'/> <cpu type='tcg' name='Broadwell' usable='no'>
<cpu type='tcg' name='Broadwell-noTSX' usable='no'/> <blocker name='fma'/>
<blocker name='pcid'/>
<blocker name='x2apic'/>
<blocker name='tsc-deadline'/>
<blocker name='avx'/>
<blocker name='f16c'/>
<blocker name='rdrand'/>
<blocker name='hle'/>
<blocker name='avx2'/>
<blocker name='invpcid'/>
<blocker name='rtm'/>
<blocker name='rdseed'/>
<blocker name='3dnowprefetch'/>
</cpu>
<cpu type='tcg' name='Broadwell-noTSX' usable='no'>
<blocker name='fma'/>
<blocker name='pcid'/>
<blocker name='x2apic'/>
<blocker name='tsc-deadline'/>
<blocker name='avx'/>
<blocker name='f16c'/>
<blocker name='rdrand'/>
<blocker name='avx2'/>
<blocker name='invpcid'/>
<blocker name='rdseed'/>
<blocker name='3dnowprefetch'/>
</cpu>
<cpu type='tcg' name='486' usable='yes'/> <cpu type='tcg' name='486' usable='yes'/>
<machine name='pc-i440fx-2.8' alias='pc' hotplugCpus='yes' maxCpus='255'/> <machine name='pc-i440fx-2.8' alias='pc' hotplugCpus='yes' maxCpus='255'/>
<machine name='pc-0.12' hotplugCpus='yes' maxCpus='255'/> <machine name='pc-0.12' hotplugCpus='yes' maxCpus='255'/>
......
...@@ -694,7 +694,14 @@ ...@@ -694,7 +694,14 @@
<cpu type='kvm' name='base' usable='yes'/> <cpu type='kvm' name='base' usable='yes'/>
<cpu type='kvm' name='qemu64' usable='yes'/> <cpu type='kvm' name='qemu64' usable='yes'/>
<cpu type='kvm' name='qemu32' usable='yes'/> <cpu type='kvm' name='qemu32' usable='yes'/>
<cpu type='kvm' name='phenom' usable='no'/> <cpu type='kvm' name='phenom' usable='no'>
<blocker name='mmxext'/>
<blocker name='fxsr-opt'/>
<blocker name='3dnowext'/>
<blocker name='3dnow'/>
<blocker name='sse4a'/>
<blocker name='npt'/>
</cpu>
<cpu type='kvm' name='pentium3' usable='yes'/> <cpu type='kvm' name='pentium3' usable='yes'/>
<cpu type='kvm' name='pentium2' usable='yes'/> <cpu type='kvm' name='pentium2' usable='yes'/>
<cpu type='kvm' name='pentium' usable='yes'/> <cpu type='kvm' name='pentium' usable='yes'/>
...@@ -703,14 +710,32 @@ ...@@ -703,14 +710,32 @@
<cpu type='kvm' name='kvm32' usable='yes'/> <cpu type='kvm' name='kvm32' usable='yes'/>
<cpu type='kvm' name='coreduo' usable='yes'/> <cpu type='kvm' name='coreduo' usable='yes'/>
<cpu type='kvm' name='core2duo' usable='yes'/> <cpu type='kvm' name='core2duo' usable='yes'/>
<cpu type='kvm' name='athlon' usable='no'/> <cpu type='kvm' name='athlon' usable='no'>
<blocker name='mmxext'/>
<blocker name='3dnowext'/>
<blocker name='3dnow'/>
</cpu>
<cpu type='kvm' name='Westmere' usable='yes'/> <cpu type='kvm' name='Westmere' usable='yes'/>
<cpu type='kvm' name='Skylake-Client' usable='yes'/> <cpu type='kvm' name='Skylake-Client' usable='yes'/>
<cpu type='kvm' name='SandyBridge' usable='yes'/> <cpu type='kvm' name='SandyBridge' usable='yes'/>
<cpu type='kvm' name='Penryn' usable='yes'/> <cpu type='kvm' name='Penryn' usable='yes'/>
<cpu type='kvm' name='Opteron_G5' usable='no'/> <cpu type='kvm' name='Opteron_G5' usable='no'>
<cpu type='kvm' name='Opteron_G4' usable='no'/> <blocker name='sse4a'/>
<cpu type='kvm' name='Opteron_G3' usable='no'/> <blocker name='misalignsse'/>
<blocker name='xop'/>
<blocker name='fma4'/>
<blocker name='tbm'/>
</cpu>
<cpu type='kvm' name='Opteron_G4' usable='no'>
<blocker name='sse4a'/>
<blocker name='misalignsse'/>
<blocker name='xop'/>
<blocker name='fma4'/>
</cpu>
<cpu type='kvm' name='Opteron_G3' usable='no'>
<blocker name='sse4a'/>
<blocker name='misalignsse'/>
</cpu>
<cpu type='kvm' name='Opteron_G2' usable='yes'/> <cpu type='kvm' name='Opteron_G2' usable='yes'/>
<cpu type='kvm' name='Opteron_G1' usable='yes'/> <cpu type='kvm' name='Opteron_G1' usable='yes'/>
<cpu type='kvm' name='Nehalem' usable='yes'/> <cpu type='kvm' name='Nehalem' usable='yes'/>
...@@ -722,11 +747,16 @@ ...@@ -722,11 +747,16 @@
<cpu type='kvm' name='Broadwell-noTSX' usable='yes'/> <cpu type='kvm' name='Broadwell-noTSX' usable='yes'/>
<cpu type='kvm' name='486' usable='yes'/> <cpu type='kvm' name='486' usable='yes'/>
<cpu type='tcg' name='max' usable='yes'/> <cpu type='tcg' name='max' usable='yes'/>
<cpu type='tcg' name='host' usable='no'/> <cpu type='tcg' name='host' usable='no'>
<blocker name='kvm'/>
</cpu>
<cpu type='tcg' name='base' usable='yes'/> <cpu type='tcg' name='base' usable='yes'/>
<cpu type='tcg' name='qemu64' usable='yes'/> <cpu type='tcg' name='qemu64' usable='yes'/>
<cpu type='tcg' name='qemu32' usable='yes'/> <cpu type='tcg' name='qemu32' usable='yes'/>
<cpu type='tcg' name='phenom' usable='no'/> <cpu type='tcg' name='phenom' usable='no'>
<blocker name='fxsr-opt'/>
<blocker name='npt'/>
</cpu>
<cpu type='tcg' name='pentium3' usable='yes'/> <cpu type='tcg' name='pentium3' usable='yes'/>
<cpu type='tcg' name='pentium2' usable='yes'/> <cpu type='tcg' name='pentium2' usable='yes'/>
<cpu type='tcg' name='pentium' usable='yes'/> <cpu type='tcg' name='pentium' usable='yes'/>
...@@ -737,21 +767,111 @@ ...@@ -737,21 +767,111 @@
<cpu type='tcg' name='core2duo' usable='yes'/> <cpu type='tcg' name='core2duo' usable='yes'/>
<cpu type='tcg' name='athlon' usable='yes'/> <cpu type='tcg' name='athlon' usable='yes'/>
<cpu type='tcg' name='Westmere' usable='yes'/> <cpu type='tcg' name='Westmere' usable='yes'/>
<cpu type='tcg' name='Skylake-Client' usable='no'/> <cpu type='tcg' name='Skylake-Client' usable='no'>
<cpu type='tcg' name='SandyBridge' usable='no'/> <blocker name='fma'/>
<blocker name='pcid'/>
<blocker name='x2apic'/>
<blocker name='tsc-deadline'/>
<blocker name='avx'/>
<blocker name='f16c'/>
<blocker name='rdrand'/>
<blocker name='hle'/>
<blocker name='avx2'/>
<blocker name='invpcid'/>
<blocker name='rtm'/>
<blocker name='rdseed'/>
<blocker name='3dnowprefetch'/>
<blocker name='xsavec'/>
</cpu>
<cpu type='tcg' name='SandyBridge' usable='no'>
<blocker name='x2apic'/>
<blocker name='tsc-deadline'/>
<blocker name='avx'/>
</cpu>
<cpu type='tcg' name='Penryn' usable='yes'/> <cpu type='tcg' name='Penryn' usable='yes'/>
<cpu type='tcg' name='Opteron_G5' usable='no'/> <cpu type='tcg' name='Opteron_G5' usable='no'>
<cpu type='tcg' name='Opteron_G4' usable='no'/> <blocker name='fma'/>
<cpu type='tcg' name='Opteron_G3' usable='no'/> <blocker name='avx'/>
<blocker name='f16c'/>
<blocker name='misalignsse'/>
<blocker name='3dnowprefetch'/>
<blocker name='xop'/>
<blocker name='fma4'/>
<blocker name='tbm'/>
</cpu>
<cpu type='tcg' name='Opteron_G4' usable='no'>
<blocker name='avx'/>
<blocker name='misalignsse'/>
<blocker name='3dnowprefetch'/>
<blocker name='xop'/>
<blocker name='fma4'/>
</cpu>
<cpu type='tcg' name='Opteron_G3' usable='no'>
<blocker name='misalignsse'/>
</cpu>
<cpu type='tcg' name='Opteron_G2' usable='yes'/> <cpu type='tcg' name='Opteron_G2' usable='yes'/>
<cpu type='tcg' name='Opteron_G1' usable='yes'/> <cpu type='tcg' name='Opteron_G1' usable='yes'/>
<cpu type='tcg' name='Nehalem' usable='yes'/> <cpu type='tcg' name='Nehalem' usable='yes'/>
<cpu type='tcg' name='IvyBridge' usable='no'/> <cpu type='tcg' name='IvyBridge' usable='no'>
<cpu type='tcg' name='Haswell' usable='no'/> <blocker name='x2apic'/>
<cpu type='tcg' name='Haswell-noTSX' usable='no'/> <blocker name='tsc-deadline'/>
<blocker name='avx'/>
<blocker name='f16c'/>
<blocker name='rdrand'/>
</cpu>
<cpu type='tcg' name='Haswell' usable='no'>
<blocker name='fma'/>
<blocker name='pcid'/>
<blocker name='x2apic'/>
<blocker name='tsc-deadline'/>
<blocker name='avx'/>
<blocker name='f16c'/>
<blocker name='rdrand'/>
<blocker name='hle'/>
<blocker name='avx2'/>
<blocker name='invpcid'/>
<blocker name='rtm'/>
</cpu>
<cpu type='tcg' name='Haswell-noTSX' usable='no'>
<blocker name='fma'/>
<blocker name='pcid'/>
<blocker name='x2apic'/>
<blocker name='tsc-deadline'/>
<blocker name='avx'/>
<blocker name='f16c'/>
<blocker name='rdrand'/>
<blocker name='avx2'/>
<blocker name='invpcid'/>
</cpu>
<cpu type='tcg' name='Conroe' usable='yes'/> <cpu type='tcg' name='Conroe' usable='yes'/>
<cpu type='tcg' name='Broadwell' usable='no'/> <cpu type='tcg' name='Broadwell' usable='no'>
<cpu type='tcg' name='Broadwell-noTSX' usable='no'/> <blocker name='fma'/>
<blocker name='pcid'/>
<blocker name='x2apic'/>
<blocker name='tsc-deadline'/>
<blocker name='avx'/>
<blocker name='f16c'/>
<blocker name='rdrand'/>
<blocker name='hle'/>
<blocker name='avx2'/>
<blocker name='invpcid'/>
<blocker name='rtm'/>
<blocker name='rdseed'/>
<blocker name='3dnowprefetch'/>
</cpu>
<cpu type='tcg' name='Broadwell-noTSX' usable='no'>
<blocker name='fma'/>
<blocker name='pcid'/>
<blocker name='x2apic'/>
<blocker name='tsc-deadline'/>
<blocker name='avx'/>
<blocker name='f16c'/>
<blocker name='rdrand'/>
<blocker name='avx2'/>
<blocker name='invpcid'/>
<blocker name='rdseed'/>
<blocker name='3dnowprefetch'/>
</cpu>
<cpu type='tcg' name='486' usable='yes'/> <cpu type='tcg' name='486' usable='yes'/>
<machine name='pc-i440fx-2.9' alias='pc' hotplugCpus='yes' maxCpus='255'/> <machine name='pc-i440fx-2.9' alias='pc' hotplugCpus='yes' maxCpus='255'/>
<machine name='pc-0.12' hotplugCpus='yes' maxCpus='255'/> <machine name='pc-0.12' hotplugCpus='yes' maxCpus='255'/>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册