# -*- 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.2
##
{ 'struct': 'VirtioInfo',
  'data': { 'path': 'str',
            'name': 'str' } }

##
# @x-query-virtio:
#
# Return a list of all realized VirtIODevices
#
# Features:
#
# @unstable: This command is meant for debugging.
#
# Returns: List of gathered VirtIODevices
#
# Since: 7.2
#
# .. qmp-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' ] }

##
# @VhostStatus:
#
# Information about a vhost device.  This information will only be
# displayed if the vhost device is active.
#
# @n-mem-sections: vhost_dev n_mem_sections
#
# @n-tmp-sections: vhost_dev n_tmp_sections
#
# @nvqs: vhost_dev nvqs (number of virtqueues being used)
#
# @vq-index: vhost_dev vq_index
#
# @features: vhost_dev features
#
# @acked-features: vhost_dev acked_features
#
# @protocol-features: vhost_dev protocol_features
#
# @max-queues: vhost_dev max_queues
#
# @backend-cap: vhost_dev backend_cap
#
# @log-enabled: vhost_dev log_enabled flag
#
# @log-size: vhost_dev log_size
#
# Since: 7.2
##
{ 'struct': 'VhostStatus',
  'data': { 'n-mem-sections': 'int',
            'n-tmp-sections': 'int',
            'nvqs': 'uint32',
            'vq-index': 'int',
            'features': 'VirtioDeviceFeatures',
            'acked-features': 'VirtioDeviceFeatures',
            'protocol-features': 'VhostDeviceProtocols',
            'max-queues': 'uint64',
            'backend-cap': 'uint64',
            'log-enabled': 'bool',
            'log-size': 'uint64' } }

##
# @VirtioStatus:
#
# Full status of the virtio device with most VirtIODevice members.
# Also includes the full status of the corresponding vhost device if
# the vhost device is active.
#
# @name: VirtIODevice name
#
# @device-id: VirtIODevice ID
#
# @vhost-started: VirtIODevice vhost_started flag
#
# @guest-features: VirtIODevice guest_features
#
# @host-features: VirtIODevice host_features
#
# @backend-features: VirtIODevice backend_features
#
# @device-endian: VirtIODevice device_endian
#
# @num-vqs: VirtIODevice virtqueue count.  This is the number of
#     active virtqueues being used by the VirtIODevice.
#
# @status: VirtIODevice configuration status (`VirtioDeviceStatus`)
#
# @isr: VirtIODevice ISR
#
# @queue-sel: VirtIODevice queue_sel
#
# @vm-running: VirtIODevice vm_running flag
#
# @broken: VirtIODevice broken flag
#
# @disabled: VirtIODevice disabled flag
#
# @use-started: VirtIODevice use_started flag
#
# @started: VirtIODevice started flag
#
# @start-on-kick: VirtIODevice start_on_kick flag
#
# @disable-legacy-check: VirtIODevice disabled_legacy_check flag
#
# @bus-name: VirtIODevice bus_name
#
# @use-guest-notifier-mask: VirtIODevice use_guest_notifier_mask flag
#
# @vhost-dev: Corresponding vhost device info for a given
#     VirtIODevice.  Present if the given VirtIODevice has an active
#     vhost device.
#
# Since: 7.2
##
{ 'struct': 'VirtioStatus',
  'data': { 'name': 'str',
            'device-id': 'uint16',
            'vhost-started': 'bool',
            'device-endian': 'str',
            'guest-features': 'VirtioDeviceFeatures',
            'host-features': 'VirtioDeviceFeatures',
            'backend-features': 'VirtioDeviceFeatures',
            'num-vqs': 'int',
            'status': 'VirtioDeviceStatus',
            'isr': 'uint8',
            'queue-sel': 'uint16',
            'vm-running': 'bool',
            'broken': 'bool',
            'disabled': 'bool',
            'use-started': 'bool',
            'started': 'bool',
            'start-on-kick': 'bool',
            'disable-legacy-check': 'bool',
            'bus-name': 'str',
            'use-guest-notifier-mask': 'bool',
            '*vhost-dev': 'VhostStatus' } }

