xref: /qemu/qapi/virtio.json (revision 90c066cd6822fb5e892e3daedd0a72b40e33dc30)
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