提交 67dfc772 编写于 作者: J Jiri Denemark

cpu: Let explicit features override model features

Until now CPU features inherited from a specified CPU model could only
be overridden with 'disable' policy. With this patch, any explicitly
specified feature always overrides the same feature inherited from a CPU
model regardless on the specified policy.

The CPU in x86-exact-force-Haswell.xml would previously be incompatible
with x86-host-SandyBridge.xml CPU even though x86-host-SandyBridge.xml
provides all features required by x86-exact-force-Haswell.xml.
上级 0c81eaba
......@@ -1223,6 +1223,11 @@ x86Compute(virCPUDefPtr host,
goto out;
}
/* first remove features that were inherited from the CPU model and were
* explicitly forced, disabled, or made optional
*/
x86DataSubtract(cpu_require->data, cpu_force->data);
x86DataSubtract(cpu_require->data, cpu_optional->data);
x86DataSubtract(cpu_require->data, cpu_disable->data);
result = x86ModelCompare(host_model, cpu_require);
if (result == SUBSET || result == UNRELATED) {
......
......@@ -581,6 +581,7 @@ mymain(void)
DO_TEST_COMPARE("x86", "host", "pentium3-amd", VIR_CPU_COMPARE_INCOMPATIBLE);
DO_TEST_COMPARE("x86", "host-amd", "pentium3-amd", VIR_CPU_COMPARE_SUPERSET);
DO_TEST_COMPARE("x86", "host-worse", "nehalem-force", VIR_CPU_COMPARE_IDENTICAL);
DO_TEST_COMPARE("x86", "host-SandyBridge", "exact-force-Haswell", VIR_CPU_COMPARE_IDENTICAL);
/* guest updates for migration
* automatically compares host CPU with the result */
......
<cpu mode='custom' match='exact'>
<model fallback='allow'>Haswell</model>
<feature policy='force' name='pcid'/>
<feature policy='force' name='rtm'/>
<feature policy='force' name='invpcid'/>
<feature policy='force' name='erms'/>
<feature policy='force' name='bmi2'/>
<feature policy='optional' name='smep'/>
<feature policy='optional' name='avx2'/>
<feature policy='optional' name='hle'/>
<feature policy='force' name='bmi1'/>
<feature policy='force' name='fsgsbase'/>
<feature policy='disable' name='movbe'/>
<feature policy='disable' name='fma'/>
</cpu>
<cpu>
<arch>x86_64</arch>
<model>SandyBridge</model>
<vendor>Intel</vendor>
<topology sockets='1' cores='2' threads='2'/>
</cpu>
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册