[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