mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-11 09:17:52 +03:00
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.
This commit is contained in:
parent
0c81eaba9e
commit
67dfc772d1
@ -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 */
|
||||
|
15
tests/cputestdata/x86-exact-force-Haswell.xml
Normal file
15
tests/cputestdata/x86-exact-force-Haswell.xml
Normal file
@ -0,0 +1,15 @@
|
||||
<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>
|
6
tests/cputestdata/x86-host-SandyBridge.xml
Normal file
6
tests/cputestdata/x86-host-SandyBridge.xml
Normal file
@ -0,0 +1,6 @@
|
||||
<cpu>
|
||||
<arch>x86_64</arch>
|
||||
<model>SandyBridge</model>
|
||||
<vendor>Intel</vendor>
|
||||
<topology sockets='1' cores='2' threads='2'/>
|
||||
</cpu>
|
Loading…
Reference in New Issue
Block a user