##
# @x-query-virtio-status:
#
# Poll for a comprehensive status of a given virtio device
#
# @path: Canonical QOM path of the VirtIODevice
#
# Features:
#
# @unstable: This command is meant for debugging.
#
# Returns: Status of the virtio device
#
# Since: 7.2
#
# .. qmp-example::
#    :annotated:
#
#    Poll for the status of virtio-crypto (no vhost-crypto active)
#    ::
#
#     -> { "execute": "x-query-virtio-status",
#          "arguments": { "path": "/machine/peripheral/crypto0/virtio-backend" }
#        }
#     <- { "return": {
#              "device-endian": "little",
#              "bus-name": "",
#              "disable-legacy-check": false,
#              "name": "virtio-crypto",
#              "started": true,
#              "device-id": 20,
#              "backend-features": {
#                  "transports": [],
#                  "dev-features": []
#              },
#              "start-on-kick": false,
#              "isr": 1,
#              "broken": false,
#              "status": {
#                  "statuses": [
#                      "VIRTIO_CONFIG_S_ACKNOWLEDGE: Valid virtio device found",
#                      "VIRTIO_CONFIG_S_DRIVER: Guest OS compatible with device",
#                      "VIRTIO_CONFIG_S_FEATURES_OK: Feature negotiation complete",
#                      "VIRTIO_CONFIG_S_DRIVER_OK: Driver setup and ready"
#                  ]
#              },
#              "num-vqs": 2,
#              "guest-features": {
#                  "dev-features": [],
#                  "transports": [
#                      "VIRTIO_RING_F_EVENT_IDX: Used & avail. event fields enabled",
#                      "VIRTIO_RING_F_INDIRECT_DESC: Indirect descriptors supported",
#                      "VIRTIO_F_VERSION_1: Device compliant for v1 spec (legacy)"
#                  ]
#              },
#              "host-features": {
#                  "unknown-dev-features": 1073741824,
#                  "unknown-dev-features2": 0,
#                  "dev-features": [],
#                  "transports": [
#                      "VIRTIO_RING_F_EVENT_IDX: Used & avail. event fields enabled",
#                      "VIRTIO_RING_F_INDIRECT_DESC: Indirect descriptors supported",
#                      "VIRTIO_F_VERSION_1: Device compliant for v1 spec (legacy)",
#                      "VIRTIO_F_ANY_LAYOUT: Device accepts arbitrary desc. layouts",
#                      "VIRTIO_F_NOTIFY_ON_EMPTY: Notify when device runs out of avail. descs. on VQ"
#                  ]
#              },
#              "use-guest-notifier-mask": true,
#              "vm-running": true,
#              "queue-sel": 1,
#              "disabled": false,
#              "vhost-started": false,
#              "use-started": true
#          }
#        }
#
# .. qmp-example::
#    :annotated:
#
#    Poll for the status of virtio-net (vhost-net is active)
#    ::
#
#     -> { "execute": "x-query-virtio-status",
#          "arguments": { "path": "/machine/peripheral-anon/device[1]/virtio-backend" }
#        }
#     <- { "return": {
#              "device-endian": "little",
#              "bus-name": "",
#              "disabled-legacy-check": false,
#              "name": "virtio-net",
#              "started": true,
#              "device-id": 1,
#              "vhost-dev": {
#                  "n-tmp-sections": 4,
#                  "n-mem-sections": 4,
#                  "max-queues": 1,
#                  "backend-cap": 2,
#                  "log-size": 0,
#                  "backend-features": {
#                      "dev-features": [],
#                      "transports": []
#                  },
#                  "nvqs": 2,
#                  "protocol-features": {
#                      "protocols": []
#                  },
#                  "vq-index": 0,
#                  "log-enabled": false,
#                  "acked-features": {
#                      "dev-features": [
#                          "VIRTIO_NET_F_MRG_RXBUF: Driver can merge receive buffers"
#                      ],
#                      "transports": [
#                          "VIRTIO_RING_F_EVENT_IDX: Used & avail. event fields enabled",
#                          "VIRTIO_RING_F_INDIRECT_DESC: Indirect descriptors supported",
#                          "VIRTIO_F_VERSION_1: Device compliant for v1 spec (legacy)"
#                      ]
#                  },
#                  "features": {
#                      "dev-features": [
#                          "VHOST_F_LOG_ALL: Logging write descriptors supported",
#                          "VIRTIO_NET_F_MRG_RXBUF: Driver can merge receive buffers"
#                      ],
#                      "transports": [
#                          "VIRTIO_RING_F_EVENT_IDX: Used & avail. event fields enabled",
#                          "VIRTIO_RING_F_INDIRECT_DESC: Indirect descriptors supported",
#                          "VIRTIO_F_IOMMU_PLATFORM: Device can be used on IOMMU platform",
#                          "VIRTIO_F_VERSION_1: Device compliant for v1 spec (legacy)",
#                          "VIRTIO_F_ANY_LAYOUT: Device accepts arbitrary desc. layouts",
#                          "VIRTIO_F_NOTIFY_ON_EMPTY: Notify when device runs out of avail. descs. on VQ"
#                      ]
#                  }
#              },
#              "backend-features": {
#                  "dev-features": [
#                      "VHOST_USER_F_PROTOCOL_FEATURES: Vhost-user protocol features negotiation supported",
#                      "VIRTIO_NET_F_GSO: Handling GSO-type packets supported",
#                      "VIRTIO_NET_F_CTRL_MAC_ADDR: MAC address set through control channel",
#                      "VIRTIO_NET_F_GUEST_ANNOUNCE: Driver sending gratuitous packets supported",
#                      "VIRTIO_NET_F_CTRL_RX_EXTRA: Extra RX mode control supported",
#                      "VIRTIO_NET_F_CTRL_VLAN: Control channel VLAN filtering supported",
#                      "VIRTIO_NET_F_CTRL_RX: Control channel RX mode supported",
#                      "VIRTIO_NET_F_CTRL_VQ: Control channel available",
#                      "VIRTIO_NET_F_STATUS: Configuration status field available",
#                      "VIRTIO_NET_F_MRG_RXBUF: Driver can merge receive buffers",
#                      "VIRTIO_NET_F_HOST_UFO: Device can receive UFO",
#                      "VIRTIO_NET_F_HOST_ECN: Device can receive TSO with ECN",
#                      "VIRTIO_NET_F_HOST_TSO6: Device can receive TSOv6",
#                      "VIRTIO_NET_F_HOST_TSO4: Device can receive TSOv4",
#                      "VIRTIO_NET_F_GUEST_UFO: Driver can receive UFO",
#                      "VIRTIO_NET_F_GUEST_ECN: Driver can receive TSO with ECN",
#                      "VIRTIO_NET_F_GUEST_TSO6: Driver can receive TSOv6",
#                      "VIRTIO_NET_F_GUEST_TSO4: Driver can receive TSOv4",
#                      "VIRTIO_NET_F_MAC: Device has given MAC address",
#                      "VIRTIO_NET_F_CTRL_GUEST_OFFLOADS: Control channel offloading reconfig. supported",
#                      "VIRTIO_NET_F_GUEST_CSUM: Driver handling packets with partial checksum supported",
#                      "VIRTIO_NET_F_CSUM: Device handling packets with partial checksum supported"
#                  ],
#                  "transports": [
#                      "VIRTIO_RING_F_EVENT_IDX: Used & avail. event fields enabled",
#                      "VIRTIO_RING_F_INDIRECT_DESC: Indirect descriptors supported",
#                      "VIRTIO_F_VERSION_1: Device compliant for v1 spec (legacy)",
#                      "VIRTIO_F_ANY_LAYOUT: Device accepts arbitrary desc. layouts",
#                      "VIRTIO_F_NOTIFY_ON_EMPTY: Notify when device runs out of avail. descs. on VQ"
#                  ]
#              },
#              "start-on-kick": false,
#              "isr": 1,
#              "broken": false,
#              "status": {
#                  "statuses": [
#                      "VIRTIO_CONFIG_S_ACKNOWLEDGE: Valid virtio device found",
#                      "VIRTIO_CONFIG_S_DRIVER: Guest OS compatible with device",
#                      "VIRTIO_CONFIG_S_FEATURES_OK: Feature negotiation complete",
#                      "VIRTIO_CONFIG_S_DRIVER_OK: Driver setup and ready"
#                  ]
#              },
#              "num-vqs": 3,
#              "guest-features": {
#                  "dev-features": [
#                      "VIRTIO_NET_F_CTRL_MAC_ADDR: MAC address set through control channel",
#                      "VIRTIO_NET_F_GUEST_ANNOUNCE: Driver sending gratuitous packets supported",
#                      "VIRTIO_NET_F_CTRL_VLAN: Control channel VLAN filtering supported",
#                      "VIRTIO_NET_F_CTRL_RX: Control channel RX mode supported",
#                      "VIRTIO_NET_F_CTRL_VQ: Control channel available",
#                      "VIRTIO_NET_F_STATUS: Configuration status field available",
#                      "VIRTIO_NET_F_MRG_RXBUF: Driver can merge receive buffers",
#                      "VIRTIO_NET_F_HOST_UFO: Device can receive UFO",
#                      "VIRTIO_NET_F_HOST_ECN: Device can receive TSO with ECN",
#                      "VIRTIO_NET_F_HOST_TSO6: Device can receive TSOv6",
#                      "VIRTIO_NET_F_HOST_TSO4: Device can receive TSOv4",
#                      "VIRTIO_NET_F_GUEST_UFO: Driver can receive UFO",
#                      "VIRTIO_NET_F_GUEST_ECN: Driver can receive TSO with ECN",
#                      "VIRTIO_NET_F_GUEST_TSO6: Driver can receive TSOv6",
#                      "VIRTIO_NET_F_GUEST_TSO4: Driver can receive TSOv4",
#                      "VIRTIO_NET_F_MAC: Device has given MAC address",
#                      "VIRTIO_NET_F_CTRL_GUEST_OFFLOADS: Control channel offloading reconfig. supported",
#                      "VIRTIO_NET_F_GUEST_CSUM: Driver handling packets with partial checksum supported",
#                      "VIRTIO_NET_F_CSUM: Device handling packets with partial checksum supported"
#                  ],
#                  "transports": [
#                      "VIRTIO_RING_F_EVENT_IDX: Used & avail. event fields enabled",
#                      "VIRTIO_RING_F_INDIRECT_DESC: Indirect descriptors supported",
#                      "VIRTIO_F_VERSION_1: Device compliant for v1 spec (legacy)"
#                 ]
#              },
#              "host-features": {
#                  "dev-features": [
#                      "VHOST_USER_F_PROTOCOL_FEATURES: Vhost-user protocol features negotiation supported",
#                      "VIRTIO_NET_F_GSO: Handling GSO-type packets supported",
#                      "VIRTIO_NET_F_CTRL_MAC_ADDR: MAC address set through control channel",
#                      "VIRTIO_NET_F_GUEST_ANNOUNCE: Driver sending gratuitous packets supported",
#                      "VIRTIO_NET_F_CTRL_RX_EXTRA: Extra RX mode control supported",
#                      "VIRTIO_NET_F_CTRL_VLAN: Control channel VLAN filtering supported",
#                      "VIRTIO_NET_F_CTRL_RX: Control channel RX mode supported",
#                      "VIRTIO_NET_F_CTRL_VQ: Control channel available",
#                      "VIRTIO_NET_F_STATUS: Configuration status field available",
#                      "VIRTIO_NET_F_MRG_RXBUF: Driver can merge receive buffers",
#                      "VIRTIO_NET_F_HOST_UFO: Device can receive UFO",
#                      "VIRTIO_NET_F_HOST_ECN: Device can receive TSO with ECN",
#                      "VIRTIO_NET_F_HOST_TSO6: Device can receive TSOv6",
#                      "VIRTIO_NET_F_HOST_TSO4: Device can receive TSOv4",
#                      "VIRTIO_NET_F_GUEST_UFO: Driver can receive UFO",
#                      "VIRTIO_NET_F_GUEST_ECN: Driver can receive TSO with ECN",
#                      "VIRTIO_NET_F_GUEST_TSO6: Driver can receive TSOv6",
#                      "VIRTIO_NET_F_GUEST_TSO4: Driver can receive TSOv4",
#                      "VIRTIO_NET_F_MAC: Device has given MAC address",
#                      "VIRTIO_NET_F_CTRL_GUEST_OFFLOADS: Control channel offloading reconfig. supported",
#                      "VIRTIO_NET_F_GUEST_CSUM: Driver handling packets with partial checksum supported",
#                      "VIRTIO_NET_F_CSUM: Device handling packets with partial checksum supported"
#                  ],
#                  "transports": [
#                      "VIRTIO_RING_F_EVENT_IDX: Used & avail. event fields enabled",
#                      "VIRTIO_RING_F_INDIRECT_DESC: Indirect descriptors supported",
#                      "VIRTIO_F_VERSION_1: Device compliant for v1 spec (legacy)",
#                      "VIRTIO_F_ANY_LAYOUT: Device accepts arbitrary desc. layouts",
#                      "VIRTIO_F_NOTIFY_ON_EMPTY: Notify when device runs out of avail. descs. on VQ"
#                 ]
#              },
#              "use-guest-notifier-mask": true,
#              "vm-running": true,
#              "queue-sel": 2,
#              "disabled": false,
#              "vhost-started": true,
#              "use-started": true
#          }
#        }
##
{ 'command': 'x-query-virtio-status',
  'data': { 'path': 'str' },
  'returns': 'VirtioStatus',
  'features': [ 'unstable' ] }

