All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Daniel P. Berrange" <berrange@redhat.com>
To: qemu-devel@nongnu.org
Cc: Anthony Liguori <aliguori@us.ibm.com>
Subject: [Qemu-devel] How to reliably start a bare QEMU target to query capabilities via QMP
Date: Wed, 22 Aug 2012 21:03:37 +0100	[thread overview]
Message-ID: <20120822200337.GA9878@redhat.com> (raw)

I've been adapting libvirt to use to the various new QMP commands to
query QEMU's capabilities, instead of the hated -help parsing. Obviously
the critical part of this is being able to reliably start a bare QEMU
process with no actual guest OS configured (no disks, no kernel, etc)
and talk to its monitor. I hadn't anticipated problems since I only
tested with x86_64 / i386 most of the time, which work well in this
respect. Currently I am doing

  # $QEMU_BINARY -S \
         -no-user-config \
         -nodefconfig \
         -nodefaults \
         -nographic \
         -qmp stdio


This works for about 50% of the QEMU targets:

    qemu-system-alpha
    qemu-system-i386
    qemu-system-lm32
    qemu-system-ppc
    qemu-system-ppc64
    qemu-system-s390x
    qemu-system-sparc
    qemu-system-sparc64
    qemu-system-x86_64
    qemu-system-xtensa
    qemu-system-xtensaeb

 but fails for the other 50% of targets:

    qemu-system-arm
    qemu-system-cris
    qemu-system-m68k
    qemu-system-mips
    qemu-system-mips64
    qemu-system-mips64el
    qemu-system-mipsel
    qemu-system-or32
    qemu-system-ppcemb
    qemu-system-sh4
    qemu-system-sh4eb
    qemu-system-unicore32


With the failing targets i see the following kinds of errors:


 $ qemu-system-arm -S -nodefconfig -nodefaults -nographic -qmp unix:/tmp/foo,server,nowait
 Kernel image must be specified

 $ qemu-system-cris -S -nodefconfig -nodefaults -nographic -qmp unix:/tmp/foo,server,nowait
 Kernel image must be specified

 $ qemu-system-m68k -S -nodefconfig -nodefaults -nographic -qmp unix:/tmp/foo,server,nowait
 Kernel image must be specified

 $ qemu-system-mips -S -nodefconfig -nodefaults -nographic -qmp unix:/tmp/foo,server,nowait qemu: Could not load MIPS bios 'mips_bios.bin', and no -kernel argument was specified

 $ qemu-system-mipsel -S -nodefconfig -nodefaults -nographic -qmp unix:/tmp/foo,server,nowait
 qemu: Could not load MIPS bios 'mipsel_bios.bin', and no -kernel argument was specified

 $ qemu-system-or32 -S -nodefconfig -nodefaults -nographic -qmp unix:/tmp/foo,server,nowait
 Can't create serial device, empty char device

 $ qemu-system-ppcemb -S -nodefconfig -nodefaults -nographic -qmp unix:/tmp/foo,server,nowait
 Unable to find PowerPC CPU definition

 $ qemu-system-sh4 -S -nodefconfig -nodefaults -nographic -qmp unix:/tmp/foo,server,nowait
 Initializing CPU
 Allocating ROM
 Allocating SDRAM 1
 Allocating SDRAM 2
 shix_init: load BIOS 'shix_bios.bin'
 ret=-1
 qemu: could not load SHIX bios 'shix_bios.bin'

 $ qemu-system-sh4eb -S -nodefconfig -nodefaults -nographic -qmp unix:/tmp/foo,server,nowait
 Initializing CPU
 Allocating ROM
 Allocating SDRAM 1
 Allocating SDRAM 2
 shix_init: load BIOS 'shix_bios.bin'
 ret=-1
 qemu: could not load SHIX bios 'shix_bios.bin'

 $ qemu-system-unicore32 -S -nodefconfig -nodefaults -nographic -qmp unix:/tmp/foo,server,nowait
 qemu-system-unicore32: /home/berrange/src/virt/qemu/hw/unicore32/../puv3.c:81: puv3_load_kernel: Assertion `kernel_filename != ((void *)0)' failed.
 Aborted


Can we "fix" them in some way to not require the kernel ?

Do we have to go down the route of adding some sort of "-no-vm" flag to
explicitly say we don't care about any of the VM setup parts ? This would
be more like what my old patches did which mapped monitors commands
onto '-query-XXXXX' command line args, bypassing VM setup, but still
using normal QMP monitor interaction.

Any other suggestions on how to reliably get a QMP monitor to a target,
without any VM config. ?

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 :|

             reply	other threads:[~2012-08-22 20:03 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-22 20:03 Daniel P. Berrange [this message]
2012-08-22 20:25 ` [Qemu-devel] How to reliably start a bare QEMU target to query capabilities via QMP Anthony Liguori
2012-08-23  8:56   ` Daniel P. Berrange
2012-08-23  6:35 ` [Qemu-devel] unicore32 fails assertion without -kernel (was: How to reliably start a bare QEMU target to query capabilities via QMP) Markus Armbruster

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20120822200337.GA9878@redhat.com \
    --to=berrange@redhat.com \
    --cc=aliguori@us.ibm.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.