On Tue, Feb 15, 2011 at 09:47:28PM +0800, Osier Yang wrote: > qemu command line to specify "vram": > -global qxl.vram_size=uint > > qemu command line to specify "heads", (no need of '-device' for > the first 'head'): > -device qxl,id=qxl-N (N is natural number) > > This patch is just about the command line building, still left work > on the command line parsing (hacking on "qemuBuildCommandLine"), as > I'm even not sure if it's the right way to build the command line. > > Any advise/idea is appreciated. > --- > src/qemu/qemu_capabilities.c | 5 ++++- > src/qemu/qemu_capabilities.h | 3 ++- > src/qemu/qemu_command.c | 14 ++++++++++++++ > 3 files changed, 20 insertions(+), 2 deletions(-) > > diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c > index cc5552c..78bcb4c 100644 > --- a/src/qemu/qemu_capabilities.c > +++ b/src/qemu/qemu_capabilities.c > @@ -942,9 +942,12 @@ qemuCapsComputeCmdFlags(const char *help, > * two features. The benefits of JSON mode now outweigh > * the downside. > */ > - if (version >= 13000) > + if (version >= 13000) > flags |= QEMUD_CMD_FLAG_MONITOR_JSON; > > + if (strstr(help, "-global")) > + flags |= QEMUD_CMD_FLAG_GLOBAL; > + There's no need for this. Just use QEMUD_CMD_FLAG_DEVICE since -global & -device arrived together. > diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c > index 1687203..92af6cb 100644 > --- a/src/qemu/qemu_command.c > +++ b/src/qemu/qemu_command.c > @@ -3964,6 +3964,20 @@ qemuBuildCommandLine(virConnectPtr conn, > } > > virCommandAddArgList(cmd, "-vga", vgastr, NULL); > + > + if (def->videos[0]->type == VIR_DOMAIN_VIDEO_TYPE_QXL) { > + if (def->videos[0]->vram && > + (qemuCmdFlags & QEMUD_CMD_FLAG_GLOBAL)) { > + virCommandAddArgFormat(cmd, "-global qxl.vram_size=%u", > + def->videos[0]->vram); > + } The '-global' parameter sets global defaults for all devices of a particular type. The video handling is a little wierd, because the first card we'll have todo via '-vga' and a '-set' and the 2nd, 3rd, etc cards will be normal using just '-device' (see qemuBuildVideoDevStr). So here you'll want to use -set instead of -global. And then also modify qemuBuildVideoDevStr > + > + if (def->videos[0]->heads > 0) { > + for (i = 0; i < def->videos[0]->heads - 1; i++) { > + virCommandAddArgFormat(cmd, "-device %s,id=qxl-%d", vgastr, i+1); > + } This isn't right. The 'heads' field indicates one graphics card, with multiple outputs. What you're doing here is creating multiple graphics cards each with one output. This is something you do by adding mulitple <video> elements in the XML instead. It doesn't look like QXL has multiple outputs on one card, so this setting is not relevant. Also be sure to create a test case for this in qemuxml2argvtest Regards, Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list