##
# @VirtioDeviceStatus:
#
# A structure defined to list the configuration statuses of a virtio
# device
#
# @statuses: List of decoded configuration statuses of the virtio
#     device
#
# @unknown-statuses: Virtio device statuses bitmap that have not been
#     decoded
#
# Since: 7.2
##
{ 'struct': 'VirtioDeviceStatus',
  'data': { 'statuses': [ 'str' ],
            '*unknown-statuses': 'uint8' } }

##
# @VhostDeviceProtocols:
#
# A structure defined to list the vhost user protocol features of a
# Vhost User device
#
# @protocols: List of decoded vhost user protocol features of a vhost
#     user device
#
# @unknown-protocols: Vhost user device protocol features bitmap that
#     have not been decoded
#
# Since: 7.2
##
{ 'struct': 'VhostDeviceProtocols',
  'data': { 'protocols': [ 'str' ],
            '*unknown-protocols': 'uint64' } }

##
# @VirtioDeviceFeatures:
#
# The common fields that apply to most Virtio devices.  Some devices
# may not have their own device-specific features (e.g. virtio-rng).
#
# @transports: List of transport features of the virtio device
#
# @dev-features: List of device-specific features (if the device has
#     unique features)
#
# @unknown-dev-features: Virtio device features bitmap that have not
#     been decoded (bits 0-63)
#
# @unknown-dev-features2: Virtio device features bitmap that have not
#     been decoded (bits 64-127) (since 10.2)
#
# Since: 7.2
##
{ 'struct': 'VirtioDeviceFeatures',
  'data': { 'transports': [ 'str' ],
            '*dev-features': [ 'str' ],
            '*unknown-dev-features': 'uint64',
            '*unknown-dev-features2': 'uint64' } }

