[libvirt] [PATCH v3 19/28] qemu: Use full CPU model expansion on x86

Pavel Hrdina phrdina at redhat.com
Fri Feb 24 09:16:37 UTC 2017


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 at redhat.com>
> ---
> 
> 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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: Digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20170224/e4f9d4ff/attachment-0001.sig>


More information about the libvir-list mailing list