On Thu, Aug 24, 2017 at 16:29:37 +0800, Jay Zhou wrote:
Hi all,
"f16c", "rdrand" and "vme" are all standard features, the
IvyBridge CPU model
has these three features in the file of src/cpu/cpu_map.xml, but the higher
model of Haswell-noTSX, Haswell, Broadwell-noTSX and Broadwell do not, which
makes it incompatible.
BTW, I noticed that "f16c", "rdrand" and "vme" are a part
of features of
Haswell-noTSX, Haswell, Broadwell-noTSX and Broadwell in QEMU.
The commit 732d3d147adecb867f62c67ab3743c0aefd87e50(which introduces the
Haswell-noTSX CPU model in libvirt) said that:
"Inheritance among CPU model is cool but it makes reviewing CPU model
definitions and comparing them to CPU models from QEMU rather hard and
unpleasant."
I do not get the point "it makes reviewing CPU model definitions and comparing
them to CPU models from QEMU rather hard and unpleasant" clearly. Could anyone
explain it more explicitly?
CPU models in QEMU always contain a full list of CPU features. Before
the commit you mentioned libvirt defined CPU models hierarchically as
MODEL_B = MODEL_A + feature_a + feature_b. Getting a complete list of
features contained in a MODEL_B required a lot of work since you had to
go through MODEL_A, its parent, its parent's parent, and so on. To make
manual comparing of libvirt's models with QEMU easier, we decided to
expand the feature set of each CPU model and drop the hierarchical
definitions.
Jirka