1a5ebce38SLaurent Vivier# -*- Mode: Python -*- 2a5ebce38SLaurent Vivier# vim: filetype=python 3a5ebce38SLaurent Vivier# 4a5ebce38SLaurent Vivier 5a5ebce38SLaurent Vivier## 6a5ebce38SLaurent Vivier# = Virtio devices 7a5ebce38SLaurent Vivier## 8a5ebce38SLaurent Vivier 9a5ebce38SLaurent Vivier## 10a5ebce38SLaurent Vivier# @VirtioInfo: 11a5ebce38SLaurent Vivier# 12a5ebce38SLaurent Vivier# Basic information about a given VirtIODevice 13a5ebce38SLaurent Vivier# 14a5ebce38SLaurent Vivier# @path: The VirtIODevice's canonical QOM path 15a5ebce38SLaurent Vivier# 16a5ebce38SLaurent Vivier# @name: Name of the VirtIODevice 17a5ebce38SLaurent Vivier# 1858379af7SHan Han# Since: 7.2 19a5ebce38SLaurent Vivier## 20a5ebce38SLaurent Vivier{ 'struct': 'VirtioInfo', 21a5ebce38SLaurent Vivier 'data': { 'path': 'str', 22a5ebce38SLaurent Vivier 'name': 'str' } } 23a5ebce38SLaurent Vivier 24a5ebce38SLaurent Vivier## 25a5ebce38SLaurent Vivier# @x-query-virtio: 26a5ebce38SLaurent Vivier# 27a5ebce38SLaurent Vivier# Returns a list of all realized VirtIODevices 28a5ebce38SLaurent Vivier# 29a5ebce38SLaurent Vivier# Features: 30a937b6aaSMarkus Armbruster# 31a5ebce38SLaurent Vivier# @unstable: This command is meant for debugging. 32a5ebce38SLaurent Vivier# 33a5ebce38SLaurent Vivier# Returns: List of gathered VirtIODevices 34a5ebce38SLaurent Vivier# 3558379af7SHan Han# Since: 7.2 36a5ebce38SLaurent Vivier# 3714b48aaaSJohn Snow# .. qmp-example:: 38a5ebce38SLaurent Vivier# 39a5ebce38SLaurent Vivier# -> { "execute": "x-query-virtio" } 40a5ebce38SLaurent Vivier# <- { "return": [ 41a5ebce38SLaurent Vivier# { 42a5ebce38SLaurent Vivier# "name": "virtio-input", 43a5ebce38SLaurent Vivier# "path": "/machine/peripheral-anon/device[4]/virtio-backend" 44a5ebce38SLaurent Vivier# }, 45a5ebce38SLaurent Vivier# { 46a5ebce38SLaurent Vivier# "name": "virtio-crypto", 47a5ebce38SLaurent Vivier# "path": "/machine/peripheral/crypto0/virtio-backend" 48a5ebce38SLaurent Vivier# }, 49a5ebce38SLaurent Vivier# { 50a5ebce38SLaurent Vivier# "name": "virtio-scsi", 51a5ebce38SLaurent Vivier# "path": "/machine/peripheral-anon/device[2]/virtio-backend" 52a5ebce38SLaurent Vivier# }, 53a5ebce38SLaurent Vivier# { 54a5ebce38SLaurent Vivier# "name": "virtio-net", 55a5ebce38SLaurent Vivier# "path": "/machine/peripheral-anon/device[1]/virtio-backend" 56a5ebce38SLaurent Vivier# }, 57a5ebce38SLaurent Vivier# { 58a5ebce38SLaurent Vivier# "name": "virtio-serial", 59a5ebce38SLaurent Vivier# "path": "/machine/peripheral-anon/device[0]/virtio-backend" 60a5ebce38SLaurent Vivier# } 61a5ebce38SLaurent Vivier# ] 62a5ebce38SLaurent Vivier# } 63a5ebce38SLaurent Vivier## 64a5ebce38SLaurent Vivier{ 'command': 'x-query-virtio', 65a5ebce38SLaurent Vivier 'returns': [ 'VirtioInfo' ], 66a5ebce38SLaurent Vivier 'features': [ 'unstable' ] } 6790c066cdSLaurent Vivier 6890c066cdSLaurent Vivier## 6990c066cdSLaurent Vivier# @VhostStatus: 7090c066cdSLaurent Vivier# 7190c066cdSLaurent Vivier# Information about a vhost device. This information will only be 7290c066cdSLaurent Vivier# displayed if the vhost device is active. 7390c066cdSLaurent Vivier# 7490c066cdSLaurent Vivier# @n-mem-sections: vhost_dev n_mem_sections 7590c066cdSLaurent Vivier# 7690c066cdSLaurent Vivier# @n-tmp-sections: vhost_dev n_tmp_sections 7790c066cdSLaurent Vivier# 7890c066cdSLaurent Vivier# @nvqs: vhost_dev nvqs (number of virtqueues being used) 7990c066cdSLaurent Vivier# 8090c066cdSLaurent Vivier# @vq-index: vhost_dev vq_index 8190c066cdSLaurent Vivier# 8290c066cdSLaurent Vivier# @features: vhost_dev features 8390c066cdSLaurent Vivier# 8490c066cdSLaurent Vivier# @acked-features: vhost_dev acked_features 8590c066cdSLaurent Vivier# 8690c066cdSLaurent Vivier# @backend-features: vhost_dev backend_features 8790c066cdSLaurent Vivier# 8890c066cdSLaurent Vivier# @protocol-features: vhost_dev protocol_features 8990c066cdSLaurent Vivier# 9090c066cdSLaurent Vivier# @max-queues: vhost_dev max_queues 9190c066cdSLaurent Vivier# 9290c066cdSLaurent Vivier# @backend-cap: vhost_dev backend_cap 9390c066cdSLaurent Vivier# 9490c066cdSLaurent Vivier# @log-enabled: vhost_dev log_enabled flag 9590c066cdSLaurent Vivier# 9690c066cdSLaurent Vivier# @log-size: vhost_dev log_size 9790c066cdSLaurent Vivier# 9858379af7SHan Han# Since: 7.2 9990c066cdSLaurent Vivier## 10090c066cdSLaurent Vivier{ 'struct': 'VhostStatus', 10190c066cdSLaurent Vivier 'data': { 'n-mem-sections': 'int', 10290c066cdSLaurent Vivier 'n-tmp-sections': 'int', 10390c066cdSLaurent Vivier 'nvqs': 'uint32', 10490c066cdSLaurent Vivier 'vq-index': 'int', 105f3034ad7SLaurent Vivier 'features': 'VirtioDeviceFeatures', 106f3034ad7SLaurent Vivier 'acked-features': 'VirtioDeviceFeatures', 107f3034ad7SLaurent Vivier 'backend-features': 'VirtioDeviceFeatures', 108f3034ad7SLaurent Vivier 'protocol-features': 'VhostDeviceProtocols', 10990c066cdSLaurent Vivier 'max-queues': 'uint64', 11090c066cdSLaurent Vivier 'backend-cap': 'uint64', 11190c066cdSLaurent Vivier 'log-enabled': 'bool', 11290c066cdSLaurent Vivier 'log-size': 'uint64' } } 11390c066cdSLaurent Vivier 11490c066cdSLaurent Vivier## 11590c066cdSLaurent Vivier# @VirtioStatus: 11690c066cdSLaurent Vivier# 11790c066cdSLaurent Vivier# Full status of the virtio device with most VirtIODevice members. 118a937b6aaSMarkus Armbruster# Also includes the full status of the corresponding vhost device if 119a937b6aaSMarkus Armbruster# the vhost device is active. 12090c066cdSLaurent Vivier# 12190c066cdSLaurent Vivier# @name: VirtIODevice name 12290c066cdSLaurent Vivier# 12390c066cdSLaurent Vivier# @device-id: VirtIODevice ID 12490c066cdSLaurent Vivier# 12590c066cdSLaurent Vivier# @vhost-started: VirtIODevice vhost_started flag 12690c066cdSLaurent Vivier# 12790c066cdSLaurent Vivier# @guest-features: VirtIODevice guest_features 12890c066cdSLaurent Vivier# 12990c066cdSLaurent Vivier# @host-features: VirtIODevice host_features 13090c066cdSLaurent Vivier# 13190c066cdSLaurent Vivier# @backend-features: VirtIODevice backend_features 13290c066cdSLaurent Vivier# 13390c066cdSLaurent Vivier# @device-endian: VirtIODevice device_endian 13490c066cdSLaurent Vivier# 135a937b6aaSMarkus Armbruster# @num-vqs: VirtIODevice virtqueue count. This is the number of 136a937b6aaSMarkus Armbruster# active virtqueues being used by the VirtIODevice. 13790c066cdSLaurent Vivier# 13890c066cdSLaurent Vivier# @status: VirtIODevice configuration status (VirtioDeviceStatus) 13990c066cdSLaurent Vivier# 14090c066cdSLaurent Vivier# @isr: VirtIODevice ISR 14190c066cdSLaurent Vivier# 14290c066cdSLaurent Vivier# @queue-sel: VirtIODevice queue_sel 14390c066cdSLaurent Vivier# 14490c066cdSLaurent Vivier# @vm-running: VirtIODevice vm_running flag 14590c066cdSLaurent Vivier# 14690c066cdSLaurent Vivier# @broken: VirtIODevice broken flag 14790c066cdSLaurent Vivier# 14890c066cdSLaurent Vivier# @disabled: VirtIODevice disabled flag 14990c066cdSLaurent Vivier# 15090c066cdSLaurent Vivier# @use-started: VirtIODevice use_started flag 15190c066cdSLaurent Vivier# 15290c066cdSLaurent Vivier# @started: VirtIODevice started flag 15390c066cdSLaurent Vivier# 15490c066cdSLaurent Vivier# @start-on-kick: VirtIODevice start_on_kick flag 15590c066cdSLaurent Vivier# 15690c066cdSLaurent Vivier# @disable-legacy-check: VirtIODevice disabled_legacy_check flag 15790c066cdSLaurent Vivier# 15890c066cdSLaurent Vivier# @bus-name: VirtIODevice bus_name 15990c066cdSLaurent Vivier# 16090c066cdSLaurent Vivier# @use-guest-notifier-mask: VirtIODevice use_guest_notifier_mask flag 16190c066cdSLaurent Vivier# 162a937b6aaSMarkus Armbruster# @vhost-dev: Corresponding vhost device info for a given 163a937b6aaSMarkus Armbruster# VirtIODevice. Present if the given VirtIODevice has an active 164a937b6aaSMarkus Armbruster# vhost device. 16590c066cdSLaurent Vivier# 16658379af7SHan Han# Since: 7.2 16790c066cdSLaurent Vivier## 16890c066cdSLaurent Vivier{ 'struct': 'VirtioStatus', 16990c066cdSLaurent Vivier 'data': { 'name': 'str', 17090c066cdSLaurent Vivier 'device-id': 'uint16', 17190c066cdSLaurent Vivier 'vhost-started': 'bool', 17290c066cdSLaurent Vivier 'device-endian': 'str', 173f3034ad7SLaurent Vivier 'guest-features': 'VirtioDeviceFeatures', 174f3034ad7SLaurent Vivier 'host-features': 'VirtioDeviceFeatures', 175f3034ad7SLaurent Vivier 'backend-features': 'VirtioDeviceFeatures', 17690c066cdSLaurent Vivier 'num-vqs': 'int', 177f3034ad7SLaurent Vivier 'status': 'VirtioDeviceStatus', 17890c066cdSLaurent Vivier 'isr': 'uint8', 17990c066cdSLaurent Vivier 'queue-sel': 'uint16', 18090c066cdSLaurent Vivier 'vm-running': 'bool', 18190c066cdSLaurent Vivier 'broken': 'bool', 18290c066cdSLaurent Vivier 'disabled': 'bool', 18390c066cdSLaurent Vivier 'use-started': 'bool', 18490c066cdSLaurent Vivier 'started': 'bool', 18590c066cdSLaurent Vivier 'start-on-kick': 'bool', 18690c066cdSLaurent Vivier 'disable-legacy-check': 'bool', 18790c066cdSLaurent Vivier 'bus-name': 'str', 18890c066cdSLaurent Vivier 'use-guest-notifier-mask': 'bool', 18990c066cdSLaurent Vivier '*vhost-dev': 'VhostStatus' } } 19090c066cdSLaurent Vivier 19190c066cdSLaurent Vivier## 19290c066cdSLaurent Vivier# @x-query-virtio-status: 19390c066cdSLaurent Vivier# 19490c066cdSLaurent Vivier# Poll for a comprehensive status of a given virtio device 19590c066cdSLaurent Vivier# 19690c066cdSLaurent Vivier# @path: Canonical QOM path of the VirtIODevice 19790c066cdSLaurent Vivier# 19890c066cdSLaurent Vivier# Features: 199a937b6aaSMarkus Armbruster# 20090c066cdSLaurent Vivier# @unstable: This command is meant for debugging. 20190c066cdSLaurent Vivier# 20290c066cdSLaurent Vivier# Returns: VirtioStatus of the virtio device 20390c066cdSLaurent Vivier# 20458379af7SHan Han# Since: 7.2 20590c066cdSLaurent Vivier# 2066f07c59fSJohn Snow# .. qmp-example:: 2076f07c59fSJohn Snow# :annotated: 20890c066cdSLaurent Vivier# 2096f07c59fSJohn Snow# Poll for the status of virtio-crypto (no vhost-crypto active) 2106f07c59fSJohn Snow# :: 21190c066cdSLaurent Vivier# 21290c066cdSLaurent Vivier# -> { "execute": "x-query-virtio-status", 21390c066cdSLaurent Vivier# "arguments": { "path": "/machine/peripheral/crypto0/virtio-backend" } 21490c066cdSLaurent Vivier# } 21590c066cdSLaurent Vivier# <- { "return": { 21690c066cdSLaurent Vivier# "device-endian": "little", 21790c066cdSLaurent Vivier# "bus-name": "", 21890c066cdSLaurent Vivier# "disable-legacy-check": false, 21990c066cdSLaurent Vivier# "name": "virtio-crypto", 22090c066cdSLaurent Vivier# "started": true, 22190c066cdSLaurent Vivier# "device-id": 20, 222f3034ad7SLaurent Vivier# "backend-features": { 223f3034ad7SLaurent Vivier# "transports": [], 224f3034ad7SLaurent Vivier# "dev-features": [] 225f3034ad7SLaurent Vivier# }, 22690c066cdSLaurent Vivier# "start-on-kick": false, 22790c066cdSLaurent Vivier# "isr": 1, 22890c066cdSLaurent Vivier# "broken": false, 229f3034ad7SLaurent Vivier# "status": { 230f3034ad7SLaurent Vivier# "statuses": [ 231f3034ad7SLaurent Vivier# "VIRTIO_CONFIG_S_ACKNOWLEDGE: Valid virtio device found", 232f3034ad7SLaurent Vivier# "VIRTIO_CONFIG_S_DRIVER: Guest OS compatible with device", 233f3034ad7SLaurent Vivier# "VIRTIO_CONFIG_S_FEATURES_OK: Feature negotiation complete", 234f3034ad7SLaurent Vivier# "VIRTIO_CONFIG_S_DRIVER_OK: Driver setup and ready" 235f3034ad7SLaurent Vivier# ] 236f3034ad7SLaurent Vivier# }, 23790c066cdSLaurent Vivier# "num-vqs": 2, 238f3034ad7SLaurent Vivier# "guest-features": { 239f3034ad7SLaurent Vivier# "dev-features": [], 240f3034ad7SLaurent Vivier# "transports": [ 241f3034ad7SLaurent Vivier# "VIRTIO_RING_F_EVENT_IDX: Used & avail. event fields enabled", 242f3034ad7SLaurent Vivier# "VIRTIO_RING_F_INDIRECT_DESC: Indirect descriptors supported", 243f3034ad7SLaurent Vivier# "VIRTIO_F_VERSION_1: Device compliant for v1 spec (legacy)" 244f3034ad7SLaurent Vivier# ] 245f3034ad7SLaurent Vivier# }, 246f3034ad7SLaurent Vivier# "host-features": { 247f3034ad7SLaurent Vivier# "unknown-dev-features": 1073741824, 248f3034ad7SLaurent Vivier# "dev-features": [], 249f3034ad7SLaurent Vivier# "transports": [ 250f3034ad7SLaurent Vivier# "VIRTIO_RING_F_EVENT_IDX: Used & avail. event fields enabled", 251f3034ad7SLaurent Vivier# "VIRTIO_RING_F_INDIRECT_DESC: Indirect descriptors supported", 252f3034ad7SLaurent Vivier# "VIRTIO_F_VERSION_1: Device compliant for v1 spec (legacy)", 253f3034ad7SLaurent Vivier# "VIRTIO_F_ANY_LAYOUT: Device accepts arbitrary desc. layouts", 254f3034ad7SLaurent Vivier# "VIRTIO_F_NOTIFY_ON_EMPTY: Notify when device runs out of avail. descs. on VQ" 255f3034ad7SLaurent Vivier# ] 256f3034ad7SLaurent Vivier# }, 25790c066cdSLaurent Vivier# "use-guest-notifier-mask": true, 25890c066cdSLaurent Vivier# "vm-running": true, 25990c066cdSLaurent Vivier# "queue-sel": 1, 26090c066cdSLaurent Vivier# "disabled": false, 26190c066cdSLaurent Vivier# "vhost-started": false, 26290c066cdSLaurent Vivier# "use-started": true 26390c066cdSLaurent Vivier# } 26490c066cdSLaurent Vivier# } 26590c066cdSLaurent Vivier# 2666f07c59fSJohn Snow# .. qmp-example:: 2676f07c59fSJohn Snow# :annotated: 2686f07c59fSJohn Snow# 2696f07c59fSJohn Snow# Poll for the status of virtio-net (vhost-net is active) 2706f07c59fSJohn Snow# :: 27190c066cdSLaurent Vivier# 27290c066cdSLaurent Vivier# -> { "execute": "x-query-virtio-status", 27390c066cdSLaurent Vivier# "arguments": { "path": "/machine/peripheral-anon/device[1]/virtio-backend" } 27490c066cdSLaurent Vivier# } 27590c066cdSLaurent Vivier# <- { "return": { 27690c066cdSLaurent Vivier# "device-endian": "little", 27790c066cdSLaurent Vivier# "bus-name": "", 27890c066cdSLaurent Vivier# "disabled-legacy-check": false, 27990c066cdSLaurent Vivier# "name": "virtio-net", 28090c066cdSLaurent Vivier# "started": true, 28190c066cdSLaurent Vivier# "device-id": 1, 28290c066cdSLaurent Vivier# "vhost-dev": { 28390c066cdSLaurent Vivier# "n-tmp-sections": 4, 28490c066cdSLaurent Vivier# "n-mem-sections": 4, 28590c066cdSLaurent Vivier# "max-queues": 1, 28690c066cdSLaurent Vivier# "backend-cap": 2, 28790c066cdSLaurent Vivier# "log-size": 0, 288f3034ad7SLaurent Vivier# "backend-features": { 289f3034ad7SLaurent Vivier# "dev-features": [], 290f3034ad7SLaurent Vivier# "transports": [] 291f3034ad7SLaurent Vivier# }, 29290c066cdSLaurent Vivier# "nvqs": 2, 293f3034ad7SLaurent Vivier# "protocol-features": { 294f3034ad7SLaurent Vivier# "protocols": [] 295f3034ad7SLaurent Vivier# }, 29690c066cdSLaurent Vivier# "vq-index": 0, 29790c066cdSLaurent Vivier# "log-enabled": false, 298f3034ad7SLaurent Vivier# "acked-features": { 299f3034ad7SLaurent Vivier# "dev-features": [ 300f3034ad7SLaurent Vivier# "VIRTIO_NET_F_MRG_RXBUF: Driver can merge receive buffers" 301f3034ad7SLaurent Vivier# ], 302f3034ad7SLaurent Vivier# "transports": [ 303f3034ad7SLaurent Vivier# "VIRTIO_RING_F_EVENT_IDX: Used & avail. event fields enabled", 304f3034ad7SLaurent Vivier# "VIRTIO_RING_F_INDIRECT_DESC: Indirect descriptors supported", 305f3034ad7SLaurent Vivier# "VIRTIO_F_VERSION_1: Device compliant for v1 spec (legacy)" 306f3034ad7SLaurent Vivier# ] 30790c066cdSLaurent Vivier# }, 308f3034ad7SLaurent Vivier# "features": { 309f3034ad7SLaurent Vivier# "dev-features": [ 310f3034ad7SLaurent Vivier# "VHOST_F_LOG_ALL: Logging write descriptors supported", 311f3034ad7SLaurent Vivier# "VIRTIO_NET_F_MRG_RXBUF: Driver can merge receive buffers" 312f3034ad7SLaurent Vivier# ], 313f3034ad7SLaurent Vivier# "transports": [ 314f3034ad7SLaurent Vivier# "VIRTIO_RING_F_EVENT_IDX: Used & avail. event fields enabled", 315f3034ad7SLaurent Vivier# "VIRTIO_RING_F_INDIRECT_DESC: Indirect descriptors supported", 316f3034ad7SLaurent Vivier# "VIRTIO_F_IOMMU_PLATFORM: Device can be used on IOMMU platform", 317f3034ad7SLaurent Vivier# "VIRTIO_F_VERSION_1: Device compliant for v1 spec (legacy)", 318f3034ad7SLaurent Vivier# "VIRTIO_F_ANY_LAYOUT: Device accepts arbitrary desc. layouts", 319f3034ad7SLaurent Vivier# "VIRTIO_F_NOTIFY_ON_EMPTY: Notify when device runs out of avail. descs. on VQ" 320f3034ad7SLaurent Vivier# ] 321f3034ad7SLaurent Vivier# } 322f3034ad7SLaurent Vivier# }, 323f3034ad7SLaurent Vivier# "backend-features": { 324f3034ad7SLaurent Vivier# "dev-features": [ 3252cb40d44SStefan Weil# "VHOST_USER_F_PROTOCOL_FEATURES: Vhost-user protocol features negotiation supported", 326f3034ad7SLaurent Vivier# "VIRTIO_NET_F_GSO: Handling GSO-type packets supported", 327f3034ad7SLaurent Vivier# "VIRTIO_NET_F_CTRL_MAC_ADDR: MAC address set through control channel", 328f3034ad7SLaurent Vivier# "VIRTIO_NET_F_GUEST_ANNOUNCE: Driver sending gratuitous packets supported", 329f3034ad7SLaurent Vivier# "VIRTIO_NET_F_CTRL_RX_EXTRA: Extra RX mode control supported", 330f3034ad7SLaurent Vivier# "VIRTIO_NET_F_CTRL_VLAN: Control channel VLAN filtering supported", 331f3034ad7SLaurent Vivier# "VIRTIO_NET_F_CTRL_RX: Control channel RX mode supported", 332f3034ad7SLaurent Vivier# "VIRTIO_NET_F_CTRL_VQ: Control channel available", 333f3034ad7SLaurent Vivier# "VIRTIO_NET_F_STATUS: Configuration status field available", 334f3034ad7SLaurent Vivier# "VIRTIO_NET_F_MRG_RXBUF: Driver can merge receive buffers", 335f3034ad7SLaurent Vivier# "VIRTIO_NET_F_HOST_UFO: Device can receive UFO", 336f3034ad7SLaurent Vivier# "VIRTIO_NET_F_HOST_ECN: Device can receive TSO with ECN", 337f3034ad7SLaurent Vivier# "VIRTIO_NET_F_HOST_TSO6: Device can receive TSOv6", 338f3034ad7SLaurent Vivier# "VIRTIO_NET_F_HOST_TSO4: Device can receive TSOv4", 339f3034ad7SLaurent Vivier# "VIRTIO_NET_F_GUEST_UFO: Driver can receive UFO", 340f3034ad7SLaurent Vivier# "VIRTIO_NET_F_GUEST_ECN: Driver can receive TSO with ECN", 341f3034ad7SLaurent Vivier# "VIRTIO_NET_F_GUEST_TSO6: Driver can receive TSOv6", 342f3034ad7SLaurent Vivier# "VIRTIO_NET_F_GUEST_TSO4: Driver can receive TSOv4", 343f3034ad7SLaurent Vivier# "VIRTIO_NET_F_MAC: Device has given MAC address", 344f3034ad7SLaurent Vivier# "VIRTIO_NET_F_CTRL_GUEST_OFFLOADS: Control channel offloading reconfig. supported", 345f3034ad7SLaurent Vivier# "VIRTIO_NET_F_GUEST_CSUM: Driver handling packets with partial checksum supported", 346f3034ad7SLaurent Vivier# "VIRTIO_NET_F_CSUM: Device handling packets with partial checksum supported" 347f3034ad7SLaurent Vivier# ], 348f3034ad7SLaurent Vivier# "transports": [ 349f3034ad7SLaurent Vivier# "VIRTIO_RING_F_EVENT_IDX: Used & avail. event fields enabled", 350f3034ad7SLaurent Vivier# "VIRTIO_RING_F_INDIRECT_DESC: Indirect descriptors supported", 351f3034ad7SLaurent Vivier# "VIRTIO_F_VERSION_1: Device compliant for v1 spec (legacy)", 352f3034ad7SLaurent Vivier# "VIRTIO_F_ANY_LAYOUT: Device accepts arbitrary desc. layouts", 353f3034ad7SLaurent Vivier# "VIRTIO_F_NOTIFY_ON_EMPTY: Notify when device runs out of avail. descs. on VQ" 354f3034ad7SLaurent Vivier# ] 355f3034ad7SLaurent Vivier# }, 35690c066cdSLaurent Vivier# "start-on-kick": false, 35790c066cdSLaurent Vivier# "isr": 1, 35890c066cdSLaurent Vivier# "broken": false, 359f3034ad7SLaurent Vivier# "status": { 360f3034ad7SLaurent Vivier# "statuses": [ 361f3034ad7SLaurent Vivier# "VIRTIO_CONFIG_S_ACKNOWLEDGE: Valid virtio device found", 362f3034ad7SLaurent Vivier# "VIRTIO_CONFIG_S_DRIVER: Guest OS compatible with device", 363f3034ad7SLaurent Vivier# "VIRTIO_CONFIG_S_FEATURES_OK: Feature negotiation complete", 364f3034ad7SLaurent Vivier# "VIRTIO_CONFIG_S_DRIVER_OK: Driver setup and ready" 365f3034ad7SLaurent Vivier# ] 366f3034ad7SLaurent Vivier# }, 36790c066cdSLaurent Vivier# "num-vqs": 3, 368f3034ad7SLaurent Vivier# "guest-features": { 369f3034ad7SLaurent Vivier# "dev-features": [ 370f3034ad7SLaurent Vivier# "VIRTIO_NET_F_CTRL_MAC_ADDR: MAC address set through control channel", 371f3034ad7SLaurent Vivier# "VIRTIO_NET_F_GUEST_ANNOUNCE: Driver sending gratuitous packets supported", 372f3034ad7SLaurent Vivier# "VIRTIO_NET_F_CTRL_VLAN: Control channel VLAN filtering supported", 373f3034ad7SLaurent Vivier# "VIRTIO_NET_F_CTRL_RX: Control channel RX mode supported", 374f3034ad7SLaurent Vivier# "VIRTIO_NET_F_CTRL_VQ: Control channel available", 375f3034ad7SLaurent Vivier# "VIRTIO_NET_F_STATUS: Configuration status field available", 376f3034ad7SLaurent Vivier# "VIRTIO_NET_F_MRG_RXBUF: Driver can merge receive buffers", 377f3034ad7SLaurent Vivier# "VIRTIO_NET_F_HOST_UFO: Device can receive UFO", 378f3034ad7SLaurent Vivier# "VIRTIO_NET_F_HOST_ECN: Device can receive TSO with ECN", 379f3034ad7SLaurent Vivier# "VIRTIO_NET_F_HOST_TSO6: Device can receive TSOv6", 380f3034ad7SLaurent Vivier# "VIRTIO_NET_F_HOST_TSO4: Device can receive TSOv4", 381f3034ad7SLaurent Vivier# "VIRTIO_NET_F_GUEST_UFO: Driver can receive UFO", 382f3034ad7SLaurent Vivier# "VIRTIO_NET_F_GUEST_ECN: Driver can receive TSO with ECN", 383f3034ad7SLaurent Vivier# "VIRTIO_NET_F_GUEST_TSO6: Driver can receive TSOv6", 384f3034ad7SLaurent Vivier# "VIRTIO_NET_F_GUEST_TSO4: Driver can receive TSOv4", 385f3034ad7SLaurent Vivier# "VIRTIO_NET_F_MAC: Device has given MAC address", 386f3034ad7SLaurent Vivier# "VIRTIO_NET_F_CTRL_GUEST_OFFLOADS: Control channel offloading reconfig. supported", 387f3034ad7SLaurent Vivier# "VIRTIO_NET_F_GUEST_CSUM: Driver handling packets with partial checksum supported", 388f3034ad7SLaurent Vivier# "VIRTIO_NET_F_CSUM: Device handling packets with partial checksum supported" 389f3034ad7SLaurent Vivier# ], 390f3034ad7SLaurent Vivier# "transports": [ 391f3034ad7SLaurent Vivier# "VIRTIO_RING_F_EVENT_IDX: Used & avail. event fields enabled", 392f3034ad7SLaurent Vivier# "VIRTIO_RING_F_INDIRECT_DESC: Indirect descriptors supported", 393f3034ad7SLaurent Vivier# "VIRTIO_F_VERSION_1: Device compliant for v1 spec (legacy)" 394f3034ad7SLaurent Vivier# ] 395f3034ad7SLaurent Vivier# }, 396f3034ad7SLaurent Vivier# "host-features": { 397f3034ad7SLaurent Vivier# "dev-features": [ 3982cb40d44SStefan Weil# "VHOST_USER_F_PROTOCOL_FEATURES: Vhost-user protocol features negotiation supported", 399f3034ad7SLaurent Vivier# "VIRTIO_NET_F_GSO: Handling GSO-type packets supported", 400f3034ad7SLaurent Vivier# "VIRTIO_NET_F_CTRL_MAC_ADDR: MAC address set through control channel", 401f3034ad7SLaurent Vivier# "VIRTIO_NET_F_GUEST_ANNOUNCE: Driver sending gratuitous packets supported", 402f3034ad7SLaurent Vivier# "VIRTIO_NET_F_CTRL_RX_EXTRA: Extra RX mode control supported", 403f3034ad7SLaurent Vivier# "VIRTIO_NET_F_CTRL_VLAN: Control channel VLAN filtering supported", 404f3034ad7SLaurent Vivier# "VIRTIO_NET_F_CTRL_RX: Control channel RX mode supported", 405f3034ad7SLaurent Vivier# "VIRTIO_NET_F_CTRL_VQ: Control channel available", 406f3034ad7SLaurent Vivier# "VIRTIO_NET_F_STATUS: Configuration status field available", 407f3034ad7SLaurent Vivier# "VIRTIO_NET_F_MRG_RXBUF: Driver can merge receive buffers", 408f3034ad7SLaurent Vivier# "VIRTIO_NET_F_HOST_UFO: Device can receive UFO", 409f3034ad7SLaurent Vivier# "VIRTIO_NET_F_HOST_ECN: Device can receive TSO with ECN", 410f3034ad7SLaurent Vivier# "VIRTIO_NET_F_HOST_TSO6: Device can receive TSOv6", 411f3034ad7SLaurent Vivier# "VIRTIO_NET_F_HOST_TSO4: Device can receive TSOv4", 412f3034ad7SLaurent Vivier# "VIRTIO_NET_F_GUEST_UFO: Driver can receive UFO", 413f3034ad7SLaurent Vivier# "VIRTIO_NET_F_GUEST_ECN: Driver can receive TSO with ECN", 414f3034ad7SLaurent Vivier# "VIRTIO_NET_F_GUEST_TSO6: Driver can receive TSOv6", 415f3034ad7SLaurent Vivier# "VIRTIO_NET_F_GUEST_TSO4: Driver can receive TSOv4", 416f3034ad7SLaurent Vivier# "VIRTIO_NET_F_MAC: Device has given MAC address", 417f3034ad7SLaurent Vivier# "VIRTIO_NET_F_CTRL_GUEST_OFFLOADS: Control channel offloading reconfig. supported", 418f3034ad7SLaurent Vivier# "VIRTIO_NET_F_GUEST_CSUM: Driver handling packets with partial checksum supported", 419f3034ad7SLaurent Vivier# "VIRTIO_NET_F_CSUM: Device handling packets with partial checksum supported" 420f3034ad7SLaurent Vivier# ], 421f3034ad7SLaurent Vivier# "transports": [ 422f3034ad7SLaurent Vivier# "VIRTIO_RING_F_EVENT_IDX: Used & avail. event fields enabled", 423f3034ad7SLaurent Vivier# "VIRTIO_RING_F_INDIRECT_DESC: Indirect descriptors supported", 424f3034ad7SLaurent Vivier# "VIRTIO_F_VERSION_1: Device compliant for v1 spec (legacy)", 425f3034ad7SLaurent Vivier# "VIRTIO_F_ANY_LAYOUT: Device accepts arbitrary desc. layouts", 426f3034ad7SLaurent Vivier# "VIRTIO_F_NOTIFY_ON_EMPTY: Notify when device runs out of avail. descs. on VQ" 427f3034ad7SLaurent Vivier# ] 428f3034ad7SLaurent Vivier# }, 42990c066cdSLaurent Vivier# "use-guest-notifier-mask": true, 43090c066cdSLaurent Vivier# "vm-running": true, 43190c066cdSLaurent Vivier# "queue-sel": 2, 43290c066cdSLaurent Vivier# "disabled": false, 43390c066cdSLaurent Vivier# "vhost-started": true, 43490c066cdSLaurent Vivier# "use-started": true 43590c066cdSLaurent Vivier# } 43690c066cdSLaurent Vivier# } 43790c066cdSLaurent Vivier## 43890c066cdSLaurent Vivier{ 'command': 'x-query-virtio-status', 43990c066cdSLaurent Vivier 'data': { 'path': 'str' }, 44090c066cdSLaurent Vivier 'returns': 'VirtioStatus', 44190c066cdSLaurent Vivier 'features': [ 'unstable' ] } 442f3034ad7SLaurent Vivier 443f3034ad7SLaurent Vivier## 444f3034ad7SLaurent Vivier# @VirtioDeviceStatus: 445f3034ad7SLaurent Vivier# 446f3034ad7SLaurent Vivier# A structure defined to list the configuration statuses of a virtio 447f3034ad7SLaurent Vivier# device 448f3034ad7SLaurent Vivier# 449f3034ad7SLaurent Vivier# @statuses: List of decoded configuration statuses of the virtio 450f3034ad7SLaurent Vivier# device 451f3034ad7SLaurent Vivier# 452a937b6aaSMarkus Armbruster# @unknown-statuses: Virtio device statuses bitmap that have not been 453a937b6aaSMarkus Armbruster# decoded 454f3034ad7SLaurent Vivier# 45558379af7SHan Han# Since: 7.2 456f3034ad7SLaurent Vivier## 457f3034ad7SLaurent Vivier{ 'struct': 'VirtioDeviceStatus', 458f3034ad7SLaurent Vivier 'data': { 'statuses': [ 'str' ], 459f3034ad7SLaurent Vivier '*unknown-statuses': 'uint8' } } 460f3034ad7SLaurent Vivier 461f3034ad7SLaurent Vivier## 462f3034ad7SLaurent Vivier# @VhostDeviceProtocols: 463f3034ad7SLaurent Vivier# 464f3034ad7SLaurent Vivier# A structure defined to list the vhost user protocol features of a 465f3034ad7SLaurent Vivier# Vhost User device 466f3034ad7SLaurent Vivier# 467f3034ad7SLaurent Vivier# @protocols: List of decoded vhost user protocol features of a vhost 468f3034ad7SLaurent Vivier# user device 469f3034ad7SLaurent Vivier# 470f3034ad7SLaurent Vivier# @unknown-protocols: Vhost user device protocol features bitmap that 471f3034ad7SLaurent Vivier# have not been decoded 472f3034ad7SLaurent Vivier# 47358379af7SHan Han# Since: 7.2 474f3034ad7SLaurent Vivier## 475f3034ad7SLaurent Vivier{ 'struct': 'VhostDeviceProtocols', 476f3034ad7SLaurent Vivier 'data': { 'protocols': [ 'str' ], 477f3034ad7SLaurent Vivier '*unknown-protocols': 'uint64' } } 478f3034ad7SLaurent Vivier 479f3034ad7SLaurent Vivier## 480f3034ad7SLaurent Vivier# @VirtioDeviceFeatures: 481f3034ad7SLaurent Vivier# 482f3034ad7SLaurent Vivier# The common fields that apply to most Virtio devices. Some devices 483f3034ad7SLaurent Vivier# may not have their own device-specific features (e.g. virtio-rng). 484f3034ad7SLaurent Vivier# 485f3034ad7SLaurent Vivier# @transports: List of transport features of the virtio device 486f3034ad7SLaurent Vivier# 487f3034ad7SLaurent Vivier# @dev-features: List of device-specific features (if the device has 488f3034ad7SLaurent Vivier# unique features) 489f3034ad7SLaurent Vivier# 490f3034ad7SLaurent Vivier# @unknown-dev-features: Virtio device features bitmap that have not 491f3034ad7SLaurent Vivier# been decoded 492f3034ad7SLaurent Vivier# 49358379af7SHan Han# Since: 7.2 494f3034ad7SLaurent Vivier## 495f3034ad7SLaurent Vivier{ 'struct': 'VirtioDeviceFeatures', 496f3034ad7SLaurent Vivier 'data': { 'transports': [ 'str' ], 497f3034ad7SLaurent Vivier '*dev-features': [ 'str' ], 498f3034ad7SLaurent Vivier '*unknown-dev-features': 'uint64' } } 49907536dddSLaurent Vivier 50007536dddSLaurent Vivier## 50107536dddSLaurent Vivier# @VirtQueueStatus: 50207536dddSLaurent Vivier# 50307536dddSLaurent Vivier# Information of a VirtIODevice VirtQueue, including most members of 50407536dddSLaurent Vivier# the VirtQueue data structure. 50507536dddSLaurent Vivier# 50607536dddSLaurent Vivier# @name: Name of the VirtIODevice that uses this VirtQueue 50707536dddSLaurent Vivier# 50807536dddSLaurent Vivier# @queue-index: VirtQueue queue_index 50907536dddSLaurent Vivier# 51007536dddSLaurent Vivier# @inuse: VirtQueue inuse 51107536dddSLaurent Vivier# 51207536dddSLaurent Vivier# @vring-num: VirtQueue vring.num 51307536dddSLaurent Vivier# 51407536dddSLaurent Vivier# @vring-num-default: VirtQueue vring.num_default 51507536dddSLaurent Vivier# 51607536dddSLaurent Vivier# @vring-align: VirtQueue vring.align 51707536dddSLaurent Vivier# 51807536dddSLaurent Vivier# @vring-desc: VirtQueue vring.desc (descriptor area) 51907536dddSLaurent Vivier# 52007536dddSLaurent Vivier# @vring-avail: VirtQueue vring.avail (driver area) 52107536dddSLaurent Vivier# 52207536dddSLaurent Vivier# @vring-used: VirtQueue vring.used (device area) 52307536dddSLaurent Vivier# 52407536dddSLaurent Vivier# @last-avail-idx: VirtQueue last_avail_idx or return of vhost_dev 52507536dddSLaurent Vivier# vhost_get_vring_base (if vhost active) 52607536dddSLaurent Vivier# 52707536dddSLaurent Vivier# @shadow-avail-idx: VirtQueue shadow_avail_idx 52807536dddSLaurent Vivier# 52907536dddSLaurent Vivier# @used-idx: VirtQueue used_idx 53007536dddSLaurent Vivier# 53107536dddSLaurent Vivier# @signalled-used: VirtQueue signalled_used 53207536dddSLaurent Vivier# 53307536dddSLaurent Vivier# @signalled-used-valid: VirtQueue signalled_used_valid flag 53407536dddSLaurent Vivier# 53558379af7SHan Han# Since: 7.2 53607536dddSLaurent Vivier## 53707536dddSLaurent Vivier{ 'struct': 'VirtQueueStatus', 53807536dddSLaurent Vivier 'data': { 'name': 'str', 53907536dddSLaurent Vivier 'queue-index': 'uint16', 54007536dddSLaurent Vivier 'inuse': 'uint32', 54107536dddSLaurent Vivier 'vring-num': 'uint32', 54207536dddSLaurent Vivier 'vring-num-default': 'uint32', 54307536dddSLaurent Vivier 'vring-align': 'uint32', 54407536dddSLaurent Vivier 'vring-desc': 'uint64', 54507536dddSLaurent Vivier 'vring-avail': 'uint64', 54607536dddSLaurent Vivier 'vring-used': 'uint64', 54707536dddSLaurent Vivier '*last-avail-idx': 'uint16', 54807536dddSLaurent Vivier '*shadow-avail-idx': 'uint16', 54907536dddSLaurent Vivier 'used-idx': 'uint16', 55007536dddSLaurent Vivier 'signalled-used': 'uint16', 55107536dddSLaurent Vivier 'signalled-used-valid': 'bool' } } 55207536dddSLaurent Vivier 55307536dddSLaurent Vivier## 55407536dddSLaurent Vivier# @x-query-virtio-queue-status: 55507536dddSLaurent Vivier# 55607536dddSLaurent Vivier# Return the status of a given VirtIODevice's VirtQueue 55707536dddSLaurent Vivier# 55807536dddSLaurent Vivier# @path: VirtIODevice canonical QOM path 55907536dddSLaurent Vivier# 56007536dddSLaurent Vivier# @queue: VirtQueue index to examine 56107536dddSLaurent Vivier# 56207536dddSLaurent Vivier# Features: 563a937b6aaSMarkus Armbruster# 56407536dddSLaurent Vivier# @unstable: This command is meant for debugging. 56507536dddSLaurent Vivier# 56607536dddSLaurent Vivier# Returns: VirtQueueStatus of the VirtQueue 56707536dddSLaurent Vivier# 568d461c279SJohn Snow# .. note:: last_avail_idx will not be displayed in the case where the 569a937b6aaSMarkus Armbruster# selected VirtIODevice has a running vhost device and the 570a937b6aaSMarkus Armbruster# VirtIODevice VirtQueue index (queue) does not exist for the 571*01bed0ffSMarkus Armbruster# corresponding vhost device vhost_virtqueue. Also, 572*01bed0ffSMarkus Armbruster# shadow_avail_idx will not be displayed in the case where the 573*01bed0ffSMarkus Armbruster# selected VirtIODevice has a running vhost device. 57407536dddSLaurent Vivier# 57558379af7SHan Han# Since: 7.2 57607536dddSLaurent Vivier# 5776f07c59fSJohn Snow# .. qmp-example:: 5786f07c59fSJohn Snow# :annotated: 57907536dddSLaurent Vivier# 5806f07c59fSJohn Snow# Get VirtQueueStatus for virtio-vsock (vhost-vsock running) 5816f07c59fSJohn Snow# :: 58207536dddSLaurent Vivier# 58307536dddSLaurent Vivier# -> { "execute": "x-query-virtio-queue-status", 58407536dddSLaurent Vivier# "arguments": { "path": "/machine/peripheral/vsock0/virtio-backend", 58507536dddSLaurent Vivier# "queue": 1 } 58607536dddSLaurent Vivier# } 58707536dddSLaurent Vivier# <- { "return": { 58807536dddSLaurent Vivier# "signalled-used": 0, 58907536dddSLaurent Vivier# "inuse": 0, 59007536dddSLaurent Vivier# "name": "vhost-vsock", 59107536dddSLaurent Vivier# "vring-align": 4096, 59207536dddSLaurent Vivier# "vring-desc": 5217370112, 59307536dddSLaurent Vivier# "signalled-used-valid": false, 59407536dddSLaurent Vivier# "vring-num-default": 128, 59507536dddSLaurent Vivier# "vring-avail": 5217372160, 59607536dddSLaurent Vivier# "queue-index": 1, 59707536dddSLaurent Vivier# "last-avail-idx": 0, 59807536dddSLaurent Vivier# "vring-used": 5217372480, 59907536dddSLaurent Vivier# "used-idx": 0, 60007536dddSLaurent Vivier# "vring-num": 128 60107536dddSLaurent Vivier# } 60207536dddSLaurent Vivier# } 60307536dddSLaurent Vivier# 6046f07c59fSJohn Snow# .. qmp-example:: 6056f07c59fSJohn Snow# :annotated: 6066f07c59fSJohn Snow# 6076f07c59fSJohn Snow# Get VirtQueueStatus for virtio-serial (no vhost) 6086f07c59fSJohn Snow# :: 60907536dddSLaurent Vivier# 61007536dddSLaurent Vivier# -> { "execute": "x-query-virtio-queue-status", 61107536dddSLaurent Vivier# "arguments": { "path": "/machine/peripheral-anon/device[0]/virtio-backend", 61207536dddSLaurent Vivier# "queue": 20 } 61307536dddSLaurent Vivier# } 61407536dddSLaurent Vivier# <- { "return": { 61507536dddSLaurent Vivier# "signalled-used": 0, 61607536dddSLaurent Vivier# "inuse": 0, 61707536dddSLaurent Vivier# "name": "virtio-serial", 61807536dddSLaurent Vivier# "vring-align": 4096, 61907536dddSLaurent Vivier# "vring-desc": 5182074880, 62007536dddSLaurent Vivier# "signalled-used-valid": false, 62107536dddSLaurent Vivier# "vring-num-default": 128, 62207536dddSLaurent Vivier# "vring-avail": 5182076928, 62307536dddSLaurent Vivier# "queue-index": 20, 62407536dddSLaurent Vivier# "last-avail-idx": 0, 62507536dddSLaurent Vivier# "vring-used": 5182077248, 62607536dddSLaurent Vivier# "used-idx": 0, 62707536dddSLaurent Vivier# "shadow-avail-idx": 0, 62807536dddSLaurent Vivier# "vring-num": 128 62907536dddSLaurent Vivier# } 63007536dddSLaurent Vivier# } 63107536dddSLaurent Vivier## 63207536dddSLaurent Vivier{ 'command': 'x-query-virtio-queue-status', 63307536dddSLaurent Vivier 'data': { 'path': 'str', 'queue': 'uint16' }, 63407536dddSLaurent Vivier 'returns': 'VirtQueueStatus', 63507536dddSLaurent Vivier 'features': [ 'unstable' ] } 63607536dddSLaurent Vivier 63707536dddSLaurent Vivier## 63807536dddSLaurent Vivier# @VirtVhostQueueStatus: 63907536dddSLaurent Vivier# 64007536dddSLaurent Vivier# Information of a vhost device's vhost_virtqueue, including most 64107536dddSLaurent Vivier# members of the vhost_dev vhost_virtqueue data structure. 64207536dddSLaurent Vivier# 64307536dddSLaurent Vivier# @name: Name of the VirtIODevice that uses this vhost_virtqueue 64407536dddSLaurent Vivier# 64507536dddSLaurent Vivier# @kick: vhost_virtqueue kick 64607536dddSLaurent Vivier# 64707536dddSLaurent Vivier# @call: vhost_virtqueue call 64807536dddSLaurent Vivier# 64907536dddSLaurent Vivier# @desc: vhost_virtqueue desc 65007536dddSLaurent Vivier# 65107536dddSLaurent Vivier# @avail: vhost_virtqueue avail 65207536dddSLaurent Vivier# 65307536dddSLaurent Vivier# @used: vhost_virtqueue used 65407536dddSLaurent Vivier# 65507536dddSLaurent Vivier# @num: vhost_virtqueue num 65607536dddSLaurent Vivier# 657f972ed59SMarkus Armbruster# @desc-phys: vhost_virtqueue desc_phys (descriptor area physical 658f972ed59SMarkus Armbruster# address) 65907536dddSLaurent Vivier# 66007536dddSLaurent Vivier# @desc-size: vhost_virtqueue desc_size 66107536dddSLaurent Vivier# 662f972ed59SMarkus Armbruster# @avail-phys: vhost_virtqueue avail_phys (driver area physical 663f972ed59SMarkus Armbruster# address) 66407536dddSLaurent Vivier# 66507536dddSLaurent Vivier# @avail-size: vhost_virtqueue avail_size 66607536dddSLaurent Vivier# 667f972ed59SMarkus Armbruster# @used-phys: vhost_virtqueue used_phys (device area physical address) 66807536dddSLaurent Vivier# 66907536dddSLaurent Vivier# @used-size: vhost_virtqueue used_size 67007536dddSLaurent Vivier# 67158379af7SHan Han# Since: 7.2 67207536dddSLaurent Vivier## 67307536dddSLaurent Vivier{ 'struct': 'VirtVhostQueueStatus', 67407536dddSLaurent Vivier 'data': { 'name': 'str', 67507536dddSLaurent Vivier 'kick': 'int', 67607536dddSLaurent Vivier 'call': 'int', 67707536dddSLaurent Vivier 'desc': 'uint64', 67807536dddSLaurent Vivier 'avail': 'uint64', 67907536dddSLaurent Vivier 'used': 'uint64', 68007536dddSLaurent Vivier 'num': 'int', 68107536dddSLaurent Vivier 'desc-phys': 'uint64', 68207536dddSLaurent Vivier 'desc-size': 'uint32', 68307536dddSLaurent Vivier 'avail-phys': 'uint64', 68407536dddSLaurent Vivier 'avail-size': 'uint32', 68507536dddSLaurent Vivier 'used-phys': 'uint64', 68607536dddSLaurent Vivier 'used-size': 'uint32' } } 68707536dddSLaurent Vivier 68807536dddSLaurent Vivier## 68907536dddSLaurent Vivier# @x-query-virtio-vhost-queue-status: 69007536dddSLaurent Vivier# 69107536dddSLaurent Vivier# Return information of a given vhost device's vhost_virtqueue 69207536dddSLaurent Vivier# 69307536dddSLaurent Vivier# @path: VirtIODevice canonical QOM path 69407536dddSLaurent Vivier# 69507536dddSLaurent Vivier# @queue: vhost_virtqueue index to examine 69607536dddSLaurent Vivier# 69707536dddSLaurent Vivier# Features: 698a937b6aaSMarkus Armbruster# 69907536dddSLaurent Vivier# @unstable: This command is meant for debugging. 70007536dddSLaurent Vivier# 70107536dddSLaurent Vivier# Returns: VirtVhostQueueStatus of the vhost_virtqueue 70207536dddSLaurent Vivier# 70358379af7SHan Han# Since: 7.2 70407536dddSLaurent Vivier# 705a9eab6e2SJohn Snow# .. qmp-example:: 706a9eab6e2SJohn Snow# :title: Get vhost_virtqueue status for vhost-crypto 70707536dddSLaurent Vivier# 70807536dddSLaurent Vivier# -> { "execute": "x-query-virtio-vhost-queue-status", 70907536dddSLaurent Vivier# "arguments": { "path": "/machine/peripheral/crypto0/virtio-backend", 71007536dddSLaurent Vivier# "queue": 0 } 71107536dddSLaurent Vivier# } 71207536dddSLaurent Vivier# <- { "return": { 71307536dddSLaurent Vivier# "avail-phys": 5216124928, 71407536dddSLaurent Vivier# "name": "virtio-crypto", 71507536dddSLaurent Vivier# "used-phys": 5216127040, 71607536dddSLaurent Vivier# "avail-size": 2054, 71707536dddSLaurent Vivier# "desc-size": 16384, 71807536dddSLaurent Vivier# "used-size": 8198, 71907536dddSLaurent Vivier# "desc": 140141447430144, 72007536dddSLaurent Vivier# "num": 1024, 72107536dddSLaurent Vivier# "call": 0, 72207536dddSLaurent Vivier# "avail": 140141447446528, 72307536dddSLaurent Vivier# "desc-phys": 5216108544, 72407536dddSLaurent Vivier# "used": 140141447448640, 72507536dddSLaurent Vivier# "kick": 0 72607536dddSLaurent Vivier# } 72707536dddSLaurent Vivier# } 72807536dddSLaurent Vivier# 729a9eab6e2SJohn Snow# .. qmp-example:: 730a9eab6e2SJohn Snow# :title: Get vhost_virtqueue status for vhost-vsock 73107536dddSLaurent Vivier# 73207536dddSLaurent Vivier# -> { "execute": "x-query-virtio-vhost-queue-status", 73307536dddSLaurent Vivier# "arguments": { "path": "/machine/peripheral/vsock0/virtio-backend", 73407536dddSLaurent Vivier# "queue": 0 } 73507536dddSLaurent Vivier# } 73607536dddSLaurent Vivier# <- { "return": { 73707536dddSLaurent Vivier# "avail-phys": 5182261248, 73807536dddSLaurent Vivier# "name": "vhost-vsock", 73907536dddSLaurent Vivier# "used-phys": 5182261568, 74007536dddSLaurent Vivier# "avail-size": 262, 74107536dddSLaurent Vivier# "desc-size": 2048, 74207536dddSLaurent Vivier# "used-size": 1030, 74307536dddSLaurent Vivier# "desc": 140141413580800, 74407536dddSLaurent Vivier# "num": 128, 74507536dddSLaurent Vivier# "call": 0, 74607536dddSLaurent Vivier# "avail": 140141413582848, 74707536dddSLaurent Vivier# "desc-phys": 5182259200, 74807536dddSLaurent Vivier# "used": 140141413583168, 74907536dddSLaurent Vivier# "kick": 0 75007536dddSLaurent Vivier# } 75107536dddSLaurent Vivier# } 75207536dddSLaurent Vivier## 75307536dddSLaurent Vivier{ 'command': 'x-query-virtio-vhost-queue-status', 75407536dddSLaurent Vivier 'data': { 'path': 'str', 'queue': 'uint16' }, 75507536dddSLaurent Vivier 'returns': 'VirtVhostQueueStatus', 75607536dddSLaurent Vivier 'features': [ 'unstable' ] } 7571ee7bb5bSLaurent Vivier 7581ee7bb5bSLaurent Vivier## 7591ee7bb5bSLaurent Vivier# @VirtioRingDesc: 7601ee7bb5bSLaurent Vivier# 7611ee7bb5bSLaurent Vivier# Information regarding the vring descriptor area 7621ee7bb5bSLaurent Vivier# 7631ee7bb5bSLaurent Vivier# @addr: Guest physical address of the descriptor area 7641ee7bb5bSLaurent Vivier# 7651ee7bb5bSLaurent Vivier# @len: Length of the descriptor area 7661ee7bb5bSLaurent Vivier# 7671ee7bb5bSLaurent Vivier# @flags: List of descriptor flags 7681ee7bb5bSLaurent Vivier# 76958379af7SHan Han# Since: 7.2 7701ee7bb5bSLaurent Vivier## 7711ee7bb5bSLaurent Vivier{ 'struct': 'VirtioRingDesc', 7721ee7bb5bSLaurent Vivier 'data': { 'addr': 'uint64', 7731ee7bb5bSLaurent Vivier 'len': 'uint32', 7741ee7bb5bSLaurent Vivier 'flags': [ 'str' ] } } 7751ee7bb5bSLaurent Vivier 7761ee7bb5bSLaurent Vivier## 7771ee7bb5bSLaurent Vivier# @VirtioRingAvail: 7781ee7bb5bSLaurent Vivier# 7791ee7bb5bSLaurent Vivier# Information regarding the avail vring (a.k.a. driver area) 7801ee7bb5bSLaurent Vivier# 7811ee7bb5bSLaurent Vivier# @flags: VRingAvail flags 7821ee7bb5bSLaurent Vivier# 7831ee7bb5bSLaurent Vivier# @idx: VRingAvail index 7841ee7bb5bSLaurent Vivier# 7851ee7bb5bSLaurent Vivier# @ring: VRingAvail ring[] entry at provided index 7861ee7bb5bSLaurent Vivier# 78758379af7SHan Han# Since: 7.2 7881ee7bb5bSLaurent Vivier## 7891ee7bb5bSLaurent Vivier{ 'struct': 'VirtioRingAvail', 7901ee7bb5bSLaurent Vivier 'data': { 'flags': 'uint16', 7911ee7bb5bSLaurent Vivier 'idx': 'uint16', 7921ee7bb5bSLaurent Vivier 'ring': 'uint16' } } 7931ee7bb5bSLaurent Vivier 7941ee7bb5bSLaurent Vivier## 7951ee7bb5bSLaurent Vivier# @VirtioRingUsed: 7961ee7bb5bSLaurent Vivier# 7971ee7bb5bSLaurent Vivier# Information regarding the used vring (a.k.a. device area) 7981ee7bb5bSLaurent Vivier# 7991ee7bb5bSLaurent Vivier# @flags: VRingUsed flags 8001ee7bb5bSLaurent Vivier# 8011ee7bb5bSLaurent Vivier# @idx: VRingUsed index 8021ee7bb5bSLaurent Vivier# 80358379af7SHan Han# Since: 7.2 8041ee7bb5bSLaurent Vivier## 8051ee7bb5bSLaurent Vivier{ 'struct': 'VirtioRingUsed', 8061ee7bb5bSLaurent Vivier 'data': { 'flags': 'uint16', 8071ee7bb5bSLaurent Vivier 'idx': 'uint16' } } 8081ee7bb5bSLaurent Vivier 8091ee7bb5bSLaurent Vivier## 8101ee7bb5bSLaurent Vivier# @VirtioQueueElement: 8111ee7bb5bSLaurent Vivier# 8121ee7bb5bSLaurent Vivier# Information regarding a VirtQueue's VirtQueueElement including 8131ee7bb5bSLaurent Vivier# descriptor, driver, and device areas 8141ee7bb5bSLaurent Vivier# 8151ee7bb5bSLaurent Vivier# @name: Name of the VirtIODevice that uses this VirtQueue 8161ee7bb5bSLaurent Vivier# 8171ee7bb5bSLaurent Vivier# @index: Index of the element in the queue 8181ee7bb5bSLaurent Vivier# 8191ee7bb5bSLaurent Vivier# @descs: List of descriptors (VirtioRingDesc) 8201ee7bb5bSLaurent Vivier# 8211ee7bb5bSLaurent Vivier# @avail: VRingAvail info 8221ee7bb5bSLaurent Vivier# 8231ee7bb5bSLaurent Vivier# @used: VRingUsed info 8241ee7bb5bSLaurent Vivier# 82558379af7SHan Han# Since: 7.2 8261ee7bb5bSLaurent Vivier## 8271ee7bb5bSLaurent Vivier{ 'struct': 'VirtioQueueElement', 8281ee7bb5bSLaurent Vivier 'data': { 'name': 'str', 8291ee7bb5bSLaurent Vivier 'index': 'uint32', 8301ee7bb5bSLaurent Vivier 'descs': [ 'VirtioRingDesc' ], 8311ee7bb5bSLaurent Vivier 'avail': 'VirtioRingAvail', 8321ee7bb5bSLaurent Vivier 'used': 'VirtioRingUsed' } } 8331ee7bb5bSLaurent Vivier 8341ee7bb5bSLaurent Vivier## 8351ee7bb5bSLaurent Vivier# @x-query-virtio-queue-element: 8361ee7bb5bSLaurent Vivier# 8371ee7bb5bSLaurent Vivier# Return the information about a VirtQueue's VirtQueueElement 8381ee7bb5bSLaurent Vivier# 8391ee7bb5bSLaurent Vivier# @path: VirtIODevice canonical QOM path 8401ee7bb5bSLaurent Vivier# 8411ee7bb5bSLaurent Vivier# @queue: VirtQueue index to examine 8421ee7bb5bSLaurent Vivier# 843a937b6aaSMarkus Armbruster# @index: Index of the element in the queue (default: head of the 844a937b6aaSMarkus Armbruster# queue) 8451ee7bb5bSLaurent Vivier# 8461ee7bb5bSLaurent Vivier# Features: 847a937b6aaSMarkus Armbruster# 8481ee7bb5bSLaurent Vivier# @unstable: This command is meant for debugging. 8491ee7bb5bSLaurent Vivier# 8501ee7bb5bSLaurent Vivier# Returns: VirtioQueueElement information 8511ee7bb5bSLaurent Vivier# 85258379af7SHan Han# Since: 7.2 8531ee7bb5bSLaurent Vivier# 854a9eab6e2SJohn Snow# .. qmp-example:: 855a9eab6e2SJohn Snow# :title: Introspect on virtio-net's VirtQueue 0 at index 5 8561ee7bb5bSLaurent Vivier# 8571ee7bb5bSLaurent Vivier# -> { "execute": "x-query-virtio-queue-element", 8581ee7bb5bSLaurent Vivier# "arguments": { "path": "/machine/peripheral-anon/device[1]/virtio-backend", 8591ee7bb5bSLaurent Vivier# "queue": 0, 8601ee7bb5bSLaurent Vivier# "index": 5 } 8611ee7bb5bSLaurent Vivier# } 8621ee7bb5bSLaurent Vivier# <- { "return": { 8631ee7bb5bSLaurent Vivier# "index": 5, 8641ee7bb5bSLaurent Vivier# "name": "virtio-net", 8651ee7bb5bSLaurent Vivier# "descs": [ 8661ee7bb5bSLaurent Vivier# { 8671ee7bb5bSLaurent Vivier# "flags": ["write"], 8681ee7bb5bSLaurent Vivier# "len": 1536, 8691ee7bb5bSLaurent Vivier# "addr": 5257305600 8701ee7bb5bSLaurent Vivier# } 8711ee7bb5bSLaurent Vivier# ], 8721ee7bb5bSLaurent Vivier# "avail": { 8731ee7bb5bSLaurent Vivier# "idx": 256, 8741ee7bb5bSLaurent Vivier# "flags": 0, 8751ee7bb5bSLaurent Vivier# "ring": 5 8761ee7bb5bSLaurent Vivier# }, 8771ee7bb5bSLaurent Vivier# "used": { 8781ee7bb5bSLaurent Vivier# "idx": 13, 8791ee7bb5bSLaurent Vivier# "flags": 0 8801ee7bb5bSLaurent Vivier# } 8811ee7bb5bSLaurent Vivier# } 8821ee7bb5bSLaurent Vivier# } 8831ee7bb5bSLaurent Vivier# 884a9eab6e2SJohn Snow# .. qmp-example:: 885a9eab6e2SJohn Snow# :title: Introspect on virtio-crypto's VirtQueue 1 at head 8861ee7bb5bSLaurent Vivier# 8871ee7bb5bSLaurent Vivier# -> { "execute": "x-query-virtio-queue-element", 8881ee7bb5bSLaurent Vivier# "arguments": { "path": "/machine/peripheral/crypto0/virtio-backend", 8891ee7bb5bSLaurent Vivier# "queue": 1 } 8901ee7bb5bSLaurent Vivier# } 8911ee7bb5bSLaurent Vivier# <- { "return": { 8921ee7bb5bSLaurent Vivier# "index": 0, 8931ee7bb5bSLaurent Vivier# "name": "virtio-crypto", 8941ee7bb5bSLaurent Vivier# "descs": [ 8951ee7bb5bSLaurent Vivier# { 8961ee7bb5bSLaurent Vivier# "flags": [], 8971ee7bb5bSLaurent Vivier# "len": 0, 8981ee7bb5bSLaurent Vivier# "addr": 8080268923184214134 8991ee7bb5bSLaurent Vivier# } 9001ee7bb5bSLaurent Vivier# ], 9011ee7bb5bSLaurent Vivier# "avail": { 9021ee7bb5bSLaurent Vivier# "idx": 280, 9031ee7bb5bSLaurent Vivier# "flags": 0, 9041ee7bb5bSLaurent Vivier# "ring": 0 9051ee7bb5bSLaurent Vivier# }, 9061ee7bb5bSLaurent Vivier# "used": { 9071ee7bb5bSLaurent Vivier# "idx": 280, 9081ee7bb5bSLaurent Vivier# "flags": 0 9091ee7bb5bSLaurent Vivier# } 9101ee7bb5bSLaurent Vivier# } 9111ee7bb5bSLaurent Vivier# } 9121ee7bb5bSLaurent Vivier# 913a9eab6e2SJohn Snow# .. qmp-example:: 914a9eab6e2SJohn Snow# :title: Introspect on virtio-scsi's VirtQueue 2 at head 9151ee7bb5bSLaurent Vivier# 9161ee7bb5bSLaurent Vivier# -> { "execute": "x-query-virtio-queue-element", 9171ee7bb5bSLaurent Vivier# "arguments": { "path": "/machine/peripheral-anon/device[2]/virtio-backend", 9181ee7bb5bSLaurent Vivier# "queue": 2 } 9191ee7bb5bSLaurent Vivier# } 9201ee7bb5bSLaurent Vivier# <- { "return": { 9211ee7bb5bSLaurent Vivier# "index": 19, 9221ee7bb5bSLaurent Vivier# "name": "virtio-scsi", 9231ee7bb5bSLaurent Vivier# "descs": [ 9241ee7bb5bSLaurent Vivier# { 9251ee7bb5bSLaurent Vivier# "flags": ["used", "indirect", "write"], 9261ee7bb5bSLaurent Vivier# "len": 4099327944, 9271ee7bb5bSLaurent Vivier# "addr": 12055409292258155293 9281ee7bb5bSLaurent Vivier# } 9291ee7bb5bSLaurent Vivier# ], 9301ee7bb5bSLaurent Vivier# "avail": { 9311ee7bb5bSLaurent Vivier# "idx": 1147, 9321ee7bb5bSLaurent Vivier# "flags": 0, 9331ee7bb5bSLaurent Vivier# "ring": 19 9341ee7bb5bSLaurent Vivier# }, 9351ee7bb5bSLaurent Vivier# "used": { 9361ee7bb5bSLaurent Vivier# "idx": 280, 9371ee7bb5bSLaurent Vivier# "flags": 0 9381ee7bb5bSLaurent Vivier# } 9391ee7bb5bSLaurent Vivier# } 9401ee7bb5bSLaurent Vivier# } 9411ee7bb5bSLaurent Vivier## 9421ee7bb5bSLaurent Vivier{ 'command': 'x-query-virtio-queue-element', 9431ee7bb5bSLaurent Vivier 'data': { 'path': 'str', 'queue': 'uint16', '*index': 'uint16' }, 9441ee7bb5bSLaurent Vivier 'returns': 'VirtioQueueElement', 9451ee7bb5bSLaurent Vivier 'features': [ 'unstable' ] } 946cf03a152SStefan Hajnoczi 947cf03a152SStefan Hajnoczi## 948cf03a152SStefan Hajnoczi# @IOThreadVirtQueueMapping: 949cf03a152SStefan Hajnoczi# 950cf03a152SStefan Hajnoczi# Describes the subset of virtqueues assigned to an IOThread. 951cf03a152SStefan Hajnoczi# 952cf03a152SStefan Hajnoczi# @iothread: the id of IOThread object 953cf03a152SStefan Hajnoczi# 954209e64d9SMarkus Armbruster# @vqs: an optional array of virtqueue indices that will be handled by 955209e64d9SMarkus Armbruster# this IOThread. When absent, virtqueues are assigned round-robin 956209e64d9SMarkus Armbruster# across all IOThreadVirtQueueMappings provided. Either all 957209e64d9SMarkus Armbruster# IOThreadVirtQueueMappings must have @vqs or none of them must 958209e64d9SMarkus Armbruster# have it. 959cf03a152SStefan Hajnoczi# 960cf03a152SStefan Hajnoczi# Since: 9.0 961cf03a152SStefan Hajnoczi## 962cf03a152SStefan Hajnoczi 963cf03a152SStefan Hajnoczi{ 'struct': 'IOThreadVirtQueueMapping', 964cf03a152SStefan Hajnoczi 'data': { 'iothread': 'str', '*vqs': ['uint16'] } } 965cf03a152SStefan Hajnoczi 966cf03a152SStefan Hajnoczi## 967cf03a152SStefan Hajnoczi# @DummyVirtioForceArrays: 968cf03a152SStefan Hajnoczi# 969209e64d9SMarkus Armbruster# Not used by QMP; hack to let us use IOThreadVirtQueueMappingList 970209e64d9SMarkus Armbruster# internally 971cf03a152SStefan Hajnoczi# 972cf03a152SStefan Hajnoczi# Since: 9.0 973cf03a152SStefan Hajnoczi## 974cf03a152SStefan Hajnoczi 975cf03a152SStefan Hajnoczi{ 'struct': 'DummyVirtioForceArrays', 976cf03a152SStefan Hajnoczi 'data': { 'unused-iothread-vq-mapping': ['IOThreadVirtQueueMapping'] } } 977965bc083SEric Auger 978965bc083SEric Auger## 979965bc083SEric Auger# @GranuleMode: 980965bc083SEric Auger# 981965bc083SEric Auger# @4k: granule page size of 4KiB 982965bc083SEric Auger# 983965bc083SEric Auger# @8k: granule page size of 8KiB 984965bc083SEric Auger# 985965bc083SEric Auger# @16k: granule page size of 16KiB 986965bc083SEric Auger# 987965bc083SEric Auger# @64k: granule page size of 64KiB 988965bc083SEric Auger# 989965bc083SEric Auger# @host: granule matches the host page size 990965bc083SEric Auger# 991965bc083SEric Auger# Since: 9.0 992965bc083SEric Auger## 993965bc083SEric Auger{ 'enum': 'GranuleMode', 994965bc083SEric Auger 'data': [ '4k', '8k', '16k', '64k', 'host' ] } 995