From: Cornelia Huck <cornelia.huck@de.ibm.com>
To: ZhiPeng Lu <lu.zhipeng@zte.com.cn>
Cc: dgilbert@redhat.com, mst@redhat.com, marcel@redhat.com,
qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH] hmp: add 'info virtio-pci-status id' command
Date: Tue, 2 May 2017 12:43:04 +0200 [thread overview]
Message-ID: <20170502124304.3c8f5a73.cornelia.huck@de.ibm.com> (raw)
In-Reply-To: <1493692691-30801-1-git-send-email-lu.zhipeng@zte.com.cn>
On Tue, 2 May 2017 10:38:11 +0800
ZhiPeng Lu <lu.zhipeng@zte.com.cn> wrote:
> Add command to query a virtio pci device status.
> we can get id of the virtio pci device by 'info pci' command.
> HMP Test case:
> ==============
> virsh # qemu-monitor-command --hmp 3 info pci
> Bus 0, device 3, function 0:
> Ethernet controller: PCI device 1af4:1000
> IRQ 11.
> BAR0: I/O at 0xc000 [0xc03f].
> BAR1: 32 bit memory at 0xfebd1000 [0xfebd1fff].
> BAR4: 64 bit prefetchable memory at 0xfe000000 [0xfe003fff].
> BAR6: 32 bit memory at 0xffffffffffffffff [0x0003fffe].
> id "net0"
> Bus 0, device 4, function 0:
> USB controller: PCI device 8086:24cd
> IRQ 11.
> BAR0: 32 bit memory at 0xfebd2000 [0xfebd2fff].
> id "usb"
> virsh # qemu-monitor-command 3 --hmp "info virtio-pci-status net0"
> status=15
>
> virsh # qemu-monitor-command 3 --hmp "info virtio-pci-status usb"
> the 'info virtio_pci_status' command only supports virtio pci devices
>
> Signed-off-by: ZhiPeng Lu <lu.zhipeng@zte.com.cn>
> ---
> hmp-commands-info.hx | 14 ++++++++++++++
> hw/pci/pci-stub.c | 6 ++++++
> hw/virtio/virtio-pci.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++
> include/sysemu/sysemu.h | 1 +
> 4 files changed, 68 insertions(+)
> +static void query_virtio_pci_status(Monitor *mon, const char *id)
> +{
> + int ret = 0, i = 0;
> + PCIDevice *dev = NULL;
> + hwaddr addr = 0;
> + uint8_t val = 0;
> + const char *devtype = NULL;
> +
> + ret = pci_qdev_find_device(id, &dev);
> + if (ret) {
> + monitor_printf(mon, "Can not find device %s\n", id);
> + return;
> + }
> + devtype = object_get_typename(OBJECT(dev));
> + if (strncmp("virtio-", devtype, 7) == 0) {
> + for (i = 0; i < PCI_NUM_REGIONS; i++) {
> + if (dev->io_regions[i].type == PCI_BASE_ADDRESS_SPACE_IO) {
> + addr = dev->io_regions[i].addr;
> + break;
> + }
> + }
> + if (addr != -1 && addr != 0) {
> + address_space_rw(&address_space_io, addr + VIRTIO_PCI_STATUS,
> + MEMTXATTRS_UNSPECIFIED, &val, 1, 0);
> + if (val & VIRTIO_CONFIG_S_DRIVER_OK) {
> + fprintf(stderr, "driver is ok\n");
> + } else {
> + fprintf(stderr, "driver is not ok\n");
> + }
Why are you only printing verbose information for DRIVER_OK? Either
dump the status only, or decode everything.
(Or is that left over from debugging?)
> + monitor_printf(mon, "status=%d", val);
> + } else {
> + monitor_printf(mon, "status=%d", val);
> + }
> + } else {
> + monitor_printf(mon, "the 'info virtio_pci_status' command "
> + "only supports virtio pci devices");
> + }
> +}
Instead of introducing a virtio-pci only command, I think it would be
better to introduce a virtio info command that can be used for any
transport. There is already a transport callback to get the status
byte. (When you have that mechanism in place, you could also easily use
it to get information like feature bits.)
next prev parent reply other threads:[~2017-05-02 10:43 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-05-02 2:38 [Qemu-devel] [PATCH] hmp: add 'info virtio-pci-status id' command ZhiPeng Lu
2017-05-02 9:17 ` Dr. David Alan Gilbert
2017-05-02 10:43 ` Cornelia Huck [this message]
2017-05-02 14:35 ` Stefan Hajnoczi
2017-05-02 14:37 ` Dr. David Alan Gilbert
2017-05-02 14:49 ` 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=20170502124304.3c8f5a73.cornelia.huck@de.ibm.com \
--to=cornelia.huck@de.ibm.com \
--cc=dgilbert@redhat.com \
--cc=lu.zhipeng@zte.com.cn \
--cc=marcel@redhat.com \
--cc=mst@redhat.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).