##
# @VirtQueueStatus:
#
# Information of a VirtIODevice VirtQueue, including most members of
# the VirtQueue data structure.
#
# @name: Name of the VirtIODevice that uses this VirtQueue
#
# @queue-index: VirtQueue queue_index
#
# @inuse: VirtQueue inuse
#
# @vring-num: VirtQueue vring.num
#
# @vring-num-default: VirtQueue vring.num_default
#
# @vring-align: VirtQueue vring.align
#
# @vring-desc: VirtQueue vring.desc (descriptor area)
#
# @vring-avail: VirtQueue vring.avail (driver area)
#
# @vring-used: VirtQueue vring.used (device area)
#
# @last-avail-idx: VirtQueue last_avail_idx or return of vhost_dev
#     vhost_get_vring_base (if vhost active)
#
# @shadow-avail-idx: VirtQueue shadow_avail_idx
#
# @used-idx: VirtQueue used_idx
#
# @signalled-used: VirtQueue signalled_used
#
# @signalled-used-valid: VirtQueue signalled_used_valid flag
#
# Since: 7.2
##
{ 'struct': 'VirtQueueStatus',
  'data': { 'name': 'str',
            'queue-index': 'uint16',
            'inuse': 'uint32',
            'vring-num': 'uint32',
            'vring-num-default': 'uint32',
            'vring-align': 'uint32',
            'vring-desc': 'uint64',
            'vring-avail': 'uint64',
            'vring-used': 'uint64',
            '*last-avail-idx': 'uint16',
            '*shadow-avail-idx': 'uint16',
            'used-idx': 'uint16',
            'signalled-used': 'uint16',
            'signalled-used-valid': 'bool' } }

