From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=50887 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OCxVG-0005Z3-5I for qemu-devel@nongnu.org; Fri, 14 May 2010 12:12:48 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OCxVE-00014P-8r for qemu-devel@nongnu.org; Fri, 14 May 2010 12:12:46 -0400 Received: from mx1.redhat.com ([209.132.183.28]:39813) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OCxVE-000142-0u for qemu-devel@nongnu.org; Fri, 14 May 2010 12:12:44 -0400 Message-ID: <4BED7676.8060707@redhat.com> Date: Fri, 14 May 2010 19:12:38 +0300 From: Avi Kivity MIME-Version: 1.0 References: In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Subject: [Qemu-devel] Re: [PATCH 0/8] Basic device state visualization List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Jan Kiszka Cc: Markus Armbruster , Anthony Liguori , Juan Quintela , qemu-devel@nongnu.org, Luiz Capitulino On 05/14/2010 04:20 PM, Jan Kiszka wrote: > While recently fixing the SCSI reset issues, I once again had the need > for displaying the state of involved devices. So far the common approach > is to attach gdb to qemu (or even inject some printf). But that time I > hacked up a 30-minute patch to dump the vmstate of any (fully converted) > qdev device. > Wonderful! may even motivate some more qmp conversions. > This series now lays the ground for more sophisticated visulization. It > adds the monitor command 'device_show', freezes the vmstate > of the addressed device, sticks it into a QMP dict, and either transmit > this via QMP or pretty-prints it on a monitor console. Some example: > > (qemu) device_show /i440FX-pcihost/pci.0/piix3-usb-uhci > dev: piix3-usb-uhci, id "" > dev. > version_id: 00000002 > config: a0 7d d1 00 00 00 00 00 - b0 7e d1 00 00 00 00 00 > ... > irq_state: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 > num_ports_vmstate: 02 > ports[00]. > ctrl: 0083 > ports[01]. > ctrl: 0080 > cmd: 00c1 > status: 0000 > intr: 0000 > frnum: 0077 > fl_base_addr: 0fffc000 > sof_timing: 40 > status2: 00 > frame_timer: 0000000000cb2bd0 > > Basically, this is the level of support I recently saw in a > demonstration of some commercial simulator as well. We are just lacking > support for the yet unconverted devices. And I think we can even do > better on the long term, e.g. by annotating state variables that contain > flags, or by pretty-printing buffers like the PCI config space, or... > > Will be interesting to pass these annotations via qmp as well. > Let's give this a start, I bet it will be helpful while adding complex > device models like AHCI or EHCI. Looking forward to feedback! > I'd like to see qmp command documentation for this. -- Do not meddle in the internals of kernels, for they are subtle and quick to panic.