[libvirt] Question about "f16c", "rdrand" and "vme" in cpu_map.xml

Jiri Denemark jdenemar at redhat.com
Thu Aug 24 15:00:34 UTC 2017


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




More information about the libvir-list mailing list