##
# @x-query-virtio-queue-status:
#
# Return the status of a given VirtIODevice's VirtQueue
#
# @path: VirtIODevice canonical QOM path
#
# @queue: VirtQueue index to examine
#
# Features:
#
# @unstable: This command is meant for debugging.
#
# Returns: Status of the queue
#
# .. note:: last_avail_idx will not be displayed in the case where the
#    selected VirtIODevice has a running vhost device and the
#    VirtIODevice VirtQueue index (queue) does not exist for the
#    corresponding vhost device vhost_virtqueue.  Also,
#    shadow_avail_idx will not be displayed in the case where the
#    selected VirtIODevice has a running vhost device.
#
# Since: 7.2
#
# .. qmp-example::
#    :annotated:
#
#    Get `VirtQueueStatus` for virtio-vsock (vhost-vsock running)
#    ::
#
#     -> { "execute": "x-query-virtio-queue-status",
#          "arguments": { "path": "/machine/peripheral/vsock0/virtio-backend",
#                         "queue": 1 }
#        }
#     <- { "return": {
#              "signalled-used": 0,
#              "inuse": 0,
#              "name": "vhost-vsock",
#              "vring-align": 4096,
#              "vring-desc": 5217370112,
#              "signalled-used-valid": false,
#              "vring-num-default": 128,
#              "vring-avail": 5217372160,
#              "queue-index": 1,
#              "last-avail-idx": 0,
#              "vring-used": 5217372480,
#              "used-idx": 0,
#              "vring-num": 128
#          }
#        }
#
# .. qmp-example::
#    :annotated:
#
#    Get `VirtQueueStatus` for virtio-serial (no vhost)
#    ::
#
#     -> { "execute": "x-query-virtio-queue-status",
#          "arguments": { "path": "/machine/peripheral-anon/device[0]/virtio-backend",
#                         "queue": 20 }
#        }
#     <- { "return": {
#              "signalled-used": 0,
#              "inuse": 0,
#              "name": "virtio-serial",
#              "vring-align": 4096,
#              "vring-desc": 5182074880,
#              "signalled-used-valid": false,
#              "vring-num-default": 128,
#              "vring-avail": 5182076928,
#              "queue-index": 20,
#              "last-avail-idx": 0,
#              "vring-used": 5182077248,
#              "used-idx": 0,
#              "shadow-avail-idx": 0,
#              "vring-num": 128
#          }
#        }
##
{ 'command': 'x-query-virtio-queue-status',
  'data': { 'path': 'str', 'queue': 'uint16' },
  'returns': 'VirtQueueStatus',
  'features': [ 'unstable' ] }

