]> git.proxmox.com Git - mirror_qemu.git/blame - qmp-commands.hx
s390x/skeys: Fix instance and class size
[mirror_qemu.git] / qmp-commands.hx
CommitLineData
82a56f0d 1HXCOMM QMP dispatch table and documentation
3599d46b 2HXCOMM Text between SQMP and EQMP is copied to the QMP documentation file and
82a56f0d
LC
3HXCOMM does not show up in the other formats.
4
5SQMP
6 QMP Supported Commands
7 ----------------------
8
9This document describes all commands currently supported by QMP.
10
11Most of the time their usage is exactly the same as in the user Monitor, this
12means that any other document which also describe commands (the manpage,
13QEMU's manual, etc) can and should be consulted.
14
15QMP has two types of commands: regular and query commands. Regular commands
16usually change the Virtual Machine's state someway, while query commands just
17return information. The sections below are divided accordingly.
18
19It's important to observe that all communication examples are formatted in
20a reader-friendly way, so that they're easier to understand. However, in real
21protocol usage, they're emitted as a single line.
22
23Also, the following notation is used to denote data flow:
24
25-> data issued by the Client
26<- Server data response
27
28Please, refer to the QMP specification (QMP/qmp-spec.txt) for detailed
29information on the Server command and response formats.
30
31NOTE: This document is temporary and will be replaced soon.
32
331. Stability Considerations
34===========================
35
36The current QMP command set (described in this file) may be useful for a
37number of use cases, however it's limited and several commands have bad
38defined semantics, specially with regard to command completion.
39
40These problems are going to be solved incrementally in the next QEMU releases
41and we're going to establish a deprecation policy for badly defined commands.
42
43If you're planning to adopt QMP, please observe the following:
44
c20cdf8b 45 1. The deprecation policy will take effect and be documented soon, please
82a56f0d
LC
46 check the documentation of each used command as soon as a new release of
47 QEMU is available
48
49 2. DO NOT rely on anything which is not explicit documented
50
51 3. Errors, in special, are not documented. Applications should NOT check
52 for specific errors classes or data (it's strongly recommended to only
53 check for the "error" key)
54
552. Regular Commands
56===================
57
58Server's responses in the examples below are always a success response, please
59refer to the QMP specification for more details on error responses.
60
61EQMP
62
63 {
64 .name = "quit",
65 .args_type = "",
7fad30f0 66 .mhandler.cmd_new = qmp_marshal_quit,
82a56f0d
LC
67 },
68
69SQMP
70quit
71----
72
73Quit the emulator.
74
75Arguments: None.
76
77Example:
78
79-> { "execute": "quit" }
80<- { "return": {} }
81
82EQMP
83
84 {
85 .name = "eject",
86 .args_type = "force:-f,device:B",
7fad30f0 87 .mhandler.cmd_new = qmp_marshal_eject,
82a56f0d
LC
88 },
89
90SQMP
91eject
92-----
93
94Eject a removable medium.
95
96Arguments:
97
98- force: force ejection (json-bool, optional)
99- device: device name (json-string)
100
101Example:
102
103-> { "execute": "eject", "arguments": { "device": "ide1-cd0" } }
104<- { "return": {} }
105
106Note: The "force" argument defaults to false.
107
108EQMP
109
110 {
111 .name = "change",
112 .args_type = "device:B,target:F,arg:s?",
7fad30f0 113 .mhandler.cmd_new = qmp_marshal_change,
82a56f0d
LC
114 },
115
116SQMP
117change
118------
119
120Change a removable medium or VNC configuration.
121
122Arguments:
123
124- "device": device name (json-string)
125- "target": filename or item (json-string)
126- "arg": additional argument (json-string, optional)
127
128Examples:
129
1301. Change a removable medium
131
132-> { "execute": "change",
133 "arguments": { "device": "ide1-cd0",
134 "target": "/srv/images/Fedora-12-x86_64-DVD.iso" } }
135<- { "return": {} }
136
1372. Change VNC password
138
139-> { "execute": "change",
140 "arguments": { "device": "vnc", "target": "password",
141 "arg": "foobar1" } }
142<- { "return": {} }
143
144EQMP
145
146 {
147 .name = "screendump",
148 .args_type = "filename:F",
7fad30f0 149 .mhandler.cmd_new = qmp_marshal_screendump,
82a56f0d
LC
150 },
151
152SQMP
153screendump
154----------
155
156Save screen into PPM image.
157
158Arguments:
159
160- "filename": file path (json-string)
161
162Example:
163
164-> { "execute": "screendump", "arguments": { "filename": "/tmp/image" } }
165<- { "return": {} }
166
167EQMP
168
169 {
170 .name = "stop",
171 .args_type = "",
7fad30f0 172 .mhandler.cmd_new = qmp_marshal_stop,
82a56f0d
LC
173 },
174
175SQMP
176stop
177----
178
179Stop the emulator.
180
181Arguments: None.
182
183Example:
184
185-> { "execute": "stop" }
186<- { "return": {} }
187
188EQMP
189
190 {
191 .name = "cont",
192 .args_type = "",
7fad30f0 193 .mhandler.cmd_new = qmp_marshal_cont,
82a56f0d
LC
194 },
195
196SQMP
197cont
198----
199
200Resume emulation.
201
202Arguments: None.
203
204Example:
205
206-> { "execute": "cont" }
207<- { "return": {} }
9b9df25a
GH
208
209EQMP
210
211 {
212 .name = "system_wakeup",
213 .args_type = "",
7fad30f0 214 .mhandler.cmd_new = qmp_marshal_system_wakeup,
9b9df25a
GH
215 },
216
217SQMP
218system_wakeup
219-------------
220
221Wakeup guest from suspend.
222
223Arguments: None.
224
225Example:
226
227-> { "execute": "system_wakeup" }
228<- { "return": {} }
82a56f0d
LC
229
230EQMP
231
232 {
233 .name = "system_reset",
234 .args_type = "",
7fad30f0 235 .mhandler.cmd_new = qmp_marshal_system_reset,
82a56f0d
LC
236 },
237
238SQMP
239system_reset
240------------
241
242Reset the system.
243
244Arguments: None.
245
246Example:
247
248-> { "execute": "system_reset" }
249<- { "return": {} }
250
251EQMP
252
253 {
254 .name = "system_powerdown",
255 .args_type = "",
7fad30f0 256 .mhandler.cmd_new = qmp_marshal_system_powerdown,
82a56f0d
LC
257 },
258
259SQMP
260system_powerdown
261----------------
262
263Send system power down event.
264
265Arguments: None.
266
267Example:
268
269-> { "execute": "system_powerdown" }
270<- { "return": {} }
271
272EQMP
273
274 {
275 .name = "device_add",
276 .args_type = "device:O",
277 .params = "driver[,prop=value][,...]",
278 .help = "add device, like -device on the command line",
485febc6 279 .mhandler.cmd_new = qmp_device_add,
82a56f0d
LC
280 },
281
282SQMP
283device_add
284----------
285
286Add a device.
287
288Arguments:
289
290- "driver": the name of the new device's driver (json-string)
291- "bus": the device's parent bus (device tree path, json-string, optional)
292- "id": the device's ID, must be unique (json-string)
293- device properties
294
295Example:
296
297-> { "execute": "device_add", "arguments": { "driver": "e1000", "id": "net1" } }
298<- { "return": {} }
299
300Notes:
301
302(1) For detailed information about this command, please refer to the
303 'docs/qdev-device-use.txt' file.
304
305(2) It's possible to list device properties by running QEMU with the
306 "-device DEVICE,\?" command-line argument, where DEVICE is the device's name
307
308EQMP
309
310 {
311 .name = "device_del",
312 .args_type = "id:s",
7fad30f0 313 .mhandler.cmd_new = qmp_marshal_device_del,
82a56f0d
LC
314 },
315
316SQMP
317device_del
318----------
319
320Remove a device.
321
322Arguments:
323
6287d827 324- "id": the device's ID or QOM path (json-string)
82a56f0d
LC
325
326Example:
327
328-> { "execute": "device_del", "arguments": { "id": "net1" } }
329<- { "return": {} }
330
6287d827
DB
331Example:
332
333-> { "execute": "device_del", "arguments": { "id": "/machine/peripheral-anon/device[0]" } }
334<- { "return": {} }
335
e4c8f004
AK
336EQMP
337
338 {
339 .name = "send-key",
43d0a2c1 340 .args_type = "keys:q,hold-time:i?",
7fad30f0 341 .mhandler.cmd_new = qmp_marshal_send_key,
e4c8f004
AK
342 },
343
344SQMP
345send-key
346----------
347
348Send keys to VM.
349
350Arguments:
351
352keys array:
f9b1d9b2
AK
353 - "key": key sequence (a json-array of key union values,
354 union can be number or qcode enum)
e4c8f004
AK
355
356- hold-time: time to delay key up events, milliseconds. Defaults to 100
357 (json-int, optional)
358
359Example:
360
361-> { "execute": "send-key",
f9b1d9b2
AK
362 "arguments": { "keys": [ { "type": "qcode", "data": "ctrl" },
363 { "type": "qcode", "data": "alt" },
364 { "type": "qcode", "data": "delete" } ] } }
e4c8f004
AK
365<- { "return": {} }
366
82a56f0d
LC
367EQMP
368
369 {
370 .name = "cpu",
371 .args_type = "index:i",
7fad30f0 372 .mhandler.cmd_new = qmp_marshal_cpu,
82a56f0d
LC
373 },
374
375SQMP
376cpu
377---
378
379Set the default CPU.
380
381Arguments:
382
383- "index": the CPU's index (json-int)
384
385Example:
386
387-> { "execute": "cpu", "arguments": { "index": 0 } }
388<- { "return": {} }
389
390Note: CPUs' indexes are obtained with the 'query-cpus' command.
391
69ca3ea5
IM
392EQMP
393
394 {
395 .name = "cpu-add",
396 .args_type = "id:i",
7fad30f0 397 .mhandler.cmd_new = qmp_marshal_cpu_add,
69ca3ea5
IM
398 },
399
400SQMP
401cpu-add
402-------
403
404Adds virtual cpu
405
406Arguments:
407
408- "id": cpu id (json-int)
409
410Example:
411
412-> { "execute": "cpu-add", "arguments": { "id": 2 } }
413<- { "return": {} }
414
82a56f0d
LC
415EQMP
416
417 {
418 .name = "memsave",
0cfd6a9a 419 .args_type = "val:l,size:i,filename:s,cpu:i?",
7fad30f0 420 .mhandler.cmd_new = qmp_marshal_memsave,
82a56f0d
LC
421 },
422
423SQMP
424memsave
425-------
426
427Save to disk virtual memory dump starting at 'val' of size 'size'.
428
429Arguments:
430
431- "val": the starting address (json-int)
432- "size": the memory size, in bytes (json-int)
433- "filename": file path (json-string)
0cfd6a9a 434- "cpu": virtual CPU index (json-int, optional)
82a56f0d
LC
435
436Example:
437
438-> { "execute": "memsave",
439 "arguments": { "val": 10,
440 "size": 100,
441 "filename": "/tmp/virtual-mem-dump" } }
442<- { "return": {} }
443
82a56f0d
LC
444EQMP
445
446 {
447 .name = "pmemsave",
448 .args_type = "val:l,size:i,filename:s",
7fad30f0 449 .mhandler.cmd_new = qmp_marshal_pmemsave,
82a56f0d
LC
450 },
451
452SQMP
453pmemsave
454--------
455
456Save to disk physical memory dump starting at 'val' of size 'size'.
457
458Arguments:
459
460- "val": the starting address (json-int)
461- "size": the memory size, in bytes (json-int)
462- "filename": file path (json-string)
463
464Example:
465
466-> { "execute": "pmemsave",
467 "arguments": { "val": 10,
468 "size": 100,
469 "filename": "/tmp/physical-mem-dump" } }
470<- { "return": {} }
471
a4046664
LJ
472EQMP
473
474 {
475 .name = "inject-nmi",
476 .args_type = "",
7fad30f0 477 .mhandler.cmd_new = qmp_marshal_inject_nmi,
a4046664
LJ
478 },
479
480SQMP
481inject-nmi
482----------
483
9cb805fd 484Inject an NMI on the default CPU (x86/s390) or all CPUs (ppc64).
a4046664
LJ
485
486Arguments: None.
487
488Example:
489
490-> { "execute": "inject-nmi" }
491<- { "return": {} }
492
de253f14 493Note: inject-nmi fails when the guest doesn't support injecting.
a4046664 494
1f590cf9
LL
495EQMP
496
497 {
3949e594 498 .name = "ringbuf-write",
82e59a67 499 .args_type = "device:s,data:s,format:s?",
7fad30f0 500 .mhandler.cmd_new = qmp_marshal_ringbuf_write,
1f590cf9
LL
501 },
502
503SQMP
3949e594 504ringbuf-write
1f590cf9
LL
505-------------
506
3949e594 507Write to a ring buffer character device.
1f590cf9
LL
508
509Arguments:
510
3949e594
MA
511- "device": ring buffer character device name (json-string)
512- "data": data to write (json-string)
513- "format": data format (json-string, optional)
514 - Possible values: "utf8" (default), "base64"
1f590cf9
LL
515
516Example:
517
3949e594
MA
518-> { "execute": "ringbuf-write",
519 "arguments": { "device": "foo",
1f590cf9
LL
520 "data": "abcdefgh",
521 "format": "utf8" } }
522<- { "return": {} }
523
49b6d722
LL
524EQMP
525
526 {
3949e594 527 .name = "ringbuf-read",
49b6d722 528 .args_type = "device:s,size:i,format:s?",
7fad30f0 529 .mhandler.cmd_new = qmp_marshal_ringbuf_read,
49b6d722
LL
530 },
531
532SQMP
3949e594 533ringbuf-read
49b6d722
LL
534-------------
535
3949e594 536Read from a ring buffer character device.
49b6d722
LL
537
538Arguments:
539
3949e594
MA
540- "device": ring buffer character device name (json-string)
541- "size": how many bytes to read at most (json-int)
542 - Number of data bytes, not number of characters in encoded data
543- "format": data format (json-string, optional)
544 - Possible values: "utf8" (default), "base64"
545 - Naturally, format "utf8" works only when the ring buffer
546 contains valid UTF-8 text. Invalid UTF-8 sequences get
547 replaced. Bug: replacement doesn't work. Bug: can screw
548 up on encountering NUL characters, after the ring buffer
549 lost data, and when reading stops because the size limit
550 is reached.
49b6d722
LL
551
552Example:
553
3949e594
MA
554-> { "execute": "ringbuf-read",
555 "arguments": { "device": "foo",
49b6d722
LL
556 "size": 1000,
557 "format": "utf8" } }
3ab651fc 558<- {"return": "abcdefgh"}
49b6d722 559
a7ae8355
SS
560EQMP
561
562 {
563 .name = "xen-save-devices-state",
564 .args_type = "filename:F",
7fad30f0 565 .mhandler.cmd_new = qmp_marshal_xen_save_devices_state,
a7ae8355
SS
566 },
567
568SQMP
569xen-save-devices-state
570-------
571
572Save the state of all devices to file. The RAM and the block devices
573of the VM are not saved by this command.
574
575Arguments:
576
577- "filename": the file to save the state of the devices to as binary
578data. See xen-save-devices-state.txt for a description of the binary
579format.
580
581Example:
582
583-> { "execute": "xen-save-devices-state",
584 "arguments": { "filename": "/tmp/save" } }
585<- { "return": {} }
586
39f42439
AP
587EQMP
588
589 {
590 .name = "xen-set-global-dirty-log",
591 .args_type = "enable:b",
7fad30f0 592 .mhandler.cmd_new = qmp_marshal_xen_set_global_dirty_log,
39f42439
AP
593 },
594
595SQMP
596xen-set-global-dirty-log
597-------
598
599Enable or disable the global dirty log mode.
600
601Arguments:
602
603- "enable": Enable it or disable it.
604
605Example:
606
607-> { "execute": "xen-set-global-dirty-log",
608 "arguments": { "enable": true } }
609<- { "return": {} }
610
82a56f0d
LC
611EQMP
612
613 {
614 .name = "migrate",
615 .args_type = "detach:-d,blk:-b,inc:-i,uri:s",
7fad30f0 616 .mhandler.cmd_new = qmp_marshal_migrate,
82a56f0d
LC
617 },
618
619SQMP
620migrate
621-------
622
623Migrate to URI.
624
625Arguments:
626
627- "blk": block migration, full disk copy (json-bool, optional)
628- "inc": incremental disk copy (json-bool, optional)
629- "uri": Destination URI (json-string)
630
631Example:
632
633-> { "execute": "migrate", "arguments": { "uri": "tcp:0:4446" } }
634<- { "return": {} }
635
636Notes:
637
638(1) The 'query-migrate' command should be used to check migration's progress
639 and final result (this information is provided by the 'status' member)
640(2) All boolean arguments default to false
641(3) The user Monitor's "detach" argument is invalid in QMP and should not
642 be used
643
644EQMP
645
646 {
647 .name = "migrate_cancel",
648 .args_type = "",
7fad30f0 649 .mhandler.cmd_new = qmp_marshal_migrate_cancel,
82a56f0d
LC
650 },
651
652SQMP
653migrate_cancel
654--------------
655
656Cancel the current migration.
657
658Arguments: None.
659
660Example:
661
662-> { "execute": "migrate_cancel" }
663<- { "return": {} }
664
9e1ba4cc 665EQMP
bf1ae1f4
DDAG
666
667 {
668 .name = "migrate-incoming",
669 .args_type = "uri:s",
7fad30f0 670 .mhandler.cmd_new = qmp_marshal_migrate_incoming,
bf1ae1f4
DDAG
671 },
672
673SQMP
674migrate-incoming
675----------------
676
677Continue an incoming migration
678
679Arguments:
680
681- "uri": Source/listening URI (json-string)
682
683Example:
684
685-> { "execute": "migrate-incoming", "arguments": { "uri": "tcp::4446" } }
686<- { "return": {} }
687
688Notes:
689
690(1) QEMU must be started with -incoming defer to allow migrate-incoming to
691 be used
4aab6282 692(2) The uri format is the same as for -incoming
bf1ae1f4
DDAG
693
694EQMP
695 {
9e1ba4cc
OW
696 .name = "migrate-set-cache-size",
697 .args_type = "value:o",
7fad30f0 698 .mhandler.cmd_new = qmp_marshal_migrate_set_cache_size,
9e1ba4cc
OW
699 },
700
701SQMP
702migrate-set-cache-size
817c6045 703----------------------
9e1ba4cc
OW
704
705Set cache size to be used by XBZRLE migration, the cache size will be rounded
706down to the nearest power of 2
707
708Arguments:
709
710- "value": cache size in bytes (json-int)
711
712Example:
713
714-> { "execute": "migrate-set-cache-size", "arguments": { "value": 536870912 } }
715<- { "return": {} }
716
717EQMP
4886a1bc
DDAG
718 {
719 .name = "migrate-start-postcopy",
720 .args_type = "",
721 .mhandler.cmd_new = qmp_marshal_migrate_start_postcopy,
722 },
723
724SQMP
725migrate-start-postcopy
726----------------------
727
728Switch an in-progress migration to postcopy mode. Ignored after the end of
729migration (or once already in postcopy).
730
731Example:
732-> { "execute": "migrate-start-postcopy" }
733<- { "return": {} }
734
735EQMP
736
9e1ba4cc
OW
737 {
738 .name = "query-migrate-cache-size",
739 .args_type = "",
7fad30f0 740 .mhandler.cmd_new = qmp_marshal_query_migrate_cache_size,
9e1ba4cc
OW
741 },
742
743SQMP
744query-migrate-cache-size
817c6045 745------------------------
9e1ba4cc
OW
746
747Show cache size to be used by XBZRLE migration
748
749returns a json-object with the following information:
750- "size" : json-int
751
752Example:
753
754-> { "execute": "query-migrate-cache-size" }
755<- { "return": 67108864 }
756
82a56f0d
LC
757EQMP
758
759 {
760 .name = "migrate_set_speed",
3a019b6e 761 .args_type = "value:o",
7fad30f0 762 .mhandler.cmd_new = qmp_marshal_migrate_set_speed,
82a56f0d
LC
763 },
764
e866e239 765SQMP
ff73edf5
JS
766migrate_set_speed
767-----------------
e866e239 768
ff73edf5 769Set maximum speed for migrations.
e866e239
GH
770
771Arguments:
772
ff73edf5 773- "value": maximum speed, in bytes per second (json-int)
e866e239
GH
774
775Example:
776
ff73edf5 777-> { "execute": "migrate_set_speed", "arguments": { "value": 1024 } }
e866e239
GH
778<- { "return": {} }
779
780EQMP
781
782 {
ff73edf5
JS
783 .name = "migrate_set_downtime",
784 .args_type = "value:T",
7fad30f0 785 .mhandler.cmd_new = qmp_marshal_migrate_set_downtime,
e866e239
GH
786 },
787
82a56f0d 788SQMP
ff73edf5
JS
789migrate_set_downtime
790--------------------
82a56f0d 791
ff73edf5 792Set maximum tolerated downtime (in seconds) for migrations.
82a56f0d
LC
793
794Arguments:
795
ff73edf5 796- "value": maximum downtime (json-number)
82a56f0d
LC
797
798Example:
799
ff73edf5 800-> { "execute": "migrate_set_downtime", "arguments": { "value": 0.1 } }
82a56f0d
LC
801<- { "return": {} }
802
803EQMP
804
805 {
ff73edf5
JS
806 .name = "client_migrate_info",
807 .args_type = "protocol:s,hostname:s,port:i?,tls-port:i?,cert-subject:s?",
808 .params = "protocol hostname port tls-port cert-subject",
13cadefb 809 .help = "set migration information for remote display",
7fad30f0 810 .mhandler.cmd_new = qmp_marshal_client_migrate_info,
82a56f0d
LC
811 },
812
813SQMP
ff73edf5 814client_migrate_info
13cadefb 815-------------------
82a56f0d 816
13cadefb
MA
817Set migration information for remote display. This makes the server
818ask the client to automatically reconnect using the new parameters
819once migration finished successfully. Only implemented for SPICE.
82a56f0d
LC
820
821Arguments:
822
13cadefb 823- "protocol": must be "spice" (json-string)
ff73edf5 824- "hostname": migration target hostname (json-string)
13cadefb 825- "port": spice tcp port for plaintext channels (json-int, optional)
ff73edf5
JS
826- "tls-port": spice tcp port for tls-secured channels (json-int, optional)
827- "cert-subject": server certificate subject (json-string, optional)
82a56f0d
LC
828
829Example:
830
ff73edf5
JS
831-> { "execute": "client_migrate_info",
832 "arguments": { "protocol": "spice",
833 "hostname": "virt42.lab.kraxel.org",
834 "port": 1234 } }
82a56f0d
LC
835<- { "return": {} }
836
783e9b48
WC
837EQMP
838
839 {
840 .name = "dump-guest-memory",
b53ccc30
QN
841 .args_type = "paging:b,protocol:s,begin:i?,end:i?,format:s?",
842 .params = "-p protocol [begin] [length] [format]",
783e9b48 843 .help = "dump guest memory to file",
7fad30f0 844 .mhandler.cmd_new = qmp_marshal_dump_guest_memory,
783e9b48
WC
845 },
846
847SQMP
848dump
849
850
851Dump guest memory to file. The file can be processed with crash or gdb.
852
853Arguments:
854
855- "paging": do paging to get guest's memory mapping (json-bool)
856- "protocol": destination file(started with "file:") or destination file
857 descriptor (started with "fd:") (json-string)
858- "begin": the starting physical address. It's optional, and should be specified
859 with length together (json-int)
860- "length": the memory size, in bytes. It's optional, and should be specified
861 with begin together (json-int)
b53ccc30
QN
862- "format": the format of guest memory dump. It's optional, and can be
863 elf|kdump-zlib|kdump-lzo|kdump-snappy, but non-elf formats will
864 conflict with paging and filter, ie. begin and length (json-string)
783e9b48
WC
865
866Example:
867
868-> { "execute": "dump-guest-memory", "arguments": { "protocol": "fd:dump" } }
869<- { "return": {} }
870
871Notes:
872
873(1) All boolean arguments default to false
874
7d6dc7f3
QN
875EQMP
876
877 {
878 .name = "query-dump-guest-memory-capability",
879 .args_type = "",
7fad30f0 880 .mhandler.cmd_new = qmp_marshal_query_dump_guest_memory_capability,
7d6dc7f3
QN
881 },
882
883SQMP
884query-dump-guest-memory-capability
885----------
886
887Show available formats for 'dump-guest-memory'
888
889Example:
890
891-> { "execute": "query-dump-guest-memory-capability" }
892<- { "return": { "formats":
893 ["elf", "kdump-zlib", "kdump-lzo", "kdump-snappy"] }
894
7ee0c3e3
JH
895EQMP
896
897#if defined TARGET_S390X
898 {
899 .name = "dump-skeys",
900 .args_type = "filename:F",
7fad30f0 901 .mhandler.cmd_new = qmp_marshal_dump_skeys,
7ee0c3e3
JH
902 },
903#endif
904
905SQMP
906dump-skeys
907----------
908
909Save guest storage keys to file.
910
911Arguments:
912
913- "filename": file path (json-string)
914
915Example:
916
917-> { "execute": "dump-skeys", "arguments": { "filename": "/tmp/skeys" } }
918<- { "return": {} }
919
82a56f0d
LC
920EQMP
921
922 {
923 .name = "netdev_add",
924 .args_type = "netdev:O",
928059a3 925 .mhandler.cmd_new = qmp_netdev_add,
82a56f0d
LC
926 },
927
928SQMP
929netdev_add
930----------
931
932Add host network device.
933
934Arguments:
935
936- "type": the device type, "tap", "user", ... (json-string)
937- "id": the device's ID, must be unique (json-string)
938- device options
939
940Example:
941
b8a98326
MA
942-> { "execute": "netdev_add",
943 "arguments": { "type": "user", "id": "netdev1",
944 "dnssearch": "example.org" } }
82a56f0d
LC
945<- { "return": {} }
946
af347aa5 947Note: The supported device options are the same ones supported by the '-netdev'
82a56f0d
LC
948 command-line argument, which are listed in the '-help' output or QEMU's
949 manual
950
951EQMP
952
953 {
954 .name = "netdev_del",
955 .args_type = "id:s",
7fad30f0 956 .mhandler.cmd_new = qmp_marshal_netdev_del,
82a56f0d
LC
957 },
958
959SQMP
960netdev_del
961----------
962
963Remove host network device.
964
965Arguments:
966
967- "id": the device's ID, must be unique (json-string)
968
969Example:
970
971-> { "execute": "netdev_del", "arguments": { "id": "netdev1" } }
972<- { "return": {} }
973
6d4a2b3a 974
cff8b2c6
PB
975EQMP
976
977 {
978 .name = "object-add",
979 .args_type = "qom-type:s,id:s,props:q?",
6eb3937e 980 .mhandler.cmd_new = qmp_marshal_object_add,
cff8b2c6
PB
981 },
982
983SQMP
984object-add
985----------
986
987Create QOM object.
988
989Arguments:
990
991- "qom-type": the object's QOM type, i.e. the class name (json-string)
992- "id": the object's ID, must be unique (json-string)
993- "props": a dictionary of object property values (optional, json-dict)
994
995Example:
996
997-> { "execute": "object-add", "arguments": { "qom-type": "rng-random", "id": "rng1",
998 "props": { "filename": "/dev/hwrng" } } }
999<- { "return": {} }
1000
6d4a2b3a
CH
1001EQMP
1002
ab2d0531
PB
1003 {
1004 .name = "object-del",
1005 .args_type = "id:s",
7fad30f0 1006 .mhandler.cmd_new = qmp_marshal_object_del,
ab2d0531
PB
1007 },
1008
1009SQMP
1010object-del
1011----------
1012
1013Remove QOM object.
1014
1015Arguments:
1016
1017- "id": the object's ID (json-string)
1018
1019Example:
1020
1021-> { "execute": "object-del", "arguments": { "id": "rng1" } }
1022<- { "return": {} }
1023
1024
1025EQMP
1026
1027
6d4a2b3a
CH
1028 {
1029 .name = "block_resize",
3b1dbd11 1030 .args_type = "device:s?,node-name:s?,size:o",
7fad30f0 1031 .mhandler.cmd_new = qmp_marshal_block_resize,
6d4a2b3a
CH
1032 },
1033
1034SQMP
1035block_resize
1036------------
1037
1038Resize a block image while a guest is running.
1039
1040Arguments:
1041
1042- "device": the device's ID, must be unique (json-string)
3b1dbd11 1043- "node-name": the node name in the block driver state graph (json-string)
6d4a2b3a
CH
1044- "size": new size
1045
1046Example:
1047
1048-> { "execute": "block_resize", "arguments": { "device": "scratch", "size": 1073741824 } }
1049<- { "return": {} }
1050
d967b2f1
JS
1051EQMP
1052
12bd451f 1053 {
db58f9c0 1054 .name = "block-stream",
13d8cc51 1055 .args_type = "device:B,base:s?,speed:o?,backing-file:s?,on-error:s?",
7fad30f0 1056 .mhandler.cmd_new = qmp_marshal_block_stream,
12bd451f
SH
1057 },
1058
ec683d60
SH
1059SQMP
1060block-stream
1061------------
1062
1063Copy data from a backing file into a block device.
1064
1065Arguments:
1066
1067- "device": The device's ID, must be unique (json-string)
1068- "base": The file name of the backing image above which copying starts
1069 (json-string, optional)
1070- "backing-file": The backing file string to write into the active layer. This
1071 filename is not validated.
1072
1073 If a pathname string is such that it cannot be resolved by
1074 QEMU, that means that subsequent QMP or HMP commands must use
1075 node-names for the image in question, as filename lookup
1076 methods will fail.
1077
1078 If not specified, QEMU will automatically determine the
1079 backing file string to use, or error out if there is no
1080 obvious choice. Care should be taken when specifying the
1081 string, to specify a valid filename or protocol.
1082 (json-string, optional) (Since 2.1)
1083- "speed": the maximum speed, in bytes per second (json-int, optional)
1084- "on-error": the action to take on an error (default 'report'). 'stop' and
1085 'enospc' can only be used if the block device supports io-status.
1086 (json-string, optional) (Since 2.1)
1087
1088Example:
1089
1090-> { "execute": "block-stream", "arguments": { "device": "virtio0",
1091 "base": "/tmp/master.qcow2" } }
1092<- { "return": {} }
1093
1094EQMP
1095
ed61fc10
JC
1096 {
1097 .name = "block-commit",
54e26900 1098 .args_type = "device:B,base:s?,top:s?,backing-file:s?,speed:o?",
7fad30f0 1099 .mhandler.cmd_new = qmp_marshal_block_commit,
ed61fc10
JC
1100 },
1101
37222900
JC
1102SQMP
1103block-commit
1104------------
1105
1106Live commit of data from overlay image nodes into backing nodes - i.e., writes
1107data between 'top' and 'base' into 'base'.
1108
1109Arguments:
1110
1111- "device": The device's ID, must be unique (json-string)
1112- "base": The file name of the backing image to write data into.
1113 If not specified, this is the deepest backing image
1114 (json-string, optional)
1115- "top": The file name of the backing image within the image chain,
7676e2c5
JC
1116 which contains the topmost data to be committed down. If
1117 not specified, this is the active layer. (json-string, optional)
37222900 1118
54e26900
JC
1119- backing-file: The backing file string to write into the overlay
1120 image of 'top'. If 'top' is the active layer,
1121 specifying a backing file string is an error. This
1122 filename is not validated.
1123
1124 If a pathname string is such that it cannot be
1125 resolved by QEMU, that means that subsequent QMP or
1126 HMP commands must use node-names for the image in
1127 question, as filename lookup methods will fail.
1128
1129 If not specified, QEMU will automatically determine
1130 the backing file string to use, or error out if
1131 there is no obvious choice. Care should be taken
1132 when specifying the string, to specify a valid
1133 filename or protocol.
1134 (json-string, optional) (Since 2.1)
1135
37222900
JC
1136 If top == base, that is an error.
1137 If top == active, the job will not be completed by itself,
1138 user needs to complete the job with the block-job-complete
1139 command after getting the ready event. (Since 2.0)
1140
1141 If the base image is smaller than top, then the base image
1142 will be resized to be the same size as top. If top is
1143 smaller than the base image, the base will not be
1144 truncated. If you want the base image size to match the
1145 size of the smaller top, you can safely truncate it
1146 yourself once the commit operation successfully completes.
1147 (json-string)
1148- "speed": the maximum speed, in bytes per second (json-int, optional)
1149
1150
1151Example:
1152
1153-> { "execute": "block-commit", "arguments": { "device": "virtio0",
1154 "top": "/tmp/snap1.qcow2" } }
1155<- { "return": {} }
1156
1157EQMP
1158
99a9addf
SH
1159 {
1160 .name = "drive-backup",
b53169ea 1161 .args_type = "sync:s,device:B,target:s,speed:i?,mode:s?,format:s?,"
d58d8453 1162 "bitmap:s?,on-source-error:s?,on-target-error:s?",
7fad30f0 1163 .mhandler.cmd_new = qmp_marshal_drive_backup,
99a9addf
SH
1164 },
1165
1166SQMP
1167drive-backup
1168------------
1169
1170Start a point-in-time copy of a block device to a new destination. The
1171status of ongoing drive-backup operations can be checked with
1172query-block-jobs where the BlockJobInfo.type field has the value 'backup'.
1173The operation can be stopped before it has completed using the
1174block-job-cancel command.
1175
1176Arguments:
1177
1178- "device": the name of the device which should be copied.
1179 (json-string)
1180- "target": the target of the new image. If the file exists, or if it is a
1181 device, the existing file/device will be used as the new
1182 destination. If it does not exist, a new file will be created.
1183 (json-string)
1184- "format": the format of the new destination, default is to probe if 'mode' is
1185 'existing', else the format of the source
1186 (json-string, optional)
b53169ea
SH
1187- "sync": what parts of the disk image should be copied to the destination;
1188 possibilities include "full" for all the disk, "top" for only the sectors
4b80ab2b 1189 allocated in the topmost image, "incremental" for only the dirty sectors in
d58d8453 1190 the bitmap, or "none" to only replicate new I/O (MirrorSyncMode).
4b80ab2b
JS
1191- "bitmap": dirty bitmap name for sync==incremental. Must be present if sync
1192 is "incremental", must NOT be present otherwise.
99a9addf
SH
1193- "mode": whether and how QEMU should create a new image
1194 (NewImageMode, optional, default 'absolute-paths')
1195- "speed": the maximum speed, in bytes per second (json-int, optional)
1196- "on-source-error": the action to take on an error on the source, default
1197 'report'. 'stop' and 'enospc' can only be used
1198 if the block device supports io-status.
1199 (BlockdevOnError, optional)
1200- "on-target-error": the action to take on an error on the target, default
1201 'report' (no limitations, since this applies to
1202 a different block device than device).
1203 (BlockdevOnError, optional)
1204
1205Example:
1206-> { "execute": "drive-backup", "arguments": { "device": "drive0",
fc5d3f84 1207 "sync": "full",
99a9addf
SH
1208 "target": "backup.img" } }
1209<- { "return": {} }
c29c1dd3
FZ
1210
1211EQMP
1212
1213 {
1214 .name = "blockdev-backup",
1215 .args_type = "sync:s,device:B,target:B,speed:i?,"
1216 "on-source-error:s?,on-target-error:s?",
7fad30f0 1217 .mhandler.cmd_new = qmp_marshal_blockdev_backup,
c29c1dd3
FZ
1218 },
1219
1220SQMP
1221blockdev-backup
1222---------------
1223
1224The device version of drive-backup: this command takes an existing named device
1225as backup target.
1226
1227Arguments:
1228
1229- "device": the name of the device which should be copied.
1230 (json-string)
1231- "target": the name of the backup target device. (json-string)
1232- "sync": what parts of the disk image should be copied to the destination;
1233 possibilities include "full" for all the disk, "top" for only the
1234 sectors allocated in the topmost image, or "none" to only replicate
1235 new I/O (MirrorSyncMode).
1236- "speed": the maximum speed, in bytes per second (json-int, optional)
1237- "on-source-error": the action to take on an error on the source, default
1238 'report'. 'stop' and 'enospc' can only be used
1239 if the block device supports io-status.
1240 (BlockdevOnError, optional)
1241- "on-target-error": the action to take on an error on the target, default
1242 'report' (no limitations, since this applies to
1243 a different block device than device).
1244 (BlockdevOnError, optional)
1245
1246Example:
1247-> { "execute": "blockdev-backup", "arguments": { "device": "src-id",
1248 "sync": "full",
1249 "target": "tgt-id" } }
1250<- { "return": {} }
1251
99a9addf
SH
1252EQMP
1253
2d47c6e9 1254 {
db58f9c0 1255 .name = "block-job-set-speed",
882ec7ce 1256 .args_type = "device:B,speed:o",
7fad30f0 1257 .mhandler.cmd_new = qmp_marshal_block_job_set_speed,
2d47c6e9
SH
1258 },
1259
370521a1 1260 {
db58f9c0 1261 .name = "block-job-cancel",
6e37fb81 1262 .args_type = "device:B,force:b?",
7fad30f0 1263 .mhandler.cmd_new = qmp_marshal_block_job_cancel,
370521a1 1264 },
6e37fb81
PB
1265 {
1266 .name = "block-job-pause",
1267 .args_type = "device:B",
7fad30f0 1268 .mhandler.cmd_new = qmp_marshal_block_job_pause,
6e37fb81
PB
1269 },
1270 {
1271 .name = "block-job-resume",
1272 .args_type = "device:B",
7fad30f0 1273 .mhandler.cmd_new = qmp_marshal_block_job_resume,
6e37fb81 1274 },
aeae883b
PB
1275 {
1276 .name = "block-job-complete",
1277 .args_type = "device:B",
7fad30f0 1278 .mhandler.cmd_new = qmp_marshal_block_job_complete,
aeae883b 1279 },
c186402c 1280 {
52e7c241 1281 .name = "transaction",
94d16a64 1282 .args_type = "actions:q,properties:q?",
7fad30f0 1283 .mhandler.cmd_new = qmp_marshal_transaction,
c186402c
JC
1284 },
1285
1286SQMP
52e7c241
PB
1287transaction
1288-----------
c186402c 1289
a910523a
KC
1290Atomically operate on one or more block devices. Operations that are
1291currently supported:
1292
1293 - drive-backup
1294 - blockdev-backup
1295 - blockdev-snapshot-sync
1296 - blockdev-snapshot-internal-sync
1297 - abort
1298 - block-dirty-bitmap-add
1299 - block-dirty-bitmap-clear
1300
1301Refer to the qemu/qapi-schema.json file for minimum required QEMU
1302versions for these operations. A list of dictionaries is accepted,
1303that contains the actions to be performed. If there is any failure
1304performing any of the operations, all operations for the group are
1305abandoned.
c186402c 1306
bbe86010
WX
1307For external snapshots, the dictionary contains the device, the file to use for
1308the new snapshot, and the format. The default format, if not specified, is
1309qcow2.
c186402c 1310
bc8b094f
PB
1311Each new snapshot defaults to being created by QEMU (wiping any
1312contents if the file already exists), but it is also possible to reuse
1313an externally-created file. In the latter case, you should ensure that
1314the new image file has the same contents as the current one; QEMU cannot
1315perform any meaningful check. Typically this is achieved by using the
1316current image file as the backing file for the new image.
1317
bbe86010
WX
1318On failure, the original disks pre-snapshot attempt will be used.
1319
1320For internal snapshots, the dictionary contains the device and the snapshot's
1321name. If an internal snapshot matching name already exists, the request will
1322be rejected. Only some image formats support it, for example, qcow2, rbd,
1323and sheepdog.
1324
1325On failure, qemu will try delete the newly created internal snapshot in the
1326transaction. When an I/O error occurs during deletion, the user needs to fix
1327it later with qemu-img or other command.
1328
c186402c
JC
1329Arguments:
1330
52e7c241 1331actions array:
a910523a
KC
1332 - "type": the operation to perform (json-string). Possible
1333 values: "drive-backup", "blockdev-backup",
1334 "blockdev-snapshot-sync",
1335 "blockdev-snapshot-internal-sync",
1336 "abort", "block-dirty-bitmap-add",
1337 "block-dirty-bitmap-clear"
52e7c241
PB
1338 - "data": a dictionary. The contents depend on the value
1339 of "type". When "type" is "blockdev-snapshot-sync":
1340 - "device": device name to snapshot (json-string)
0901f67e 1341 - "node-name": graph node name to snapshot (json-string)
52e7c241 1342 - "snapshot-file": name of new image file (json-string)
0901f67e 1343 - "snapshot-node-name": graph node name of the new snapshot (json-string)
52e7c241 1344 - "format": format of new image (json-string, optional)
bc8b094f
PB
1345 - "mode": whether and how QEMU should create the snapshot file
1346 (NewImageMode, optional, default "absolute-paths")
bbe86010
WX
1347 When "type" is "blockdev-snapshot-internal-sync":
1348 - "device": device name to snapshot (json-string)
1349 - "name": name of the new snapshot (json-string)
c186402c
JC
1350
1351Example:
1352
52e7c241
PB
1353-> { "execute": "transaction",
1354 "arguments": { "actions": [
cd0c5389 1355 { "type": "blockdev-snapshot-sync", "data" : { "device": "ide-hd0",
52e7c241
PB
1356 "snapshot-file": "/some/place/my-image",
1357 "format": "qcow2" } },
cd0c5389 1358 { "type": "blockdev-snapshot-sync", "data" : { "node-name": "myfile",
0901f67e
BC
1359 "snapshot-file": "/some/place/my-image2",
1360 "snapshot-node-name": "node3432",
1361 "mode": "existing",
1362 "format": "qcow2" } },
cd0c5389 1363 { "type": "blockdev-snapshot-sync", "data" : { "device": "ide-hd1",
52e7c241 1364 "snapshot-file": "/some/place/my-image2",
bc8b094f 1365 "mode": "existing",
bbe86010 1366 "format": "qcow2" } },
cd0c5389 1367 { "type": "blockdev-snapshot-internal-sync", "data" : {
bbe86010
WX
1368 "device": "ide-hd2",
1369 "name": "snapshot0" } } ] } }
c186402c
JC
1370<- { "return": {} }
1371
341ebc2f
JS
1372EQMP
1373
1374 {
1375 .name = "block-dirty-bitmap-add",
1376 .args_type = "node:B,name:s,granularity:i?",
7fad30f0 1377 .mhandler.cmd_new = qmp_marshal_block_dirty_bitmap_add,
341ebc2f
JS
1378 },
1379
1380SQMP
1381
1382block-dirty-bitmap-add
1383----------------------
1384Since 2.4
1385
1386Create a dirty bitmap with a name on the device, and start tracking the writes.
1387
1388Arguments:
1389
1390- "node": device/node on which to create dirty bitmap (json-string)
1391- "name": name of the new dirty bitmap (json-string)
1392- "granularity": granularity to track writes with (int, optional)
1393
1394Example:
1395
1396-> { "execute": "block-dirty-bitmap-add", "arguments": { "node": "drive0",
1397 "name": "bitmap0" } }
1398<- { "return": {} }
1399
1400EQMP
1401
1402 {
1403 .name = "block-dirty-bitmap-remove",
1404 .args_type = "node:B,name:s",
7fad30f0 1405 .mhandler.cmd_new = qmp_marshal_block_dirty_bitmap_remove,
341ebc2f
JS
1406 },
1407
1408SQMP
1409
1410block-dirty-bitmap-remove
1411-------------------------
1412Since 2.4
1413
1414Stop write tracking and remove the dirty bitmap that was created with
1415block-dirty-bitmap-add.
1416
1417Arguments:
1418
1419- "node": device/node on which to remove dirty bitmap (json-string)
1420- "name": name of the dirty bitmap to remove (json-string)
1421
1422Example:
1423
1424-> { "execute": "block-dirty-bitmap-remove", "arguments": { "node": "drive0",
1425 "name": "bitmap0" } }
1426<- { "return": {} }
1427
e74e6b78
JS
1428EQMP
1429
1430 {
1431 .name = "block-dirty-bitmap-clear",
1432 .args_type = "node:B,name:s",
7fad30f0 1433 .mhandler.cmd_new = qmp_marshal_block_dirty_bitmap_clear,
e74e6b78
JS
1434 },
1435
1436SQMP
1437
1438block-dirty-bitmap-clear
1439------------------------
1440Since 2.4
1441
1442Reset the dirty bitmap associated with a node so that an incremental backup
1443from this point in time forward will only backup clusters modified after this
1444clear operation.
1445
1446Arguments:
1447
1448- "node": device/node on which to remove dirty bitmap (json-string)
1449- "name": name of the dirty bitmap to remove (json-string)
1450
1451Example:
1452
1453-> { "execute": "block-dirty-bitmap-clear", "arguments": { "node": "drive0",
1454 "name": "bitmap0" } }
1455<- { "return": {} }
1456
c186402c 1457EQMP
370521a1 1458
d967b2f1
JS
1459 {
1460 .name = "blockdev-snapshot-sync",
0901f67e 1461 .args_type = "device:s?,node-name:s?,snapshot-file:s,snapshot-node-name:s?,format:s?,mode:s?",
7fad30f0 1462 .mhandler.cmd_new = qmp_marshal_blockdev_snapshot_sync,
d967b2f1
JS
1463 },
1464
1465SQMP
1466blockdev-snapshot-sync
1467----------------------
1468
1469Synchronous snapshot of a block device. snapshot-file specifies the
1470target of the new image. If the file exists, or if it is a device, the
1471snapshot will be created in the existing file/device. If does not
1472exist, a new file will be created. format specifies the format of the
1473snapshot image, default is qcow2.
1474
1475Arguments:
1476
1477- "device": device name to snapshot (json-string)
0901f67e 1478- "node-name": graph node name to snapshot (json-string)
d967b2f1 1479- "snapshot-file": name of new image file (json-string)
0901f67e 1480- "snapshot-node-name": graph node name of the new snapshot (json-string)
6cc2a415
PB
1481- "mode": whether and how QEMU should create the snapshot file
1482 (NewImageMode, optional, default "absolute-paths")
d967b2f1
JS
1483- "format": format of new image (json-string, optional)
1484
1485Example:
1486
7f3850c2
LC
1487-> { "execute": "blockdev-snapshot-sync", "arguments": { "device": "ide-hd0",
1488 "snapshot-file":
1489 "/some/place/my-image",
1490 "format": "qcow2" } }
d967b2f1
JS
1491<- { "return": {} }
1492
43de7e2d
AG
1493EQMP
1494
1495 {
1496 .name = "blockdev-snapshot",
1497 .args_type = "node:s,overlay:s",
1498 .mhandler.cmd_new = qmp_marshal_blockdev_snapshot,
1499 },
1500
1501SQMP
1502blockdev-snapshot
1503-----------------
1504Since 2.5
1505
1506Create a snapshot, by installing 'node' as the backing image of
1507'overlay'. Additionally, if 'node' is associated with a block
1508device, the block device changes to using 'overlay' as its new active
1509image.
1510
1511Arguments:
1512
1513- "node": device that will have a snapshot created (json-string)
1514- "overlay": device that will have 'node' as its backing image (json-string)
1515
1516Example:
1517
1518-> { "execute": "blockdev-add",
1519 "arguments": { "options": { "driver": "qcow2",
1520 "node-name": "node1534",
1521 "file": { "driver": "file",
1522 "filename": "hd1.qcow2" },
1523 "backing": "" } } }
1524
1525<- { "return": {} }
1526
1527-> { "execute": "blockdev-snapshot", "arguments": { "node": "ide-hd0",
1528 "overlay": "node1534" } }
1529<- { "return": {} }
1530
f323bc9e
WX
1531EQMP
1532
1533 {
1534 .name = "blockdev-snapshot-internal-sync",
1535 .args_type = "device:B,name:s",
7fad30f0 1536 .mhandler.cmd_new = qmp_marshal_blockdev_snapshot_internal_sync,
f323bc9e
WX
1537 },
1538
1539SQMP
1540blockdev-snapshot-internal-sync
1541-------------------------------
1542
1543Synchronously take an internal snapshot of a block device when the format of
1544image used supports it. If the name is an empty string, or a snapshot with
1545name already exists, the operation will fail.
1546
1547Arguments:
1548
1549- "device": device name to snapshot (json-string)
1550- "name": name of the new snapshot (json-string)
1551
1552Example:
1553
1554-> { "execute": "blockdev-snapshot-internal-sync",
1555 "arguments": { "device": "ide-hd0",
1556 "name": "snapshot0" }
1557 }
1558<- { "return": {} }
1559
44e3e053
WX
1560EQMP
1561
1562 {
1563 .name = "blockdev-snapshot-delete-internal-sync",
1564 .args_type = "device:B,id:s?,name:s?",
1565 .mhandler.cmd_new =
7fad30f0 1566 qmp_marshal_blockdev_snapshot_delete_internal_sync,
44e3e053
WX
1567 },
1568
1569SQMP
1570blockdev-snapshot-delete-internal-sync
1571--------------------------------------
1572
1573Synchronously delete an internal snapshot of a block device when the format of
1574image used supports it. The snapshot is identified by name or id or both. One
1575of name or id is required. If the snapshot is not found, the operation will
1576fail.
1577
1578Arguments:
1579
1580- "device": device name (json-string)
1581- "id": ID of the snapshot (json-string, optional)
1582- "name": name of the snapshot (json-string, optional)
1583
1584Example:
1585
1586-> { "execute": "blockdev-snapshot-delete-internal-sync",
1587 "arguments": { "device": "ide-hd0",
1588 "name": "snapshot0" }
1589 }
1590<- { "return": {
1591 "id": "1",
1592 "name": "snapshot0",
1593 "vm-state-size": 0,
1594 "date-sec": 1000012,
1595 "date-nsec": 10,
1596 "vm-clock-sec": 100,
1597 "vm-clock-nsec": 20
1598 }
1599 }
1600
d9b902db
PB
1601EQMP
1602
1603 {
1604 .name = "drive-mirror",
b952b558 1605 .args_type = "sync:s,device:B,target:s,speed:i?,mode:s?,format:s?,"
09158f00 1606 "node-name:s?,replaces:s?,"
eee13dfe 1607 "on-source-error:s?,on-target-error:s?,"
0fc9f8ea 1608 "unmap:b?,"
08e4ed6c 1609 "granularity:i?,buf-size:i?",
7fad30f0 1610 .mhandler.cmd_new = qmp_marshal_drive_mirror,
d9b902db
PB
1611 },
1612
1613SQMP
1614drive-mirror
1615------------
1616
1617Start mirroring a block device's writes to a new destination. target
1618specifies the target of the new image. If the file exists, or if it is
1619a device, it will be used as the new destination for writes. If it does not
1620exist, a new file will be created. format specifies the format of the
1621mirror image, default is to probe if mode='existing', else the format
1622of the source.
1623
1624Arguments:
1625
1626- "device": device name to operate on (json-string)
1627- "target": name of new image file (json-string)
1628- "format": format of new image (json-string, optional)
4c828dc6
BC
1629- "node-name": the name of the new block driver state in the node graph
1630 (json-string, optional)
09158f00
BC
1631- "replaces": the block driver node name to replace when finished
1632 (json-string, optional)
d9b902db
PB
1633- "mode": how an image file should be created into the target
1634 file/device (NewImageMode, optional, default 'absolute-paths')
1635- "speed": maximum speed of the streaming job, in bytes per second
1636 (json-int)
eee13dfe 1637- "granularity": granularity of the dirty bitmap, in bytes (json-int, optional)
df92562e 1638- "buf-size": maximum amount of data in flight from source to target, in bytes
08e4ed6c 1639 (json-int, default 10M)
d9b902db
PB
1640- "sync": what parts of the disk image should be copied to the destination;
1641 possibilities include "full" for all the disk, "top" for only the sectors
1642 allocated in the topmost image, or "none" to only replicate new I/O
1643 (MirrorSyncMode).
b952b558
PB
1644- "on-source-error": the action to take on an error on the source
1645 (BlockdevOnError, default 'report')
1646- "on-target-error": the action to take on an error on the target
1647 (BlockdevOnError, default 'report')
0fc9f8ea
FZ
1648- "unmap": whether the target sectors should be discarded where source has only
1649 zeroes. (json-bool, optional, default true)
b952b558 1650
eee13dfe
PB
1651The default value of the granularity is the image cluster size clamped
1652between 4096 and 65536, if the image format defines one. If the format
1653does not define a cluster size, the default value of the granularity
1654is 65536.
d9b902db
PB
1655
1656
1657Example:
1658
1659-> { "execute": "drive-mirror", "arguments": { "device": "ide-hd0",
1660 "target": "/some/place/my-image",
1661 "sync": "full",
1662 "format": "qcow2" } }
1663<- { "return": {} }
1664
fa40e656
JC
1665EQMP
1666
df92562e
FZ
1667 {
1668 .name = "blockdev-mirror",
1669 .args_type = "sync:s,device:B,target:B,replaces:s?,speed:i?,"
1670 "on-source-error:s?,on-target-error:s?,"
1671 "granularity:i?,buf-size:i?",
1672 .mhandler.cmd_new = qmp_marshal_blockdev_mirror,
1673 },
1674
1675SQMP
1676blockdev-mirror
1677------------
1678
1679Start mirroring a block device's writes to another block device. target
1680specifies the target of mirror operation.
1681
1682Arguments:
1683
1684- "device": device name to operate on (json-string)
1685- "target": device name to mirror to (json-string)
1686- "replaces": the block driver node name to replace when finished
1687 (json-string, optional)
1688- "speed": maximum speed of the streaming job, in bytes per second
1689 (json-int)
1690- "granularity": granularity of the dirty bitmap, in bytes (json-int, optional)
1691- "buf_size": maximum amount of data in flight from source to target, in bytes
1692 (json-int, default 10M)
1693- "sync": what parts of the disk image should be copied to the destination;
1694 possibilities include "full" for all the disk, "top" for only the sectors
1695 allocated in the topmost image, or "none" to only replicate new I/O
1696 (MirrorSyncMode).
1697- "on-source-error": the action to take on an error on the source
1698 (BlockdevOnError, default 'report')
1699- "on-target-error": the action to take on an error on the target
1700 (BlockdevOnError, default 'report')
1701
1702The default value of the granularity is the image cluster size clamped
1703between 4096 and 65536, if the image format defines one. If the format
1704does not define a cluster size, the default value of the granularity
1705is 65536.
1706
1707Example:
1708
1709-> { "execute": "blockdev-mirror", "arguments": { "device": "ide-hd0",
1710 "target": "target0",
1711 "sync": "full" } }
1712<- { "return": {} }
1713
1714EQMP
fa40e656
JC
1715 {
1716 .name = "change-backing-file",
1717 .args_type = "device:s,image-node-name:s,backing-file:s",
7fad30f0 1718 .mhandler.cmd_new = qmp_marshal_change_backing_file,
fa40e656
JC
1719 },
1720
1721SQMP
1722change-backing-file
1723-------------------
1724Since: 2.1
1725
1726Change the backing file in the image file metadata. This does not cause
1727QEMU to reopen the image file to reparse the backing filename (it may,
1728however, perform a reopen to change permissions from r/o -> r/w -> r/o,
1729if needed). The new backing file string is written into the image file
1730metadata, and the QEMU internal strings are updated.
1731
1732Arguments:
1733
1734- "image-node-name": The name of the block driver state node of the
1735 image to modify. The "device" is argument is used to
1736 verify "image-node-name" is in the chain described by
1737 "device".
1738 (json-string, optional)
1739
1740- "device": The name of the device.
1741 (json-string)
1742
1743- "backing-file": The string to write as the backing file. This string is
1744 not validated, so care should be taken when specifying
1745 the string or the image chain may not be able to be
1746 reopened again.
1747 (json-string)
1748
1749Returns: Nothing on success
1750 If "device" does not exist or cannot be determined, DeviceNotFound
1751
82a56f0d
LC
1752EQMP
1753
1754 {
1755 .name = "balloon",
1756 .args_type = "value:M",
7fad30f0 1757 .mhandler.cmd_new = qmp_marshal_balloon,
82a56f0d
LC
1758 },
1759
1760SQMP
1761balloon
1762-------
1763
1764Request VM to change its memory allocation (in bytes).
1765
1766Arguments:
1767
1768- "value": New memory allocation (json-int)
1769
1770Example:
1771
1772-> { "execute": "balloon", "arguments": { "value": 536870912 } }
1773<- { "return": {} }
1774
1775EQMP
1776
1777 {
1778 .name = "set_link",
1779 .args_type = "name:s,up:b",
7fad30f0 1780 .mhandler.cmd_new = qmp_marshal_set_link,
82a56f0d
LC
1781 },
1782
1783SQMP
1784set_link
1785--------
1786
1787Change the link status of a network adapter.
1788
1789Arguments:
1790
1791- "name": network device name (json-string)
1792- "up": status is up (json-bool)
1793
1794Example:
1795
1796-> { "execute": "set_link", "arguments": { "name": "e1000.0", "up": false } }
1797<- { "return": {} }
1798
1799EQMP
1800
1801 {
1802 .name = "getfd",
1803 .args_type = "fdname:s",
1804 .params = "getfd name",
1805 .help = "receive a file descriptor via SCM rights and assign it a name",
7fad30f0 1806 .mhandler.cmd_new = qmp_marshal_getfd,
82a56f0d
LC
1807 },
1808
1809SQMP
1810getfd
1811-----
1812
1813Receive a file descriptor via SCM rights and assign it a name.
1814
1815Arguments:
1816
1817- "fdname": file descriptor name (json-string)
1818
1819Example:
1820
1821-> { "execute": "getfd", "arguments": { "fdname": "fd1" } }
1822<- { "return": {} }
1823
208c9d1b
CB
1824Notes:
1825
1826(1) If the name specified by the "fdname" argument already exists,
1827 the file descriptor assigned to it will be closed and replaced
1828 by the received file descriptor.
1829(2) The 'closefd' command can be used to explicitly close the file
1830 descriptor when it is no longer needed.
1831
82a56f0d
LC
1832EQMP
1833
1834 {
1835 .name = "closefd",
1836 .args_type = "fdname:s",
1837 .params = "closefd name",
1838 .help = "close a file descriptor previously passed via SCM rights",
7fad30f0 1839 .mhandler.cmd_new = qmp_marshal_closefd,
82a56f0d
LC
1840 },
1841
1842SQMP
1843closefd
1844-------
1845
1846Close a file descriptor previously passed via SCM rights.
1847
1848Arguments:
1849
1850- "fdname": file descriptor name (json-string)
1851
1852Example:
1853
1854-> { "execute": "closefd", "arguments": { "fdname": "fd1" } }
1855<- { "return": {} }
1856
ba1c048a
CB
1857EQMP
1858
1859 {
1860 .name = "add-fd",
1861 .args_type = "fdset-id:i?,opaque:s?",
1862 .params = "add-fd fdset-id opaque",
1863 .help = "Add a file descriptor, that was passed via SCM rights, to an fd set",
7fad30f0 1864 .mhandler.cmd_new = qmp_marshal_add_fd,
ba1c048a
CB
1865 },
1866
1867SQMP
1868add-fd
1869-------
1870
1871Add a file descriptor, that was passed via SCM rights, to an fd set.
1872
1873Arguments:
1874
1875- "fdset-id": The ID of the fd set to add the file descriptor to.
1876 (json-int, optional)
1877- "opaque": A free-form string that can be used to describe the fd.
1878 (json-string, optional)
1879
1880Return a json-object with the following information:
1881
1882- "fdset-id": The ID of the fd set that the fd was added to. (json-int)
1883- "fd": The file descriptor that was received via SCM rights and added to the
1884 fd set. (json-int)
1885
1886Example:
1887
1888-> { "execute": "add-fd", "arguments": { "fdset-id": 1 } }
1889<- { "return": { "fdset-id": 1, "fd": 3 } }
1890
1891Notes:
1892
1893(1) The list of fd sets is shared by all monitor connections.
1894(2) If "fdset-id" is not specified, a new fd set will be created.
1895
1896EQMP
1897
1898 {
1899 .name = "remove-fd",
1900 .args_type = "fdset-id:i,fd:i?",
1901 .params = "remove-fd fdset-id fd",
1902 .help = "Remove a file descriptor from an fd set",
7fad30f0 1903 .mhandler.cmd_new = qmp_marshal_remove_fd,
ba1c048a
CB
1904 },
1905
1906SQMP
1907remove-fd
1908---------
1909
1910Remove a file descriptor from an fd set.
1911
1912Arguments:
1913
1914- "fdset-id": The ID of the fd set that the file descriptor belongs to.
1915 (json-int)
1916- "fd": The file descriptor that is to be removed. (json-int, optional)
1917
1918Example:
1919
1920-> { "execute": "remove-fd", "arguments": { "fdset-id": 1, "fd": 3 } }
1921<- { "return": {} }
1922
1923Notes:
1924
1925(1) The list of fd sets is shared by all monitor connections.
1926(2) If "fd" is not specified, all file descriptors in "fdset-id" will be
1927 removed.
1928
1929EQMP
1930
1931 {
1932 .name = "query-fdsets",
1933 .args_type = "",
1934 .help = "Return information describing all fd sets",
7fad30f0 1935 .mhandler.cmd_new = qmp_marshal_query_fdsets,
ba1c048a
CB
1936 },
1937
1938SQMP
1939query-fdsets
1940-------------
1941
1942Return information describing all fd sets.
1943
1944Arguments: None
1945
1946Example:
1947
1948-> { "execute": "query-fdsets" }
1949<- { "return": [
1950 {
1951 "fds": [
1952 {
1953 "fd": 30,
1954 "opaque": "rdonly:/path/to/file"
1955 },
1956 {
1957 "fd": 24,
1958 "opaque": "rdwr:/path/to/file"
1959 }
1960 ],
1961 "fdset-id": 1
1962 },
1963 {
1964 "fds": [
1965 {
1966 "fd": 28
1967 },
1968 {
1969 "fd": 29
1970 }
1971 ],
1972 "fdset-id": 0
1973 }
1974 ]
1975 }
1976
1977Note: The list of fd sets is shared by all monitor connections.
1978
82a56f0d
LC
1979EQMP
1980
1981 {
1982 .name = "block_passwd",
12d3ba82 1983 .args_type = "device:s?,node-name:s?,password:s",
7fad30f0 1984 .mhandler.cmd_new = qmp_marshal_block_passwd,
82a56f0d
LC
1985 },
1986
1987SQMP
1988block_passwd
1989------------
1990
1991Set the password of encrypted block devices.
1992
1993Arguments:
1994
1995- "device": device name (json-string)
12d3ba82 1996- "node-name": name in the block driver state graph (json-string)
82a56f0d
LC
1997- "password": password (json-string)
1998
1999Example:
2000
2001-> { "execute": "block_passwd", "arguments": { "device": "ide0-hd0",
2002 "password": "12345" } }
2003<- { "return": {} }
2004
727f005e
ZYW
2005EQMP
2006
2007 {
2008 .name = "block_set_io_throttle",
76f4afb4 2009 .args_type = "device:B,bps:l,bps_rd:l,bps_wr:l,iops:l,iops_rd:l,iops_wr:l,bps_max:l?,bps_rd_max:l?,bps_wr_max:l?,iops_max:l?,iops_rd_max:l?,iops_wr_max:l?,iops_size:l?,group:s?",
7fad30f0 2010 .mhandler.cmd_new = qmp_marshal_block_set_io_throttle,
727f005e
ZYW
2011 },
2012
2013SQMP
2014block_set_io_throttle
2015------------
2016
2017Change I/O throttle limits for a block drive.
2018
2019Arguments:
2020
2021- "device": device name (json-string)
586b5466
EB
2022- "bps": total throughput limit in bytes per second (json-int)
2023- "bps_rd": read throughput limit in bytes per second (json-int)
2024- "bps_wr": write throughput limit in bytes per second (json-int)
2025- "iops": total I/O operations per second (json-int)
2026- "iops_rd": read I/O operations per second (json-int)
2027- "iops_wr": write I/O operations per second (json-int)
3e9fab69
BC
2028- "bps_max": total max in bytes (json-int)
2029- "bps_rd_max": read max in bytes (json-int)
2030- "bps_wr_max": write max in bytes (json-int)
2031- "iops_max": total I/O operations max (json-int)
2032- "iops_rd_max": read I/O operations max (json-int)
2033- "iops_wr_max": write I/O operations max (json-int)
2024c1df 2034- "iops_size": I/O size in bytes when limiting (json-int)
76f4afb4 2035- "group": throttle group name (json-string)
727f005e
ZYW
2036
2037Example:
2038
2039-> { "execute": "block_set_io_throttle", "arguments": { "device": "virtio0",
586b5466
EB
2040 "bps": 1000000,
2041 "bps_rd": 0,
2042 "bps_wr": 0,
2043 "iops": 0,
2044 "iops_rd": 0,
3e9fab69
BC
2045 "iops_wr": 0,
2046 "bps_max": 8000000,
2047 "bps_rd_max": 0,
2048 "bps_wr_max": 0,
2049 "iops_max": 0,
2050 "iops_rd_max": 0,
2024c1df
BC
2051 "iops_wr_max": 0,
2052 "iops_size": 0 } }
727f005e
ZYW
2053<- { "return": {} }
2054
7572150c
GH
2055EQMP
2056
2057 {
2058 .name = "set_password",
2059 .args_type = "protocol:s,password:s,connected:s?",
7fad30f0 2060 .mhandler.cmd_new = qmp_marshal_set_password,
7572150c
GH
2061 },
2062
2063SQMP
2064set_password
2065------------
2066
2067Set the password for vnc/spice protocols.
2068
2069Arguments:
2070
2071- "protocol": protocol name (json-string)
2072- "password": password (json-string)
3599d46b 2073- "connected": [ keep | disconnect | fail ] (json-string, optional)
7572150c
GH
2074
2075Example:
2076
2077-> { "execute": "set_password", "arguments": { "protocol": "vnc",
2078 "password": "secret" } }
2079<- { "return": {} }
2080
2081EQMP
2082
2083 {
2084 .name = "expire_password",
2085 .args_type = "protocol:s,time:s",
7fad30f0 2086 .mhandler.cmd_new = qmp_marshal_expire_password,
7572150c
GH
2087 },
2088
2089SQMP
2090expire_password
2091---------------
2092
2093Set the password expire time for vnc/spice protocols.
2094
2095Arguments:
2096
2097- "protocol": protocol name (json-string)
2098- "time": [ now | never | +secs | secs ] (json-string)
2099
2100Example:
2101
2102-> { "execute": "expire_password", "arguments": { "protocol": "vnc",
2103 "time": "+60" } }
2104<- { "return": {} }
2105
82a56f0d
LC
2106EQMP
2107
13661089
DB
2108 {
2109 .name = "add_client",
f1f5f407 2110 .args_type = "protocol:s,fdname:s,skipauth:b?,tls:b?",
7fad30f0 2111 .mhandler.cmd_new = qmp_marshal_add_client,
13661089
DB
2112 },
2113
2114SQMP
2115add_client
2116----------
2117
2118Add a graphics client
2119
2120Arguments:
2121
2122- "protocol": protocol name (json-string)
2123- "fdname": file descriptor name (json-string)
f1f5f407
DB
2124- "skipauth": whether to skip authentication (json-bool, optional)
2125- "tls": whether to perform TLS (json-bool, optional)
13661089
DB
2126
2127Example:
2128
2129-> { "execute": "add_client", "arguments": { "protocol": "vnc",
2130 "fdname": "myclient" } }
2131<- { "return": {} }
2132
2133EQMP
82a56f0d
LC
2134 {
2135 .name = "qmp_capabilities",
2136 .args_type = "",
2137 .params = "",
2138 .help = "enable QMP capabilities",
485febc6 2139 .mhandler.cmd_new = qmp_capabilities,
82a56f0d
LC
2140 },
2141
2142SQMP
2143qmp_capabilities
2144----------------
2145
2146Enable QMP capabilities.
2147
2148Arguments: None.
2149
2150Example:
2151
2152-> { "execute": "qmp_capabilities" }
2153<- { "return": {} }
2154
2155Note: This command must be issued before issuing any other command.
2156
0268d97c
LC
2157EQMP
2158
2159 {
2160 .name = "human-monitor-command",
2161 .args_type = "command-line:s,cpu-index:i?",
7fad30f0 2162 .mhandler.cmd_new = qmp_marshal_human_monitor_command,
0268d97c
LC
2163 },
2164
2165SQMP
2166human-monitor-command
2167---------------------
2168
2169Execute a Human Monitor command.
2170
2171Arguments:
2172
2173- command-line: the command name and its arguments, just like the
2174 Human Monitor's shell (json-string)
2175- cpu-index: select the CPU number to be used by commands which access CPU
2176 data, like 'info registers'. The Monitor selects CPU 0 if this
2177 argument is not provided (json-int, optional)
2178
2179Example:
2180
2181-> { "execute": "human-monitor-command", "arguments": { "command-line": "info kvm" } }
2182<- { "return": "kvm support: enabled\r\n" }
2183
2184Notes:
2185
2186(1) The Human Monitor is NOT an stable interface, this means that command
2187 names, arguments and responses can change or be removed at ANY time.
2188 Applications that rely on long term stability guarantees should NOT
2189 use this command
2190
2191(2) Limitations:
2192
2193 o This command is stateless, this means that commands that depend
2194 on state information (such as getfd) might not work
2195
2196 o Commands that prompt the user for data (eg. 'cont' when the block
2197 device is encrypted) don't currently work
2198
82a56f0d
LC
21993. Query Commands
2200=================
2201
2202HXCOMM Each query command below is inside a SQMP/EQMP section, do NOT change
2203HXCOMM this! We will possibly move query commands definitions inside those
2204HXCOMM sections, just like regular commands.
2205
2206EQMP
2207
2208SQMP
2209query-version
2210-------------
2211
2212Show QEMU version.
2213
2214Return a json-object with the following information:
2215
2216- "qemu": A json-object containing three integer values:
2217 - "major": QEMU's major version (json-int)
2218 - "minor": QEMU's minor version (json-int)
2219 - "micro": QEMU's micro version (json-int)
2220- "package": package's version (json-string)
2221
2222Example:
2223
2224-> { "execute": "query-version" }
2225<- {
2226 "return":{
2227 "qemu":{
2228 "major":0,
2229 "minor":11,
2230 "micro":5
2231 },
2232 "package":""
2233 }
2234 }
2235
2236EQMP
2237
b9c15f16
LC
2238 {
2239 .name = "query-version",
2240 .args_type = "",
7fad30f0 2241 .mhandler.cmd_new = qmp_marshal_query_version,
b9c15f16
LC
2242 },
2243
82a56f0d
LC
2244SQMP
2245query-commands
2246--------------
2247
2248List QMP available commands.
2249
2250Each command is represented by a json-object, the returned value is a json-array
2251of all commands.
2252
2253Each json-object contain:
2254
2255- "name": command's name (json-string)
2256
2257Example:
2258
2259-> { "execute": "query-commands" }
2260<- {
2261 "return":[
2262 {
2263 "name":"query-balloon"
2264 },
2265 {
2266 "name":"system_powerdown"
2267 }
2268 ]
2269 }
2270
2271Note: This example has been shortened as the real response is too long.
2272
2273EQMP
2274
aa9b79bc
LC
2275 {
2276 .name = "query-commands",
2277 .args_type = "",
7fad30f0 2278 .mhandler.cmd_new = qmp_marshal_query_commands,
aa9b79bc
LC
2279 },
2280
4860853d
DB
2281SQMP
2282query-events
2283--------------
2284
2285List QMP available events.
2286
2287Each event is represented by a json-object, the returned value is a json-array
2288of all events.
2289
2290Each json-object contains:
2291
2292- "name": event's name (json-string)
2293
2294Example:
2295
2296-> { "execute": "query-events" }
2297<- {
2298 "return":[
2299 {
2300 "name":"SHUTDOWN"
2301 },
2302 {
2303 "name":"RESET"
2304 }
2305 ]
2306 }
2307
2308Note: This example has been shortened as the real response is too long.
2309
2310EQMP
2311
2312 {
2313 .name = "query-events",
2314 .args_type = "",
7fad30f0 2315 .mhandler.cmd_new = qmp_marshal_query_events,
4860853d
DB
2316 },
2317
39a18158
MA
2318SQMP
2319query-qmp-schema
2320----------------
2321
2322Return the QMP wire schema. The returned value is a json-array of
2323named schema entities. Entities are commands, events and various
2324types. See docs/qapi-code-gen.txt for information on their structure
2325and intended use.
2326
2327EQMP
2328
2329 {
2330 .name = "query-qmp-schema",
2331 .args_type = "",
2332 .mhandler.cmd_new = qmp_query_qmp_schema,
2333 },
2334
82a56f0d
LC
2335SQMP
2336query-chardev
2337-------------
2338
2339Each device is represented by a json-object. The returned value is a json-array
2340of all devices.
2341
2342Each json-object contain the following:
2343
2344- "label": device's label (json-string)
2345- "filename": device's file (json-string)
32a97ea1
LE
2346- "frontend-open": open/closed state of the frontend device attached to this
2347 backend (json-bool)
82a56f0d
LC
2348
2349Example:
2350
2351-> { "execute": "query-chardev" }
2352<- {
32a97ea1
LE
2353 "return": [
2354 {
2355 "label": "charchannel0",
2356 "filename": "unix:/var/lib/libvirt/qemu/seabios.rhel6.agent,server",
2357 "frontend-open": false
2358 },
82a56f0d 2359 {
32a97ea1
LE
2360 "label": "charmonitor",
2361 "filename": "unix:/var/lib/libvirt/qemu/seabios.rhel6.monitor,server",
2362 "frontend-open": true
82a56f0d
LC
2363 },
2364 {
32a97ea1
LE
2365 "label": "charserial0",
2366 "filename": "pty:/dev/pts/2",
2367 "frontend-open": true
82a56f0d
LC
2368 }
2369 ]
2370 }
2371
2372EQMP
2373
c5a415a0
LC
2374 {
2375 .name = "query-chardev",
2376 .args_type = "",
7fad30f0 2377 .mhandler.cmd_new = qmp_marshal_query_chardev,
c5a415a0
LC
2378 },
2379
77d1c3c6
MK
2380SQMP
2381query-chardev-backends
2382-------------
2383
2384List available character device backends.
2385
2386Each backend is represented by a json-object, the returned value is a json-array
2387of all backends.
2388
2389Each json-object contains:
2390
2391- "name": backend name (json-string)
2392
2393Example:
2394
2395-> { "execute": "query-chardev-backends" }
2396<- {
2397 "return":[
2398 {
2399 "name":"udp"
2400 },
2401 {
2402 "name":"tcp"
2403 },
2404 {
2405 "name":"unix"
2406 },
2407 {
2408 "name":"spiceport"
2409 }
2410 ]
2411 }
2412
2413EQMP
2414
2415 {
2416 .name = "query-chardev-backends",
2417 .args_type = "",
7fad30f0 2418 .mhandler.cmd_new = qmp_marshal_query_chardev_backends,
77d1c3c6
MK
2419 },
2420
82a56f0d
LC
2421SQMP
2422query-block
2423-----------
2424
2425Show the block devices.
2426
2427Each block device information is stored in a json-object and the returned value
2428is a json-array of all devices.
2429
2430Each json-object contain the following:
2431
2432- "device": device name (json-string)
2433- "type": device type (json-string)
d8aeeb31
MA
2434 - deprecated, retained for backward compatibility
2435 - Possible values: "unknown"
82a56f0d
LC
2436- "removable": true if the device is removable, false otherwise (json-bool)
2437- "locked": true if the device is locked, false otherwise (json-bool)
99f42808 2438- "tray_open": only present if removable, true if the device has a tray,
e4def80b 2439 and it is open (json-bool)
82a56f0d
LC
2440- "inserted": only present if the device is inserted, it is a json-object
2441 containing the following:
2442 - "file": device file name (json-string)
2443 - "ro": true if read-only, false otherwise (json-bool)
2444 - "drv": driver format name (json-string)
550830f9 2445 - Possible values: "blkdebug", "bochs", "cloop", "dmg",
82a56f0d 2446 "file", "file", "ftp", "ftps", "host_cdrom",
92a539d2 2447 "host_device", "http", "https",
82a56f0d
LC
2448 "nbd", "parallels", "qcow", "qcow2", "raw",
2449 "tftp", "vdi", "vmdk", "vpc", "vvfat"
2450 - "backing_file": backing file name (json-string, optional)
2e3e3317 2451 - "backing_file_depth": number of files in the backing file chain (json-int)
82a56f0d 2452 - "encrypted": true if encrypted, false otherwise (json-bool)
727f005e
ZYW
2453 - "bps": limit total bytes per second (json-int)
2454 - "bps_rd": limit read bytes per second (json-int)
2455 - "bps_wr": limit write bytes per second (json-int)
2456 - "iops": limit total I/O operations per second (json-int)
2457 - "iops_rd": limit read operations per second (json-int)
2458 - "iops_wr": limit write operations per second (json-int)
3e9fab69
BC
2459 - "bps_max": total max in bytes (json-int)
2460 - "bps_rd_max": read max in bytes (json-int)
2461 - "bps_wr_max": write max in bytes (json-int)
2462 - "iops_max": total I/O operations max (json-int)
2463 - "iops_rd_max": read I/O operations max (json-int)
2464 - "iops_wr_max": write I/O operations max (json-int)
2024c1df 2465 - "iops_size": I/O size when limiting by iops (json-int)
465bee1d
PL
2466 - "detect_zeroes": detect and optimize zero writing (json-string)
2467 - Possible values: "off", "on", "unmap"
e2462113
FR
2468 - "write_threshold": write offset threshold in bytes, a event will be
2469 emitted if crossed. Zero if disabled (json-int)
553a7e87
WX
2470 - "image": the detail of the image, it is a json-object containing
2471 the following:
2472 - "filename": image file name (json-string)
2473 - "format": image format (json-string)
2474 - "virtual-size": image capacity in bytes (json-int)
2475 - "dirty-flag": true if image is not cleanly closed, not present
2476 means clean (json-bool, optional)
2477 - "actual-size": actual size on disk in bytes of the image, not
2478 present when image does not support thin
2479 provision (json-int, optional)
2480 - "cluster-size": size of a cluster in bytes, not present if image
2481 format does not support it (json-int, optional)
2482 - "encrypted": true if the image is encrypted, not present means
2483 false or the image format does not support
2484 encryption (json-bool, optional)
2485 - "backing_file": backing file name, not present means no backing
2486 file is used or the image format does not
2487 support backing file chain
2488 (json-string, optional)
2489 - "full-backing-filename": full path of the backing file, not
2490 present if it equals backing_file or no
2491 backing file is used
2492 (json-string, optional)
2493 - "backing-filename-format": the format of the backing file, not
2494 present means unknown or no backing
2495 file (json-string, optional)
2496 - "snapshots": the internal snapshot info, it is an optional list
2497 of json-object containing the following:
2498 - "id": unique snapshot id (json-string)
2499 - "name": snapshot name (json-string)
2500 - "vm-state-size": size of the VM state in bytes (json-int)
2501 - "date-sec": UTC date of the snapshot in seconds (json-int)
2502 - "date-nsec": fractional part in nanoseconds to be used with
586b5466 2503 date-sec (json-int)
553a7e87
WX
2504 - "vm-clock-sec": VM clock relative to boot in seconds
2505 (json-int)
2506 - "vm-clock-nsec": fractional part in nanoseconds to be used
2507 with vm-clock-sec (json-int)
2508 - "backing-image": the detail of the backing image, it is an
2509 optional json-object only present when a
2510 backing image present for this image
727f005e 2511
f04ef601
LC
2512- "io-status": I/O operation status, only present if the device supports it
2513 and the VM is configured to stop on errors. It's always reset
2514 to "ok" when the "cont" command is issued (json_string, optional)
2515 - Possible values: "ok", "failed", "nospace"
82a56f0d
LC
2516
2517Example:
2518
2519-> { "execute": "query-block" }
2520<- {
2521 "return":[
2522 {
f04ef601 2523 "io-status": "ok",
82a56f0d
LC
2524 "device":"ide0-hd0",
2525 "locked":false,
2526 "removable":false,
2527 "inserted":{
2528 "ro":false,
2529 "drv":"qcow2",
2530 "encrypted":false,
553a7e87
WX
2531 "file":"disks/test.qcow2",
2532 "backing_file_depth":1,
727f005e
ZYW
2533 "bps":1000000,
2534 "bps_rd":0,
2535 "bps_wr":0,
2536 "iops":1000000,
2537 "iops_rd":0,
2538 "iops_wr":0,
3e9fab69
BC
2539 "bps_max": 8000000,
2540 "bps_rd_max": 0,
2541 "bps_wr_max": 0,
2542 "iops_max": 0,
2543 "iops_rd_max": 0,
2544 "iops_wr_max": 0,
2024c1df 2545 "iops_size": 0,
465bee1d 2546 "detect_zeroes": "on",
e2462113 2547 "write_threshold": 0,
553a7e87
WX
2548 "image":{
2549 "filename":"disks/test.qcow2",
2550 "format":"qcow2",
2551 "virtual-size":2048000,
2552 "backing_file":"base.qcow2",
2553 "full-backing-filename":"disks/base.qcow2",
5403432f 2554 "backing-filename-format":"qcow2",
553a7e87
WX
2555 "snapshots":[
2556 {
2557 "id": "1",
2558 "name": "snapshot1",
2559 "vm-state-size": 0,
2560 "date-sec": 10000200,
2561 "date-nsec": 12,
2562 "vm-clock-sec": 206,
2563 "vm-clock-nsec": 30
2564 }
2565 ],
2566 "backing-image":{
2567 "filename":"disks/base.qcow2",
2568 "format":"qcow2",
2569 "virtual-size":2048000
2570 }
2571 }
82a56f0d 2572 },
d8aeeb31 2573 "type":"unknown"
82a56f0d
LC
2574 },
2575 {
f04ef601 2576 "io-status": "ok",
82a56f0d
LC
2577 "device":"ide1-cd0",
2578 "locked":false,
2579 "removable":true,
d8aeeb31 2580 "type":"unknown"
82a56f0d
LC
2581 },
2582 {
2583 "device":"floppy0",
2584 "locked":false,
2585 "removable":true,
d8aeeb31 2586 "type":"unknown"
82a56f0d
LC
2587 },
2588 {
2589 "device":"sd0",
2590 "locked":false,
2591 "removable":true,
d8aeeb31 2592 "type":"unknown"
82a56f0d
LC
2593 }
2594 ]
2595 }
2596
2597EQMP
2598
b2023818
LC
2599 {
2600 .name = "query-block",
2601 .args_type = "",
7fad30f0 2602 .mhandler.cmd_new = qmp_marshal_query_block,
b2023818
LC
2603 },
2604
82a56f0d
LC
2605SQMP
2606query-blockstats
2607----------------
2608
2609Show block device statistics.
2610
2611Each device statistic information is stored in a json-object and the returned
2612value is a json-array of all devices.
2613
2614Each json-object contain the following:
2615
2616- "device": device name (json-string)
2617- "stats": A json-object with the statistics information, it contains:
2618 - "rd_bytes": bytes read (json-int)
2619 - "wr_bytes": bytes written (json-int)
2620 - "rd_operations": read operations (json-int)
2621 - "wr_operations": write operations (json-int)
e8045d67 2622 - "flush_operations": cache flush operations (json-int)
c488c7f6
CH
2623 - "wr_total_time_ns": total time spend on writes in nano-seconds (json-int)
2624 - "rd_total_time_ns": total time spend on reads in nano-seconds (json-int)
2625 - "flush_total_time_ns": total time spend on cache flushes in nano-seconds (json-int)
53d8f9d8
HR
2626 - "wr_highest_offset": The offset after the greatest byte written to the
2627 BlockDriverState since it has been opened (json-int)
f4564d53
PL
2628 - "rd_merged": number of read requests that have been merged into
2629 another request (json-int)
2630 - "wr_merged": number of write requests that have been merged into
2631 another request (json-int)
cb38fffb
AG
2632 - "idle_time_ns": time since the last I/O operation, in
2633 nanoseconds. If the field is absent it means
2634 that there haven't been any operations yet
2635 (json-int, optional)
7ee12daf
AG
2636 - "failed_rd_operations": number of failed read operations
2637 (json-int)
2638 - "failed_wr_operations": number of failed write operations
2639 (json-int)
2640 - "failed_flush_operations": number of failed flush operations
2641 (json-int)
2642 - "invalid_rd_operations": number of invalid read operations
2643 (json-int)
2644 - "invalid_wr_operations": number of invalid write operations
2645 (json-int)
2646 - "invalid_flush_operations": number of invalid flush operations
2647 (json-int)
362e9299
AG
2648 - "account_invalid": whether invalid operations are included in
2649 the last access statistics (json-bool)
2650 - "account_failed": whether failed operations are included in the
2651 latency and last access statistics
2652 (json-bool)
979e9b03
AG
2653 - "timed_stats": A json-array containing statistics collected in
2654 specific intervals, with the following members:
2655 - "interval_length": interval used for calculating the
2656 statistics, in seconds (json-int)
2657 - "min_rd_latency_ns": minimum latency of read operations in
2658 the defined interval, in nanoseconds
2659 (json-int)
2660 - "min_wr_latency_ns": minimum latency of write operations in
2661 the defined interval, in nanoseconds
2662 (json-int)
2663 - "min_flush_latency_ns": minimum latency of flush operations
2664 in the defined interval, in
2665 nanoseconds (json-int)
2666 - "max_rd_latency_ns": maximum latency of read operations in
2667 the defined interval, in nanoseconds
2668 (json-int)
2669 - "max_wr_latency_ns": maximum latency of write operations in
2670 the defined interval, in nanoseconds
2671 (json-int)
2672 - "max_flush_latency_ns": maximum latency of flush operations
2673 in the defined interval, in
2674 nanoseconds (json-int)
2675 - "avg_rd_latency_ns": average latency of read operations in
2676 the defined interval, in nanoseconds
2677 (json-int)
2678 - "avg_wr_latency_ns": average latency of write operations in
2679 the defined interval, in nanoseconds
2680 (json-int)
2681 - "avg_flush_latency_ns": average latency of flush operations
2682 in the defined interval, in
2683 nanoseconds (json-int)
96e4deda
AG
2684 - "avg_rd_queue_depth": average number of pending read
2685 operations in the defined interval
2686 (json-number)
2687 - "avg_wr_queue_depth": average number of pending write
2688 operations in the defined interval
2689 (json-number).
82a56f0d
LC
2690- "parent": Contains recursively the statistics of the underlying
2691 protocol (e.g. the host file for a qcow2 image). If there is
2692 no underlying protocol, this field is omitted
2693 (json-object, optional)
2694
2695Example:
2696
2697-> { "execute": "query-blockstats" }
2698<- {
2699 "return":[
2700 {
2701 "device":"ide0-hd0",
2702 "parent":{
2703 "stats":{
2704 "wr_highest_offset":3686448128,
2705 "wr_bytes":9786368,
2706 "wr_operations":751,
2707 "rd_bytes":122567168,
2708 "rd_operations":36772
c488c7f6
CH
2709 "wr_total_times_ns":313253456
2710 "rd_total_times_ns":3465673657
2711 "flush_total_times_ns":49653
e8045d67 2712 "flush_operations":61,
f4564d53 2713 "rd_merged":0,
cb38fffb 2714 "wr_merged":0,
362e9299
AG
2715 "idle_time_ns":2953431879,
2716 "account_invalid":true,
2717 "account_failed":false
82a56f0d
LC
2718 }
2719 },
2720 "stats":{
2721 "wr_highest_offset":2821110784,
2722 "wr_bytes":9786368,
2723 "wr_operations":692,
2724 "rd_bytes":122739200,
2725 "rd_operations":36604
e8045d67 2726 "flush_operations":51,
c488c7f6
CH
2727 "wr_total_times_ns":313253456
2728 "rd_total_times_ns":3465673657
f4564d53
PL
2729 "flush_total_times_ns":49653,
2730 "rd_merged":0,
cb38fffb 2731 "wr_merged":0,
362e9299
AG
2732 "idle_time_ns":2953431879,
2733 "account_invalid":true,
2734 "account_failed":false
82a56f0d
LC
2735 }
2736 },
2737 {
2738 "device":"ide1-cd0",
2739 "stats":{
2740 "wr_highest_offset":0,
2741 "wr_bytes":0,
2742 "wr_operations":0,
2743 "rd_bytes":0,
2744 "rd_operations":0
e8045d67 2745 "flush_operations":0,
c488c7f6
CH
2746 "wr_total_times_ns":0
2747 "rd_total_times_ns":0
f4564d53
PL
2748 "flush_total_times_ns":0,
2749 "rd_merged":0,
362e9299
AG
2750 "wr_merged":0,
2751 "account_invalid":false,
2752 "account_failed":false
82a56f0d
LC
2753 }
2754 },
2755 {
2756 "device":"floppy0",
2757 "stats":{
2758 "wr_highest_offset":0,
2759 "wr_bytes":0,
2760 "wr_operations":0,
2761 "rd_bytes":0,
2762 "rd_operations":0
e8045d67 2763 "flush_operations":0,
c488c7f6
CH
2764 "wr_total_times_ns":0
2765 "rd_total_times_ns":0
f4564d53
PL
2766 "flush_total_times_ns":0,
2767 "rd_merged":0,
362e9299
AG
2768 "wr_merged":0,
2769 "account_invalid":false,
2770 "account_failed":false
82a56f0d
LC
2771 }
2772 },
2773 {
2774 "device":"sd0",
2775 "stats":{
2776 "wr_highest_offset":0,
2777 "wr_bytes":0,
2778 "wr_operations":0,
2779 "rd_bytes":0,
2780 "rd_operations":0
e8045d67 2781 "flush_operations":0,
c488c7f6
CH
2782 "wr_total_times_ns":0
2783 "rd_total_times_ns":0
f4564d53
PL
2784 "flush_total_times_ns":0,
2785 "rd_merged":0,
362e9299
AG
2786 "wr_merged":0,
2787 "account_invalid":false,
2788 "account_failed":false
82a56f0d
LC
2789 }
2790 }
2791 ]
2792 }
2793
2794EQMP
2795
f11f57e4
LC
2796 {
2797 .name = "query-blockstats",
f71eaa74 2798 .args_type = "query-nodes:b?",
7fad30f0 2799 .mhandler.cmd_new = qmp_marshal_query_blockstats,
f11f57e4
LC
2800 },
2801
82a56f0d
LC
2802SQMP
2803query-cpus
2804----------
2805
2806Show CPU information.
2807
2808Return a json-array. Each CPU is represented by a json-object, which contains:
2809
2810- "CPU": CPU index (json-int)
2811- "current": true if this is the current CPU, false otherwise (json-bool)
2812- "halted": true if the cpu is halted, false otherwise (json-bool)
58f88d4b 2813- "qom_path": path to the CPU object in the QOM tree (json-str)
86f4b687
EB
2814- "arch": architecture of the cpu, which determines what additional
2815 keys will be present (json-str)
82a56f0d
LC
2816- Current program counter. The key's name depends on the architecture:
2817 "pc": i386/x86_64 (json-int)
2818 "nip": PPC (json-int)
2819 "pc" and "npc": sparc (json-int)
2820 "PC": mips (json-int)
dc7a09cf 2821- "thread_id": ID of the underlying host thread (json-int)
82a56f0d
LC
2822
2823Example:
2824
2825-> { "execute": "query-cpus" }
2826<- {
2827 "return":[
2828 {
2829 "CPU":0,
2830 "current":true,
2831 "halted":false,
58f88d4b 2832 "qom_path":"/machine/unattached/device[0]",
86f4b687 2833 "arch":"x86",
58f88d4b 2834 "pc":3227107138,
dc7a09cf 2835 "thread_id":3134
82a56f0d
LC
2836 },
2837 {
2838 "CPU":1,
2839 "current":false,
2840 "halted":true,
58f88d4b 2841 "qom_path":"/machine/unattached/device[2]",
86f4b687 2842 "arch":"x86",
58f88d4b 2843 "pc":7108165,
dc7a09cf 2844 "thread_id":3135
82a56f0d
LC
2845 }
2846 ]
2847 }
2848
2849EQMP
2850
de0b36b6
LC
2851 {
2852 .name = "query-cpus",
2853 .args_type = "",
7fad30f0 2854 .mhandler.cmd_new = qmp_marshal_query_cpus,
de0b36b6
LC
2855 },
2856
dc3dd0d2
SH
2857SQMP
2858query-iothreads
2859---------------
2860
2861Returns a list of information about each iothread.
2862
2863Note this list excludes the QEMU main loop thread, which is not declared
2864using the -object iothread command-line option. It is always the main thread
2865of the process.
2866
2867Return a json-array. Each iothread is represented by a json-object, which contains:
2868
2869- "id": name of iothread (json-str)
2870- "thread-id": ID of the underlying host thread (json-int)
2871
2872Example:
2873
2874-> { "execute": "query-iothreads" }
2875<- {
2876 "return":[
2877 {
2878 "id":"iothread0",
2879 "thread-id":3134
2880 },
2881 {
2882 "id":"iothread1",
2883 "thread-id":3135
2884 }
2885 ]
2886 }
2887
2888EQMP
2889
2890 {
2891 .name = "query-iothreads",
2892 .args_type = "",
7fad30f0 2893 .mhandler.cmd_new = qmp_marshal_query_iothreads,
dc3dd0d2
SH
2894 },
2895
82a56f0d
LC
2896SQMP
2897query-pci
2898---------
2899
2900PCI buses and devices information.
2901
2902The returned value is a json-array of all buses. Each bus is represented by
2903a json-object, which has a key with a json-array of all PCI devices attached
2904to it. Each device is represented by a json-object.
2905
2906The bus json-object contains the following:
2907
2908- "bus": bus number (json-int)
2909- "devices": a json-array of json-objects, each json-object represents a
2910 PCI device
2911
2912The PCI device json-object contains the following:
2913
2914- "bus": identical to the parent's bus number (json-int)
2915- "slot": slot number (json-int)
2916- "function": function number (json-int)
2917- "class_info": a json-object containing:
2918 - "desc": device class description (json-string, optional)
2919 - "class": device class number (json-int)
2920- "id": a json-object containing:
2921 - "device": device ID (json-int)
2922 - "vendor": vendor ID (json-int)
2923- "irq": device's IRQ if assigned (json-int, optional)
2924- "qdev_id": qdev id string (json-string)
2925- "pci_bridge": It's a json-object, only present if this device is a
2926 PCI bridge, contains:
2927 - "bus": bus number (json-int)
2928 - "secondary": secondary bus number (json-int)
2929 - "subordinate": subordinate bus number (json-int)
2930 - "io_range": I/O memory range information, a json-object with the
2931 following members:
2932 - "base": base address, in bytes (json-int)
2933 - "limit": limit address, in bytes (json-int)
2934 - "memory_range": memory range information, a json-object with the
2935 following members:
2936 - "base": base address, in bytes (json-int)
2937 - "limit": limit address, in bytes (json-int)
2938 - "prefetchable_range": Prefetchable memory range information, a
2939 json-object with the following members:
2940 - "base": base address, in bytes (json-int)
2941 - "limit": limit address, in bytes (json-int)
2942 - "devices": a json-array of PCI devices if there's any attached, each
2943 each element is represented by a json-object, which contains
2944 the same members of the 'PCI device json-object' described
2945 above (optional)
2946- "regions": a json-array of json-objects, each json-object represents a
2947 memory region of this device
2948
2949The memory range json-object contains the following:
2950
2951- "base": base memory address (json-int)
2952- "limit": limit value (json-int)
2953
2954The region json-object can be an I/O region or a memory region, an I/O region
2955json-object contains the following:
2956
2957- "type": "io" (json-string, fixed)
2958- "bar": BAR number (json-int)
2959- "address": memory address (json-int)
2960- "size": memory size (json-int)
2961
2962A memory region json-object contains the following:
2963
2964- "type": "memory" (json-string, fixed)
2965- "bar": BAR number (json-int)
2966- "address": memory address (json-int)
2967- "size": memory size (json-int)
2968- "mem_type_64": true or false (json-bool)
2969- "prefetch": true or false (json-bool)
2970
2971Example:
2972
2973-> { "execute": "query-pci" }
2974<- {
2975 "return":[
2976 {
2977 "bus":0,
2978 "devices":[
2979 {
2980 "bus":0,
2981 "qdev_id":"",
2982 "slot":0,
2983 "class_info":{
2984 "class":1536,
2985 "desc":"Host bridge"
2986 },
2987 "id":{
2988 "device":32902,
2989 "vendor":4663
2990 },
2991 "function":0,
2992 "regions":[
2993
2994 ]
2995 },
2996 {
2997 "bus":0,
2998 "qdev_id":"",
2999 "slot":1,
3000 "class_info":{
3001 "class":1537,
3002 "desc":"ISA bridge"
3003 },
3004 "id":{
3005 "device":32902,
3006 "vendor":28672
3007 },
3008 "function":0,
3009 "regions":[
3010
3011 ]
3012 },
3013 {
3014 "bus":0,
3015 "qdev_id":"",
3016 "slot":1,
3017 "class_info":{
3018 "class":257,
3019 "desc":"IDE controller"
3020 },
3021 "id":{
3022 "device":32902,
3023 "vendor":28688
3024 },
3025 "function":1,
3026 "regions":[
3027 {
3028 "bar":4,
3029 "size":16,
3030 "address":49152,
3031 "type":"io"
3032 }
3033 ]
3034 },
3035 {
3036 "bus":0,
3037 "qdev_id":"",
3038 "slot":2,
3039 "class_info":{
3040 "class":768,
3041 "desc":"VGA controller"
3042 },
3043 "id":{
3044 "device":4115,
3045 "vendor":184
3046 },
3047 "function":0,
3048 "regions":[
3049 {
3050 "prefetch":true,
3051 "mem_type_64":false,
3052 "bar":0,
3053 "size":33554432,
3054 "address":4026531840,
3055 "type":"memory"
3056 },
3057 {
3058 "prefetch":false,
3059 "mem_type_64":false,
3060 "bar":1,
3061 "size":4096,
3062 "address":4060086272,
3063 "type":"memory"
3064 },
3065 {
3066 "prefetch":false,
3067 "mem_type_64":false,
3068 "bar":6,
3069 "size":65536,
3070 "address":-1,
3071 "type":"memory"
3072 }
3073 ]
3074 },
3075 {
3076 "bus":0,
3077 "qdev_id":"",
3078 "irq":11,
3079 "slot":4,
3080 "class_info":{
3081 "class":1280,
3082 "desc":"RAM controller"
3083 },
3084 "id":{
3085 "device":6900,
3086 "vendor":4098
3087 },
3088 "function":0,
3089 "regions":[
3090 {
3091 "bar":0,
3092 "size":32,
3093 "address":49280,
3094 "type":"io"
3095 }
3096 ]
3097 }
3098 ]
3099 }
3100 ]
3101 }
3102
3103Note: This example has been shortened as the real response is too long.
3104
3105EQMP
3106
79627472
LC
3107 {
3108 .name = "query-pci",
3109 .args_type = "",
7fad30f0 3110 .mhandler.cmd_new = qmp_marshal_query_pci,
79627472
LC
3111 },
3112
82a56f0d
LC
3113SQMP
3114query-kvm
3115---------
3116
3117Show KVM information.
3118
3119Return a json-object with the following information:
3120
3121- "enabled": true if KVM support is enabled, false otherwise (json-bool)
3122- "present": true if QEMU has KVM support, false otherwise (json-bool)
3123
3124Example:
3125
3126-> { "execute": "query-kvm" }
3127<- { "return": { "enabled": true, "present": true } }
3128
3129EQMP
3130
292a2602
LC
3131 {
3132 .name = "query-kvm",
3133 .args_type = "",
7fad30f0 3134 .mhandler.cmd_new = qmp_marshal_query_kvm,
292a2602
LC
3135 },
3136
82a56f0d
LC
3137SQMP
3138query-status
3139------------
3140
3141Return a json-object with the following information:
3142
3143- "running": true if the VM is running, or false if it is paused (json-bool)
3144- "singlestep": true if the VM is in single step mode,
3145 false otherwise (json-bool)
9e37b9dc
LC
3146- "status": one of the following values (json-string)
3147 "debug" - QEMU is running on a debugger
3148 "inmigrate" - guest is paused waiting for an incoming migration
3149 "internal-error" - An internal error that prevents further guest
3150 execution has occurred
3151 "io-error" - the last IOP has failed and the device is configured
3152 to pause on I/O errors
3153 "paused" - guest has been paused via the 'stop' command
3154 "postmigrate" - guest is paused following a successful 'migrate'
3155 "prelaunch" - QEMU was started with -S and guest has not started
3156 "finish-migrate" - guest is paused to finish the migration process
3157 "restore-vm" - guest is paused to restore VM state
3158 "running" - guest is actively running
3159 "save-vm" - guest is paused to save the VM state
3160 "shutdown" - guest is shut down (and -no-shutdown is in use)
3161 "watchdog" - the watchdog action is configured to pause and
3162 has been triggered
82a56f0d
LC
3163
3164Example:
3165
3166-> { "execute": "query-status" }
9e37b9dc 3167<- { "return": { "running": true, "singlestep": false, "status": "running" } }
82a56f0d
LC
3168
3169EQMP
1fa9a5e4
LC
3170
3171 {
3172 .name = "query-status",
3173 .args_type = "",
7fad30f0 3174 .mhandler.cmd_new = qmp_marshal_query_status,
1fa9a5e4 3175 },
82a56f0d
LC
3176
3177SQMP
3178query-mice
3179----------
3180
3181Show VM mice information.
3182
3183Each mouse is represented by a json-object, the returned value is a json-array
3184of all mice.
3185
3186The mouse json-object contains the following:
3187
3188- "name": mouse's name (json-string)
3189- "index": mouse's index (json-int)
3190- "current": true if this mouse is receiving events, false otherwise (json-bool)
3191- "absolute": true if the mouse generates absolute input events (json-bool)
3192
3193Example:
3194
3195-> { "execute": "query-mice" }
3196<- {
3197 "return":[
3198 {
3199 "name":"QEMU Microsoft Mouse",
3200 "index":0,
3201 "current":false,
3202 "absolute":false
3203 },
3204 {
3205 "name":"QEMU PS/2 Mouse",
3206 "index":1,
3207 "current":true,
3208 "absolute":true
3209 }
3210 ]
3211 }
3212
3213EQMP
3214
e235cec3
LC
3215 {
3216 .name = "query-mice",
3217 .args_type = "",
7fad30f0 3218 .mhandler.cmd_new = qmp_marshal_query_mice,
e235cec3
LC
3219 },
3220
82a56f0d
LC
3221SQMP
3222query-vnc
3223---------
3224
3225Show VNC server information.
3226
3227Return a json-object with server information. Connected clients are returned
3228as a json-array of json-objects.
3229
3230The main json-object contains the following:
3231
3232- "enabled": true or false (json-bool)
3233- "host": server's IP address (json-string)
3234- "family": address family (json-string)
3235 - Possible values: "ipv4", "ipv6", "unix", "unknown"
3236- "service": server's port number (json-string)
3237- "auth": authentication method (json-string)
3238 - Possible values: "invalid", "none", "ra2", "ra2ne", "sasl", "tight",
3239 "tls", "ultra", "unknown", "vencrypt", "vencrypt",
3240 "vencrypt+plain", "vencrypt+tls+none",
3241 "vencrypt+tls+plain", "vencrypt+tls+sasl",
3242 "vencrypt+tls+vnc", "vencrypt+x509+none",
3243 "vencrypt+x509+plain", "vencrypt+x509+sasl",
3244 "vencrypt+x509+vnc", "vnc"
3245- "clients": a json-array of all connected clients
3246
3247Clients are described by a json-object, each one contain the following:
3248
3249- "host": client's IP address (json-string)
3250- "family": address family (json-string)
3251 - Possible values: "ipv4", "ipv6", "unix", "unknown"
3252- "service": client's port number (json-string)
3253- "x509_dname": TLS dname (json-string, optional)
3254- "sasl_username": SASL username (json-string, optional)
3255
3256Example:
3257
3258-> { "execute": "query-vnc" }
3259<- {
3260 "return":{
3261 "enabled":true,
3262 "host":"0.0.0.0",
3263 "service":"50402",
3264 "auth":"vnc",
3265 "family":"ipv4",
3266 "clients":[
3267 {
3268 "host":"127.0.0.1",
3269 "service":"50401",
3270 "family":"ipv4"
3271 }
3272 ]
3273 }
3274 }
3275
3276EQMP
3277
2b54aa87
LC
3278 {
3279 .name = "query-vnc",
3280 .args_type = "",
7fad30f0 3281 .mhandler.cmd_new = qmp_marshal_query_vnc,
2b54aa87 3282 },
df887684
GH
3283 {
3284 .name = "query-vnc-servers",
3285 .args_type = "",
7fad30f0 3286 .mhandler.cmd_new = qmp_marshal_query_vnc_servers,
df887684 3287 },
2b54aa87 3288
cb42a870
GH
3289SQMP
3290query-spice
3291-----------
3292
3293Show SPICE server information.
3294
3295Return a json-object with server information. Connected clients are returned
3296as a json-array of json-objects.
3297
3298The main json-object contains the following:
3299
3300- "enabled": true or false (json-bool)
3301- "host": server's IP address (json-string)
3302- "port": server's port number (json-int, optional)
3303- "tls-port": server's port number (json-int, optional)
3304- "auth": authentication method (json-string)
3305 - Possible values: "none", "spice"
3306- "channels": a json-array of all active channels clients
3307
3308Channels are described by a json-object, each one contain the following:
3309
3310- "host": client's IP address (json-string)
3311- "family": address family (json-string)
3312 - Possible values: "ipv4", "ipv6", "unix", "unknown"
3313- "port": client's port number (json-string)
3314- "connection-id": spice connection id. All channels with the same id
3315 belong to the same spice session (json-int)
3316- "channel-type": channel type. "1" is the main control channel, filter for
3317 this one if you want track spice sessions only (json-int)
3318- "channel-id": channel id. Usually "0", might be different needed when
3319 multiple channels of the same type exist, such as multiple
3320 display channels in a multihead setup (json-int)
3599d46b 3321- "tls": whether the channel is encrypted (json-bool)
cb42a870
GH
3322
3323Example:
3324
3325-> { "execute": "query-spice" }
3326<- {
3327 "return": {
3328 "enabled": true,
3329 "auth": "spice",
3330 "port": 5920,
3331 "tls-port": 5921,
3332 "host": "0.0.0.0",
3333 "channels": [
3334 {
3335 "port": "54924",
3336 "family": "ipv4",
3337 "channel-type": 1,
3338 "connection-id": 1804289383,
3339 "host": "127.0.0.1",
3340 "channel-id": 0,
3341 "tls": true
3342 },
3343 {
3344 "port": "36710",
3345 "family": "ipv4",
3346 "channel-type": 4,
3347 "connection-id": 1804289383,
3348 "host": "127.0.0.1",
3349 "channel-id": 0,
3350 "tls": false
3351 },
3352 [ ... more channels follow ... ]
3353 ]
3354 }
3355 }
3356
3357EQMP
3358
d1f29646
LC
3359#if defined(CONFIG_SPICE)
3360 {
3361 .name = "query-spice",
3362 .args_type = "",
7fad30f0 3363 .mhandler.cmd_new = qmp_marshal_query_spice,
d1f29646
LC
3364 },
3365#endif
3366
82a56f0d
LC
3367SQMP
3368query-name
3369----------
3370
3371Show VM name.
3372
3373Return a json-object with the following information:
3374
3375- "name": VM's name (json-string, optional)
3376
3377Example:
3378
3379-> { "execute": "query-name" }
3380<- { "return": { "name": "qemu-name" } }
3381
3382EQMP
3383
48a32bed
AL
3384 {
3385 .name = "query-name",
3386 .args_type = "",
7fad30f0 3387 .mhandler.cmd_new = qmp_marshal_query_name,
48a32bed
AL
3388 },
3389
82a56f0d
LC
3390SQMP
3391query-uuid
3392----------
3393
3394Show VM UUID.
3395
3396Return a json-object with the following information:
3397
3398- "UUID": Universally Unique Identifier (json-string)
3399
3400Example:
3401
3402-> { "execute": "query-uuid" }
3403<- { "return": { "UUID": "550e8400-e29b-41d4-a716-446655440000" } }
3404
3405EQMP
3406
efab767e
LC
3407 {
3408 .name = "query-uuid",
3409 .args_type = "",
7fad30f0 3410 .mhandler.cmd_new = qmp_marshal_query_uuid,
efab767e
LC
3411 },
3412
1f8f987d
AK
3413SQMP
3414query-command-line-options
3415--------------------------
3416
3417Show command line option schema.
3418
3419Return a json-array of command line option schema for all options (or for
3420the given option), returning an error if the given option doesn't exist.
3421
3422Each array entry contains the following:
3423
3424- "option": option name (json-string)
3425- "parameters": a json-array describes all parameters of the option:
3426 - "name": parameter name (json-string)
3427 - "type": parameter type (one of 'string', 'boolean', 'number',
3428 or 'size')
3429 - "help": human readable description of the parameter
3430 (json-string, optional)
e36af94f
CL
3431 - "default": default value string for the parameter
3432 (json-string, optional)
1f8f987d
AK
3433
3434Example:
3435
3436-> { "execute": "query-command-line-options", "arguments": { "option": "option-rom" } }
3437<- { "return": [
3438 {
3439 "parameters": [
3440 {
3441 "name": "romfile",
3442 "type": "string"
3443 },
3444 {
3445 "name": "bootindex",
3446 "type": "number"
3447 }
3448 ],
3449 "option": "option-rom"
3450 }
3451 ]
3452 }
3453
3454EQMP
3455
3456 {
3457 .name = "query-command-line-options",
3458 .args_type = "option:s?",
7fad30f0 3459 .mhandler.cmd_new = qmp_marshal_query_command_line_options,
1f8f987d
AK
3460 },
3461
82a56f0d
LC
3462SQMP
3463query-migrate
3464-------------
3465
3466Migration status.
3467
3468Return a json-object. If migration is active there will be another json-object
3469with RAM migration status and if block migration is active another one with
3470block migration status.
3471
3472The main json-object contains the following:
3473
3474- "status": migration status (json-string)
3b695950 3475 - Possible values: "setup", "active", "completed", "failed", "cancelled"
7aa939af
JQ
3476- "total-time": total amount of ms since migration started. If
3477 migration has ended, it returns the total migration
817c6045 3478 time (json-int)
8f3067bd
MH
3479- "setup-time" amount of setup time in milliseconds _before_ the
3480 iterations begin but _after_ the QMP command is issued.
3481 This is designed to provide an accounting of any activities
3482 (such as RDMA pinning) which may be expensive, but do not
3483 actually occur during the iterative migration rounds
3484 themselves. (json-int)
9c5a9fcf
JQ
3485- "downtime": only present when migration has finished correctly
3486 total amount in ms for downtime that happened (json-int)
2c52ddf1
JQ
3487- "expected-downtime": only present while migration is active
3488 total amount in ms for downtime that was calculated on
817c6045 3489 the last bitmap round (json-int)
82a56f0d 3490- "ram": only present if "status" is "active", it is a json-object with the
817c6045
JQ
3491 following RAM information:
3492 - "transferred": amount transferred in bytes (json-int)
3493 - "remaining": amount remaining to transfer in bytes (json-int)
3494 - "total": total amount of memory in bytes (json-int)
3495 - "duplicate": number of pages filled entirely with the same
3496 byte (json-int)
3497 These are sent over the wire much more efficiently.
f1c72795 3498 - "skipped": number of skipped zero pages (json-int)
805a2505 3499 - "normal" : number of whole pages transferred. I.e. they
817c6045
JQ
3500 were not sent as duplicate or xbzrle pages (json-int)
3501 - "normal-bytes" : number of bytes transferred in whole
3502 pages. This is just normal pages times size of one page,
3503 but this way upper levels don't need to care about page
3504 size (json-int)
58570ed8 3505 - "dirty-sync-count": times that dirty ram was synchronized (json-int)
82a56f0d 3506- "disk": only present if "status" is "active" and it is a block migration,
817c6045
JQ
3507 it is a json-object with the following disk information:
3508 - "transferred": amount transferred in bytes (json-int)
3509 - "remaining": amount remaining to transfer in bytes json-int)
3510 - "total": total disk size in bytes (json-int)
f36d55af
OW
3511- "xbzrle-cache": only present if XBZRLE is active.
3512 It is a json-object with the following XBZRLE information:
817c6045
JQ
3513 - "cache-size": XBZRLE cache size in bytes
3514 - "bytes": number of bytes transferred for XBZRLE compressed pages
f36d55af 3515 - "pages": number of XBZRLE compressed pages
817c6045 3516 - "cache-miss": number of XBRZRLE page cache misses
8bc39233 3517 - "cache-miss-rate": rate of XBRZRLE page cache misses
817c6045
JQ
3518 - "overflow": number of times XBZRLE overflows. This means
3519 that the XBZRLE encoding was bigger than just sent the
3520 whole page, and then we sent the whole page instead (as as
3521 normal page).
3522
82a56f0d
LC
3523Examples:
3524
35251. Before the first migration
3526
3527-> { "execute": "query-migrate" }
3528<- { "return": {} }
3529
35302. Migration is done and has succeeded
3531
3532-> { "execute": "query-migrate" }
004d4c10
OW
3533<- { "return": {
3534 "status": "completed",
3535 "ram":{
3536 "transferred":123,
3537 "remaining":123,
3538 "total":246,
3539 "total-time":12345,
8f3067bd 3540 "setup-time":12345,
9c5a9fcf 3541 "downtime":12345,
004d4c10
OW
3542 "duplicate":123,
3543 "normal":123,
58570ed8
C
3544 "normal-bytes":123456,
3545 "dirty-sync-count":15
004d4c10
OW
3546 }
3547 }
3548 }
82a56f0d
LC
3549
35503. Migration is done and has failed
3551
3552-> { "execute": "query-migrate" }
3553<- { "return": { "status": "failed" } }
3554
35554. Migration is being performed and is not a block migration:
3556
3557-> { "execute": "query-migrate" }
3558<- {
3559 "return":{
3560 "status":"active",
3561 "ram":{
3562 "transferred":123,
3563 "remaining":123,
62d4e3fe 3564 "total":246,
004d4c10 3565 "total-time":12345,
8f3067bd 3566 "setup-time":12345,
2c52ddf1 3567 "expected-downtime":12345,
004d4c10
OW
3568 "duplicate":123,
3569 "normal":123,
58570ed8
C
3570 "normal-bytes":123456,
3571 "dirty-sync-count":15
82a56f0d
LC
3572 }
3573 }
3574 }
3575
35765. Migration is being performed and is a block migration:
3577
3578-> { "execute": "query-migrate" }
3579<- {
3580 "return":{
3581 "status":"active",
3582 "ram":{
3583 "total":1057024,
3584 "remaining":1053304,
62d4e3fe 3585 "transferred":3720,
004d4c10 3586 "total-time":12345,
8f3067bd 3587 "setup-time":12345,
2c52ddf1 3588 "expected-downtime":12345,
004d4c10
OW
3589 "duplicate":123,
3590 "normal":123,
58570ed8
C
3591 "normal-bytes":123456,
3592 "dirty-sync-count":15
82a56f0d
LC
3593 },
3594 "disk":{
3595 "total":20971520,
3596 "remaining":20880384,
3597 "transferred":91136
3598 }
3599 }
3600 }
3601
f36d55af
OW
36026. Migration is being performed and XBZRLE is active:
3603
3604-> { "execute": "query-migrate" }
3605<- {
3606 "return":{
3607 "status":"active",
3608 "capabilities" : [ { "capability": "xbzrle", "state" : true } ],
3609 "ram":{
3610 "total":1057024,
3611 "remaining":1053304,
3612 "transferred":3720,
3613 "total-time":12345,
8f3067bd 3614 "setup-time":12345,
2c52ddf1 3615 "expected-downtime":12345,
f36d55af
OW
3616 "duplicate":10,
3617 "normal":3333,
58570ed8
C
3618 "normal-bytes":3412992,
3619 "dirty-sync-count":15
f36d55af
OW
3620 },
3621 "xbzrle-cache":{
3622 "cache-size":67108864,
3623 "bytes":20971520,
3624 "pages":2444343,
3625 "cache-miss":2244,
8bc39233 3626 "cache-miss-rate":0.123,
f36d55af
OW
3627 "overflow":34434
3628 }
3629 }
3630 }
3631
82a56f0d
LC
3632EQMP
3633
791e7c82
LC
3634 {
3635 .name = "query-migrate",
3636 .args_type = "",
7fad30f0 3637 .mhandler.cmd_new = qmp_marshal_query_migrate,
791e7c82
LC
3638 },
3639
bbf6da32 3640SQMP
00458433 3641migrate-set-capabilities
817c6045 3642------------------------
00458433
OW
3643
3644Enable/Disable migration capabilities
3645
817c6045 3646- "xbzrle": XBZRLE support
d6d69731
HZ
3647- "rdma-pin-all": pin all pages when using RDMA during migration
3648- "auto-converge": throttle down guest to help convergence of migration
3649- "zero-blocks": compress zero blocks during block migration
72e72e1a 3650- "events": generate events for each migration state change
00458433
OW
3651
3652Arguments:
3653
3654Example:
3655
3656-> { "execute": "migrate-set-capabilities" , "arguments":
3657 { "capabilities": [ { "capability": "xbzrle", "state": true } ] } }
3658
3659EQMP
3660
3661 {
3662 .name = "migrate-set-capabilities",
43d0a2c1 3663 .args_type = "capabilities:q",
00458433 3664 .params = "capability:s,state:b",
7fad30f0 3665 .mhandler.cmd_new = qmp_marshal_migrate_set_capabilities,
00458433
OW
3666 },
3667SQMP
bbf6da32 3668query-migrate-capabilities
817c6045 3669--------------------------
bbf6da32
OW
3670
3671Query current migration capabilities
3672
3673- "capabilities": migration capabilities state
3674 - "xbzrle" : XBZRLE state (json-bool)
d6d69731
HZ
3675 - "rdma-pin-all" : RDMA Pin Page state (json-bool)
3676 - "auto-converge" : Auto Converge state (json-bool)
3677 - "zero-blocks" : Zero Blocks state (json-bool)
bbf6da32
OW
3678
3679Arguments:
3680
3681Example:
3682
3683-> { "execute": "query-migrate-capabilities" }
dbca1b37
OW
3684<- { "return": [ { "state": false, "capability": "xbzrle" } ] }
3685
bbf6da32
OW
3686EQMP
3687
3688 {
3689 .name = "query-migrate-capabilities",
3690 .args_type = "",
7fad30f0 3691 .mhandler.cmd_new = qmp_marshal_query_migrate_capabilities,
bbf6da32
OW
3692 },
3693
85de8323
LL
3694SQMP
3695migrate-set-parameters
3696----------------------
3697
3698Set migration parameters
3699
3700- "compress-level": set compression level during migration (json-int)
3701- "compress-threads": set compression thread count for migration (json-int)
3702- "decompress-threads": set decompression thread count for migration (json-int)
3703
3704Arguments:
3705
3706Example:
3707
3708-> { "execute": "migrate-set-parameters" , "arguments":
3709 { "compress-level": 1 } }
3710
3711EQMP
3712
3713 {
3714 .name = "migrate-set-parameters",
3715 .args_type =
3716 "compress-level:i?,compress-threads:i?,decompress-threads:i?",
7fad30f0 3717 .mhandler.cmd_new = qmp_marshal_migrate_set_parameters,
85de8323
LL
3718 },
3719SQMP
3720query-migrate-parameters
3721------------------------
3722
3723Query current migration parameters
3724
3725- "parameters": migration parameters value
3726 - "compress-level" : compression level value (json-int)
3727 - "compress-threads" : compression thread count value (json-int)
3728 - "decompress-threads" : decompression thread count value (json-int)
3729
3730Arguments:
3731
3732Example:
3733
3734-> { "execute": "query-migrate-parameters" }
3735<- {
3736 "return": {
3737 "decompress-threads", 2,
3738 "compress-threads", 8,
3739 "compress-level", 1
3740 }
3741 }
3742
3743EQMP
3744
3745 {
3746 .name = "query-migrate-parameters",
3747 .args_type = "",
7fad30f0 3748 .mhandler.cmd_new = qmp_marshal_query_migrate_parameters,
85de8323
LL
3749 },
3750
82a56f0d
LC
3751SQMP
3752query-balloon
3753-------------
3754
3755Show balloon information.
3756
3757Make an asynchronous request for balloon info. When the request completes a
3758json-object will be returned containing the following data:
3759
3760- "actual": current balloon value in bytes (json-int)
82a56f0d
LC
3761
3762Example:
3763
3764-> { "execute": "query-balloon" }
3765<- {
3766 "return":{
3767 "actual":1073741824,
82a56f0d
LC
3768 }
3769 }
3770
3771EQMP
3772
96637bcd
LC
3773 {
3774 .name = "query-balloon",
3775 .args_type = "",
7fad30f0 3776 .mhandler.cmd_new = qmp_marshal_query_balloon,
96637bcd 3777 },
b4b12c62 3778
fb5458cd
SH
3779 {
3780 .name = "query-block-jobs",
3781 .args_type = "",
7fad30f0 3782 .mhandler.cmd_new = qmp_marshal_query_block_jobs,
fb5458cd
SH
3783 },
3784
b4b12c62
AL
3785 {
3786 .name = "qom-list",
3787 .args_type = "path:s",
7fad30f0 3788 .mhandler.cmd_new = qmp_marshal_qom_list,
b4b12c62 3789 },
eb6e8ea5
AL
3790
3791 {
3792 .name = "qom-set",
b9f8978c 3793 .args_type = "path:s,property:s,value:q",
6eb3937e 3794 .mhandler.cmd_new = qmp_marshal_qom_set,
eb6e8ea5
AL
3795 },
3796
3797 {
3798 .name = "qom-get",
3799 .args_type = "path:s,property:s",
6eb3937e 3800 .mhandler.cmd_new = qmp_marshal_qom_get,
eb6e8ea5 3801 },
270b243f 3802
6dd844db
PB
3803 {
3804 .name = "nbd-server-start",
3805 .args_type = "addr:q",
7fad30f0 3806 .mhandler.cmd_new = qmp_marshal_nbd_server_start,
6dd844db
PB
3807 },
3808 {
3809 .name = "nbd-server-add",
3810 .args_type = "device:B,writable:b?",
7fad30f0 3811 .mhandler.cmd_new = qmp_marshal_nbd_server_add,
6dd844db
PB
3812 },
3813 {
3814 .name = "nbd-server-stop",
3815 .args_type = "",
7fad30f0 3816 .mhandler.cmd_new = qmp_marshal_nbd_server_stop,
6dd844db
PB
3817 },
3818
270b243f
LC
3819 {
3820 .name = "change-vnc-password",
3821 .args_type = "password:s",
7fad30f0 3822 .mhandler.cmd_new = qmp_marshal_change_vnc_password,
270b243f 3823 },
5eeee3fa
AL
3824 {
3825 .name = "qom-list-types",
3826 .args_type = "implements:s?,abstract:b?",
7fad30f0 3827 .mhandler.cmd_new = qmp_marshal_qom_list_types,
5eeee3fa 3828 },
1daa31b9
AL
3829
3830 {
3831 .name = "device-list-properties",
3832 .args_type = "typename:s",
7fad30f0 3833 .mhandler.cmd_new = qmp_marshal_device_list_properties,
1daa31b9
AL
3834 },
3835
01d3c80d
AL
3836 {
3837 .name = "query-machines",
3838 .args_type = "",
7fad30f0 3839 .mhandler.cmd_new = qmp_marshal_query_machines,
01d3c80d
AL
3840 },
3841
e4e31c63
AL
3842 {
3843 .name = "query-cpu-definitions",
3844 .args_type = "",
7fad30f0 3845 .mhandler.cmd_new = qmp_marshal_query_cpu_definitions,
e4e31c63
AL
3846 },
3847
99afc91d
DB
3848 {
3849 .name = "query-target",
3850 .args_type = "",
7fad30f0 3851 .mhandler.cmd_new = qmp_marshal_query_target,
99afc91d 3852 },
f1a1a356 3853
d1a0cf73
SB
3854 {
3855 .name = "query-tpm",
3856 .args_type = "",
7fad30f0 3857 .mhandler.cmd_new = qmp_marshal_query_tpm,
d1a0cf73
SB
3858 },
3859
28c4fa32
CB
3860SQMP
3861query-tpm
3862---------
3863
3864Return information about the TPM device.
3865
3866Arguments: None
3867
3868Example:
3869
3870-> { "execute": "query-tpm" }
3871<- { "return":
3872 [
3873 { "model": "tpm-tis",
3874 "options":
3875 { "type": "passthrough",
3876 "data":
3877 { "cancel-path": "/sys/class/misc/tpm0/device/cancel",
3878 "path": "/dev/tpm0"
3879 }
3880 },
3881 "id": "tpm0"
3882 }
3883 ]
3884 }
3885
3886EQMP
3887
d1a0cf73
SB
3888 {
3889 .name = "query-tpm-models",
3890 .args_type = "",
7fad30f0 3891 .mhandler.cmd_new = qmp_marshal_query_tpm_models,
d1a0cf73
SB
3892 },
3893
28c4fa32
CB
3894SQMP
3895query-tpm-models
3896----------------
3897
3898Return a list of supported TPM models.
3899
3900Arguments: None
3901
3902Example:
3903
3904-> { "execute": "query-tpm-models" }
3905<- { "return": [ "tpm-tis" ] }
3906
3907EQMP
3908
d1a0cf73
SB
3909 {
3910 .name = "query-tpm-types",
3911 .args_type = "",
7fad30f0 3912 .mhandler.cmd_new = qmp_marshal_query_tpm_types,
d1a0cf73
SB
3913 },
3914
28c4fa32
CB
3915SQMP
3916query-tpm-types
3917---------------
3918
3919Return a list of supported TPM types.
3920
3921Arguments: None
3922
3923Example:
3924
3925-> { "execute": "query-tpm-types" }
3926<- { "return": [ "passthrough" ] }
3927
3928EQMP
3929
f1a1a356
GH
3930 {
3931 .name = "chardev-add",
3932 .args_type = "id:s,backend:q",
7fad30f0 3933 .mhandler.cmd_new = qmp_marshal_chardev_add,
f1a1a356
GH
3934 },
3935
3936SQMP
3937chardev-add
3938----------------
3939
3940Add a chardev.
3941
3942Arguments:
3943
3944- "id": the chardev's ID, must be unique (json-string)
3945- "backend": chardev backend type + parameters
3946
ffbdbe59 3947Examples:
f1a1a356
GH
3948
3949-> { "execute" : "chardev-add",
3950 "arguments" : { "id" : "foo",
3951 "backend" : { "type" : "null", "data" : {} } } }
3952<- { "return": {} }
3953
ffbdbe59
GH
3954-> { "execute" : "chardev-add",
3955 "arguments" : { "id" : "bar",
3956 "backend" : { "type" : "file",
3957 "data" : { "out" : "/tmp/bar.log" } } } }
3958<- { "return": {} }
3959
0a1a7fab
GH
3960-> { "execute" : "chardev-add",
3961 "arguments" : { "id" : "baz",
3962 "backend" : { "type" : "pty", "data" : {} } } }
3963<- { "return": { "pty" : "/dev/pty/42" } }
3964
f1a1a356
GH
3965EQMP
3966
3967 {
3968 .name = "chardev-remove",
3969 .args_type = "id:s",
7fad30f0 3970 .mhandler.cmd_new = qmp_marshal_chardev_remove,
f1a1a356
GH
3971 },
3972
3973
3974SQMP
3975chardev-remove
3976--------------
3977
3978Remove a chardev.
3979
3980Arguments:
3981
3982- "id": the chardev's ID, must exist and not be in use (json-string)
3983
3984Example:
3985
3986-> { "execute": "chardev-remove", "arguments": { "id" : "foo" } }
3987<- { "return": {} }
3988
b1be4280
AK
3989EQMP
3990 {
3991 .name = "query-rx-filter",
3992 .args_type = "name:s?",
7fad30f0 3993 .mhandler.cmd_new = qmp_marshal_query_rx_filter,
b1be4280
AK
3994 },
3995
3996SQMP
3997query-rx-filter
3998---------------
3999
4000Show rx-filter information.
4001
4002Returns a json-array of rx-filter information for all NICs (or for the
4003given NIC), returning an error if the given NIC doesn't exist, or
4004given NIC doesn't support rx-filter querying, or given net client
4005isn't a NIC.
4006
4007The query will clear the event notification flag of each NIC, then qemu
4008will start to emit event to QMP monitor.
4009
4010Each array entry contains the following:
4011
4012- "name": net client name (json-string)
4013- "promiscuous": promiscuous mode is enabled (json-bool)
4014- "multicast": multicast receive state (one of 'normal', 'none', 'all')
4015- "unicast": unicast receive state (one of 'normal', 'none', 'all')
f7bc8ef8 4016- "vlan": vlan receive state (one of 'normal', 'none', 'all') (Since 2.0)
b1be4280
AK
4017- "broadcast-allowed": allow to receive broadcast (json-bool)
4018- "multicast-overflow": multicast table is overflowed (json-bool)
4019- "unicast-overflow": unicast table is overflowed (json-bool)
4020- "main-mac": main macaddr string (json-string)
4021- "vlan-table": a json-array of active vlan id
4022- "unicast-table": a json-array of unicast macaddr string
4023- "multicast-table": a json-array of multicast macaddr string
4024
4025Example:
4026
4027-> { "execute": "query-rx-filter", "arguments": { "name": "vnet0" } }
4028<- { "return": [
4029 {
4030 "promiscuous": true,
4031 "name": "vnet0",
4032 "main-mac": "52:54:00:12:34:56",
4033 "unicast": "normal",
f7bc8ef8 4034 "vlan": "normal",
b1be4280
AK
4035 "vlan-table": [
4036 4,
4037 0
4038 ],
4039 "unicast-table": [
4040 ],
4041 "multicast": "normal",
4042 "multicast-overflow": false,
4043 "unicast-overflow": false,
4044 "multicast-table": [
4045 "01:00:5e:00:00:01",
4046 "33:33:00:00:00:01",
4047 "33:33:ff:12:34:56"
4048 ],
4049 "broadcast-allowed": false
4050 }
4051 ]
4052 }
4053
d26c9a15
KW
4054EQMP
4055
4056 {
4057 .name = "blockdev-add",
4058 .args_type = "options:q",
7fad30f0 4059 .mhandler.cmd_new = qmp_marshal_blockdev_add,
d26c9a15
KW
4060 },
4061
4062SQMP
4063blockdev-add
4064------------
4065
4066Add a block device.
4067
da2cf4e8 4068This command is still a work in progress. It doesn't support all
81b936ae
AG
4069block drivers among other things. Stay away from it unless you want
4070to help with its development.
da2cf4e8 4071
d26c9a15
KW
4072Arguments:
4073
4074- "options": block driver options
4075
4076Example (1):
4077
4078-> { "execute": "blockdev-add",
4079 "arguments": { "options" : { "driver": "qcow2",
4080 "file": { "driver": "file",
4081 "filename": "test.qcow2" } } } }
4082<- { "return": {} }
4083
4084Example (2):
4085
4086-> { "execute": "blockdev-add",
4087 "arguments": {
4088 "options": {
4089 "driver": "qcow2",
4090 "id": "my_disk",
4091 "discard": "unmap",
4092 "cache": {
4093 "direct": true,
4094 "writeback": true
4095 },
4096 "file": {
4097 "driver": "file",
4098 "filename": "/tmp/test.qcow2"
4099 },
4100 "backing": {
4101 "driver": "raw",
4102 "file": {
4103 "driver": "file",
4104 "filename": "/dev/fdset/4"
4105 }
4106 }
4107 }
4108 }
4109 }
4110
4111<- { "return": {} }
4112
81b936ae
AG
4113EQMP
4114
4115 {
4116 .name = "x-blockdev-del",
4117 .args_type = "id:s?,node-name:s?",
4118 .mhandler.cmd_new = qmp_marshal_x_blockdev_del,
4119 },
4120
4121SQMP
4122x-blockdev-del
4123------------
4124Since 2.5
4125
4126Deletes a block device thas has been added using blockdev-add.
4127The selected device can be either a block backend or a graph node.
4128
4129In the former case the backend will be destroyed, along with its
4130inserted medium if there's any. The command will fail if the backend
4131or its medium are in use.
4132
4133In the latter case the node will be destroyed. The command will fail
4134if the node is attached to a block backend or is otherwise being
4135used.
4136
4137One of "id" or "node-name" must be specified, but not both.
4138
4139This command is still a work in progress and is considered
4140experimental. Stay away from it unless you want to help with its
4141development.
4142
4143Arguments:
4144
4145- "id": Name of the block backend device to delete (json-string, optional)
4146- "node-name": Name of the graph node to delete (json-string, optional)
4147
4148Example:
4149
4150-> { "execute": "blockdev-add",
4151 "arguments": {
4152 "options": {
4153 "driver": "qcow2",
4154 "id": "drive0",
4155 "file": {
4156 "driver": "file",
4157 "filename": "test.qcow2"
4158 }
4159 }
4160 }
4161 }
4162
4163<- { "return": {} }
4164
4165-> { "execute": "x-blockdev-del",
4166 "arguments": { "id": "drive0" }
4167 }
4168<- { "return": {} }
4169
7d8a9f71
HR
4170EQMP
4171
4172 {
4173 .name = "blockdev-open-tray",
4174 .args_type = "device:s,force:b?",
4175 .mhandler.cmd_new = qmp_marshal_blockdev_open_tray,
4176 },
4177
4178SQMP
4179blockdev-open-tray
4180------------------
4181
4182Opens a block device's tray. If there is a block driver state tree inserted as a
4183medium, it will become inaccessible to the guest (but it will remain associated
4184to the block device, so closing the tray will make it accessible again).
4185
4186If the tray was already open before, this will be a no-op.
4187
4188Once the tray opens, a DEVICE_TRAY_MOVED event is emitted. There are cases in
4189which no such event will be generated, these include:
4190- if the guest has locked the tray, @force is false and the guest does not
4191 respond to the eject request
4192- if the BlockBackend denoted by @device does not have a guest device attached
4193 to it
4194- if the guest device does not have an actual tray and is empty, for instance
4195 for floppy disk drives
4196
4197Arguments:
4198
4199- "device": block device name (json-string)
4200- "force": if false (the default), an eject request will be sent to the guest if
4201 it has locked the tray (and the tray will not be opened immediately);
4202 if true, the tray will be opened regardless of whether it is locked
4203 (json-bool, optional)
4204
4205Example:
4206
4207-> { "execute": "blockdev-open-tray",
4208 "arguments": { "device": "ide1-cd0" } }
4209
4210<- { "timestamp": { "seconds": 1418751016,
4211 "microseconds": 716996 },
4212 "event": "DEVICE_TRAY_MOVED",
4213 "data": { "device": "ide1-cd0",
4214 "tray-open": true } }
4215
4216<- { "return": {} }
4217
abaaf59d
HR
4218EQMP
4219
4220 {
4221 .name = "blockdev-close-tray",
4222 .args_type = "device:s",
4223 .mhandler.cmd_new = qmp_marshal_blockdev_close_tray,
4224 },
4225
4226SQMP
4227blockdev-close-tray
4228-------------------
4229
4230Closes a block device's tray. If there is a block driver state tree associated
4231with the block device (which is currently ejected), that tree will be loaded as
4232the medium.
4233
4234If the tray was already closed before, this will be a no-op.
4235
4236Arguments:
4237
4238- "device": block device name (json-string)
4239
4240Example:
4241
4242-> { "execute": "blockdev-close-tray",
4243 "arguments": { "device": "ide1-cd0" } }
4244
4245<- { "timestamp": { "seconds": 1418751345,
4246 "microseconds": 272147 },
4247 "event": "DEVICE_TRAY_MOVED",
4248 "data": { "device": "ide1-cd0",
4249 "tray-open": false } }
4250
4251<- { "return": {} }
4252
2814f672
HR
4253EQMP
4254
4255 {
6e0abc25 4256 .name = "x-blockdev-remove-medium",
2814f672 4257 .args_type = "device:s",
6e0abc25 4258 .mhandler.cmd_new = qmp_marshal_x_blockdev_remove_medium,
2814f672
HR
4259 },
4260
4261SQMP
6e0abc25
HR
4262x-blockdev-remove-medium
4263------------------------
2814f672
HR
4264
4265Removes a medium (a block driver state tree) from a block device. That block
4266device's tray must currently be open (unless there is no attached guest device).
4267
4268If the tray is open and there is no medium inserted, this will be a no-op.
4269
6e0abc25
HR
4270This command is still a work in progress and is considered experimental.
4271Stay away from it unless you want to help with its development.
4272
2814f672
HR
4273Arguments:
4274
4275- "device": block device name (json-string)
4276
4277Example:
4278
6e0abc25 4279-> { "execute": "x-blockdev-remove-medium",
2814f672
HR
4280 "arguments": { "device": "ide1-cd0" } }
4281
4282<- { "error": { "class": "GenericError",
4283 "desc": "Tray of device 'ide1-cd0' is not open" } }
4284
4285-> { "execute": "blockdev-open-tray",
4286 "arguments": { "device": "ide1-cd0" } }
4287
4288<- { "timestamp": { "seconds": 1418751627,
4289 "microseconds": 549958 },
4290 "event": "DEVICE_TRAY_MOVED",
4291 "data": { "device": "ide1-cd0",
4292 "tray-open": true } }
4293
4294<- { "return": {} }
4295
6e0abc25 4296-> { "execute": "x-blockdev-remove-medium",
2814f672
HR
4297 "arguments": { "device": "ide1-cd0" } }
4298
4299<- { "return": {} }
4300
d1299882
HR
4301EQMP
4302
4303 {
6e0abc25 4304 .name = "x-blockdev-insert-medium",
d1299882 4305 .args_type = "device:s,node-name:s",
6e0abc25 4306 .mhandler.cmd_new = qmp_marshal_x_blockdev_insert_medium,
d1299882
HR
4307 },
4308
4309SQMP
6e0abc25
HR
4310x-blockdev-insert-medium
4311------------------------
d1299882
HR
4312
4313Inserts a medium (a block driver state tree) into a block device. That block
4314device's tray must currently be open (unless there is no attached guest device)
4315and there must be no medium inserted already.
4316
6e0abc25
HR
4317This command is still a work in progress and is considered experimental.
4318Stay away from it unless you want to help with its development.
4319
d1299882
HR
4320Arguments:
4321
4322- "device": block device name (json-string)
4323- "node-name": root node of the BDS tree to insert into the block device
4324
4325Example:
4326
4327-> { "execute": "blockdev-add",
4328 "arguments": { "options": { "node-name": "node0",
4329 "driver": "raw",
4330 "file": { "driver": "file",
4331 "filename": "fedora.iso" } } } }
4332
4333<- { "return": {} }
4334
6e0abc25 4335-> { "execute": "x-blockdev-insert-medium",
d1299882
HR
4336 "arguments": { "device": "ide1-cd0",
4337 "node-name": "node0" } }
4338
4339<- { "return": {} }
4340
c13163fb
BC
4341EQMP
4342
4343 {
4344 .name = "query-named-block-nodes",
4345 .args_type = "",
7fad30f0 4346 .mhandler.cmd_new = qmp_marshal_query_named_block_nodes,
c13163fb
BC
4347 },
4348
4349SQMP
4350@query-named-block-nodes
4351------------------------
4352
4353Return a list of BlockDeviceInfo for all the named block driver nodes
4354
4355Example:
4356
4357-> { "execute": "query-named-block-nodes" }
4358<- { "return": [ { "ro":false,
4359 "drv":"qcow2",
4360 "encrypted":false,
4361 "file":"disks/test.qcow2",
4362 "node-name": "my-node",
4363 "backing_file_depth":1,
4364 "bps":1000000,
4365 "bps_rd":0,
4366 "bps_wr":0,
4367 "iops":1000000,
4368 "iops_rd":0,
4369 "iops_wr":0,
4370 "bps_max": 8000000,
4371 "bps_rd_max": 0,
4372 "bps_wr_max": 0,
4373 "iops_max": 0,
4374 "iops_rd_max": 0,
4375 "iops_wr_max": 0,
4376 "iops_size": 0,
e2462113 4377 "write_threshold": 0,
c13163fb
BC
4378 "image":{
4379 "filename":"disks/test.qcow2",
4380 "format":"qcow2",
4381 "virtual-size":2048000,
4382 "backing_file":"base.qcow2",
4383 "full-backing-filename":"disks/base.qcow2",
5403432f 4384 "backing-filename-format":"qcow2",
c13163fb
BC
4385 "snapshots":[
4386 {
4387 "id": "1",
4388 "name": "snapshot1",
4389 "vm-state-size": 0,
4390 "date-sec": 10000200,
4391 "date-nsec": 12,
4392 "vm-clock-sec": 206,
4393 "vm-clock-nsec": 30
4394 }
4395 ],
4396 "backing-image":{
4397 "filename":"disks/base.qcow2",
4398 "format":"qcow2",
4399 "virtual-size":2048000
4400 }
c059451c 4401 } } ] }
c13163fb 4402
24fb4133
HR
4403EQMP
4404
4405 {
4406 .name = "blockdev-change-medium",
39ff43d9 4407 .args_type = "device:B,filename:F,format:s?,read-only-mode:s?",
24fb4133
HR
4408 .mhandler.cmd_new = qmp_marshal_blockdev_change_medium,
4409 },
4410
4411SQMP
4412blockdev-change-medium
4413----------------------
4414
4415Changes the medium inserted into a block device by ejecting the current medium
4416and loading a new image file which is inserted as the new medium.
4417
4418Arguments:
4419
4420- "device": device name (json-string)
4421- "filename": filename of the new image (json-string)
4422- "format": format of the new image (json-string, optional)
39ff43d9
HR
4423- "read-only-mode": new read-only mode (json-string, optional)
4424 - Possible values: "retain" (default), "read-only", "read-write"
24fb4133
HR
4425
4426Examples:
4427
44281. Change a removable medium
4429
4430-> { "execute": "blockdev-change-medium",
4431 "arguments": { "device": "ide1-cd0",
4432 "filename": "/srv/images/Fedora-12-x86_64-DVD.iso",
4433 "format": "raw" } }
4434<- { "return": {} }
4435
39ff43d9
HR
44362. Load a read-only medium into a writable drive
4437
4438-> { "execute": "blockdev-change-medium",
4439 "arguments": { "device": "isa-fd0",
4440 "filename": "/srv/images/ro.img",
4441 "format": "raw",
4442 "read-only-mode": "retain" } }
4443
4444<- { "error":
4445 { "class": "GenericError",
4446 "desc": "Could not open '/srv/images/ro.img': Permission denied" } }
4447
4448-> { "execute": "blockdev-change-medium",
4449 "arguments": { "device": "isa-fd0",
4450 "filename": "/srv/images/ro.img",
4451 "format": "raw",
4452 "read-only-mode": "read-only" } }
4453
4454<- { "return": {} }
4455
76b5d850
HT
4456EQMP
4457
4458 {
4459 .name = "query-memdev",
4460 .args_type = "",
7fad30f0 4461 .mhandler.cmd_new = qmp_marshal_query_memdev,
76b5d850
HT
4462 },
4463
4464SQMP
4465query-memdev
4466------------
4467
4468Show memory devices information.
4469
4470
4471Example (1):
4472
4473-> { "execute": "query-memdev" }
4474<- { "return": [
4475 {
4476 "size": 536870912,
4477 "merge": false,
4478 "dump": true,
4479 "prealloc": false,
4480 "host-nodes": [0, 1],
4481 "policy": "bind"
4482 },
4483 {
4484 "size": 536870912,
4485 "merge": false,
4486 "dump": true,
4487 "prealloc": true,
4488 "host-nodes": [2, 3],
4489 "policy": "preferred"
4490 }
4491 ]
4492 }
4493
6f2e2730
IM
4494EQMP
4495
4496 {
4497 .name = "query-memory-devices",
4498 .args_type = "",
7fad30f0 4499 .mhandler.cmd_new = qmp_marshal_query_memory_devices,
6f2e2730
IM
4500 },
4501
4502SQMP
4503@query-memory-devices
4504--------------------
4505
4506Return a list of memory devices.
4507
4508Example:
4509-> { "execute": "query-memory-devices" }
4510<- { "return": [ { "data":
4511 { "addr": 5368709120,
4512 "hotpluggable": true,
4513 "hotplugged": true,
4514 "id": "d1",
4515 "memdev": "/objects/memX",
4516 "node": 0,
4517 "size": 1073741824,
4518 "slot": 0},
4519 "type": "dimm"
4520 } ] }
f1a1a356 4521EQMP
02419bcb
IM
4522
4523 {
4524 .name = "query-acpi-ospm-status",
4525 .args_type = "",
7fad30f0 4526 .mhandler.cmd_new = qmp_marshal_query_acpi_ospm_status,
02419bcb
IM
4527 },
4528
4529SQMP
4530@query-acpi-ospm-status
4531--------------------
4532
4533Return list of ACPIOSTInfo for devices that support status reporting
4534via ACPI _OST method.
4535
4536Example:
4537-> { "execute": "query-acpi-ospm-status" }
4538<- { "return": [ { "device": "d1", "slot": "0", "slot-type": "DIMM", "source": 1, "status": 0},
4539 { "slot": "1", "slot-type": "DIMM", "source": 0, "status": 0},
4540 { "slot": "2", "slot-type": "DIMM", "source": 0, "status": 0},
4541 { "slot": "3", "slot-type": "DIMM", "source": 0, "status": 0}
4542 ]}
4543EQMP
f2ae8abf
MT
4544
4545#if defined TARGET_I386
4546 {
4547 .name = "rtc-reset-reinjection",
4548 .args_type = "",
7fad30f0 4549 .mhandler.cmd_new = qmp_marshal_rtc_reset_reinjection,
f2ae8abf
MT
4550 },
4551#endif
4552
4553SQMP
4554rtc-reset-reinjection
4555---------------------
4556
4557Reset the RTC interrupt reinjection backlog.
4558
4559Arguments: None.
4560
4561Example:
4562
4563-> { "execute": "rtc-reset-reinjection" }
4564<- { "return": {} }
1dde0f48
LV
4565EQMP
4566
4567 {
4568 .name = "trace-event-get-state",
4569 .args_type = "name:s",
7fad30f0 4570 .mhandler.cmd_new = qmp_marshal_trace_event_get_state,
1dde0f48
LV
4571 },
4572
4573SQMP
4574trace-event-get-state
4575---------------------
4576
4577Query the state of events.
4578
4579Example:
4580
4581-> { "execute": "trace-event-get-state", "arguments": { "name": "qemu_memalign" } }
4582<- { "return": [ { "name": "qemu_memalign", "state": "disabled" } ] }
4583EQMP
4584
4585 {
4586 .name = "trace-event-set-state",
4587 .args_type = "name:s,enable:b,ignore-unavailable:b?",
7fad30f0 4588 .mhandler.cmd_new = qmp_marshal_trace_event_set_state,
1dde0f48 4589 },
f2ae8abf 4590
1dde0f48
LV
4591SQMP
4592trace-event-set-state
4593---------------------
4594
4595Set the state of events.
4596
4597Example:
4598
4599-> { "execute": "trace-event-set-state", "arguments": { "name": "qemu_memalign", "enable": "true" } }
4600<- { "return": {} }
50c6617f
MT
4601EQMP
4602
4603 {
df5b2adb 4604 .name = "x-input-send-event",
51fc4476 4605 .args_type = "console:i?,events:q",
7fad30f0 4606 .mhandler.cmd_new = qmp_marshal_x_input_send_event,
50c6617f
MT
4607 },
4608
4609SQMP
df5b2adb 4610@x-input-send-event
50c6617f
MT
4611-----------------
4612
4613Send input event to guest.
4614
4615Arguments:
4616
51fc4476 4617- "console": console index. (json-int, optional)
50c6617f
MT
4618- "events": list of input events.
4619
4620The consoles are visible in the qom tree, under
4621/backend/console[$index]. They have a device link and head property, so
4622it is possible to map which console belongs to which device and display.
4623
df5b2adb
GH
4624Note: this command is experimental, and not a stable API.
4625
50c6617f
MT
4626Example (1):
4627
4628Press left mouse button.
4629
df5b2adb 4630-> { "execute": "x-input-send-event",
50c6617f
MT
4631 "arguments": { "console": 0,
4632 "events": [ { "type": "btn",
b5369dd8 4633 "data" : { "down": true, "button": "Left" } } ] } }
50c6617f
MT
4634<- { "return": {} }
4635
df5b2adb 4636-> { "execute": "x-input-send-event",
50c6617f
MT
4637 "arguments": { "console": 0,
4638 "events": [ { "type": "btn",
b5369dd8 4639 "data" : { "down": false, "button": "Left" } } ] } }
50c6617f
MT
4640<- { "return": {} }
4641
4642Example (2):
4643
4644Press ctrl-alt-del.
4645
df5b2adb 4646-> { "execute": "x-input-send-event",
50c6617f
MT
4647 "arguments": { "console": 0, "events": [
4648 { "type": "key", "data" : { "down": true,
4649 "key": {"type": "qcode", "data": "ctrl" } } },
4650 { "type": "key", "data" : { "down": true,
4651 "key": {"type": "qcode", "data": "alt" } } },
4652 { "type": "key", "data" : { "down": true,
4653 "key": {"type": "qcode", "data": "delete" } } } ] } }
4654<- { "return": {} }
4655
4656Example (3):
4657
4658Move mouse pointer to absolute coordinates (20000, 400).
4659
df5b2adb 4660-> { "execute": "x-input-send-event" ,
50c6617f
MT
4661 "arguments": { "console": 0, "events": [
4662 { "type": "abs", "data" : { "axis": "X", "value" : 20000 } },
4663 { "type": "abs", "data" : { "axis": "Y", "value" : 400 } } ] } }
4664<- { "return": {} }
4665
e2462113
FR
4666EQMP
4667
4668 {
4669 .name = "block-set-write-threshold",
4670 .args_type = "node-name:s,write-threshold:l",
7fad30f0 4671 .mhandler.cmd_new = qmp_marshal_block_set_write_threshold,
e2462113
FR
4672 },
4673
4674SQMP
4675block-set-write-threshold
4676------------
4677
4678Change the write threshold for a block drive. The threshold is an offset,
4679thus must be non-negative. Default is no write threshold.
4680Setting the threshold to zero disables it.
4681
4682Arguments:
4683
4684- "node-name": the node name in the block driver state graph (json-string)
4685- "write-threshold": the write threshold in bytes (json-int)
4686
4687Example:
4688
4689-> { "execute": "block-set-write-threshold",
4690 "arguments": { "node-name": "mydev",
4691 "write-threshold": 17179869184 } }
4692<- { "return": {} }
4693
f2ae8abf 4694EQMP
fafa4d50
SF
4695
4696 {
4697 .name = "query-rocker",
4698 .args_type = "name:s",
7fad30f0 4699 .mhandler.cmd_new = qmp_marshal_query_rocker,
fafa4d50
SF
4700 },
4701
4702SQMP
4703Show rocker switch
4704------------------
4705
4706Arguments:
4707
4708- "name": switch name
4709
4710Example:
4711
4712-> { "execute": "query-rocker", "arguments": { "name": "sw1" } }
4713<- { "return": {"name": "sw1", "ports": 2, "id": 1327446905938}}
4714
4715EQMP
4716
4717 {
4718 .name = "query-rocker-ports",
4719 .args_type = "name:s",
7fad30f0 4720 .mhandler.cmd_new = qmp_marshal_query_rocker_ports,
fafa4d50
SF
4721 },
4722
4723SQMP
4724Show rocker switch ports
4725------------------------
4726
4727Arguments:
4728
4729- "name": switch name
4730
4731Example:
4732
4733-> { "execute": "query-rocker-ports", "arguments": { "name": "sw1" } }
4734<- { "return": [ {"duplex": "full", "enabled": true, "name": "sw1.1",
4735 "autoneg": "off", "link-up": true, "speed": 10000},
4736 {"duplex": "full", "enabled": true, "name": "sw1.2",
4737 "autoneg": "off", "link-up": true, "speed": 10000}
4738 ]}
4739
4740EQMP
4741
4742 {
4743 .name = "query-rocker-of-dpa-flows",
4744 .args_type = "name:s,tbl-id:i?",
7fad30f0 4745 .mhandler.cmd_new = qmp_marshal_query_rocker_of_dpa_flows,
fafa4d50
SF
4746 },
4747
4748SQMP
4749Show rocker switch OF-DPA flow tables
4750-------------------------------------
4751
4752Arguments:
4753
4754- "name": switch name
4755- "tbl-id": (optional) flow table ID
4756
4757Example:
4758
4759-> { "execute": "query-rocker-of-dpa-flows", "arguments": { "name": "sw1" } }
4760<- { "return": [ {"key": {"in-pport": 0, "priority": 1, "tbl-id": 0},
4761 "hits": 138,
4762 "cookie": 0,
4763 "action": {"goto-tbl": 10},
4764 "mask": {"in-pport": 4294901760}
4765 },
4766 {...more...},
4767 ]}
4768
4769EQMP
4770
4771 {
4772 .name = "query-rocker-of-dpa-groups",
4773 .args_type = "name:s,type:i?",
7fad30f0 4774 .mhandler.cmd_new = qmp_marshal_query_rocker_of_dpa_groups,
fafa4d50
SF
4775 },
4776
4777SQMP
4778Show rocker OF-DPA group tables
4779-------------------------------
4780
4781Arguments:
4782
4783- "name": switch name
4784- "type": (optional) group type
4785
4786Example:
4787
4788-> { "execute": "query-rocker-of-dpa-groups", "arguments": { "name": "sw1" } }
4789<- { "return": [ {"type": 0, "out-pport": 2, "pport": 2, "vlan-id": 3841,
4790 "pop-vlan": 1, "id": 251723778},
4791 {"type": 0, "out-pport": 0, "pport": 0, "vlan-id": 3841,
4792 "pop-vlan": 1, "id": 251723776},
4793 {"type": 0, "out-pport": 1, "pport": 1, "vlan-id": 3840,
4794 "pop-vlan": 1, "id": 251658241},
4795 {"type": 0, "out-pport": 0, "pport": 0, "vlan-id": 3840,
4796 "pop-vlan": 1, "id": 251658240}
4797 ]}