[libvirt] [PATCH] qemu: Use -nodefconfig when probing for CPU models

Daniel Veillard veillard at redhat.com
Mon Jul 12 16:38:46 UTC 2010


On Mon, Jul 12, 2010 at 05:49:16PM +0200, Jiri Denemark wrote:
> In case qemu supports -nodefconfig, libvirt adds uses it when launching
> new guests. Since this option may affect CPU models supported by qemu,
> we need to use it when probing for available models.
> ---
>  src/qemu/qemu_conf.c |   16 ++++++++++++----
>  src/qemu/qemu_conf.h |    1 +
>  2 files changed, 13 insertions(+), 4 deletions(-)
> 
> diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c
> index 988220b..1d0bd88 100644
> --- a/src/qemu/qemu_conf.c
> +++ b/src/qemu/qemu_conf.c
> @@ -718,11 +718,17 @@ error:
>  
>  int
>  qemudProbeCPUModels(const char *qemu,
> +                    unsigned long long qemuCmdFlags,
>                      const char *arch,
>                      unsigned int *count,
>                      const char ***cpus)
>  {
> -    const char *const qemuarg[] = { qemu, "-cpu", "?", NULL };
> +    const char *const qemuarg[] = {
> +        qemu,
> +        "-cpu", "?",
> +        (qemuCmdFlags & QEMUD_CMD_FLAG_NODEFCONFIG) ? "-nodefconfig" : NULL,
> +        NULL
> +    };
>      const char *const qemuenv[] = { "LC_ALL=C", NULL };
>      enum { MAX_MACHINES_OUTPUT_SIZE = 1024*4 };
>      char *output = NULL;
> @@ -916,7 +922,7 @@ qemudCapsInitGuest(virCapsPtr caps,
>      guest->arch.defaultInfo.emulator_mtime = binary_mtime;
>  
>      if (caps->host.cpu &&
> -        qemudProbeCPUModels(binary, info->arch, &ncpus, NULL) == 0 &&
> +        qemudProbeCPUModels(binary, 0, info->arch, &ncpus, NULL) == 0 &&
>          ncpus > 0 &&
>          !virCapabilitiesAddGuestFeature(guest, "cpuselection", 1, 0))
>          goto error;
> @@ -3365,6 +3371,7 @@ static int
>  qemuBuildCpuArgStr(const struct qemud_driver *driver,
>                     const virDomainDefPtr def,
>                     const char *emulator,
> +                   unsigned long long qemuCmdFlags,
>                     const struct utsname *ut,
>                     char **opt)
>  {
> @@ -3378,7 +3385,8 @@ qemuBuildCpuArgStr(const struct qemud_driver *driver,
>      int i;
>  
>      if (def->cpu && def->cpu->model) {
> -        if (qemudProbeCPUModels(emulator, ut->machine, &ncpus, &cpus) < 0)
> +        if (qemudProbeCPUModels(emulator, qemuCmdFlags, ut->machine,
> +                                &ncpus, &cpus) < 0)
>              goto cleanup;
>  
>          if (!ncpus || !host) {
> @@ -3706,7 +3714,7 @@ int qemudBuildCommandLine(virConnectPtr conn,
>          ADD_ARG_LIT(def->os.machine);
>      }
>  
> -    if (qemuBuildCpuArgStr(driver, def, emulator, &ut, &cpu) < 0)
> +    if (qemuBuildCpuArgStr(driver, def, emulator, qemuCmdFlags, &ut, &cpu) < 0)
>          goto error;
>  
>      if (cpu) {
> diff --git a/src/qemu/qemu_conf.h b/src/qemu/qemu_conf.h
> index ab5f158..dfdc0bb 100644
> --- a/src/qemu/qemu_conf.h
> +++ b/src/qemu/qemu_conf.h
> @@ -289,6 +289,7 @@ int         qemudProbeMachineTypes      (const char *binary,
>                                           int *nmachines);
>  
>  int         qemudProbeCPUModels         (const char *qemu,
> +                                         unsigned long long qemuCmdFlags,
>                                           const char *arch,
>                                           unsigned int *count,
>                                           const char ***cpus);

  ACK,

Daniel

-- 
Daniel Veillard      | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
daniel at veillard.com  | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library  http://libvirt.org/




More information about the libvir-list mailing list