##
# @VirtVhostQueueStatus:
#
# Information of a vhost device's vhost_virtqueue, including most
# members of the vhost_dev vhost_virtqueue data structure.
#
# @name: Name of the VirtIODevice that uses this vhost_virtqueue
#
# @kick: vhost_virtqueue kick
#
# @call: vhost_virtqueue call
#
# @num: vhost_virtqueue num
#
# @desc-phys: vhost_virtqueue desc_phys (descriptor area physical
#     address)
#
# @desc-size: vhost_virtqueue desc_size
#
# @avail-phys: vhost_virtqueue avail_phys (driver area physical
#     address)
#
# @avail-size: vhost_virtqueue avail_size
#
# @used-phys: vhost_virtqueue used_phys (device area physical address)
#
# @used-size: vhost_virtqueue used_size
#
# Since: 7.2
##
{ 'struct': 'VirtVhostQueueStatus',
  'data': { 'name': 'str',
            'kick': 'int',
            'call': 'int',
            'num': 'int',
            'desc-phys': 'uint64',
            'desc-size': 'uint32',
            'avail-phys': 'uint64',
            'avail-size': 'uint32',
            'used-phys': 'uint64',
            'used-size': 'uint32' } }

##
# @x-query-virtio-vhost-queue-status:
#
# Return information of a given vhost device's vhost_virtqueue
#
# @path: VirtIODevice canonical QOM path
#
# @queue: vhost_virtqueue index to examine
#
# Features:
#
# @unstable: This command is meant for debugging.
#
# Returns: Status of the vhost_virtqueue
#
# Since: 7.2
#
# .. qmp-example::
#    :title: Get vhost_virtqueue status for vhost-crypto
#
#     -> { "execute": "x-query-virtio-vhost-queue-status",
#          "arguments": { "path": "/machine/peripheral/crypto0/virtio-backend",
#                         "queue": 0 }
#        }
#     <- { "return": {
#              "avail-phys": 5216124928,
#              "name": "virtio-crypto",
#              "used-phys": 5216127040,
#              "avail-size": 2054,
#              "desc-size": 16384,
#              "used-size": 8198,
#              "num": 1024,
#              "call": 0,
#              "desc-phys": 5216108544,
#              "kick": 0
#          }
#        }
#
# .. qmp-example::
#    :title: Get vhost_virtqueue status for vhost-vsock
#
#     -> { "execute": "x-query-virtio-vhost-queue-status",
#          "arguments": { "path": "/machine/peripheral/vsock0/virtio-backend",
#                         "queue": 0 }
#        }
#     <- { "return": {
#              "avail-phys": 5182261248,
#              "name": "vhost-vsock",
#              "used-phys": 5182261568,
#              "avail-size": 262,
#              "desc-size": 2048,
#              "used-size": 1030,
#              "num": 128,
#              "call": 0,
#              "desc-phys": 5182259200,
#              "kick": 0
#          }
#        }
##
{ 'command': 'x-query-virtio-vhost-queue-status',
  'data': { 'path': 'str', 'queue': 'uint16' },
  'returns': 'VirtVhostQueueStatus',
  'features': [ 'unstable' ] }

