qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 0/8] Basic device state visualization


From: Anthony Liguori
Subject: Re: [Qemu-devel] [PATCH 0/8] Basic device state visualization
Date: Fri, 14 May 2010 13:16:52 -0500
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.5) Gecko/20091209 Fedora/3.0-4.fc12 Lightning/1.0pre Thunderbird/3.0

On 05/14/2010 08:20 AM, 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.

This series now lays the ground for more sophisticated visulization. It
adds the monitor command 'device_show<qdev-path>', 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...

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!

Very neat!

Regards,

Anthony Liguori

Jan Kiszka (8):
   qdev: Allow device addressing via 'driver.instance'
   Add base64 encoder/decoder
   Add QBuffer
   monitor: Add basic device state visualization
   qmp: Teach basic capability negotiation to python example
   qmp: Fix python helper /wrt long return strings
   Add QLIST_INSERT_TAIL
   qdev: Add new devices/buses at the tail

  Makefile        |    3 +-
  Makefile.objs   |    4 +-
  QMP/qmp-shell   |    1 +
  QMP/qmp.py      |    2 +-
  QMP/vm-info     |    1 +
  base64.c        |  202 +++++++++++++++++++++++++++++++++++
  base64.h        |   18 +++
  check-qbuffer.c |  172 ++++++++++++++++++++++++++++++
  configure       |    2 +-
  hw/hw.h         |    2 +
  hw/qdev.c       |  314 +++++++++++++++++++++++++++++++++++++++++++++++++++++--
  hw/qdev.h       |    2 +
  qbuffer.c       |  116 ++++++++++++++++++++
  qbuffer.h       |   33 ++++++
  qemu-monitor.hx |   16 +++
  qemu-queue.h    |    9 ++
  qjson.c         |   16 +++
  qobject.h       |    1 +
  18 files changed, 902 insertions(+), 12 deletions(-)
  create mode 100644 base64.c
  create mode 100644 base64.h
  create mode 100644 check-qbuffer.c
  create mode 100644 qbuffer.c
  create mode 100644 qbuffer.h






reply via email to

[Prev in Thread] Current Thread [Next in Thread]