[libvirt] [PATCH v2] Implement CPU topology support for QEMU driver

Daniel P. Berrange berrange at redhat.com
Sun Jan 17 12:57:12 UTC 2010


On Fri, Jan 15, 2010 at 01:31:49PM +0100, Jiri Denemark wrote:
> QEMU's command line equivalent for the following domain XML fragment
>     <vcpus>2</vcpus>
>     <cpu ...>
>         ...
>         <topology sockets='1' cores='2', threads='1'/>
>     </cpu>
> 
> is
> 
>     -smp 2,sockets=1,cores=2,threads=1
> 
> This syntax was introduced in QEMU-0.12.
> 
> Version 2 changes:
> - -smp argument build split into a separate function
> - always add ",sockets=S,cores=C,threads=T" to -smp if qemu supports it
> - use qemuParseCommandLineKeywords for command line parsing
> 
> Signed-off-by: Jiri Denemark <jdenemar at redhat.com>


> @@ -2112,8 +2148,13 @@ int qemudBuildCommandLine(virConnectPtr conn,
>          ADD_ARG_LIT("-mem-path");
>          ADD_ARG_LIT(driver->hugepage_path);
>      }
> +
> +    if (!(smp = qemudBuildCommandLineSmp(conn, def, qemuCmdFlags)))
> +        goto error;
> +
>      ADD_ARG_LIT("-smp");
> -    ADD_ARG_LIT(vcpus);
> +    ADD_ARG_LIT(smp);
> +    VIR_FREE(smp);


If you've got an allocated string, then just use 'ADD_ARG(smp)' and which
avoids the strdup() that ADD_ARG_LIT does and avoids need for VIR_FREE
too. Also you should move the qemudBuildCommandLineSmp() call to *after*
the ADD_ARG_LIT("-smp") line, otherwise you can leak 'smp' on OOM handling
in the ADD_ARG_LIT("-smp") call.


ACK, if you make that minor memory handling fix before committing

Regards,
Daniel
-- 
|: Red Hat, Engineering, London   -o-   http://people.redhat.com/berrange/ :|
|: http://libvirt.org  -o-  http://virt-manager.org  -o-  http://ovirt.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505  -o-  F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|




More information about the libvir-list mailing list