##
# @VirtioRingDesc:
#
# Information regarding the vring descriptor area
#
# @addr: Guest physical address of the descriptor area
#
# @len: Length of the descriptor area
#
# @flags: List of descriptor flags
#
# Since: 7.2
##
{ 'struct': 'VirtioRingDesc',
  'data': { 'addr': 'uint64',
            'len': 'uint32',
            'flags': [ 'str' ] } }

##
# @VirtioRingAvail:
#
# Information regarding the avail vring (a.k.a. driver area)
#
# @flags: VRingAvail flags
#
# @idx: VRingAvail index
#
# @ring: VRingAvail ring[] entry at provided index
#
# Since: 7.2
##
{ 'struct': 'VirtioRingAvail',
  'data': { 'flags': 'uint16',
            'idx': 'uint16',
            'ring': 'uint16' } }

##
# @VirtioRingUsed:
#
# Information regarding the used vring (a.k.a. device area)
#
# @flags: VRingUsed flags
#
# @idx: VRingUsed index
#
# Since: 7.2
##
{ 'struct': 'VirtioRingUsed',
  'data': { 'flags': 'uint16',
            'idx': 'uint16' } }

##
# @VirtioQueueElement:
#
# Information regarding a VirtQueue's VirtQueueElement including
# descriptor, driver, and device areas
#
# @name: Name of the VirtIODevice that uses this VirtQueue
#
# @index: Index of the element in the queue
#
# @descs: List of descriptors (`VirtioRingDesc`)
#
# @avail: VRingAvail info
#
# @used: VRingUsed info
#
# Since: 7.2
##
{ 'struct': 'VirtioQueueElement',
  'data': { 'name': 'str',
            'index': 'uint32',
            'descs': [ 'VirtioRingDesc' ],
            'avail': 'VirtioRingAvail',
            'used': 'VirtioRingUsed' } }

