This is technically a v2 of the not yet pushed part of "qemu: Use
migratable host CPU model from QEMU" series, but the patches were
significantly rewritten based on the review comments and on the need for
additional regression fix.
Current libvirt makes a migratable host CPU model by removing features
marked in cpu_map.xml with migratable='no'. This is not ideal because
cpu_map.xml is a static database while feature migratability may differ
depending on a hypervisor or its version. Thus we should preferably use
the data we got from QEMU.
And to make things even more complicated, we need to use both CPUID data
we probed and data from QEMU when checking whether a guest CPU can run
on the host to maintain backward compatibility with older libvirt.
Thus we need to store three different views of the host CPU model with
each QEMU binary.
Jiri Denemark (9):
qemu: Introduce virQEMUCapsSetHostModel
qemu: Move qemuCaps CPU data copying into a separate function
qemu: Introduce virQEMUCapsHostCPUDataClear
qemu: Move qemuCaps host CPU data in a struct
qemu: Prepare qemuCaps for multiple host CPU defs
qemu: Pass migratable host CPU model to virCPUUpdate
cpu: Drop feature filtering from virCPUUpdate
cpu: Introduce virCPUGetHostIsSupported
qemu: Use more data for comparing CPUs
src/cpu/cpu.c | 20 +++
src/cpu/cpu.h | 3 +
src/cpu/cpu_x86.c | 9 +-
src/libvirt_private.syms | 1 +
src/qemu/qemu_capabilities.c | 288 +++++++++++++++++++++++++++++--------------
src/qemu/qemu_capabilities.h | 16 ++-
src/qemu/qemu_command.c | 3 +-
src/qemu/qemu_process.c | 6 +-
tests/cputest.c | 7 +-
9 files changed, 247 insertions(+), 106 deletions(-)
--
2.12.2