From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:49012) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T4HVG-0001qs-5G for qemu-devel@nongnu.org; Wed, 22 Aug 2012 16:26:15 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1T4HVE-0004qx-Dt for qemu-devel@nongnu.org; Wed, 22 Aug 2012 16:26:14 -0400 Received: from e5.ny.us.ibm.com ([32.97.182.145]:42653) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T4HVE-0004qn-9k for qemu-devel@nongnu.org; Wed, 22 Aug 2012 16:26:12 -0400 Received: from /spool/local by e5.ny.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Wed, 22 Aug 2012 16:26:10 -0400 Received: from d01relay04.pok.ibm.com (d01relay04.pok.ibm.com [9.56.227.236]) by d01dlp03.pok.ibm.com (Postfix) with ESMTP id 6415EC90058 for ; Wed, 22 Aug 2012 16:26:06 -0400 (EDT) Received: from d03av05.boulder.ibm.com (d03av05.boulder.ibm.com [9.17.195.85]) by d01relay04.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id q7MKQ5sO158498 for ; Wed, 22 Aug 2012 16:26:05 -0400 Received: from d03av05.boulder.ibm.com (loopback [127.0.0.1]) by d03av05.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id q7MKPgMr015796 for ; Wed, 22 Aug 2012 14:25:42 -0600 From: Anthony Liguori In-Reply-To: <20120822200337.GA9878@redhat.com> References: <20120822200337.GA9878@redhat.com> Date: Wed, 22 Aug 2012 15:25:38 -0500 Message-ID: <87obm28yil.fsf@codemonkey.ws> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Subject: Re: [Qemu-devel] How to reliably start a bare QEMU target to query capabilities via QMP List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: "Daniel P. Berrange" , qemu-devel@nongnu.org Cc: Markus Armbruster "Daniel P. Berrange" writes: > 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. ? -M none. See the patch I just sent out. I think we can include this in 1.2 as it poses no real risk. Regards, Anthony Liguori > > 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 :|