On Thu, Feb 23, 2017 at 03:15:17PM +0100, Jiri Denemark wrote: > The static CPU model expansion is designed to return only canonical > names of all CPU properties. To maintain backwards compatibility libvirt > is stuck with different spelling of some of the features, but we need to > use the full expansion to get the additional spellings. In addition to > returning all spelling variants for all properties the full expansion > will contain properties which are not guaranteed to be migration > compatible. Thus, we need to combine both expansions. First we need to > call the static expansion to limit the result to migratable properties. > Then we can use the result of the static expansion as an input to the > full expansion to get both canonical names and their aliases. > > Signed-off-by: Jiri Denemark <jdenemar@xxxxxxxxxx> > --- > > Notes: > Version 3: > - reworded the commit message a bit > - moved retry label just above switch (type) to simplify the code > - added a comment to explain why we are jumping back > > Version 2: > - no change > > src/qemu/qemu_capabilities.c | 10 +- > src/qemu/qemu_monitor.h | 2 + > src/qemu/qemu_monitor_json.c | 21 +- > .../domaincapsschemadata/qemu_2.9.0-tcg.x86_64.xml | 2 - > tests/domaincapsschemadata/qemu_2.9.0.x86_64.xml | 3 +- > .../qemucapabilitiesdata/caps_2.9.0.x86_64.replies | 476 +++++++++++++++++++++ > tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 178 ++++++-- > 7 files changed, 654 insertions(+), 38 deletions(-) > > diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c > index 3f0a0ef07..ce191ee99 100644 > --- a/src/qemu/qemu_capabilities.c > +++ b/src/qemu/qemu_capabilities.c > @@ -2845,6 +2845,7 @@ virQEMUCapsProbeQMPHostCPU(virQEMUCapsPtr qemuCaps, > { > qemuMonitorCPUModelInfoPtr *modelInfo; > const char *model; > + qemuMonitorCPUModelExpansionType type; > > if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_QUERY_CPU_MODEL_EXPANSION)) > return 0; > @@ -2857,9 +2858,12 @@ virQEMUCapsProbeQMPHostCPU(virQEMUCapsPtr qemuCaps, > model = "host"; > } > > - return qemuMonitorGetCPUModelExpansion(mon, > - QEMU_MONITOR_CPU_MODEL_EXPANSION_STATIC, > - model, modelInfo); > + if (ARCH_IS_X86(qemuCaps->arch)) > + type = QEMU_MONITOR_CPU_MODEL_EXPANSION_STATIC_FULL; > + else > + type = QEMU_MONITOR_CPU_MODEL_EXPANSION_STATIC; It might be useful to explain here in the code why STATIC_FULL is used only for x86 arch so nobody tries to add here different architecture when it gets support in QEMU to list use FULL expansion. ACK Pavel
Attachment:
signature.asc
Description: Digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list