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