]> git.proxmox.com Git - mirror_qemu.git/blame - qmp-commands.hx
block: Accept node-name for blockdev-snapshot-internal-sync
[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)
99a9addf
SH
1238- "device": the name of the device which should be copied.
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)
d9b902db
PB
1692- "device": device name to operate on (json-string)
1693- "target": name of new image file (json-string)
1694- "format": format of new image (json-string, optional)
4c828dc6
BC
1695- "node-name": the name of the new block driver state in the node graph
1696 (json-string, optional)
09158f00
BC
1697- "replaces": the block driver node name to replace when finished
1698 (json-string, optional)
d9b902db
PB
1699- "mode": how an image file should be created into the target
1700 file/device (NewImageMode, optional, default 'absolute-paths')
1701- "speed": maximum speed of the streaming job, in bytes per second
1702 (json-int)
eee13dfe 1703- "granularity": granularity of the dirty bitmap, in bytes (json-int, optional)
df92562e 1704- "buf-size": maximum amount of data in flight from source to target, in bytes
08e4ed6c 1705 (json-int, default 10M)
d9b902db
PB
1706- "sync": what parts of the disk image should be copied to the destination;
1707 possibilities include "full" for all the disk, "top" for only the sectors
1708 allocated in the topmost image, or "none" to only replicate new I/O
1709 (MirrorSyncMode).
b952b558
PB
1710- "on-source-error": the action to take on an error on the source
1711 (BlockdevOnError, default 'report')
1712- "on-target-error": the action to take on an error on the target
1713 (BlockdevOnError, default 'report')
0fc9f8ea
FZ
1714- "unmap": whether the target sectors should be discarded where source has only
1715 zeroes. (json-bool, optional, default true)
b952b558 1716
eee13dfe
PB
1717The default value of the granularity is the image cluster size clamped
1718between 4096 and 65536, if the image format defines one. If the format
1719does not define a cluster size, the default value of the granularity
1720is 65536.
d9b902db
PB
1721
1722
1723Example:
1724
1725-> { "execute": "drive-mirror", "arguments": { "device": "ide-hd0",
1726 "target": "/some/place/my-image",
1727 "sync": "full",
1728 "format": "qcow2" } }
1729<- { "return": {} }
1730
fa40e656
JC
1731EQMP
1732
df92562e
FZ
1733 {
1734 .name = "blockdev-mirror",
71aa9867 1735 .args_type = "job-id:s?,sync:s,device:B,target:B,replaces:s?,speed:i?,"
df92562e
FZ
1736 "on-source-error:s?,on-target-error:s?,"
1737 "granularity:i?,buf-size:i?",
1738 .mhandler.cmd_new = qmp_marshal_blockdev_mirror,
1739 },
1740
1741SQMP
1742blockdev-mirror
1743------------
1744
1745Start mirroring a block device's writes to another block device. target
1746specifies the target of mirror operation.
1747
1748Arguments:
1749
71aa9867
AG
1750- "job-id": Identifier for the newly-created block job. If omitted,
1751 the device name will be used. (json-string, optional)
07eec652
KW
1752- "device": The device name or node-name of a root node whose writes should be
1753 mirrored (json-string)
df92562e
FZ
1754- "target": device name to mirror to (json-string)
1755- "replaces": the block driver node name to replace when finished
1756 (json-string, optional)
1757- "speed": maximum speed of the streaming job, in bytes per second
1758 (json-int)
1759- "granularity": granularity of the dirty bitmap, in bytes (json-int, optional)
1760- "buf_size": maximum amount of data in flight from source to target, in bytes
1761 (json-int, default 10M)
1762- "sync": what parts of the disk image should be copied to the destination;
1763 possibilities include "full" for all the disk, "top" for only the sectors
1764 allocated in the topmost image, or "none" to only replicate new I/O
1765 (MirrorSyncMode).
1766- "on-source-error": the action to take on an error on the source
1767 (BlockdevOnError, default 'report')
1768- "on-target-error": the action to take on an error on the target
1769 (BlockdevOnError, default 'report')
1770
1771The default value of the granularity is the image cluster size clamped
1772between 4096 and 65536, if the image format defines one. If the format
1773does not define a cluster size, the default value of the granularity
1774is 65536.
1775
1776Example:
1777
1778-> { "execute": "blockdev-mirror", "arguments": { "device": "ide-hd0",
1779 "target": "target0",
1780 "sync": "full" } }
1781<- { "return": {} }
1782
1783EQMP
fa40e656
JC
1784 {
1785 .name = "change-backing-file",
1786 .args_type = "device:s,image-node-name:s,backing-file:s",
7fad30f0 1787 .mhandler.cmd_new = qmp_marshal_change_backing_file,
fa40e656
JC
1788 },
1789
1790SQMP
1791change-backing-file
1792-------------------
1793Since: 2.1
1794
1795Change the backing file in the image file metadata. This does not cause
1796QEMU to reopen the image file to reparse the backing filename (it may,
1797however, perform a reopen to change permissions from r/o -> r/w -> r/o,
1798if needed). The new backing file string is written into the image file
1799metadata, and the QEMU internal strings are updated.
1800
1801Arguments:
1802
1803- "image-node-name": The name of the block driver state node of the
1804 image to modify. The "device" is argument is used to
1805 verify "image-node-name" is in the chain described by
1806 "device".
1807 (json-string, optional)
1808
1809- "device": The name of the device.
1810 (json-string)
1811
1812- "backing-file": The string to write as the backing file. This string is
1813 not validated, so care should be taken when specifying
1814 the string or the image chain may not be able to be
1815 reopened again.
1816 (json-string)
1817
1818Returns: Nothing on success
1819 If "device" does not exist or cannot be determined, DeviceNotFound
1820
82a56f0d
LC
1821EQMP
1822
1823 {
1824 .name = "balloon",
1825 .args_type = "value:M",
7fad30f0 1826 .mhandler.cmd_new = qmp_marshal_balloon,
82a56f0d
LC
1827 },
1828
1829SQMP
1830balloon
1831-------
1832
1833Request VM to change its memory allocation (in bytes).
1834
1835Arguments:
1836
1837- "value": New memory allocation (json-int)
1838
1839Example:
1840
1841-> { "execute": "balloon", "arguments": { "value": 536870912 } }
1842<- { "return": {} }
1843
1844EQMP
1845
1846 {
1847 .name = "set_link",
1848 .args_type = "name:s,up:b",
7fad30f0 1849 .mhandler.cmd_new = qmp_marshal_set_link,
82a56f0d
LC
1850 },
1851
1852SQMP
1853set_link
1854--------
1855
1856Change the link status of a network adapter.
1857
1858Arguments:
1859
1860- "name": network device name (json-string)
1861- "up": status is up (json-bool)
1862
1863Example:
1864
1865-> { "execute": "set_link", "arguments": { "name": "e1000.0", "up": false } }
1866<- { "return": {} }
1867
1868EQMP
1869
1870 {
1871 .name = "getfd",
1872 .args_type = "fdname:s",
1873 .params = "getfd name",
1874 .help = "receive a file descriptor via SCM rights and assign it a name",
7fad30f0 1875 .mhandler.cmd_new = qmp_marshal_getfd,
82a56f0d
LC
1876 },
1877
1878SQMP
1879getfd
1880-----
1881
1882Receive a file descriptor via SCM rights and assign it a name.
1883
1884Arguments:
1885
1886- "fdname": file descriptor name (json-string)
1887
1888Example:
1889
1890-> { "execute": "getfd", "arguments": { "fdname": "fd1" } }
1891<- { "return": {} }
1892
208c9d1b
CB
1893Notes:
1894
1895(1) If the name specified by the "fdname" argument already exists,
1896 the file descriptor assigned to it will be closed and replaced
1897 by the received file descriptor.
1898(2) The 'closefd' command can be used to explicitly close the file
1899 descriptor when it is no longer needed.
1900
82a56f0d
LC
1901EQMP
1902
1903 {
1904 .name = "closefd",
1905 .args_type = "fdname:s",
1906 .params = "closefd name",
1907 .help = "close a file descriptor previously passed via SCM rights",
7fad30f0 1908 .mhandler.cmd_new = qmp_marshal_closefd,
82a56f0d
LC
1909 },
1910
1911SQMP
1912closefd
1913-------
1914
1915Close a file descriptor previously passed via SCM rights.
1916
1917Arguments:
1918
1919- "fdname": file descriptor name (json-string)
1920
1921Example:
1922
1923-> { "execute": "closefd", "arguments": { "fdname": "fd1" } }
1924<- { "return": {} }
1925
ba1c048a
CB
1926EQMP
1927
1928 {
1929 .name = "add-fd",
1930 .args_type = "fdset-id:i?,opaque:s?",
1931 .params = "add-fd fdset-id opaque",
1932 .help = "Add a file descriptor, that was passed via SCM rights, to an fd set",
7fad30f0 1933 .mhandler.cmd_new = qmp_marshal_add_fd,
ba1c048a
CB
1934 },
1935
1936SQMP
1937add-fd
1938-------
1939
1940Add a file descriptor, that was passed via SCM rights, to an fd set.
1941
1942Arguments:
1943
1944- "fdset-id": The ID of the fd set to add the file descriptor to.
1945 (json-int, optional)
1946- "opaque": A free-form string that can be used to describe the fd.
1947 (json-string, optional)
1948
1949Return a json-object with the following information:
1950
1951- "fdset-id": The ID of the fd set that the fd was added to. (json-int)
1952- "fd": The file descriptor that was received via SCM rights and added to the
1953 fd set. (json-int)
1954
1955Example:
1956
1957-> { "execute": "add-fd", "arguments": { "fdset-id": 1 } }
1958<- { "return": { "fdset-id": 1, "fd": 3 } }
1959
1960Notes:
1961
1962(1) The list of fd sets is shared by all monitor connections.
1963(2) If "fdset-id" is not specified, a new fd set will be created.
1964
1965EQMP
1966
1967 {
1968 .name = "remove-fd",
1969 .args_type = "fdset-id:i,fd:i?",
1970 .params = "remove-fd fdset-id fd",
1971 .help = "Remove a file descriptor from an fd set",
7fad30f0 1972 .mhandler.cmd_new = qmp_marshal_remove_fd,
ba1c048a
CB
1973 },
1974
1975SQMP
1976remove-fd
1977---------
1978
1979Remove a file descriptor from an fd set.
1980
1981Arguments:
1982
1983- "fdset-id": The ID of the fd set that the file descriptor belongs to.
1984 (json-int)
1985- "fd": The file descriptor that is to be removed. (json-int, optional)
1986
1987Example:
1988
1989-> { "execute": "remove-fd", "arguments": { "fdset-id": 1, "fd": 3 } }
1990<- { "return": {} }
1991
1992Notes:
1993
1994(1) The list of fd sets is shared by all monitor connections.
1995(2) If "fd" is not specified, all file descriptors in "fdset-id" will be
1996 removed.
1997
1998EQMP
1999
2000 {
2001 .name = "query-fdsets",
2002 .args_type = "",
2003 .help = "Return information describing all fd sets",
7fad30f0 2004 .mhandler.cmd_new = qmp_marshal_query_fdsets,
ba1c048a
CB
2005 },
2006
2007SQMP
2008query-fdsets
2009-------------
2010
2011Return information describing all fd sets.
2012
2013Arguments: None
2014
2015Example:
2016
2017-> { "execute": "query-fdsets" }
2018<- { "return": [
2019 {
2020 "fds": [
2021 {
2022 "fd": 30,
2023 "opaque": "rdonly:/path/to/file"
2024 },
2025 {
2026 "fd": 24,
2027 "opaque": "rdwr:/path/to/file"
2028 }
2029 ],
2030 "fdset-id": 1
2031 },
2032 {
2033 "fds": [
2034 {
2035 "fd": 28
2036 },
2037 {
2038 "fd": 29
2039 }
2040 ],
2041 "fdset-id": 0
2042 }
2043 ]
2044 }
2045
2046Note: The list of fd sets is shared by all monitor connections.
2047
82a56f0d
LC
2048EQMP
2049
2050 {
2051 .name = "block_passwd",
12d3ba82 2052 .args_type = "device:s?,node-name:s?,password:s",
7fad30f0 2053 .mhandler.cmd_new = qmp_marshal_block_passwd,
82a56f0d
LC
2054 },
2055
2056SQMP
2057block_passwd
2058------------
2059
2060Set the password of encrypted block devices.
2061
2062Arguments:
2063
2064- "device": device name (json-string)
12d3ba82 2065- "node-name": name in the block driver state graph (json-string)
82a56f0d
LC
2066- "password": password (json-string)
2067
2068Example:
2069
2070-> { "execute": "block_passwd", "arguments": { "device": "ide0-hd0",
2071 "password": "12345" } }
2072<- { "return": {} }
2073
727f005e
ZYW
2074EQMP
2075
2076 {
2077 .name = "block_set_io_throttle",
dce13204 2078 .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 2079 .mhandler.cmd_new = qmp_marshal_block_set_io_throttle,
727f005e
ZYW
2080 },
2081
2082SQMP
2083block_set_io_throttle
2084------------
2085
2086Change I/O throttle limits for a block drive.
2087
2088Arguments:
2089
2090- "device": device name (json-string)
586b5466
EB
2091- "bps": total throughput limit in bytes per second (json-int)
2092- "bps_rd": read throughput limit in bytes per second (json-int)
2093- "bps_wr": write throughput limit in bytes per second (json-int)
2094- "iops": total I/O operations per second (json-int)
2095- "iops_rd": read I/O operations per second (json-int)
2096- "iops_wr": write I/O operations per second (json-int)
dce13204
AG
2097- "bps_max": total throughput limit during bursts, in bytes (json-int, optional)
2098- "bps_rd_max": read throughput limit during bursts, in bytes (json-int, optional)
2099- "bps_wr_max": write throughput limit during bursts, in bytes (json-int, optional)
2100- "iops_max": total I/O operations per second during bursts (json-int, optional)
2101- "iops_rd_max": read I/O operations per second during bursts (json-int, optional)
2102- "iops_wr_max": write I/O operations per second during bursts (json-int, optional)
2103- "bps_max_length": maximum length of the @bps_max burst period, in seconds (json-int, optional)
2104- "bps_rd_max_length": maximum length of the @bps_rd_max burst period, in seconds (json-int, optional)
2105- "bps_wr_max_length": maximum length of the @bps_wr_max burst period, in seconds (json-int, optional)
2106- "iops_max_length": maximum length of the @iops_max burst period, in seconds (json-int, optional)
2107- "iops_rd_max_length": maximum length of the @iops_rd_max burst period, in seconds (json-int, optional)
2108- "iops_wr_max_length": maximum length of the @iops_wr_max burst period, in seconds (json-int, optional)
2109- "iops_size": I/O size in bytes when limiting (json-int, optional)
2110- "group": throttle group name (json-string, optional)
727f005e
ZYW
2111
2112Example:
2113
2114-> { "execute": "block_set_io_throttle", "arguments": { "device": "virtio0",
586b5466
EB
2115 "bps": 1000000,
2116 "bps_rd": 0,
2117 "bps_wr": 0,
2118 "iops": 0,
2119 "iops_rd": 0,
3e9fab69
BC
2120 "iops_wr": 0,
2121 "bps_max": 8000000,
2122 "bps_rd_max": 0,
2123 "bps_wr_max": 0,
2124 "iops_max": 0,
2125 "iops_rd_max": 0,
2024c1df 2126 "iops_wr_max": 0,
dce13204 2127 "bps_max_length": 60,
2024c1df 2128 "iops_size": 0 } }
727f005e
ZYW
2129<- { "return": {} }
2130
7572150c
GH
2131EQMP
2132
2133 {
2134 .name = "set_password",
2135 .args_type = "protocol:s,password:s,connected:s?",
7fad30f0 2136 .mhandler.cmd_new = qmp_marshal_set_password,
7572150c
GH
2137 },
2138
2139SQMP
2140set_password
2141------------
2142
2143Set the password for vnc/spice protocols.
2144
2145Arguments:
2146
2147- "protocol": protocol name (json-string)
2148- "password": password (json-string)
3599d46b 2149- "connected": [ keep | disconnect | fail ] (json-string, optional)
7572150c
GH
2150
2151Example:
2152
2153-> { "execute": "set_password", "arguments": { "protocol": "vnc",
2154 "password": "secret" } }
2155<- { "return": {} }
2156
2157EQMP
2158
2159 {
2160 .name = "expire_password",
2161 .args_type = "protocol:s,time:s",
7fad30f0 2162 .mhandler.cmd_new = qmp_marshal_expire_password,
7572150c
GH
2163 },
2164
2165SQMP
2166expire_password
2167---------------
2168
2169Set the password expire time for vnc/spice protocols.
2170
2171Arguments:
2172
2173- "protocol": protocol name (json-string)
2174- "time": [ now | never | +secs | secs ] (json-string)
2175
2176Example:
2177
2178-> { "execute": "expire_password", "arguments": { "protocol": "vnc",
2179 "time": "+60" } }
2180<- { "return": {} }
2181
82a56f0d
LC
2182EQMP
2183
13661089
DB
2184 {
2185 .name = "add_client",
f1f5f407 2186 .args_type = "protocol:s,fdname:s,skipauth:b?,tls:b?",
7fad30f0 2187 .mhandler.cmd_new = qmp_marshal_add_client,
13661089
DB
2188 },
2189
2190SQMP
2191add_client
2192----------
2193
2194Add a graphics client
2195
2196Arguments:
2197
2198- "protocol": protocol name (json-string)
2199- "fdname": file descriptor name (json-string)
f1f5f407
DB
2200- "skipauth": whether to skip authentication (json-bool, optional)
2201- "tls": whether to perform TLS (json-bool, optional)
13661089
DB
2202
2203Example:
2204
2205-> { "execute": "add_client", "arguments": { "protocol": "vnc",
2206 "fdname": "myclient" } }
2207<- { "return": {} }
2208
2209EQMP
82a56f0d
LC
2210 {
2211 .name = "qmp_capabilities",
2212 .args_type = "",
2213 .params = "",
2214 .help = "enable QMP capabilities",
485febc6 2215 .mhandler.cmd_new = qmp_capabilities,
82a56f0d
LC
2216 },
2217
2218SQMP
2219qmp_capabilities
2220----------------
2221
2222Enable QMP capabilities.
2223
2224Arguments: None.
2225
2226Example:
2227
2228-> { "execute": "qmp_capabilities" }
2229<- { "return": {} }
2230
2231Note: This command must be issued before issuing any other command.
2232
0268d97c
LC
2233EQMP
2234
2235 {
2236 .name = "human-monitor-command",
2237 .args_type = "command-line:s,cpu-index:i?",
7fad30f0 2238 .mhandler.cmd_new = qmp_marshal_human_monitor_command,
0268d97c
LC
2239 },
2240
2241SQMP
2242human-monitor-command
2243---------------------
2244
2245Execute a Human Monitor command.
2246
2247Arguments:
2248
2249- command-line: the command name and its arguments, just like the
2250 Human Monitor's shell (json-string)
2251- cpu-index: select the CPU number to be used by commands which access CPU
2252 data, like 'info registers'. The Monitor selects CPU 0 if this
2253 argument is not provided (json-int, optional)
2254
2255Example:
2256
2257-> { "execute": "human-monitor-command", "arguments": { "command-line": "info kvm" } }
2258<- { "return": "kvm support: enabled\r\n" }
2259
2260Notes:
2261
2262(1) The Human Monitor is NOT an stable interface, this means that command
2263 names, arguments and responses can change or be removed at ANY time.
2264 Applications that rely on long term stability guarantees should NOT
2265 use this command
2266
2267(2) Limitations:
2268
2269 o This command is stateless, this means that commands that depend
2270 on state information (such as getfd) might not work
2271
2272 o Commands that prompt the user for data (eg. 'cont' when the block
2273 device is encrypted) don't currently work
2274
82a56f0d
LC
22753. Query Commands
2276=================
2277
2278HXCOMM Each query command below is inside a SQMP/EQMP section, do NOT change
2279HXCOMM this! We will possibly move query commands definitions inside those
2280HXCOMM sections, just like regular commands.
2281
2282EQMP
2283
2284SQMP
2285query-version
2286-------------
2287
2288Show QEMU version.
2289
2290Return a json-object with the following information:
2291
2292- "qemu": A json-object containing three integer values:
2293 - "major": QEMU's major version (json-int)
2294 - "minor": QEMU's minor version (json-int)
2295 - "micro": QEMU's micro version (json-int)
2296- "package": package's version (json-string)
2297
2298Example:
2299
2300-> { "execute": "query-version" }
2301<- {
2302 "return":{
2303 "qemu":{
2304 "major":0,
2305 "minor":11,
2306 "micro":5
2307 },
2308 "package":""
2309 }
2310 }
2311
2312EQMP
2313
b9c15f16
LC
2314 {
2315 .name = "query-version",
2316 .args_type = "",
7fad30f0 2317 .mhandler.cmd_new = qmp_marshal_query_version,
b9c15f16
LC
2318 },
2319
82a56f0d
LC
2320SQMP
2321query-commands
2322--------------
2323
2324List QMP available commands.
2325
2326Each command is represented by a json-object, the returned value is a json-array
2327of all commands.
2328
2329Each json-object contain:
2330
2331- "name": command's name (json-string)
2332
2333Example:
2334
2335-> { "execute": "query-commands" }
2336<- {
2337 "return":[
2338 {
2339 "name":"query-balloon"
2340 },
2341 {
2342 "name":"system_powerdown"
2343 }
2344 ]
2345 }
2346
2347Note: This example has been shortened as the real response is too long.
2348
2349EQMP
2350
aa9b79bc
LC
2351 {
2352 .name = "query-commands",
2353 .args_type = "",
7fad30f0 2354 .mhandler.cmd_new = qmp_marshal_query_commands,
aa9b79bc
LC
2355 },
2356
4860853d
DB
2357SQMP
2358query-events
2359--------------
2360
2361List QMP available events.
2362
2363Each event is represented by a json-object, the returned value is a json-array
2364of all events.
2365
2366Each json-object contains:
2367
2368- "name": event's name (json-string)
2369
2370Example:
2371
2372-> { "execute": "query-events" }
2373<- {
2374 "return":[
2375 {
2376 "name":"SHUTDOWN"
2377 },
2378 {
2379 "name":"RESET"
2380 }
2381 ]
2382 }
2383
2384Note: This example has been shortened as the real response is too long.
2385
2386EQMP
2387
2388 {
2389 .name = "query-events",
2390 .args_type = "",
7fad30f0 2391 .mhandler.cmd_new = qmp_marshal_query_events,
4860853d
DB
2392 },
2393
39a18158
MA
2394SQMP
2395query-qmp-schema
2396----------------
2397
2398Return the QMP wire schema. The returned value is a json-array of
2399named schema entities. Entities are commands, events and various
2400types. See docs/qapi-code-gen.txt for information on their structure
2401and intended use.
2402
2403EQMP
2404
2405 {
2406 .name = "query-qmp-schema",
2407 .args_type = "",
2408 .mhandler.cmd_new = qmp_query_qmp_schema,
2409 },
2410
82a56f0d
LC
2411SQMP
2412query-chardev
2413-------------
2414
2415Each device is represented by a json-object. The returned value is a json-array
2416of all devices.
2417
2418Each json-object contain the following:
2419
2420- "label": device's label (json-string)
2421- "filename": device's file (json-string)
32a97ea1
LE
2422- "frontend-open": open/closed state of the frontend device attached to this
2423 backend (json-bool)
82a56f0d
LC
2424
2425Example:
2426
2427-> { "execute": "query-chardev" }
2428<- {
32a97ea1
LE
2429 "return": [
2430 {
2431 "label": "charchannel0",
2432 "filename": "unix:/var/lib/libvirt/qemu/seabios.rhel6.agent,server",
2433 "frontend-open": false
2434 },
82a56f0d 2435 {
32a97ea1
LE
2436 "label": "charmonitor",
2437 "filename": "unix:/var/lib/libvirt/qemu/seabios.rhel6.monitor,server",
2438 "frontend-open": true
82a56f0d
LC
2439 },
2440 {
32a97ea1
LE
2441 "label": "charserial0",
2442 "filename": "pty:/dev/pts/2",
2443 "frontend-open": true
82a56f0d
LC
2444 }
2445 ]
2446 }
2447
2448EQMP
2449
c5a415a0
LC
2450 {
2451 .name = "query-chardev",
2452 .args_type = "",
7fad30f0 2453 .mhandler.cmd_new = qmp_marshal_query_chardev,
c5a415a0
LC
2454 },
2455
77d1c3c6
MK
2456SQMP
2457query-chardev-backends
2458-------------
2459
2460List available character device backends.
2461
2462Each backend is represented by a json-object, the returned value is a json-array
2463of all backends.
2464
2465Each json-object contains:
2466
2467- "name": backend name (json-string)
2468
2469Example:
2470
2471-> { "execute": "query-chardev-backends" }
2472<- {
2473 "return":[
2474 {
2475 "name":"udp"
2476 },
2477 {
2478 "name":"tcp"
2479 },
2480 {
2481 "name":"unix"
2482 },
2483 {
2484 "name":"spiceport"
2485 }
2486 ]
2487 }
2488
2489EQMP
2490
2491 {
2492 .name = "query-chardev-backends",
2493 .args_type = "",
7fad30f0 2494 .mhandler.cmd_new = qmp_marshal_query_chardev_backends,
77d1c3c6
MK
2495 },
2496
82a56f0d
LC
2497SQMP
2498query-block
2499-----------
2500
2501Show the block devices.
2502
2503Each block device information is stored in a json-object and the returned value
2504is a json-array of all devices.
2505
2506Each json-object contain the following:
2507
2508- "device": device name (json-string)
2509- "type": device type (json-string)
d8aeeb31
MA
2510 - deprecated, retained for backward compatibility
2511 - Possible values: "unknown"
82a56f0d
LC
2512- "removable": true if the device is removable, false otherwise (json-bool)
2513- "locked": true if the device is locked, false otherwise (json-bool)
99f42808 2514- "tray_open": only present if removable, true if the device has a tray,
e4def80b 2515 and it is open (json-bool)
82a56f0d
LC
2516- "inserted": only present if the device is inserted, it is a json-object
2517 containing the following:
2518 - "file": device file name (json-string)
2519 - "ro": true if read-only, false otherwise (json-bool)
2520 - "drv": driver format name (json-string)
550830f9 2521 - Possible values: "blkdebug", "bochs", "cloop", "dmg",
82a56f0d 2522 "file", "file", "ftp", "ftps", "host_cdrom",
92a539d2 2523 "host_device", "http", "https",
82a56f0d
LC
2524 "nbd", "parallels", "qcow", "qcow2", "raw",
2525 "tftp", "vdi", "vmdk", "vpc", "vvfat"
2526 - "backing_file": backing file name (json-string, optional)
2e3e3317 2527 - "backing_file_depth": number of files in the backing file chain (json-int)
82a56f0d 2528 - "encrypted": true if encrypted, false otherwise (json-bool)
727f005e
ZYW
2529 - "bps": limit total bytes per second (json-int)
2530 - "bps_rd": limit read bytes per second (json-int)
2531 - "bps_wr": limit write bytes per second (json-int)
2532 - "iops": limit total I/O operations per second (json-int)
2533 - "iops_rd": limit read operations per second (json-int)
2534 - "iops_wr": limit write operations per second (json-int)
3e9fab69
BC
2535 - "bps_max": total max in bytes (json-int)
2536 - "bps_rd_max": read max in bytes (json-int)
2537 - "bps_wr_max": write max in bytes (json-int)
2538 - "iops_max": total I/O operations max (json-int)
2539 - "iops_rd_max": read I/O operations max (json-int)
2540 - "iops_wr_max": write I/O operations max (json-int)
2024c1df 2541 - "iops_size": I/O size when limiting by iops (json-int)
465bee1d
PL
2542 - "detect_zeroes": detect and optimize zero writing (json-string)
2543 - Possible values: "off", "on", "unmap"
e2462113
FR
2544 - "write_threshold": write offset threshold in bytes, a event will be
2545 emitted if crossed. Zero if disabled (json-int)
553a7e87
WX
2546 - "image": the detail of the image, it is a json-object containing
2547 the following:
2548 - "filename": image file name (json-string)
2549 - "format": image format (json-string)
2550 - "virtual-size": image capacity in bytes (json-int)
2551 - "dirty-flag": true if image is not cleanly closed, not present
2552 means clean (json-bool, optional)
2553 - "actual-size": actual size on disk in bytes of the image, not
2554 present when image does not support thin
2555 provision (json-int, optional)
2556 - "cluster-size": size of a cluster in bytes, not present if image
2557 format does not support it (json-int, optional)
2558 - "encrypted": true if the image is encrypted, not present means
2559 false or the image format does not support
2560 encryption (json-bool, optional)
2561 - "backing_file": backing file name, not present means no backing
2562 file is used or the image format does not
2563 support backing file chain
2564 (json-string, optional)
2565 - "full-backing-filename": full path of the backing file, not
2566 present if it equals backing_file or no
2567 backing file is used
2568 (json-string, optional)
2569 - "backing-filename-format": the format of the backing file, not
2570 present means unknown or no backing
2571 file (json-string, optional)
2572 - "snapshots": the internal snapshot info, it is an optional list
2573 of json-object containing the following:
2574 - "id": unique snapshot id (json-string)
2575 - "name": snapshot name (json-string)
2576 - "vm-state-size": size of the VM state in bytes (json-int)
2577 - "date-sec": UTC date of the snapshot in seconds (json-int)
2578 - "date-nsec": fractional part in nanoseconds to be used with
586b5466 2579 date-sec (json-int)
553a7e87
WX
2580 - "vm-clock-sec": VM clock relative to boot in seconds
2581 (json-int)
2582 - "vm-clock-nsec": fractional part in nanoseconds to be used
2583 with vm-clock-sec (json-int)
2584 - "backing-image": the detail of the backing image, it is an
2585 optional json-object only present when a
2586 backing image present for this image
727f005e 2587
f04ef601
LC
2588- "io-status": I/O operation status, only present if the device supports it
2589 and the VM is configured to stop on errors. It's always reset
2590 to "ok" when the "cont" command is issued (json_string, optional)
2591 - Possible values: "ok", "failed", "nospace"
82a56f0d
LC
2592
2593Example:
2594
2595-> { "execute": "query-block" }
2596<- {
2597 "return":[
2598 {
f04ef601 2599 "io-status": "ok",
82a56f0d
LC
2600 "device":"ide0-hd0",
2601 "locked":false,
2602 "removable":false,
2603 "inserted":{
2604 "ro":false,
2605 "drv":"qcow2",
2606 "encrypted":false,
553a7e87
WX
2607 "file":"disks/test.qcow2",
2608 "backing_file_depth":1,
727f005e
ZYW
2609 "bps":1000000,
2610 "bps_rd":0,
2611 "bps_wr":0,
2612 "iops":1000000,
2613 "iops_rd":0,
2614 "iops_wr":0,
3e9fab69
BC
2615 "bps_max": 8000000,
2616 "bps_rd_max": 0,
2617 "bps_wr_max": 0,
2618 "iops_max": 0,
2619 "iops_rd_max": 0,
2620 "iops_wr_max": 0,
2024c1df 2621 "iops_size": 0,
465bee1d 2622 "detect_zeroes": "on",
e2462113 2623 "write_threshold": 0,
553a7e87
WX
2624 "image":{
2625 "filename":"disks/test.qcow2",
2626 "format":"qcow2",
2627 "virtual-size":2048000,
2628 "backing_file":"base.qcow2",
2629 "full-backing-filename":"disks/base.qcow2",
5403432f 2630 "backing-filename-format":"qcow2",
553a7e87
WX
2631 "snapshots":[
2632 {
2633 "id": "1",
2634 "name": "snapshot1",
2635 "vm-state-size": 0,
2636 "date-sec": 10000200,
2637 "date-nsec": 12,
2638 "vm-clock-sec": 206,
2639 "vm-clock-nsec": 30
2640 }
2641 ],
2642 "backing-image":{
2643 "filename":"disks/base.qcow2",
2644 "format":"qcow2",
2645 "virtual-size":2048000
2646 }
2647 }
82a56f0d 2648 },
d8aeeb31 2649 "type":"unknown"
82a56f0d
LC
2650 },
2651 {
f04ef601 2652 "io-status": "ok",
82a56f0d
LC
2653 "device":"ide1-cd0",
2654 "locked":false,
2655 "removable":true,
d8aeeb31 2656 "type":"unknown"
82a56f0d
LC
2657 },
2658 {
2659 "device":"floppy0",
2660 "locked":false,
2661 "removable":true,
d8aeeb31 2662 "type":"unknown"
82a56f0d
LC
2663 },
2664 {
2665 "device":"sd0",
2666 "locked":false,
2667 "removable":true,
d8aeeb31 2668 "type":"unknown"
82a56f0d
LC
2669 }
2670 ]
2671 }
2672
2673EQMP
2674
b2023818
LC
2675 {
2676 .name = "query-block",
2677 .args_type = "",
7fad30f0 2678 .mhandler.cmd_new = qmp_marshal_query_block,
b2023818
LC
2679 },
2680
82a56f0d
LC
2681SQMP
2682query-blockstats
2683----------------
2684
2685Show block device statistics.
2686
2687Each device statistic information is stored in a json-object and the returned
2688value is a json-array of all devices.
2689
2690Each json-object contain the following:
2691
2692- "device": device name (json-string)
2693- "stats": A json-object with the statistics information, it contains:
2694 - "rd_bytes": bytes read (json-int)
2695 - "wr_bytes": bytes written (json-int)
2696 - "rd_operations": read operations (json-int)
2697 - "wr_operations": write operations (json-int)
e8045d67 2698 - "flush_operations": cache flush operations (json-int)
c488c7f6
CH
2699 - "wr_total_time_ns": total time spend on writes in nano-seconds (json-int)
2700 - "rd_total_time_ns": total time spend on reads in nano-seconds (json-int)
2701 - "flush_total_time_ns": total time spend on cache flushes in nano-seconds (json-int)
53d8f9d8
HR
2702 - "wr_highest_offset": The offset after the greatest byte written to the
2703 BlockDriverState since it has been opened (json-int)
f4564d53
PL
2704 - "rd_merged": number of read requests that have been merged into
2705 another request (json-int)
2706 - "wr_merged": number of write requests that have been merged into
2707 another request (json-int)
cb38fffb
AG
2708 - "idle_time_ns": time since the last I/O operation, in
2709 nanoseconds. If the field is absent it means
2710 that there haven't been any operations yet
2711 (json-int, optional)
7ee12daf
AG
2712 - "failed_rd_operations": number of failed read operations
2713 (json-int)
2714 - "failed_wr_operations": number of failed write operations
2715 (json-int)
2716 - "failed_flush_operations": number of failed flush operations
2717 (json-int)
2718 - "invalid_rd_operations": number of invalid read operations
2719 (json-int)
2720 - "invalid_wr_operations": number of invalid write operations
2721 (json-int)
2722 - "invalid_flush_operations": number of invalid flush operations
2723 (json-int)
362e9299
AG
2724 - "account_invalid": whether invalid operations are included in
2725 the last access statistics (json-bool)
2726 - "account_failed": whether failed operations are included in the
2727 latency and last access statistics
2728 (json-bool)
979e9b03
AG
2729 - "timed_stats": A json-array containing statistics collected in
2730 specific intervals, with the following members:
2731 - "interval_length": interval used for calculating the
2732 statistics, in seconds (json-int)
2733 - "min_rd_latency_ns": minimum latency of read operations in
2734 the defined interval, in nanoseconds
2735 (json-int)
2736 - "min_wr_latency_ns": minimum latency of write operations in
2737 the defined interval, in nanoseconds
2738 (json-int)
2739 - "min_flush_latency_ns": minimum latency of flush operations
2740 in the defined interval, in
2741 nanoseconds (json-int)
2742 - "max_rd_latency_ns": maximum latency of read operations in
2743 the defined interval, in nanoseconds
2744 (json-int)
2745 - "max_wr_latency_ns": maximum latency of write operations in
2746 the defined interval, in nanoseconds
2747 (json-int)
2748 - "max_flush_latency_ns": maximum latency of flush operations
2749 in the defined interval, in
2750 nanoseconds (json-int)
2751 - "avg_rd_latency_ns": average latency of read operations in
2752 the defined interval, in nanoseconds
2753 (json-int)
2754 - "avg_wr_latency_ns": average latency of write operations in
2755 the defined interval, in nanoseconds
2756 (json-int)
2757 - "avg_flush_latency_ns": average latency of flush operations
2758 in the defined interval, in
2759 nanoseconds (json-int)
96e4deda
AG
2760 - "avg_rd_queue_depth": average number of pending read
2761 operations in the defined interval
2762 (json-number)
2763 - "avg_wr_queue_depth": average number of pending write
2764 operations in the defined interval
2765 (json-number).
82a56f0d
LC
2766- "parent": Contains recursively the statistics of the underlying
2767 protocol (e.g. the host file for a qcow2 image). If there is
2768 no underlying protocol, this field is omitted
2769 (json-object, optional)
2770
2771Example:
2772
2773-> { "execute": "query-blockstats" }
2774<- {
2775 "return":[
2776 {
2777 "device":"ide0-hd0",
2778 "parent":{
2779 "stats":{
2780 "wr_highest_offset":3686448128,
2781 "wr_bytes":9786368,
2782 "wr_operations":751,
2783 "rd_bytes":122567168,
2784 "rd_operations":36772
c488c7f6
CH
2785 "wr_total_times_ns":313253456
2786 "rd_total_times_ns":3465673657
2787 "flush_total_times_ns":49653
e8045d67 2788 "flush_operations":61,
f4564d53 2789 "rd_merged":0,
cb38fffb 2790 "wr_merged":0,
362e9299
AG
2791 "idle_time_ns":2953431879,
2792 "account_invalid":true,
2793 "account_failed":false
82a56f0d
LC
2794 }
2795 },
2796 "stats":{
2797 "wr_highest_offset":2821110784,
2798 "wr_bytes":9786368,
2799 "wr_operations":692,
2800 "rd_bytes":122739200,
2801 "rd_operations":36604
e8045d67 2802 "flush_operations":51,
c488c7f6
CH
2803 "wr_total_times_ns":313253456
2804 "rd_total_times_ns":3465673657
f4564d53
PL
2805 "flush_total_times_ns":49653,
2806 "rd_merged":0,
cb38fffb 2807 "wr_merged":0,
362e9299
AG
2808 "idle_time_ns":2953431879,
2809 "account_invalid":true,
2810 "account_failed":false
82a56f0d
LC
2811 }
2812 },
2813 {
2814 "device":"ide1-cd0",
2815 "stats":{
2816 "wr_highest_offset":0,
2817 "wr_bytes":0,
2818 "wr_operations":0,
2819 "rd_bytes":0,
2820 "rd_operations":0
e8045d67 2821 "flush_operations":0,
c488c7f6
CH
2822 "wr_total_times_ns":0
2823 "rd_total_times_ns":0
f4564d53
PL
2824 "flush_total_times_ns":0,
2825 "rd_merged":0,
362e9299
AG
2826 "wr_merged":0,
2827 "account_invalid":false,
2828 "account_failed":false
82a56f0d
LC
2829 }
2830 },
2831 {
2832 "device":"floppy0",
2833 "stats":{
2834 "wr_highest_offset":0,
2835 "wr_bytes":0,
2836 "wr_operations":0,
2837 "rd_bytes":0,
2838 "rd_operations":0
e8045d67 2839 "flush_operations":0,
c488c7f6
CH
2840 "wr_total_times_ns":0
2841 "rd_total_times_ns":0
f4564d53
PL
2842 "flush_total_times_ns":0,
2843 "rd_merged":0,
362e9299
AG
2844 "wr_merged":0,
2845 "account_invalid":false,
2846 "account_failed":false
82a56f0d
LC
2847 }
2848 },
2849 {
2850 "device":"sd0",
2851 "stats":{
2852 "wr_highest_offset":0,
2853 "wr_bytes":0,
2854 "wr_operations":0,
2855 "rd_bytes":0,
2856 "rd_operations":0
e8045d67 2857 "flush_operations":0,
c488c7f6
CH
2858 "wr_total_times_ns":0
2859 "rd_total_times_ns":0
f4564d53
PL
2860 "flush_total_times_ns":0,
2861 "rd_merged":0,
362e9299
AG
2862 "wr_merged":0,
2863 "account_invalid":false,
2864 "account_failed":false
82a56f0d
LC
2865 }
2866 }
2867 ]
2868 }
2869
2870EQMP
2871
f11f57e4
LC
2872 {
2873 .name = "query-blockstats",
f71eaa74 2874 .args_type = "query-nodes:b?",
7fad30f0 2875 .mhandler.cmd_new = qmp_marshal_query_blockstats,
f11f57e4
LC
2876 },
2877
82a56f0d
LC
2878SQMP
2879query-cpus
2880----------
2881
2882Show CPU information.
2883
2884Return a json-array. Each CPU is represented by a json-object, which contains:
2885
2886- "CPU": CPU index (json-int)
2887- "current": true if this is the current CPU, false otherwise (json-bool)
2888- "halted": true if the cpu is halted, false otherwise (json-bool)
58f88d4b 2889- "qom_path": path to the CPU object in the QOM tree (json-str)
86f4b687
EB
2890- "arch": architecture of the cpu, which determines what additional
2891 keys will be present (json-str)
82a56f0d
LC
2892- Current program counter. The key's name depends on the architecture:
2893 "pc": i386/x86_64 (json-int)
2894 "nip": PPC (json-int)
2895 "pc" and "npc": sparc (json-int)
2896 "PC": mips (json-int)
dc7a09cf 2897- "thread_id": ID of the underlying host thread (json-int)
82a56f0d
LC
2898
2899Example:
2900
2901-> { "execute": "query-cpus" }
2902<- {
2903 "return":[
2904 {
2905 "CPU":0,
2906 "current":true,
2907 "halted":false,
58f88d4b 2908 "qom_path":"/machine/unattached/device[0]",
86f4b687 2909 "arch":"x86",
58f88d4b 2910 "pc":3227107138,
dc7a09cf 2911 "thread_id":3134
82a56f0d
LC
2912 },
2913 {
2914 "CPU":1,
2915 "current":false,
2916 "halted":true,
58f88d4b 2917 "qom_path":"/machine/unattached/device[2]",
86f4b687 2918 "arch":"x86",
58f88d4b 2919 "pc":7108165,
dc7a09cf 2920 "thread_id":3135
82a56f0d
LC
2921 }
2922 ]
2923 }
2924
2925EQMP
2926
de0b36b6
LC
2927 {
2928 .name = "query-cpus",
2929 .args_type = "",
7fad30f0 2930 .mhandler.cmd_new = qmp_marshal_query_cpus,
de0b36b6
LC
2931 },
2932
dc3dd0d2
SH
2933SQMP
2934query-iothreads
2935---------------
2936
2937Returns a list of information about each iothread.
2938
2939Note this list excludes the QEMU main loop thread, which is not declared
2940using the -object iothread command-line option. It is always the main thread
2941of the process.
2942
2943Return a json-array. Each iothread is represented by a json-object, which contains:
2944
2945- "id": name of iothread (json-str)
2946- "thread-id": ID of the underlying host thread (json-int)
2947
2948Example:
2949
2950-> { "execute": "query-iothreads" }
2951<- {
2952 "return":[
2953 {
2954 "id":"iothread0",
2955 "thread-id":3134
2956 },
2957 {
2958 "id":"iothread1",
2959 "thread-id":3135
2960 }
2961 ]
2962 }
2963
2964EQMP
2965
2966 {
2967 .name = "query-iothreads",
2968 .args_type = "",
7fad30f0 2969 .mhandler.cmd_new = qmp_marshal_query_iothreads,
dc3dd0d2
SH
2970 },
2971
82a56f0d
LC
2972SQMP
2973query-pci
2974---------
2975
2976PCI buses and devices information.
2977
2978The returned value is a json-array of all buses. Each bus is represented by
2979a json-object, which has a key with a json-array of all PCI devices attached
2980to it. Each device is represented by a json-object.
2981
2982The bus json-object contains the following:
2983
2984- "bus": bus number (json-int)
2985- "devices": a json-array of json-objects, each json-object represents a
2986 PCI device
2987
2988The PCI device json-object contains the following:
2989
2990- "bus": identical to the parent's bus number (json-int)
2991- "slot": slot number (json-int)
2992- "function": function number (json-int)
2993- "class_info": a json-object containing:
2994 - "desc": device class description (json-string, optional)
2995 - "class": device class number (json-int)
2996- "id": a json-object containing:
2997 - "device": device ID (json-int)
2998 - "vendor": vendor ID (json-int)
2999- "irq": device's IRQ if assigned (json-int, optional)
3000- "qdev_id": qdev id string (json-string)
3001- "pci_bridge": It's a json-object, only present if this device is a
3002 PCI bridge, contains:
3003 - "bus": bus number (json-int)
3004 - "secondary": secondary bus number (json-int)
3005 - "subordinate": subordinate bus number (json-int)
3006 - "io_range": I/O memory range information, a json-object with the
3007 following members:
3008 - "base": base address, in bytes (json-int)
3009 - "limit": limit address, in bytes (json-int)
3010 - "memory_range": memory range information, a json-object with the
3011 following members:
3012 - "base": base address, in bytes (json-int)
3013 - "limit": limit address, in bytes (json-int)
3014 - "prefetchable_range": Prefetchable memory range information, a
3015 json-object with the following members:
3016 - "base": base address, in bytes (json-int)
3017 - "limit": limit address, in bytes (json-int)
3018 - "devices": a json-array of PCI devices if there's any attached, each
3019 each element is represented by a json-object, which contains
3020 the same members of the 'PCI device json-object' described
3021 above (optional)
3022- "regions": a json-array of json-objects, each json-object represents a
3023 memory region of this device
3024
3025The memory range json-object contains the following:
3026
3027- "base": base memory address (json-int)
3028- "limit": limit value (json-int)
3029
3030The region json-object can be an I/O region or a memory region, an I/O region
3031json-object contains the following:
3032
3033- "type": "io" (json-string, fixed)
3034- "bar": BAR number (json-int)
3035- "address": memory address (json-int)
3036- "size": memory size (json-int)
3037
3038A memory region json-object contains the following:
3039
3040- "type": "memory" (json-string, fixed)
3041- "bar": BAR number (json-int)
3042- "address": memory address (json-int)
3043- "size": memory size (json-int)
3044- "mem_type_64": true or false (json-bool)
3045- "prefetch": true or false (json-bool)
3046
3047Example:
3048
3049-> { "execute": "query-pci" }
3050<- {
3051 "return":[
3052 {
3053 "bus":0,
3054 "devices":[
3055 {
3056 "bus":0,
3057 "qdev_id":"",
3058 "slot":0,
3059 "class_info":{
3060 "class":1536,
3061 "desc":"Host bridge"
3062 },
3063 "id":{
3064 "device":32902,
3065 "vendor":4663
3066 },
3067 "function":0,
3068 "regions":[
3069
3070 ]
3071 },
3072 {
3073 "bus":0,
3074 "qdev_id":"",
3075 "slot":1,
3076 "class_info":{
3077 "class":1537,
3078 "desc":"ISA bridge"
3079 },
3080 "id":{
3081 "device":32902,
3082 "vendor":28672
3083 },
3084 "function":0,
3085 "regions":[
3086
3087 ]
3088 },
3089 {
3090 "bus":0,
3091 "qdev_id":"",
3092 "slot":1,
3093 "class_info":{
3094 "class":257,
3095 "desc":"IDE controller"
3096 },
3097 "id":{
3098 "device":32902,
3099 "vendor":28688
3100 },
3101 "function":1,
3102 "regions":[
3103 {
3104 "bar":4,
3105 "size":16,
3106 "address":49152,
3107 "type":"io"
3108 }
3109 ]
3110 },
3111 {
3112 "bus":0,
3113 "qdev_id":"",
3114 "slot":2,
3115 "class_info":{
3116 "class":768,
3117 "desc":"VGA controller"
3118 },
3119 "id":{
3120 "device":4115,
3121 "vendor":184
3122 },
3123 "function":0,
3124 "regions":[
3125 {
3126 "prefetch":true,
3127 "mem_type_64":false,
3128 "bar":0,
3129 "size":33554432,
3130 "address":4026531840,
3131 "type":"memory"
3132 },
3133 {
3134 "prefetch":false,
3135 "mem_type_64":false,
3136 "bar":1,
3137 "size":4096,
3138 "address":4060086272,
3139 "type":"memory"
3140 },
3141 {
3142 "prefetch":false,
3143 "mem_type_64":false,
3144 "bar":6,
3145 "size":65536,
3146 "address":-1,
3147 "type":"memory"
3148 }
3149 ]
3150 },
3151 {
3152 "bus":0,
3153 "qdev_id":"",
3154 "irq":11,
3155 "slot":4,
3156 "class_info":{
3157 "class":1280,
3158 "desc":"RAM controller"
3159 },
3160 "id":{
3161 "device":6900,
3162 "vendor":4098
3163 },
3164 "function":0,
3165 "regions":[
3166 {
3167 "bar":0,
3168 "size":32,
3169 "address":49280,
3170 "type":"io"
3171 }
3172 ]
3173 }
3174 ]
3175 }
3176 ]
3177 }
3178
3179Note: This example has been shortened as the real response is too long.
3180
3181EQMP
3182
79627472
LC
3183 {
3184 .name = "query-pci",
3185 .args_type = "",
7fad30f0 3186 .mhandler.cmd_new = qmp_marshal_query_pci,
79627472
LC
3187 },
3188
82a56f0d
LC
3189SQMP
3190query-kvm
3191---------
3192
3193Show KVM information.
3194
3195Return a json-object with the following information:
3196
3197- "enabled": true if KVM support is enabled, false otherwise (json-bool)
3198- "present": true if QEMU has KVM support, false otherwise (json-bool)
3199
3200Example:
3201
3202-> { "execute": "query-kvm" }
3203<- { "return": { "enabled": true, "present": true } }
3204
3205EQMP
3206
292a2602
LC
3207 {
3208 .name = "query-kvm",
3209 .args_type = "",
7fad30f0 3210 .mhandler.cmd_new = qmp_marshal_query_kvm,
292a2602
LC
3211 },
3212
82a56f0d
LC
3213SQMP
3214query-status
3215------------
3216
3217Return a json-object with the following information:
3218
3219- "running": true if the VM is running, or false if it is paused (json-bool)
3220- "singlestep": true if the VM is in single step mode,
3221 false otherwise (json-bool)
9e37b9dc
LC
3222- "status": one of the following values (json-string)
3223 "debug" - QEMU is running on a debugger
3224 "inmigrate" - guest is paused waiting for an incoming migration
3225 "internal-error" - An internal error that prevents further guest
3226 execution has occurred
3227 "io-error" - the last IOP has failed and the device is configured
3228 to pause on I/O errors
3229 "paused" - guest has been paused via the 'stop' command
3230 "postmigrate" - guest is paused following a successful 'migrate'
3231 "prelaunch" - QEMU was started with -S and guest has not started
3232 "finish-migrate" - guest is paused to finish the migration process
3233 "restore-vm" - guest is paused to restore VM state
3234 "running" - guest is actively running
3235 "save-vm" - guest is paused to save the VM state
3236 "shutdown" - guest is shut down (and -no-shutdown is in use)
3237 "watchdog" - the watchdog action is configured to pause and
3238 has been triggered
82a56f0d
LC
3239
3240Example:
3241
3242-> { "execute": "query-status" }
9e37b9dc 3243<- { "return": { "running": true, "singlestep": false, "status": "running" } }
82a56f0d
LC
3244
3245EQMP
1fa9a5e4
LC
3246
3247 {
3248 .name = "query-status",
3249 .args_type = "",
7fad30f0 3250 .mhandler.cmd_new = qmp_marshal_query_status,
1fa9a5e4 3251 },
82a56f0d
LC
3252
3253SQMP
3254query-mice
3255----------
3256
3257Show VM mice information.
3258
3259Each mouse is represented by a json-object, the returned value is a json-array
3260of all mice.
3261
3262The mouse json-object contains the following:
3263
3264- "name": mouse's name (json-string)
3265- "index": mouse's index (json-int)
3266- "current": true if this mouse is receiving events, false otherwise (json-bool)
3267- "absolute": true if the mouse generates absolute input events (json-bool)
3268
3269Example:
3270
3271-> { "execute": "query-mice" }
3272<- {
3273 "return":[
3274 {
3275 "name":"QEMU Microsoft Mouse",
3276 "index":0,
3277 "current":false,
3278 "absolute":false
3279 },
3280 {
3281 "name":"QEMU PS/2 Mouse",
3282 "index":1,
3283 "current":true,
3284 "absolute":true
3285 }
3286 ]
3287 }
3288
3289EQMP
3290
e235cec3
LC
3291 {
3292 .name = "query-mice",
3293 .args_type = "",
7fad30f0 3294 .mhandler.cmd_new = qmp_marshal_query_mice,
e235cec3
LC
3295 },
3296
82a56f0d
LC
3297SQMP
3298query-vnc
3299---------
3300
3301Show VNC server information.
3302
3303Return a json-object with server information. Connected clients are returned
3304as a json-array of json-objects.
3305
3306The main json-object contains the following:
3307
3308- "enabled": true or false (json-bool)
3309- "host": server's IP address (json-string)
3310- "family": address family (json-string)
3311 - Possible values: "ipv4", "ipv6", "unix", "unknown"
3312- "service": server's port number (json-string)
3313- "auth": authentication method (json-string)
3314 - Possible values: "invalid", "none", "ra2", "ra2ne", "sasl", "tight",
3315 "tls", "ultra", "unknown", "vencrypt", "vencrypt",
3316 "vencrypt+plain", "vencrypt+tls+none",
3317 "vencrypt+tls+plain", "vencrypt+tls+sasl",
3318 "vencrypt+tls+vnc", "vencrypt+x509+none",
3319 "vencrypt+x509+plain", "vencrypt+x509+sasl",
3320 "vencrypt+x509+vnc", "vnc"
3321- "clients": a json-array of all connected clients
3322
3323Clients are described by a json-object, each one contain the following:
3324
3325- "host": client's IP address (json-string)
3326- "family": address family (json-string)
3327 - Possible values: "ipv4", "ipv6", "unix", "unknown"
3328- "service": client's port number (json-string)
3329- "x509_dname": TLS dname (json-string, optional)
3330- "sasl_username": SASL username (json-string, optional)
3331
3332Example:
3333
3334-> { "execute": "query-vnc" }
3335<- {
3336 "return":{
3337 "enabled":true,
3338 "host":"0.0.0.0",
3339 "service":"50402",
3340 "auth":"vnc",
3341 "family":"ipv4",
3342 "clients":[
3343 {
3344 "host":"127.0.0.1",
3345 "service":"50401",
3346 "family":"ipv4"
3347 }
3348 ]
3349 }
3350 }
3351
3352EQMP
3353
2b54aa87
LC
3354 {
3355 .name = "query-vnc",
3356 .args_type = "",
7fad30f0 3357 .mhandler.cmd_new = qmp_marshal_query_vnc,
2b54aa87 3358 },
df887684
GH
3359 {
3360 .name = "query-vnc-servers",
3361 .args_type = "",
7fad30f0 3362 .mhandler.cmd_new = qmp_marshal_query_vnc_servers,
df887684 3363 },
2b54aa87 3364
cb42a870
GH
3365SQMP
3366query-spice
3367-----------
3368
3369Show SPICE server information.
3370
3371Return a json-object with server information. Connected clients are returned
3372as a json-array of json-objects.
3373
3374The main json-object contains the following:
3375
3376- "enabled": true or false (json-bool)
3377- "host": server's IP address (json-string)
3378- "port": server's port number (json-int, optional)
3379- "tls-port": server's port number (json-int, optional)
3380- "auth": authentication method (json-string)
3381 - Possible values: "none", "spice"
3382- "channels": a json-array of all active channels clients
3383
3384Channels are described by a json-object, each one contain the following:
3385
3386- "host": client's IP address (json-string)
3387- "family": address family (json-string)
3388 - Possible values: "ipv4", "ipv6", "unix", "unknown"
3389- "port": client's port number (json-string)
3390- "connection-id": spice connection id. All channels with the same id
3391 belong to the same spice session (json-int)
3392- "channel-type": channel type. "1" is the main control channel, filter for
3393 this one if you want track spice sessions only (json-int)
3394- "channel-id": channel id. Usually "0", might be different needed when
3395 multiple channels of the same type exist, such as multiple
3396 display channels in a multihead setup (json-int)
3599d46b 3397- "tls": whether the channel is encrypted (json-bool)
cb42a870
GH
3398
3399Example:
3400
3401-> { "execute": "query-spice" }
3402<- {
3403 "return": {
3404 "enabled": true,
3405 "auth": "spice",
3406 "port": 5920,
3407 "tls-port": 5921,
3408 "host": "0.0.0.0",
3409 "channels": [
3410 {
3411 "port": "54924",
3412 "family": "ipv4",
3413 "channel-type": 1,
3414 "connection-id": 1804289383,
3415 "host": "127.0.0.1",
3416 "channel-id": 0,
3417 "tls": true
3418 },
3419 {
3420 "port": "36710",
3421 "family": "ipv4",
3422 "channel-type": 4,
3423 "connection-id": 1804289383,
3424 "host": "127.0.0.1",
3425 "channel-id": 0,
3426 "tls": false
3427 },
3428 [ ... more channels follow ... ]
3429 ]
3430 }
3431 }
3432
3433EQMP
3434
d1f29646
LC
3435#if defined(CONFIG_SPICE)
3436 {
3437 .name = "query-spice",
3438 .args_type = "",
7fad30f0 3439 .mhandler.cmd_new = qmp_marshal_query_spice,
d1f29646
LC
3440 },
3441#endif
3442
82a56f0d
LC
3443SQMP
3444query-name
3445----------
3446
3447Show VM name.
3448
3449Return a json-object with the following information:
3450
3451- "name": VM's name (json-string, optional)
3452
3453Example:
3454
3455-> { "execute": "query-name" }
3456<- { "return": { "name": "qemu-name" } }
3457
3458EQMP
3459
48a32bed
AL
3460 {
3461 .name = "query-name",
3462 .args_type = "",
7fad30f0 3463 .mhandler.cmd_new = qmp_marshal_query_name,
48a32bed
AL
3464 },
3465
82a56f0d
LC
3466SQMP
3467query-uuid
3468----------
3469
3470Show VM UUID.
3471
3472Return a json-object with the following information:
3473
3474- "UUID": Universally Unique Identifier (json-string)
3475
3476Example:
3477
3478-> { "execute": "query-uuid" }
3479<- { "return": { "UUID": "550e8400-e29b-41d4-a716-446655440000" } }
3480
3481EQMP
3482
efab767e
LC
3483 {
3484 .name = "query-uuid",
3485 .args_type = "",
7fad30f0 3486 .mhandler.cmd_new = qmp_marshal_query_uuid,
efab767e
LC
3487 },
3488
1f8f987d
AK
3489SQMP
3490query-command-line-options
3491--------------------------
3492
3493Show command line option schema.
3494
3495Return a json-array of command line option schema for all options (or for
3496the given option), returning an error if the given option doesn't exist.
3497
3498Each array entry contains the following:
3499
3500- "option": option name (json-string)
3501- "parameters": a json-array describes all parameters of the option:
3502 - "name": parameter name (json-string)
3503 - "type": parameter type (one of 'string', 'boolean', 'number',
3504 or 'size')
3505 - "help": human readable description of the parameter
3506 (json-string, optional)
e36af94f
CL
3507 - "default": default value string for the parameter
3508 (json-string, optional)
1f8f987d
AK
3509
3510Example:
3511
3512-> { "execute": "query-command-line-options", "arguments": { "option": "option-rom" } }
3513<- { "return": [
3514 {
3515 "parameters": [
3516 {
3517 "name": "romfile",
3518 "type": "string"
3519 },
3520 {
3521 "name": "bootindex",
3522 "type": "number"
3523 }
3524 ],
3525 "option": "option-rom"
3526 }
3527 ]
3528 }
3529
3530EQMP
3531
3532 {
3533 .name = "query-command-line-options",
3534 .args_type = "option:s?",
7fad30f0 3535 .mhandler.cmd_new = qmp_marshal_query_command_line_options,
1f8f987d
AK
3536 },
3537
82a56f0d
LC
3538SQMP
3539query-migrate
3540-------------
3541
3542Migration status.
3543
3544Return a json-object. If migration is active there will be another json-object
3545with RAM migration status and if block migration is active another one with
3546block migration status.
3547
3548The main json-object contains the following:
3549
3550- "status": migration status (json-string)
3b695950 3551 - Possible values: "setup", "active", "completed", "failed", "cancelled"
7aa939af
JQ
3552- "total-time": total amount of ms since migration started. If
3553 migration has ended, it returns the total migration
817c6045 3554 time (json-int)
8f3067bd
MH
3555- "setup-time" amount of setup time in milliseconds _before_ the
3556 iterations begin but _after_ the QMP command is issued.
3557 This is designed to provide an accounting of any activities
3558 (such as RDMA pinning) which may be expensive, but do not
3559 actually occur during the iterative migration rounds
3560 themselves. (json-int)
9c5a9fcf
JQ
3561- "downtime": only present when migration has finished correctly
3562 total amount in ms for downtime that happened (json-int)
2c52ddf1
JQ
3563- "expected-downtime": only present while migration is active
3564 total amount in ms for downtime that was calculated on
817c6045 3565 the last bitmap round (json-int)
82a56f0d 3566- "ram": only present if "status" is "active", it is a json-object with the
817c6045
JQ
3567 following RAM information:
3568 - "transferred": amount transferred in bytes (json-int)
3569 - "remaining": amount remaining to transfer in bytes (json-int)
3570 - "total": total amount of memory in bytes (json-int)
3571 - "duplicate": number of pages filled entirely with the same
3572 byte (json-int)
3573 These are sent over the wire much more efficiently.
f1c72795 3574 - "skipped": number of skipped zero pages (json-int)
805a2505 3575 - "normal" : number of whole pages transferred. I.e. they
817c6045
JQ
3576 were not sent as duplicate or xbzrle pages (json-int)
3577 - "normal-bytes" : number of bytes transferred in whole
3578 pages. This is just normal pages times size of one page,
3579 but this way upper levels don't need to care about page
3580 size (json-int)
58570ed8 3581 - "dirty-sync-count": times that dirty ram was synchronized (json-int)
82a56f0d 3582- "disk": only present if "status" is "active" and it is a block migration,
817c6045
JQ
3583 it is a json-object with the following disk information:
3584 - "transferred": amount transferred in bytes (json-int)
3585 - "remaining": amount remaining to transfer in bytes json-int)
3586 - "total": total disk size in bytes (json-int)
f36d55af
OW
3587- "xbzrle-cache": only present if XBZRLE is active.
3588 It is a json-object with the following XBZRLE information:
817c6045
JQ
3589 - "cache-size": XBZRLE cache size in bytes
3590 - "bytes": number of bytes transferred for XBZRLE compressed pages
f36d55af 3591 - "pages": number of XBZRLE compressed pages
817c6045 3592 - "cache-miss": number of XBRZRLE page cache misses
8bc39233 3593 - "cache-miss-rate": rate of XBRZRLE page cache misses
817c6045
JQ
3594 - "overflow": number of times XBZRLE overflows. This means
3595 that the XBZRLE encoding was bigger than just sent the
3596 whole page, and then we sent the whole page instead (as as
3597 normal page).
3598
82a56f0d
LC
3599Examples:
3600
36011. Before the first migration
3602
3603-> { "execute": "query-migrate" }
3604<- { "return": {} }
3605
36062. Migration is done and has succeeded
3607
3608-> { "execute": "query-migrate" }
004d4c10
OW
3609<- { "return": {
3610 "status": "completed",
3611 "ram":{
3612 "transferred":123,
3613 "remaining":123,
3614 "total":246,
3615 "total-time":12345,
8f3067bd 3616 "setup-time":12345,
9c5a9fcf 3617 "downtime":12345,
004d4c10
OW
3618 "duplicate":123,
3619 "normal":123,
58570ed8
C
3620 "normal-bytes":123456,
3621 "dirty-sync-count":15
004d4c10
OW
3622 }
3623 }
3624 }
82a56f0d
LC
3625
36263. Migration is done and has failed
3627
3628-> { "execute": "query-migrate" }
3629<- { "return": { "status": "failed" } }
3630
36314. Migration is being performed and is not a block migration:
3632
3633-> { "execute": "query-migrate" }
3634<- {
3635 "return":{
3636 "status":"active",
3637 "ram":{
3638 "transferred":123,
3639 "remaining":123,
62d4e3fe 3640 "total":246,
004d4c10 3641 "total-time":12345,
8f3067bd 3642 "setup-time":12345,
2c52ddf1 3643 "expected-downtime":12345,
004d4c10
OW
3644 "duplicate":123,
3645 "normal":123,
58570ed8
C
3646 "normal-bytes":123456,
3647 "dirty-sync-count":15
82a56f0d
LC
3648 }
3649 }
3650 }
3651
36525. Migration is being performed and is a block migration:
3653
3654-> { "execute": "query-migrate" }
3655<- {
3656 "return":{
3657 "status":"active",
3658 "ram":{
3659 "total":1057024,
3660 "remaining":1053304,
62d4e3fe 3661 "transferred":3720,
004d4c10 3662 "total-time":12345,
8f3067bd 3663 "setup-time":12345,
2c52ddf1 3664 "expected-downtime":12345,
004d4c10
OW
3665 "duplicate":123,
3666 "normal":123,
58570ed8
C
3667 "normal-bytes":123456,
3668 "dirty-sync-count":15
82a56f0d
LC
3669 },
3670 "disk":{
3671 "total":20971520,
3672 "remaining":20880384,
3673 "transferred":91136
3674 }
3675 }
3676 }
3677
f36d55af
OW
36786. Migration is being performed and XBZRLE is active:
3679
3680-> { "execute": "query-migrate" }
3681<- {
3682 "return":{
3683 "status":"active",
3684 "capabilities" : [ { "capability": "xbzrle", "state" : true } ],
3685 "ram":{
3686 "total":1057024,
3687 "remaining":1053304,
3688 "transferred":3720,
3689 "total-time":12345,
8f3067bd 3690 "setup-time":12345,
2c52ddf1 3691 "expected-downtime":12345,
f36d55af
OW
3692 "duplicate":10,
3693 "normal":3333,
58570ed8
C
3694 "normal-bytes":3412992,
3695 "dirty-sync-count":15
f36d55af
OW
3696 },
3697 "xbzrle-cache":{
3698 "cache-size":67108864,
3699 "bytes":20971520,
3700 "pages":2444343,
3701 "cache-miss":2244,
8bc39233 3702 "cache-miss-rate":0.123,
f36d55af
OW
3703 "overflow":34434
3704 }
3705 }
3706 }
3707
82a56f0d
LC
3708EQMP
3709
791e7c82
LC
3710 {
3711 .name = "query-migrate",
3712 .args_type = "",
7fad30f0 3713 .mhandler.cmd_new = qmp_marshal_query_migrate,
791e7c82
LC
3714 },
3715
bbf6da32 3716SQMP
00458433 3717migrate-set-capabilities
817c6045 3718------------------------
00458433
OW
3719
3720Enable/Disable migration capabilities
3721
817c6045 3722- "xbzrle": XBZRLE support
d6d69731
HZ
3723- "rdma-pin-all": pin all pages when using RDMA during migration
3724- "auto-converge": throttle down guest to help convergence of migration
3725- "zero-blocks": compress zero blocks during block migration
164f59e8 3726- "compress": use multiple compression threads to accelerate live migration
72e72e1a 3727- "events": generate events for each migration state change
32c3db5b 3728- "postcopy-ram": postcopy mode for live migration
00458433
OW
3729
3730Arguments:
3731
3732Example:
3733
3734-> { "execute": "migrate-set-capabilities" , "arguments":
3735 { "capabilities": [ { "capability": "xbzrle", "state": true } ] } }
3736
3737EQMP
3738
3739 {
3740 .name = "migrate-set-capabilities",
43d0a2c1 3741 .args_type = "capabilities:q",
00458433 3742 .params = "capability:s,state:b",
7fad30f0 3743 .mhandler.cmd_new = qmp_marshal_migrate_set_capabilities,
00458433
OW
3744 },
3745SQMP
bbf6da32 3746query-migrate-capabilities
817c6045 3747--------------------------
bbf6da32
OW
3748
3749Query current migration capabilities
3750
3751- "capabilities": migration capabilities state
3752 - "xbzrle" : XBZRLE state (json-bool)
d6d69731
HZ
3753 - "rdma-pin-all" : RDMA Pin Page state (json-bool)
3754 - "auto-converge" : Auto Converge state (json-bool)
3755 - "zero-blocks" : Zero Blocks state (json-bool)
164f59e8
HZ
3756 - "compress": Multiple compression threads state (json-bool)
3757 - "events": Migration state change event state (json-bool)
32c3db5b 3758 - "postcopy-ram": postcopy ram state (json-bool)
bbf6da32
OW
3759
3760Arguments:
3761
3762Example:
3763
3764-> { "execute": "query-migrate-capabilities" }
164f59e8
HZ
3765<- {"return": [
3766 {"state": false, "capability": "xbzrle"},
3767 {"state": false, "capability": "rdma-pin-all"},
3768 {"state": false, "capability": "auto-converge"},
3769 {"state": false, "capability": "zero-blocks"},
3770 {"state": false, "capability": "compress"},
3771 {"state": true, "capability": "events"},
32c3db5b 3772 {"state": false, "capability": "postcopy-ram"}
164f59e8 3773 ]}
dbca1b37 3774
bbf6da32
OW
3775EQMP
3776
3777 {
3778 .name = "query-migrate-capabilities",
3779 .args_type = "",
7fad30f0 3780 .mhandler.cmd_new = qmp_marshal_query_migrate_capabilities,
bbf6da32
OW
3781 },
3782
85de8323
LL
3783SQMP
3784migrate-set-parameters
3785----------------------
3786
3787Set migration parameters
3788
3789- "compress-level": set compression level during migration (json-int)
3790- "compress-threads": set compression thread count for migration (json-int)
3791- "decompress-threads": set decompression thread count for migration (json-int)
d85a31d1
JH
3792- "cpu-throttle-initial": set initial percentage of time guest cpus are
3793 throttled for auto-converge (json-int)
3794- "cpu-throttle-increment": set throttle increasing percentage for
3795 auto-converge (json-int)
85de8323
LL
3796
3797Arguments:
3798
3799Example:
3800
3801-> { "execute": "migrate-set-parameters" , "arguments":
3802 { "compress-level": 1 } }
3803
3804EQMP
3805
3806 {
3807 .name = "migrate-set-parameters",
3808 .args_type =
d85a31d1 3809 "compress-level:i?,compress-threads:i?,decompress-threads:i?,cpu-throttle-initial:i?,cpu-throttle-increment:i?",
7fad30f0 3810 .mhandler.cmd_new = qmp_marshal_migrate_set_parameters,
85de8323
LL
3811 },
3812SQMP
3813query-migrate-parameters
3814------------------------
3815
3816Query current migration parameters
3817
3818- "parameters": migration parameters value
3819 - "compress-level" : compression level value (json-int)
3820 - "compress-threads" : compression thread count value (json-int)
3821 - "decompress-threads" : decompression thread count value (json-int)
d85a31d1
JH
3822 - "cpu-throttle-initial" : initial percentage of time guest cpus are
3823 throttled (json-int)
3824 - "cpu-throttle-increment" : throttle increasing percentage for
3825 auto-converge (json-int)
85de8323
LL
3826
3827Arguments:
3828
3829Example:
3830
3831-> { "execute": "query-migrate-parameters" }
3832<- {
3833 "return": {
9c994a97 3834 "decompress-threads": 2,
d85a31d1 3835 "cpu-throttle-increment": 10,
9c994a97
HZ
3836 "compress-threads": 8,
3837 "compress-level": 1,
d85a31d1 3838 "cpu-throttle-initial": 20
85de8323
LL
3839 }
3840 }
3841
3842EQMP
3843
3844 {
3845 .name = "query-migrate-parameters",
3846 .args_type = "",
7fad30f0 3847 .mhandler.cmd_new = qmp_marshal_query_migrate_parameters,
85de8323
LL
3848 },
3849
82a56f0d
LC
3850SQMP
3851query-balloon
3852-------------
3853
3854Show balloon information.
3855
3856Make an asynchronous request for balloon info. When the request completes a
3857json-object will be returned containing the following data:
3858
3859- "actual": current balloon value in bytes (json-int)
82a56f0d
LC
3860
3861Example:
3862
3863-> { "execute": "query-balloon" }
3864<- {
3865 "return":{
3866 "actual":1073741824,
82a56f0d
LC
3867 }
3868 }
3869
3870EQMP
3871
96637bcd
LC
3872 {
3873 .name = "query-balloon",
3874 .args_type = "",
7fad30f0 3875 .mhandler.cmd_new = qmp_marshal_query_balloon,
96637bcd 3876 },
b4b12c62 3877
fb5458cd
SH
3878 {
3879 .name = "query-block-jobs",
3880 .args_type = "",
7fad30f0 3881 .mhandler.cmd_new = qmp_marshal_query_block_jobs,
fb5458cd
SH
3882 },
3883
b4b12c62
AL
3884 {
3885 .name = "qom-list",
3886 .args_type = "path:s",
7fad30f0 3887 .mhandler.cmd_new = qmp_marshal_qom_list,
b4b12c62 3888 },
eb6e8ea5
AL
3889
3890 {
3891 .name = "qom-set",
b9f8978c 3892 .args_type = "path:s,property:s,value:q",
6eb3937e 3893 .mhandler.cmd_new = qmp_marshal_qom_set,
eb6e8ea5
AL
3894 },
3895
3896 {
3897 .name = "qom-get",
3898 .args_type = "path:s,property:s",
6eb3937e 3899 .mhandler.cmd_new = qmp_marshal_qom_get,
eb6e8ea5 3900 },
270b243f 3901
6dd844db
PB
3902 {
3903 .name = "nbd-server-start",
ddffee39 3904 .args_type = "addr:q,tls-creds:s?",
7fad30f0 3905 .mhandler.cmd_new = qmp_marshal_nbd_server_start,
6dd844db
PB
3906 },
3907 {
3908 .name = "nbd-server-add",
3909 .args_type = "device:B,writable:b?",
7fad30f0 3910 .mhandler.cmd_new = qmp_marshal_nbd_server_add,
6dd844db
PB
3911 },
3912 {
3913 .name = "nbd-server-stop",
3914 .args_type = "",
7fad30f0 3915 .mhandler.cmd_new = qmp_marshal_nbd_server_stop,
6dd844db
PB
3916 },
3917
270b243f
LC
3918 {
3919 .name = "change-vnc-password",
3920 .args_type = "password:s",
7fad30f0 3921 .mhandler.cmd_new = qmp_marshal_change_vnc_password,
270b243f 3922 },
5eeee3fa
AL
3923 {
3924 .name = "qom-list-types",
3925 .args_type = "implements:s?,abstract:b?",
7fad30f0 3926 .mhandler.cmd_new = qmp_marshal_qom_list_types,
5eeee3fa 3927 },
1daa31b9
AL
3928
3929 {
3930 .name = "device-list-properties",
3931 .args_type = "typename:s",
7fad30f0 3932 .mhandler.cmd_new = qmp_marshal_device_list_properties,
1daa31b9
AL
3933 },
3934
01d3c80d
AL
3935 {
3936 .name = "query-machines",
3937 .args_type = "",
7fad30f0 3938 .mhandler.cmd_new = qmp_marshal_query_machines,
01d3c80d
AL
3939 },
3940
e4e31c63
AL
3941 {
3942 .name = "query-cpu-definitions",
3943 .args_type = "",
7fad30f0 3944 .mhandler.cmd_new = qmp_marshal_query_cpu_definitions,
e4e31c63
AL
3945 },
3946
99afc91d
DB
3947 {
3948 .name = "query-target",
3949 .args_type = "",
7fad30f0 3950 .mhandler.cmd_new = qmp_marshal_query_target,
99afc91d 3951 },
f1a1a356 3952
d1a0cf73
SB
3953 {
3954 .name = "query-tpm",
3955 .args_type = "",
7fad30f0 3956 .mhandler.cmd_new = qmp_marshal_query_tpm,
d1a0cf73
SB
3957 },
3958
28c4fa32
CB
3959SQMP
3960query-tpm
3961---------
3962
3963Return information about the TPM device.
3964
3965Arguments: None
3966
3967Example:
3968
3969-> { "execute": "query-tpm" }
3970<- { "return":
3971 [
3972 { "model": "tpm-tis",
3973 "options":
3974 { "type": "passthrough",
3975 "data":
3976 { "cancel-path": "/sys/class/misc/tpm0/device/cancel",
3977 "path": "/dev/tpm0"
3978 }
3979 },
3980 "id": "tpm0"
3981 }
3982 ]
3983 }
3984
3985EQMP
3986
d1a0cf73
SB
3987 {
3988 .name = "query-tpm-models",
3989 .args_type = "",
7fad30f0 3990 .mhandler.cmd_new = qmp_marshal_query_tpm_models,
d1a0cf73
SB
3991 },
3992
28c4fa32
CB
3993SQMP
3994query-tpm-models
3995----------------
3996
3997Return a list of supported TPM models.
3998
3999Arguments: None
4000
4001Example:
4002
4003-> { "execute": "query-tpm-models" }
4004<- { "return": [ "tpm-tis" ] }
4005
4006EQMP
4007
d1a0cf73
SB
4008 {
4009 .name = "query-tpm-types",
4010 .args_type = "",
7fad30f0 4011 .mhandler.cmd_new = qmp_marshal_query_tpm_types,
d1a0cf73
SB
4012 },
4013
28c4fa32
CB
4014SQMP
4015query-tpm-types
4016---------------
4017
4018Return a list of supported TPM types.
4019
4020Arguments: None
4021
4022Example:
4023
4024-> { "execute": "query-tpm-types" }
4025<- { "return": [ "passthrough" ] }
4026
4027EQMP
4028
f1a1a356
GH
4029 {
4030 .name = "chardev-add",
4031 .args_type = "id:s,backend:q",
7fad30f0 4032 .mhandler.cmd_new = qmp_marshal_chardev_add,
f1a1a356
GH
4033 },
4034
4035SQMP
4036chardev-add
4037----------------
4038
4039Add a chardev.
4040
4041Arguments:
4042
4043- "id": the chardev's ID, must be unique (json-string)
4044- "backend": chardev backend type + parameters
4045
ffbdbe59 4046Examples:
f1a1a356
GH
4047
4048-> { "execute" : "chardev-add",
4049 "arguments" : { "id" : "foo",
4050 "backend" : { "type" : "null", "data" : {} } } }
4051<- { "return": {} }
4052
ffbdbe59
GH
4053-> { "execute" : "chardev-add",
4054 "arguments" : { "id" : "bar",
4055 "backend" : { "type" : "file",
4056 "data" : { "out" : "/tmp/bar.log" } } } }
4057<- { "return": {} }
4058
0a1a7fab
GH
4059-> { "execute" : "chardev-add",
4060 "arguments" : { "id" : "baz",
4061 "backend" : { "type" : "pty", "data" : {} } } }
4062<- { "return": { "pty" : "/dev/pty/42" } }
4063
f1a1a356
GH
4064EQMP
4065
4066 {
4067 .name = "chardev-remove",
4068 .args_type = "id:s",
7fad30f0 4069 .mhandler.cmd_new = qmp_marshal_chardev_remove,
f1a1a356
GH
4070 },
4071
4072
4073SQMP
4074chardev-remove
4075--------------
4076
4077Remove a chardev.
4078
4079Arguments:
4080
4081- "id": the chardev's ID, must exist and not be in use (json-string)
4082
4083Example:
4084
4085-> { "execute": "chardev-remove", "arguments": { "id" : "foo" } }
4086<- { "return": {} }
4087
b1be4280
AK
4088EQMP
4089 {
4090 .name = "query-rx-filter",
4091 .args_type = "name:s?",
7fad30f0 4092 .mhandler.cmd_new = qmp_marshal_query_rx_filter,
b1be4280
AK
4093 },
4094
4095SQMP
4096query-rx-filter
4097---------------
4098
4099Show rx-filter information.
4100
4101Returns a json-array of rx-filter information for all NICs (or for the
4102given NIC), returning an error if the given NIC doesn't exist, or
4103given NIC doesn't support rx-filter querying, or given net client
4104isn't a NIC.
4105
4106The query will clear the event notification flag of each NIC, then qemu
4107will start to emit event to QMP monitor.
4108
4109Each array entry contains the following:
4110
4111- "name": net client name (json-string)
4112- "promiscuous": promiscuous mode is enabled (json-bool)
4113- "multicast": multicast receive state (one of 'normal', 'none', 'all')
4114- "unicast": unicast receive state (one of 'normal', 'none', 'all')
f7bc8ef8 4115- "vlan": vlan receive state (one of 'normal', 'none', 'all') (Since 2.0)
b1be4280
AK
4116- "broadcast-allowed": allow to receive broadcast (json-bool)
4117- "multicast-overflow": multicast table is overflowed (json-bool)
4118- "unicast-overflow": unicast table is overflowed (json-bool)
4119- "main-mac": main macaddr string (json-string)
4120- "vlan-table": a json-array of active vlan id
4121- "unicast-table": a json-array of unicast macaddr string
4122- "multicast-table": a json-array of multicast macaddr string
4123
4124Example:
4125
4126-> { "execute": "query-rx-filter", "arguments": { "name": "vnet0" } }
4127<- { "return": [
4128 {
4129 "promiscuous": true,
4130 "name": "vnet0",
4131 "main-mac": "52:54:00:12:34:56",
4132 "unicast": "normal",
f7bc8ef8 4133 "vlan": "normal",
b1be4280
AK
4134 "vlan-table": [
4135 4,
4136 0
4137 ],
4138 "unicast-table": [
4139 ],
4140 "multicast": "normal",
4141 "multicast-overflow": false,
4142 "unicast-overflow": false,
4143 "multicast-table": [
4144 "01:00:5e:00:00:01",
4145 "33:33:00:00:00:01",
4146 "33:33:ff:12:34:56"
4147 ],
4148 "broadcast-allowed": false
4149 }
4150 ]
4151 }
4152
d26c9a15
KW
4153EQMP
4154
4155 {
4156 .name = "blockdev-add",
4157 .args_type = "options:q",
7fad30f0 4158 .mhandler.cmd_new = qmp_marshal_blockdev_add,
d26c9a15
KW
4159 },
4160
4161SQMP
4162blockdev-add
4163------------
4164
4165Add a block device.
4166
da2cf4e8 4167This command is still a work in progress. It doesn't support all
81b936ae
AG
4168block drivers among other things. Stay away from it unless you want
4169to help with its development.
da2cf4e8 4170
d26c9a15
KW
4171Arguments:
4172
4173- "options": block driver options
4174
4175Example (1):
4176
4177-> { "execute": "blockdev-add",
4178 "arguments": { "options" : { "driver": "qcow2",
4179 "file": { "driver": "file",
4180 "filename": "test.qcow2" } } } }
4181<- { "return": {} }
4182
4183Example (2):
4184
4185-> { "execute": "blockdev-add",
4186 "arguments": {
4187 "options": {
4188 "driver": "qcow2",
4189 "id": "my_disk",
4190 "discard": "unmap",
4191 "cache": {
4192 "direct": true,
4193 "writeback": true
4194 },
4195 "file": {
4196 "driver": "file",
4197 "filename": "/tmp/test.qcow2"
4198 },
4199 "backing": {
4200 "driver": "raw",
4201 "file": {
4202 "driver": "file",
4203 "filename": "/dev/fdset/4"
4204 }
4205 }
4206 }
4207 }
4208 }
4209
4210<- { "return": {} }
4211
81b936ae
AG
4212EQMP
4213
4214 {
4215 .name = "x-blockdev-del",
4216 .args_type = "id:s?,node-name:s?",
4217 .mhandler.cmd_new = qmp_marshal_x_blockdev_del,
4218 },
4219
4220SQMP
4221x-blockdev-del
4222------------
4223Since 2.5
4224
4225Deletes a block device thas has been added using blockdev-add.
4226The selected device can be either a block backend or a graph node.
4227
4228In the former case the backend will be destroyed, along with its
4229inserted medium if there's any. The command will fail if the backend
4230or its medium are in use.
4231
4232In the latter case the node will be destroyed. The command will fail
4233if the node is attached to a block backend or is otherwise being
4234used.
4235
4236One of "id" or "node-name" must be specified, but not both.
4237
4238This command is still a work in progress and is considered
4239experimental. Stay away from it unless you want to help with its
4240development.
4241
4242Arguments:
4243
4244- "id": Name of the block backend device to delete (json-string, optional)
4245- "node-name": Name of the graph node to delete (json-string, optional)
4246
4247Example:
4248
4249-> { "execute": "blockdev-add",
4250 "arguments": {
4251 "options": {
4252 "driver": "qcow2",
4253 "id": "drive0",
4254 "file": {
4255 "driver": "file",
4256 "filename": "test.qcow2"
4257 }
4258 }
4259 }
4260 }
4261
4262<- { "return": {} }
4263
4264-> { "execute": "x-blockdev-del",
4265 "arguments": { "id": "drive0" }
4266 }
4267<- { "return": {} }
4268
7d8a9f71
HR
4269EQMP
4270
4271 {
4272 .name = "blockdev-open-tray",
4273 .args_type = "device:s,force:b?",
4274 .mhandler.cmd_new = qmp_marshal_blockdev_open_tray,
4275 },
4276
4277SQMP
4278blockdev-open-tray
4279------------------
4280
4281Opens a block device's tray. If there is a block driver state tree inserted as a
4282medium, it will become inaccessible to the guest (but it will remain associated
4283to the block device, so closing the tray will make it accessible again).
4284
4285If the tray was already open before, this will be a no-op.
4286
4287Once the tray opens, a DEVICE_TRAY_MOVED event is emitted. There are cases in
4288which no such event will be generated, these include:
4289- if the guest has locked the tray, @force is false and the guest does not
4290 respond to the eject request
4291- if the BlockBackend denoted by @device does not have a guest device attached
4292 to it
4293- if the guest device does not have an actual tray and is empty, for instance
4294 for floppy disk drives
4295
4296Arguments:
4297
4298- "device": block device name (json-string)
4299- "force": if false (the default), an eject request will be sent to the guest if
4300 it has locked the tray (and the tray will not be opened immediately);
4301 if true, the tray will be opened regardless of whether it is locked
4302 (json-bool, optional)
4303
4304Example:
4305
4306-> { "execute": "blockdev-open-tray",
4307 "arguments": { "device": "ide1-cd0" } }
4308
4309<- { "timestamp": { "seconds": 1418751016,
4310 "microseconds": 716996 },
4311 "event": "DEVICE_TRAY_MOVED",
4312 "data": { "device": "ide1-cd0",
4313 "tray-open": true } }
4314
4315<- { "return": {} }
4316
abaaf59d
HR
4317EQMP
4318
4319 {
4320 .name = "blockdev-close-tray",
4321 .args_type = "device:s",
4322 .mhandler.cmd_new = qmp_marshal_blockdev_close_tray,
4323 },
4324
4325SQMP
4326blockdev-close-tray
4327-------------------
4328
4329Closes a block device's tray. If there is a block driver state tree associated
4330with the block device (which is currently ejected), that tree will be loaded as
4331the medium.
4332
4333If the tray was already closed before, this will be a no-op.
4334
4335Arguments:
4336
4337- "device": block device name (json-string)
4338
4339Example:
4340
4341-> { "execute": "blockdev-close-tray",
4342 "arguments": { "device": "ide1-cd0" } }
4343
4344<- { "timestamp": { "seconds": 1418751345,
4345 "microseconds": 272147 },
4346 "event": "DEVICE_TRAY_MOVED",
4347 "data": { "device": "ide1-cd0",
4348 "tray-open": false } }
4349
4350<- { "return": {} }
4351
2814f672
HR
4352EQMP
4353
4354 {
6e0abc25 4355 .name = "x-blockdev-remove-medium",
2814f672 4356 .args_type = "device:s",
6e0abc25 4357 .mhandler.cmd_new = qmp_marshal_x_blockdev_remove_medium,
2814f672
HR
4358 },
4359
4360SQMP
6e0abc25
HR
4361x-blockdev-remove-medium
4362------------------------
2814f672
HR
4363
4364Removes a medium (a block driver state tree) from a block device. That block
4365device's tray must currently be open (unless there is no attached guest device).
4366
4367If the tray is open and there is no medium inserted, this will be a no-op.
4368
6e0abc25
HR
4369This command is still a work in progress and is considered experimental.
4370Stay away from it unless you want to help with its development.
4371
2814f672
HR
4372Arguments:
4373
4374- "device": block device name (json-string)
4375
4376Example:
4377
6e0abc25 4378-> { "execute": "x-blockdev-remove-medium",
2814f672
HR
4379 "arguments": { "device": "ide1-cd0" } }
4380
4381<- { "error": { "class": "GenericError",
4382 "desc": "Tray of device 'ide1-cd0' is not open" } }
4383
4384-> { "execute": "blockdev-open-tray",
4385 "arguments": { "device": "ide1-cd0" } }
4386
4387<- { "timestamp": { "seconds": 1418751627,
4388 "microseconds": 549958 },
4389 "event": "DEVICE_TRAY_MOVED",
4390 "data": { "device": "ide1-cd0",
4391 "tray-open": true } }
4392
4393<- { "return": {} }
4394
6e0abc25 4395-> { "execute": "x-blockdev-remove-medium",
2814f672
HR
4396 "arguments": { "device": "ide1-cd0" } }
4397
4398<- { "return": {} }
4399
d1299882
HR
4400EQMP
4401
4402 {
6e0abc25 4403 .name = "x-blockdev-insert-medium",
d1299882 4404 .args_type = "device:s,node-name:s",
6e0abc25 4405 .mhandler.cmd_new = qmp_marshal_x_blockdev_insert_medium,
d1299882
HR
4406 },
4407
4408SQMP
6e0abc25
HR
4409x-blockdev-insert-medium
4410------------------------
d1299882
HR
4411
4412Inserts a medium (a block driver state tree) into a block device. That block
4413device's tray must currently be open (unless there is no attached guest device)
4414and there must be no medium inserted already.
4415
6e0abc25
HR
4416This command is still a work in progress and is considered experimental.
4417Stay away from it unless you want to help with its development.
4418
d1299882
HR
4419Arguments:
4420
4421- "device": block device name (json-string)
4422- "node-name": root node of the BDS tree to insert into the block device
4423
4424Example:
4425
4426-> { "execute": "blockdev-add",
4427 "arguments": { "options": { "node-name": "node0",
4428 "driver": "raw",
4429 "file": { "driver": "file",
4430 "filename": "fedora.iso" } } } }
4431
4432<- { "return": {} }
4433
6e0abc25 4434-> { "execute": "x-blockdev-insert-medium",
d1299882
HR
4435 "arguments": { "device": "ide1-cd0",
4436 "node-name": "node0" } }
4437
4438<- { "return": {} }
4439
7f821597
WC
4440EQMP
4441
4442 {
4443 .name = "x-blockdev-change",
4444 .args_type = "parent:B,child:B?,node:B?",
4445 .mhandler.cmd_new = qmp_marshal_x_blockdev_change,
4446 },
4447
4448SQMP
4449x-blockdev-change
4450-----------------
4451
4452Dynamically reconfigure the block driver state graph. It can be used
4453to add, remove, insert or replace a graph node. Currently only the
4454Quorum driver implements this feature to add or remove its child. This
4455is useful to fix a broken quorum child.
4456
4457If @node is specified, it will be inserted under @parent. @child
4458may not be specified in this case. If both @parent and @child are
4459specified but @node is not, @child will be detached from @parent.
4460
4461Arguments:
4462- "parent": the id or name of the parent node (json-string)
4463- "child": the name of a child under the given parent node (json-string, optional)
4464- "node": the name of the node that will be added (json-string, optional)
4465
4466Note: this command is experimental, and not a stable API. It doesn't
4467support all kinds of operations, all kinds of children, nor all block
4468drivers.
4469
4470Warning: The data in a new quorum child MUST be consistent with that of
4471the rest of the array.
4472
4473Example:
4474
4475Add a new node to a quorum
4476-> { "execute": "blockdev-add",
4477 "arguments": { "options": { "driver": "raw",
4478 "node-name": "new_node",
4479 "file": { "driver": "file",
4480 "filename": "test.raw" } } } }
4481<- { "return": {} }
4482-> { "execute": "x-blockdev-change",
4483 "arguments": { "parent": "disk1",
4484 "node": "new_node" } }
4485<- { "return": {} }
4486
4487Delete a quorum's node
4488-> { "execute": "x-blockdev-change",
4489 "arguments": { "parent": "disk1",
4490 "child": "children.1" } }
4491<- { "return": {} }
4492
c13163fb
BC
4493EQMP
4494
4495 {
4496 .name = "query-named-block-nodes",
4497 .args_type = "",
7fad30f0 4498 .mhandler.cmd_new = qmp_marshal_query_named_block_nodes,
c13163fb
BC
4499 },
4500
4501SQMP
4502@query-named-block-nodes
4503------------------------
4504
4505Return a list of BlockDeviceInfo for all the named block driver nodes
4506
4507Example:
4508
4509-> { "execute": "query-named-block-nodes" }
4510<- { "return": [ { "ro":false,
4511 "drv":"qcow2",
4512 "encrypted":false,
4513 "file":"disks/test.qcow2",
4514 "node-name": "my-node",
4515 "backing_file_depth":1,
4516 "bps":1000000,
4517 "bps_rd":0,
4518 "bps_wr":0,
4519 "iops":1000000,
4520 "iops_rd":0,
4521 "iops_wr":0,
4522 "bps_max": 8000000,
4523 "bps_rd_max": 0,
4524 "bps_wr_max": 0,
4525 "iops_max": 0,
4526 "iops_rd_max": 0,
4527 "iops_wr_max": 0,
4528 "iops_size": 0,
e2462113 4529 "write_threshold": 0,
c13163fb
BC
4530 "image":{
4531 "filename":"disks/test.qcow2",
4532 "format":"qcow2",
4533 "virtual-size":2048000,
4534 "backing_file":"base.qcow2",
4535 "full-backing-filename":"disks/base.qcow2",
5403432f 4536 "backing-filename-format":"qcow2",
c13163fb
BC
4537 "snapshots":[
4538 {
4539 "id": "1",
4540 "name": "snapshot1",
4541 "vm-state-size": 0,
4542 "date-sec": 10000200,
4543 "date-nsec": 12,
4544 "vm-clock-sec": 206,
4545 "vm-clock-nsec": 30
4546 }
4547 ],
4548 "backing-image":{
4549 "filename":"disks/base.qcow2",
4550 "format":"qcow2",
4551 "virtual-size":2048000
4552 }
c059451c 4553 } } ] }
c13163fb 4554
24fb4133
HR
4555EQMP
4556
4557 {
4558 .name = "blockdev-change-medium",
39ff43d9 4559 .args_type = "device:B,filename:F,format:s?,read-only-mode:s?",
24fb4133
HR
4560 .mhandler.cmd_new = qmp_marshal_blockdev_change_medium,
4561 },
4562
4563SQMP
4564blockdev-change-medium
4565----------------------
4566
4567Changes the medium inserted into a block device by ejecting the current medium
4568and loading a new image file which is inserted as the new medium.
4569
4570Arguments:
4571
4572- "device": device name (json-string)
4573- "filename": filename of the new image (json-string)
4574- "format": format of the new image (json-string, optional)
39ff43d9
HR
4575- "read-only-mode": new read-only mode (json-string, optional)
4576 - Possible values: "retain" (default), "read-only", "read-write"
24fb4133
HR
4577
4578Examples:
4579
45801. Change a removable medium
4581
4582-> { "execute": "blockdev-change-medium",
4583 "arguments": { "device": "ide1-cd0",
4584 "filename": "/srv/images/Fedora-12-x86_64-DVD.iso",
4585 "format": "raw" } }
4586<- { "return": {} }
4587
39ff43d9
HR
45882. Load a read-only medium into a writable drive
4589
4590-> { "execute": "blockdev-change-medium",
4591 "arguments": { "device": "isa-fd0",
4592 "filename": "/srv/images/ro.img",
4593 "format": "raw",
4594 "read-only-mode": "retain" } }
4595
4596<- { "error":
4597 { "class": "GenericError",
4598 "desc": "Could not open '/srv/images/ro.img': Permission denied" } }
4599
4600-> { "execute": "blockdev-change-medium",
4601 "arguments": { "device": "isa-fd0",
4602 "filename": "/srv/images/ro.img",
4603 "format": "raw",
4604 "read-only-mode": "read-only" } }
4605
4606<- { "return": {} }
4607
76b5d850
HT
4608EQMP
4609
4610 {
4611 .name = "query-memdev",
4612 .args_type = "",
7fad30f0 4613 .mhandler.cmd_new = qmp_marshal_query_memdev,
76b5d850
HT
4614 },
4615
4616SQMP
4617query-memdev
4618------------
4619
4620Show memory devices information.
4621
4622
4623Example (1):
4624
4625-> { "execute": "query-memdev" }
4626<- { "return": [
4627 {
4628 "size": 536870912,
4629 "merge": false,
4630 "dump": true,
4631 "prealloc": false,
4632 "host-nodes": [0, 1],
4633 "policy": "bind"
4634 },
4635 {
4636 "size": 536870912,
4637 "merge": false,
4638 "dump": true,
4639 "prealloc": true,
4640 "host-nodes": [2, 3],
4641 "policy": "preferred"
4642 }
4643 ]
4644 }
4645
6f2e2730
IM
4646EQMP
4647
4648 {
4649 .name = "query-memory-devices",
4650 .args_type = "",
7fad30f0 4651 .mhandler.cmd_new = qmp_marshal_query_memory_devices,
6f2e2730
IM
4652 },
4653
4654SQMP
4655@query-memory-devices
4656--------------------
4657
4658Return a list of memory devices.
4659
4660Example:
4661-> { "execute": "query-memory-devices" }
4662<- { "return": [ { "data":
4663 { "addr": 5368709120,
4664 "hotpluggable": true,
4665 "hotplugged": true,
4666 "id": "d1",
4667 "memdev": "/objects/memX",
4668 "node": 0,
4669 "size": 1073741824,
4670 "slot": 0},
4671 "type": "dimm"
4672 } ] }
f1a1a356 4673EQMP
02419bcb
IM
4674
4675 {
4676 .name = "query-acpi-ospm-status",
4677 .args_type = "",
7fad30f0 4678 .mhandler.cmd_new = qmp_marshal_query_acpi_ospm_status,
02419bcb
IM
4679 },
4680
4681SQMP
4682@query-acpi-ospm-status
4683--------------------
4684
4685Return list of ACPIOSTInfo for devices that support status reporting
4686via ACPI _OST method.
4687
4688Example:
4689-> { "execute": "query-acpi-ospm-status" }
4690<- { "return": [ { "device": "d1", "slot": "0", "slot-type": "DIMM", "source": 1, "status": 0},
4691 { "slot": "1", "slot-type": "DIMM", "source": 0, "status": 0},
4692 { "slot": "2", "slot-type": "DIMM", "source": 0, "status": 0},
4693 { "slot": "3", "slot-type": "DIMM", "source": 0, "status": 0}
4694 ]}
4695EQMP
f2ae8abf
MT
4696
4697#if defined TARGET_I386
4698 {
4699 .name = "rtc-reset-reinjection",
4700 .args_type = "",
7fad30f0 4701 .mhandler.cmd_new = qmp_marshal_rtc_reset_reinjection,
f2ae8abf
MT
4702 },
4703#endif
4704
4705SQMP
4706rtc-reset-reinjection
4707---------------------
4708
4709Reset the RTC interrupt reinjection backlog.
4710
4711Arguments: None.
4712
4713Example:
4714
4715-> { "execute": "rtc-reset-reinjection" }
4716<- { "return": {} }
1dde0f48
LV
4717EQMP
4718
4719 {
4720 .name = "trace-event-get-state",
77e2b172 4721 .args_type = "name:s,vcpu:i?",
7fad30f0 4722 .mhandler.cmd_new = qmp_marshal_trace_event_get_state,
1dde0f48
LV
4723 },
4724
4725SQMP
4726trace-event-get-state
4727---------------------
4728
4729Query the state of events.
4730
77e2b172
LV
4731Arguments:
4732
4733- "name": Event name pattern (json-string).
4734- "vcpu": The vCPU to query, any vCPU by default (json-int, optional).
4735
4736An event is returned if:
4737- its name matches the "name" pattern, and
4738- if "vcpu" is given, the event has the "vcpu" property.
4739
4740Therefore, if "vcpu" is given, the operation will only match per-vCPU events,
4741returning their state on the specified vCPU. Special case: if "name" is an exact
4742match, "vcpu" is given and the event does not have the "vcpu" property, an error
4743is returned.
4744
1dde0f48
LV
4745Example:
4746
4747-> { "execute": "trace-event-get-state", "arguments": { "name": "qemu_memalign" } }
4748<- { "return": [ { "name": "qemu_memalign", "state": "disabled" } ] }
4749EQMP
4750
4751 {
4752 .name = "trace-event-set-state",
77e2b172 4753 .args_type = "name:s,enable:b,ignore-unavailable:b?,vcpu:i?",
7fad30f0 4754 .mhandler.cmd_new = qmp_marshal_trace_event_set_state,
1dde0f48 4755 },
f2ae8abf 4756
1dde0f48
LV
4757SQMP
4758trace-event-set-state
4759---------------------
4760
4761Set the state of events.
4762
77e2b172
LV
4763Arguments:
4764
4765- "name": Event name pattern (json-string).
4766- "enable": Whether to enable or disable the event (json-bool).
4767- "ignore-unavailable": Whether to ignore errors for events that cannot be
4768 changed (json-bool, optional).
4769- "vcpu": The vCPU to act upon, all vCPUs by default (json-int, optional).
4770
4771An event's state is modified if:
4772- its name matches the "name" pattern, and
4773- if "vcpu" is given, the event has the "vcpu" property.
4774
4775Therefore, if "vcpu" is given, the operation will only match per-vCPU events,
4776setting their state on the specified vCPU. Special case: if "name" is an exact
4777match, "vcpu" is given and the event does not have the "vcpu" property, an error
4778is returned.
4779
1dde0f48
LV
4780Example:
4781
4782-> { "execute": "trace-event-set-state", "arguments": { "name": "qemu_memalign", "enable": "true" } }
4783<- { "return": {} }
50c6617f
MT
4784EQMP
4785
4786 {
6575ccdd 4787 .name = "input-send-event",
51fc4476 4788 .args_type = "console:i?,events:q",
6575ccdd 4789 .mhandler.cmd_new = qmp_marshal_input_send_event,
50c6617f
MT
4790 },
4791
4792SQMP
6575ccdd 4793@input-send-event
50c6617f
MT
4794-----------------
4795
4796Send input event to guest.
4797
4798Arguments:
4799
b98d26e3
GH
4800- "device": display device (json-string, optional)
4801- "head": display head (json-int, optional)
4802- "events": list of input events
50c6617f
MT
4803
4804The consoles are visible in the qom tree, under
4805/backend/console[$index]. They have a device link and head property, so
4806it is possible to map which console belongs to which device and display.
4807
4808Example (1):
4809
4810Press left mouse button.
4811
6575ccdd 4812-> { "execute": "input-send-event",
b98d26e3 4813 "arguments": { "device": "video0",
50c6617f 4814 "events": [ { "type": "btn",
f22d0af0 4815 "data" : { "down": true, "button": "left" } } ] } }
50c6617f
MT
4816<- { "return": {} }
4817
6575ccdd 4818-> { "execute": "input-send-event",
b98d26e3 4819 "arguments": { "device": "video0",
50c6617f 4820 "events": [ { "type": "btn",
f22d0af0 4821 "data" : { "down": false, "button": "left" } } ] } }
50c6617f
MT
4822<- { "return": {} }
4823
4824Example (2):
4825
4826Press ctrl-alt-del.
4827
6575ccdd 4828-> { "execute": "input-send-event",
b98d26e3 4829 "arguments": { "events": [
50c6617f
MT
4830 { "type": "key", "data" : { "down": true,
4831 "key": {"type": "qcode", "data": "ctrl" } } },
4832 { "type": "key", "data" : { "down": true,
4833 "key": {"type": "qcode", "data": "alt" } } },
4834 { "type": "key", "data" : { "down": true,
4835 "key": {"type": "qcode", "data": "delete" } } } ] } }
4836<- { "return": {} }
4837
4838Example (3):
4839
4840Move mouse pointer to absolute coordinates (20000, 400).
4841
6575ccdd 4842-> { "execute": "input-send-event" ,
b98d26e3 4843 "arguments": { "events": [
01df5143
GH
4844 { "type": "abs", "data" : { "axis": "x", "value" : 20000 } },
4845 { "type": "abs", "data" : { "axis": "y", "value" : 400 } } ] } }
50c6617f
MT
4846<- { "return": {} }
4847
e2462113
FR
4848EQMP
4849
4850 {
4851 .name = "block-set-write-threshold",
4852 .args_type = "node-name:s,write-threshold:l",
7fad30f0 4853 .mhandler.cmd_new = qmp_marshal_block_set_write_threshold,
e2462113
FR
4854 },
4855
4856SQMP
4857block-set-write-threshold
4858------------
4859
4860Change the write threshold for a block drive. The threshold is an offset,
4861thus must be non-negative. Default is no write threshold.
4862Setting the threshold to zero disables it.
4863
4864Arguments:
4865
4866- "node-name": the node name in the block driver state graph (json-string)
4867- "write-threshold": the write threshold in bytes (json-int)
4868
4869Example:
4870
4871-> { "execute": "block-set-write-threshold",
4872 "arguments": { "node-name": "mydev",
4873 "write-threshold": 17179869184 } }
4874<- { "return": {} }
4875
f2ae8abf 4876EQMP
fafa4d50
SF
4877
4878 {
4879 .name = "query-rocker",
4880 .args_type = "name:s",
7fad30f0 4881 .mhandler.cmd_new = qmp_marshal_query_rocker,
fafa4d50
SF
4882 },
4883
4884SQMP
4885Show rocker switch
4886------------------
4887
4888Arguments:
4889
4890- "name": switch name
4891
4892Example:
4893
4894-> { "execute": "query-rocker", "arguments": { "name": "sw1" } }
4895<- { "return": {"name": "sw1", "ports": 2, "id": 1327446905938}}
4896
4897EQMP
4898
4899 {
4900 .name = "query-rocker-ports",
4901 .args_type = "name:s",
7fad30f0 4902 .mhandler.cmd_new = qmp_marshal_query_rocker_ports,
fafa4d50
SF
4903 },
4904
4905SQMP
4906Show rocker switch ports
4907------------------------
4908
4909Arguments:
4910
4911- "name": switch name
4912
4913Example:
4914
4915-> { "execute": "query-rocker-ports", "arguments": { "name": "sw1" } }
4916<- { "return": [ {"duplex": "full", "enabled": true, "name": "sw1.1",
4917 "autoneg": "off", "link-up": true, "speed": 10000},
4918 {"duplex": "full", "enabled": true, "name": "sw1.2",
4919 "autoneg": "off", "link-up": true, "speed": 10000}
4920 ]}
4921
4922EQMP
4923
4924 {
4925 .name = "query-rocker-of-dpa-flows",
4926 .args_type = "name:s,tbl-id:i?",
7fad30f0 4927 .mhandler.cmd_new = qmp_marshal_query_rocker_of_dpa_flows,
fafa4d50
SF
4928 },
4929
4930SQMP
4931Show rocker switch OF-DPA flow tables
4932-------------------------------------
4933
4934Arguments:
4935
4936- "name": switch name
4937- "tbl-id": (optional) flow table ID
4938
4939Example:
4940
4941-> { "execute": "query-rocker-of-dpa-flows", "arguments": { "name": "sw1" } }
4942<- { "return": [ {"key": {"in-pport": 0, "priority": 1, "tbl-id": 0},
4943 "hits": 138,
4944 "cookie": 0,
4945 "action": {"goto-tbl": 10},
4946 "mask": {"in-pport": 4294901760}
4947 },
4948 {...more...},
4949 ]}
4950
4951EQMP
4952
4953 {
4954 .name = "query-rocker-of-dpa-groups",
4955 .args_type = "name:s,type:i?",
7fad30f0 4956 .mhandler.cmd_new = qmp_marshal_query_rocker_of_dpa_groups,
fafa4d50
SF
4957 },
4958
4959SQMP
4960Show rocker OF-DPA group tables
4961-------------------------------
4962
4963Arguments:
4964
4965- "name": switch name
4966- "type": (optional) group type
4967
4968Example:
4969
4970-> { "execute": "query-rocker-of-dpa-groups", "arguments": { "name": "sw1" } }
4971<- { "return": [ {"type": 0, "out-pport": 2, "pport": 2, "vlan-id": 3841,
4972 "pop-vlan": 1, "id": 251723778},
4973 {"type": 0, "out-pport": 0, "pport": 0, "vlan-id": 3841,
4974 "pop-vlan": 1, "id": 251723776},
4975 {"type": 0, "out-pport": 1, "pport": 1, "vlan-id": 3840,
4976 "pop-vlan": 1, "id": 251658241},
4977 {"type": 0, "out-pport": 0, "pport": 0, "vlan-id": 3840,
4978 "pop-vlan": 1, "id": 251658240}
4979 ]}
ae50a770
PX
4980
4981EQMP
4982
4983#if defined TARGET_ARM
4984 {
4985 .name = "query-gic-capabilities",
4986 .args_type = "",
4987 .mhandler.cmd_new = qmp_marshal_query_gic_capabilities,
4988 },
4989#endif
4990
4991SQMP
4992query-gic-capabilities
4993---------------
4994
4995Return a list of GICCapability objects, describing supported GIC
4996(Generic Interrupt Controller) versions.
4997
4998Arguments: None
4999
5000Example:
5001
5002-> { "execute": "query-gic-capabilities" }
5003<- { "return": [{ "version": 2, "emulated": true, "kernel": false },
5004 { "version": 3, "emulated": false, "kernel": true } ] }
5005
5006EQMP
d4633541
IM
5007
5008 {
5009 .name = "query-hotpluggable-cpus",
5010 .args_type = "",
5011 .mhandler.cmd_new = qmp_marshal_query_hotpluggable_cpus,
5012 },
5013
5014SQMP
5015Show existing/possible CPUs
5016---------------------------
5017
5018Arguments: None.
5019
5020Example for pseries machine type started with
5021-smp 2,cores=2,maxcpus=4 -cpu POWER8:
5022
5023-> { "execute": "query-hotpluggable-cpus" }
5024<- {"return": [
13f5e800 5025 { "props": { "core-id": 8 }, "type": "POWER8-spapr-cpu-core",
d4633541 5026 "vcpus-count": 1 },
13f5e800 5027 { "props": { "core-id": 0 }, "type": "POWER8-spapr-cpu-core",
d4633541
IM
5028 "vcpus-count": 1, "qom-path": "/machine/unattached/device[0]"}
5029 ]}'
4d952914
IM
5030
5031Example for pc machine type started with
5032-smp 1,maxcpus=2:
5033 -> { "execute": "query-hotpluggable-cpus" }
5034 <- {"return": [
5035 {
5036 "type": "qemu64-x86_64-cpu", "vcpus-count": 1,
5037 "props": {"core-id": 0, "socket-id": 1, "thread-id": 0}
5038 },
5039 {
5040 "qom-path": "/machine/unattached/device[0]",
5041 "type": "qemu64-x86_64-cpu", "vcpus-count": 1,
5042 "props": {"core-id": 0, "socket-id": 0, "thread-id": 0}
5043 }
5044 ]}