qemu/qapi/virtio.json
Laurent Vivier a5ebce3857 qmp: add QMP command x-query-virtio
This new command lists all the instances of VirtIODevices with
their canonical QOM path and name.

[Jonah: @virtio_list duplicates information that already exists in
 the QOM composition tree. However, extracting necessary information
 from this tree seems to be a bit convoluted.

 Instead, we still create our own list of realized virtio devices
 but use @qmp_qom_get with the device's canonical QOM path to confirm
 that the device exists and is realized. If the device exists but
 is actually not realized, then we remove it from our list (for
 synchronicity to the QOM composition tree).

 Also, the QMP command @x-query-virtio is redundant as @qom-list
 and @qom-get are sufficient to search '/machine/' for realized
 virtio devices. However, @x-query-virtio is much more convenient
 in listing realized virtio devices.]

Signed-off-by: Laurent Vivier <lvivier@redhat.com>
Signed-off-by: Jonah Palmer <jonah.palmer@oracle.com>
Message-Id: <1660220684-24909-2-git-send-email-jonah.palmer@oracle.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
2022-10-09 16:38:45 -04:00

69 lines
1.4 KiB
Python

# -*- Mode: Python -*-
# vim: filetype=python
#
##
# = Virtio devices
##
##
# @VirtioInfo:
#
# Basic information about a given VirtIODevice
#
# @path: The VirtIODevice's canonical QOM path
#
# @name: Name of the VirtIODevice
#
# Since: 7.1
#
##
{ 'struct': 'VirtioInfo',
'data': { 'path': 'str',
'name': 'str' } }
##
# @x-query-virtio:
#
# Returns a list of all realized VirtIODevices
#
# Features:
# @unstable: This command is meant for debugging.
#
# Returns: List of gathered VirtIODevices
#
# Since: 7.1
#
# Example:
#
# -> { "execute": "x-query-virtio" }
# <- { "return": [
# {
# "name": "virtio-input",
# "path": "/machine/peripheral-anon/device[4]/virtio-backend"
# },
# {
# "name": "virtio-crypto",
# "path": "/machine/peripheral/crypto0/virtio-backend"
# },
# {
# "name": "virtio-scsi",
# "path": "/machine/peripheral-anon/device[2]/virtio-backend"
# },
# {
# "name": "virtio-net",
# "path": "/machine/peripheral-anon/device[1]/virtio-backend"
# },
# {
# "name": "virtio-serial",
# "path": "/machine/peripheral-anon/device[0]/virtio-backend"
# }
# ]
# }
#
##
{ 'command': 'x-query-virtio',
'returns': [ 'VirtioInfo' ],
'features': [ 'unstable' ] }