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# 18a5ebce38SLaurent Vivier# Since: 7.1 19a5ebce38SLaurent Vivier# 20a5ebce38SLaurent Vivier## 21a5ebce38SLaurent Vivier{ 'struct': 'VirtioInfo', 22a5ebce38SLaurent Vivier 'data': { 'path': 'str', 23a5ebce38SLaurent Vivier 'name': 'str' } } 24a5ebce38SLaurent Vivier 25a5ebce38SLaurent Vivier## 26a5ebce38SLaurent Vivier# @x-query-virtio: 27a5ebce38SLaurent Vivier# 28a5ebce38SLaurent Vivier# Returns a list of all realized VirtIODevices 29a5ebce38SLaurent Vivier# 30a5ebce38SLaurent Vivier# Features: 31a5ebce38SLaurent Vivier# @unstable: This command is meant for debugging. 32a5ebce38SLaurent Vivier# 33a5ebce38SLaurent Vivier# Returns: List of gathered VirtIODevices 34a5ebce38SLaurent Vivier# 35a5ebce38SLaurent Vivier# Since: 7.1 36a5ebce38SLaurent Vivier# 37a5ebce38SLaurent Vivier# 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## 65a5ebce38SLaurent Vivier 66a5ebce38SLaurent Vivier{ 'command': 'x-query-virtio', 67a5ebce38SLaurent Vivier 'returns': [ 'VirtioInfo' ], 68a5ebce38SLaurent Vivier 'features': [ 'unstable' ] } 69*90c066cdSLaurent Vivier 70*90c066cdSLaurent Vivier## 71*90c066cdSLaurent Vivier# @VhostStatus: 72*90c066cdSLaurent Vivier# 73*90c066cdSLaurent Vivier# Information about a vhost device. This information will only be 74*90c066cdSLaurent Vivier# displayed if the vhost device is active. 75*90c066cdSLaurent Vivier# 76*90c066cdSLaurent Vivier# @n-mem-sections: vhost_dev n_mem_sections 77*90c066cdSLaurent Vivier# 78*90c066cdSLaurent Vivier# @n-tmp-sections: vhost_dev n_tmp_sections 79*90c066cdSLaurent Vivier# 80*90c066cdSLaurent Vivier# @nvqs: vhost_dev nvqs (number of virtqueues being used) 81*90c066cdSLaurent Vivier# 82*90c066cdSLaurent Vivier# @vq-index: vhost_dev vq_index 83*90c066cdSLaurent Vivier# 84*90c066cdSLaurent Vivier# @features: vhost_dev features 85*90c066cdSLaurent Vivier# 86*90c066cdSLaurent Vivier# @acked-features: vhost_dev acked_features 87*90c066cdSLaurent Vivier# 88*90c066cdSLaurent Vivier# @backend-features: vhost_dev backend_features 89*90c066cdSLaurent Vivier# 90*90c066cdSLaurent Vivier# @protocol-features: vhost_dev protocol_features 91*90c066cdSLaurent Vivier# 92*90c066cdSLaurent Vivier# @max-queues: vhost_dev max_queues 93*90c066cdSLaurent Vivier# 94*90c066cdSLaurent Vivier# @backend-cap: vhost_dev backend_cap 95*90c066cdSLaurent Vivier# 96*90c066cdSLaurent Vivier# @log-enabled: vhost_dev log_enabled flag 97*90c066cdSLaurent Vivier# 98*90c066cdSLaurent Vivier# @log-size: vhost_dev log_size 99*90c066cdSLaurent Vivier# 100*90c066cdSLaurent Vivier# Since: 7.1 101*90c066cdSLaurent Vivier# 102*90c066cdSLaurent Vivier## 103*90c066cdSLaurent Vivier 104*90c066cdSLaurent Vivier{ 'struct': 'VhostStatus', 105*90c066cdSLaurent Vivier 'data': { 'n-mem-sections': 'int', 106*90c066cdSLaurent Vivier 'n-tmp-sections': 'int', 107*90c066cdSLaurent Vivier 'nvqs': 'uint32', 108*90c066cdSLaurent Vivier 'vq-index': 'int', 109*90c066cdSLaurent Vivier 'features': 'uint64', 110*90c066cdSLaurent Vivier 'acked-features': 'uint64', 111*90c066cdSLaurent Vivier 'backend-features': 'uint64', 112*90c066cdSLaurent Vivier 'protocol-features': 'uint64', 113*90c066cdSLaurent Vivier 'max-queues': 'uint64', 114*90c066cdSLaurent Vivier 'backend-cap': 'uint64', 115*90c066cdSLaurent Vivier 'log-enabled': 'bool', 116*90c066cdSLaurent Vivier 'log-size': 'uint64' } } 117*90c066cdSLaurent Vivier 118*90c066cdSLaurent Vivier## 119*90c066cdSLaurent Vivier# @VirtioStatus: 120*90c066cdSLaurent Vivier# 121*90c066cdSLaurent Vivier# Full status of the virtio device with most VirtIODevice members. 122*90c066cdSLaurent Vivier# Also includes the full status of the corresponding vhost device 123*90c066cdSLaurent Vivier# if the vhost device is active. 124*90c066cdSLaurent Vivier# 125*90c066cdSLaurent Vivier# @name: VirtIODevice name 126*90c066cdSLaurent Vivier# 127*90c066cdSLaurent Vivier# @device-id: VirtIODevice ID 128*90c066cdSLaurent Vivier# 129*90c066cdSLaurent Vivier# @vhost-started: VirtIODevice vhost_started flag 130*90c066cdSLaurent Vivier# 131*90c066cdSLaurent Vivier# @guest-features: VirtIODevice guest_features 132*90c066cdSLaurent Vivier# 133*90c066cdSLaurent Vivier# @host-features: VirtIODevice host_features 134*90c066cdSLaurent Vivier# 135*90c066cdSLaurent Vivier# @backend-features: VirtIODevice backend_features 136*90c066cdSLaurent Vivier# 137*90c066cdSLaurent Vivier# @device-endian: VirtIODevice device_endian 138*90c066cdSLaurent Vivier# 139*90c066cdSLaurent Vivier# @num-vqs: VirtIODevice virtqueue count. This is the number of active 140*90c066cdSLaurent Vivier# virtqueues being used by the VirtIODevice. 141*90c066cdSLaurent Vivier# 142*90c066cdSLaurent Vivier# @status: VirtIODevice configuration status (VirtioDeviceStatus) 143*90c066cdSLaurent Vivier# 144*90c066cdSLaurent Vivier# @isr: VirtIODevice ISR 145*90c066cdSLaurent Vivier# 146*90c066cdSLaurent Vivier# @queue-sel: VirtIODevice queue_sel 147*90c066cdSLaurent Vivier# 148*90c066cdSLaurent Vivier# @vm-running: VirtIODevice vm_running flag 149*90c066cdSLaurent Vivier# 150*90c066cdSLaurent Vivier# @broken: VirtIODevice broken flag 151*90c066cdSLaurent Vivier# 152*90c066cdSLaurent Vivier# @disabled: VirtIODevice disabled flag 153*90c066cdSLaurent Vivier# 154*90c066cdSLaurent Vivier# @use-started: VirtIODevice use_started flag 155*90c066cdSLaurent Vivier# 156*90c066cdSLaurent Vivier# @started: VirtIODevice started flag 157*90c066cdSLaurent Vivier# 158*90c066cdSLaurent Vivier# @start-on-kick: VirtIODevice start_on_kick flag 159*90c066cdSLaurent Vivier# 160*90c066cdSLaurent Vivier# @disable-legacy-check: VirtIODevice disabled_legacy_check flag 161*90c066cdSLaurent Vivier# 162*90c066cdSLaurent Vivier# @bus-name: VirtIODevice bus_name 163*90c066cdSLaurent Vivier# 164*90c066cdSLaurent Vivier# @use-guest-notifier-mask: VirtIODevice use_guest_notifier_mask flag 165*90c066cdSLaurent Vivier# 166*90c066cdSLaurent Vivier# @vhost-dev: Corresponding vhost device info for a given VirtIODevice. 167*90c066cdSLaurent Vivier# Present if the given VirtIODevice has an active vhost 168*90c066cdSLaurent Vivier# device. 169*90c066cdSLaurent Vivier# 170*90c066cdSLaurent Vivier# Since: 7.1 171*90c066cdSLaurent Vivier# 172*90c066cdSLaurent Vivier## 173*90c066cdSLaurent Vivier 174*90c066cdSLaurent Vivier{ 'struct': 'VirtioStatus', 175*90c066cdSLaurent Vivier 'data': { 'name': 'str', 176*90c066cdSLaurent Vivier 'device-id': 'uint16', 177*90c066cdSLaurent Vivier 'vhost-started': 'bool', 178*90c066cdSLaurent Vivier 'device-endian': 'str', 179*90c066cdSLaurent Vivier 'guest-features': 'uint64', 180*90c066cdSLaurent Vivier 'host-features': 'uint64', 181*90c066cdSLaurent Vivier 'backend-features': 'uint64', 182*90c066cdSLaurent Vivier 'num-vqs': 'int', 183*90c066cdSLaurent Vivier 'status': 'uint8', 184*90c066cdSLaurent Vivier 'isr': 'uint8', 185*90c066cdSLaurent Vivier 'queue-sel': 'uint16', 186*90c066cdSLaurent Vivier 'vm-running': 'bool', 187*90c066cdSLaurent Vivier 'broken': 'bool', 188*90c066cdSLaurent Vivier 'disabled': 'bool', 189*90c066cdSLaurent Vivier 'use-started': 'bool', 190*90c066cdSLaurent Vivier 'started': 'bool', 191*90c066cdSLaurent Vivier 'start-on-kick': 'bool', 192*90c066cdSLaurent Vivier 'disable-legacy-check': 'bool', 193*90c066cdSLaurent Vivier 'bus-name': 'str', 194*90c066cdSLaurent Vivier 'use-guest-notifier-mask': 'bool', 195*90c066cdSLaurent Vivier '*vhost-dev': 'VhostStatus' } } 196*90c066cdSLaurent Vivier 197*90c066cdSLaurent Vivier## 198*90c066cdSLaurent Vivier# @x-query-virtio-status: 199*90c066cdSLaurent Vivier# 200*90c066cdSLaurent Vivier# Poll for a comprehensive status of a given virtio device 201*90c066cdSLaurent Vivier# 202*90c066cdSLaurent Vivier# @path: Canonical QOM path of the VirtIODevice 203*90c066cdSLaurent Vivier# 204*90c066cdSLaurent Vivier# Features: 205*90c066cdSLaurent Vivier# @unstable: This command is meant for debugging. 206*90c066cdSLaurent Vivier# 207*90c066cdSLaurent Vivier# Returns: VirtioStatus of the virtio device 208*90c066cdSLaurent Vivier# 209*90c066cdSLaurent Vivier# Since: 7.1 210*90c066cdSLaurent Vivier# 211*90c066cdSLaurent Vivier# Examples: 212*90c066cdSLaurent Vivier# 213*90c066cdSLaurent Vivier# 1. Poll for the status of virtio-crypto (no vhost-crypto active) 214*90c066cdSLaurent Vivier# 215*90c066cdSLaurent Vivier# -> { "execute": "x-query-virtio-status", 216*90c066cdSLaurent Vivier# "arguments": { "path": "/machine/peripheral/crypto0/virtio-backend" } 217*90c066cdSLaurent Vivier# } 218*90c066cdSLaurent Vivier# <- { "return": { 219*90c066cdSLaurent Vivier# "device-endian": "little", 220*90c066cdSLaurent Vivier# "bus-name": "", 221*90c066cdSLaurent Vivier# "disable-legacy-check": false, 222*90c066cdSLaurent Vivier# "name": "virtio-crypto", 223*90c066cdSLaurent Vivier# "started": true, 224*90c066cdSLaurent Vivier# "device-id": 20, 225*90c066cdSLaurent Vivier# "backend-features": 0, 226*90c066cdSLaurent Vivier# "start-on-kick": false, 227*90c066cdSLaurent Vivier# "isr": 1, 228*90c066cdSLaurent Vivier# "broken": false, 229*90c066cdSLaurent Vivier# "status": 15, 230*90c066cdSLaurent Vivier# "num-vqs": 2, 231*90c066cdSLaurent Vivier# "guest-features": 5100273664, 232*90c066cdSLaurent Vivier# "host-features": 6325010432, 233*90c066cdSLaurent Vivier# "use-guest-notifier-mask": true, 234*90c066cdSLaurent Vivier# "vm-running": true, 235*90c066cdSLaurent Vivier# "queue-sel": 1, 236*90c066cdSLaurent Vivier# "disabled": false, 237*90c066cdSLaurent Vivier# "vhost-started": false, 238*90c066cdSLaurent Vivier# "use-started": true 239*90c066cdSLaurent Vivier# } 240*90c066cdSLaurent Vivier# } 241*90c066cdSLaurent Vivier# 242*90c066cdSLaurent Vivier# 2. Poll for the status of virtio-net (vhost-net is active) 243*90c066cdSLaurent Vivier# 244*90c066cdSLaurent Vivier# -> { "execute": "x-query-virtio-status", 245*90c066cdSLaurent Vivier# "arguments": { "path": "/machine/peripheral-anon/device[1]/virtio-backend" } 246*90c066cdSLaurent Vivier# } 247*90c066cdSLaurent Vivier# <- { "return": { 248*90c066cdSLaurent Vivier# "device-endian": "little", 249*90c066cdSLaurent Vivier# "bus-name": "", 250*90c066cdSLaurent Vivier# "disabled-legacy-check": false, 251*90c066cdSLaurent Vivier# "name": "virtio-net", 252*90c066cdSLaurent Vivier# "started": true, 253*90c066cdSLaurent Vivier# "device-id": 1, 254*90c066cdSLaurent Vivier# "vhost-dev": { 255*90c066cdSLaurent Vivier# "n-tmp-sections": 4, 256*90c066cdSLaurent Vivier# "n-mem-sections": 4, 257*90c066cdSLaurent Vivier# "max-queues": 1, 258*90c066cdSLaurent Vivier# "backend-cap": 2, 259*90c066cdSLaurent Vivier# "log-size": 0, 260*90c066cdSLaurent Vivier# "backend-features": 0, 261*90c066cdSLaurent Vivier# "nvqs": 2, 262*90c066cdSLaurent Vivier# "protocol-features": 0, 263*90c066cdSLaurent Vivier# "vq-index": 0, 264*90c066cdSLaurent Vivier# "log-enabled": false, 265*90c066cdSLaurent Vivier# "acked-features": 5100306432, 266*90c066cdSLaurent Vivier# "features": 13908344832 267*90c066cdSLaurent Vivier# }, 268*90c066cdSLaurent Vivier# "backend-features": 6337593319, 269*90c066cdSLaurent Vivier# "start-on-kick": false, 270*90c066cdSLaurent Vivier# "isr": 1, 271*90c066cdSLaurent Vivier# "broken": false, 272*90c066cdSLaurent Vivier# "status": 15, 273*90c066cdSLaurent Vivier# "num-vqs": 3, 274*90c066cdSLaurent Vivier# "guest-features": 5111807911, 275*90c066cdSLaurent Vivier# "host-features": 6337593319, 276*90c066cdSLaurent Vivier# "use-guest-notifier-mask": true, 277*90c066cdSLaurent Vivier# "vm-running": true, 278*90c066cdSLaurent Vivier# "queue-sel": 2, 279*90c066cdSLaurent Vivier# "disabled": false, 280*90c066cdSLaurent Vivier# "vhost-started": true, 281*90c066cdSLaurent Vivier# "use-started": true 282*90c066cdSLaurent Vivier# } 283*90c066cdSLaurent Vivier# } 284*90c066cdSLaurent Vivier# 285*90c066cdSLaurent Vivier## 286*90c066cdSLaurent Vivier 287*90c066cdSLaurent Vivier{ 'command': 'x-query-virtio-status', 288*90c066cdSLaurent Vivier 'data': { 'path': 'str' }, 289*90c066cdSLaurent Vivier 'returns': 'VirtioStatus', 290*90c066cdSLaurent Vivier 'features': [ 'unstable' ] } 291