##
# @x-query-virtio-queue-element:
#
# Return the information about a VirtQueue's VirtQueueElement
#
# @path: VirtIODevice canonical QOM path
#
# @queue: VirtQueue index to examine
#
# @index: Index of the element in the queue (default: head of the
#     queue)
#
# Features:
#
# @unstable: This command is meant for debugging.
#
# Since: 7.2
#
# .. qmp-example::
#    :title: Introspect on virtio-net's VirtQueue 0 at index 5
#
#     -> { "execute": "x-query-virtio-queue-element",
#          "arguments": { "path": "/machine/peripheral-anon/device[1]/virtio-backend",
#                         "queue": 0,
#                         "index": 5 }
#        }
#     <- { "return": {
#              "index": 5,
#              "name": "virtio-net",
#              "descs": [
#                  {
#                      "flags": ["write"],
#                      "len": 1536,
#                      "addr": 5257305600
#                  }
#              ],
#              "avail": {
#                  "idx": 256,
#                  "flags": 0,
#                  "ring": 5
#              },
#              "used": {
#                  "idx": 13,
#                  "flags": 0
#              }
#          }
#        }
#
# .. qmp-example::
#    :title: Introspect on virtio-crypto's VirtQueue 1 at head
#
#     -> { "execute": "x-query-virtio-queue-element",
#          "arguments": { "path": "/machine/peripheral/crypto0/virtio-backend",
#                         "queue": 1 }
#        }
#     <- { "return": {
#              "index": 0,
#              "name": "virtio-crypto",
#              "descs": [
#                  {
#                      "flags": [],
#                      "len": 0,
#                      "addr": 8080268923184214134
#                  }
#              ],
#              "avail": {
#                  "idx": 280,
#                  "flags": 0,
#                  "ring": 0
#              },
#              "used": {
#                  "idx": 280,
#                  "flags": 0
#              }
#          }
#        }
#
# .. qmp-example::
#    :title: Introspect on virtio-scsi's VirtQueue 2 at head
#
#     -> { "execute": "x-query-virtio-queue-element",
#          "arguments": { "path": "/machine/peripheral-anon/device[2]/virtio-backend",
#                         "queue": 2 }
#        }
#     <- { "return": {
#              "index": 19,
#              "name": "virtio-scsi",
#              "descs": [
#                  {
#                      "flags": ["used", "indirect", "write"],
#                      "len": 4099327944,
#                      "addr": 12055409292258155293
#                  }
#              ],
#              "avail": {
#                  "idx": 1147,
#                  "flags": 0,
#                  "ring": 19
#              },
#              "used": {
#                  "idx": 280,
#                  "flags": 0
#              }
#          }
#        }
##
{ 'command': 'x-query-virtio-queue-element',
  'data': { 'path': 'str', 'queue': 'uint16', '*index': 'uint16' },
  'returns': 'VirtioQueueElement',
  'features': [ 'unstable' ] }

##
# @IOThreadVirtQueueMapping:
#
# Describes the subset of virtqueues assigned to an IOThread.
#
# @iothread: the id of IOThread object
#
# @vqs: an optional array of virtqueue indices that will be handled by
#     this IOThread.  When absent, virtqueues are assigned round-robin
#     across all IOThreadVirtQueueMappings provided.  Either all
#     IOThreadVirtQueueMappings must have @vqs or none of them must
#     have it.
#
# Since: 9.0
##
{ 'struct': 'IOThreadVirtQueueMapping',
  'data': { 'iothread': 'str', '*vqs': ['uint16'] } }

##
# @VirtIOGPUOutput:
#
# Describes configuration of a VirtIO GPU output.  If both @xres and
# @yres are set, they take precedence over root virtio-gpu resolution
# configuration and enable the corresponding output.  If none of @xres
# and @yres are set, root virtio-gpu resolution configuration takes
# precedence and only the first output is enabled.  Only setting one
# of @xres or @yres is an error.
#
# @name: the name of the output
#
# @xres: horizontal resolution of the output in pixels (since 11.0)
#
# @yres: vertical resolution of the output in pixels (since 11.0)
#
# Since: 10.1
##

{ 'struct': 'VirtIOGPUOutput',
  'data': { 'name': 'str', '*xres': 'uint16', '*yres': 'uint16' } }

##
# @DummyVirtioForceArrays:
#
# Not used by QMP; hack to let us use IOThreadVirtQueueMappingList and
# VirtIOGPUOutputList internally
#
# Since: 9.0
##
{ 'struct': 'DummyVirtioForceArrays',
  'data': { 'unused-iothread-vq-mapping': ['IOThreadVirtQueueMapping'],
            'unused-virtio-gpu-output': ['VirtIOGPUOutput'] } }

##
# @GranuleMode:
#
# @4k: granule page size of 4KiB
#
# @8k: granule page size of 8KiB
#
# @16k: granule page size of 16KiB
#
# @64k: granule page size of 64KiB
#
# @host: granule matches the host page size
#
# Since: 9.0
##
{ 'enum': 'GranuleMode',
  'data': [ '4k', '8k', '16k', '64k', 'host' ] }

##
# @VMAppleVirtioBlkVariant:
#
# @unspecified: The default, not a valid setting.
#
# @root: Block device holding the root volume
#
# @aux: Block device holding auxiliary data required for boot
#
# Since: 9.2
##
{ 'enum': 'VMAppleVirtioBlkVariant',
  'data': [ 'unspecified', 'root', 'aux' ] }
