123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008 |
- # -*- 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:
- #
- # Returns 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
- #
- # @backend-features: vhost_dev backend_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',
- 'backend-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: VirtioStatus 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,
- # "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
- #
- # Since: 7.2
- ##
- { 'struct': 'VirtioDeviceFeatures',
- 'data': { 'transports': [ 'str' ],
- '*dev-features': [ 'str' ],
- '*unknown-dev-features': '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: VirtQueueStatus of the VirtQueue
- #
- # .. 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
- #
- # @desc: vhost_virtqueue desc
- #
- # @avail: vhost_virtqueue avail
- #
- # @used: vhost_virtqueue used
- #
- # @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',
- 'desc': 'uint64',
- 'avail': 'uint64',
- 'used': 'uint64',
- '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: VirtVhostQueueStatus 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,
- # "desc": 140141447430144,
- # "num": 1024,
- # "call": 0,
- # "avail": 140141447446528,
- # "desc-phys": 5216108544,
- # "used": 140141447448640,
- # "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,
- # "desc": 140141413580800,
- # "num": 128,
- # "call": 0,
- # "avail": 140141413582848,
- # "desc-phys": 5182259200,
- # "used": 140141413583168,
- # "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.
- #
- # Returns: VirtioQueueElement information
- #
- # 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'] } }
- ##
- # @DummyVirtioForceArrays:
- #
- # Not used by QMP; hack to let us use IOThreadVirtQueueMappingList
- # internally
- #
- # Since: 9.0
- ##
- { 'struct': 'DummyVirtioForceArrays',
- 'data': { 'unused-iothread-vq-mapping': ['IOThreadVirtQueueMapping'] } }
- ##
- # @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' ] }
|