block: switch from g_slice allocator to malloc
[qemu.git] / qmp-commands.hx
blobd2ba800d5effaddcae4c437452ef1f67c0aaaaa9
1 HXCOMM QMP dispatch table and documentation
2 HXCOMM Text between SQMP and EQMP is copied to the QMP documentation file and
3 HXCOMM does not show up in the other formats.
5 SQMP
6 QMP Supported Commands
7 ----------------------
9 This document describes all commands currently supported by QMP.
11 Most of the time their usage is exactly the same as in the user Monitor, this
12 means that any other document which also describe commands (the manpage,
13 QEMU's manual, etc) can and should be consulted.
15 QMP has two types of commands: regular and query commands. Regular commands
16 usually change the Virtual Machine's state someway, while query commands just
17 return information. The sections below are divided accordingly.
19 It's important to observe that all communication examples are formatted in
20 a reader-friendly way, so that they're easier to understand. However, in real
21 protocol usage, they're emitted as a single line.
23 Also, the following notation is used to denote data flow:
25 -> data issued by the Client
26 <- Server data response
28 Please, refer to the QMP specification (QMP/qmp-spec.txt) for detailed
29 information on the Server command and response formats.
31 NOTE: This document is temporary and will be replaced soon.
33 1. Stability Considerations
34 ===========================
36 The current QMP command set (described in this file) may be useful for a
37 number of use cases, however it's limited and several commands have bad
38 defined semantics, specially with regard to command completion.
40 These problems are going to be solved incrementally in the next QEMU releases
41 and we're going to establish a deprecation policy for badly defined commands.
43 If you're planning to adopt QMP, please observe the following:
45 1. The deprecation policy will take effect and be documented soon, please
46 check the documentation of each used command as soon as a new release of
47 QEMU is available
49 2. DO NOT rely on anything which is not explicit documented
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)
55 2. Regular Commands
56 ===================
58 Server's responses in the examples below are always a success response, please
59 refer to the QMP specification for more details on error responses.
61 EQMP
64 .name = "quit",
65 .args_type = "",
66 .mhandler.cmd_new = qmp_marshal_quit,
69 SQMP
70 quit
71 ----
73 Quit the emulator.
75 Arguments: None.
77 Example:
79 -> { "execute": "quit" }
80 <- { "return": {} }
82 EQMP
85 .name = "eject",
86 .args_type = "force:-f,device:B",
87 .mhandler.cmd_new = qmp_marshal_eject,
90 SQMP
91 eject
92 -----
94 Eject a removable medium.
96 Arguments:
98 - force: force ejection (json-bool, optional)
99 - device: device name (json-string)
101 Example:
103 -> { "execute": "eject", "arguments": { "device": "ide1-cd0" } }
104 <- { "return": {} }
106 Note: The "force" argument defaults to false.
108 EQMP
111 .name = "change",
112 .args_type = "device:B,target:F,arg:s?",
113 .mhandler.cmd_new = qmp_marshal_change,
116 SQMP
117 change
118 ------
120 Change a removable medium or VNC configuration.
122 Arguments:
124 - "device": device name (json-string)
125 - "target": filename or item (json-string)
126 - "arg": additional argument (json-string, optional)
128 Examples:
130 1. Change a removable medium
132 -> { "execute": "change",
133 "arguments": { "device": "ide1-cd0",
134 "target": "/srv/images/Fedora-12-x86_64-DVD.iso" } }
135 <- { "return": {} }
137 2. Change VNC password
139 -> { "execute": "change",
140 "arguments": { "device": "vnc", "target": "password",
141 "arg": "foobar1" } }
142 <- { "return": {} }
144 EQMP
147 .name = "screendump",
148 .args_type = "filename:F",
149 .mhandler.cmd_new = qmp_marshal_screendump,
152 SQMP
153 screendump
154 ----------
156 Save screen into PPM image.
158 Arguments:
160 - "filename": file path (json-string)
162 Example:
164 -> { "execute": "screendump", "arguments": { "filename": "/tmp/image" } }
165 <- { "return": {} }
167 EQMP
170 .name = "stop",
171 .args_type = "",
172 .mhandler.cmd_new = qmp_marshal_stop,
175 SQMP
176 stop
177 ----
179 Stop the emulator.
181 Arguments: None.
183 Example:
185 -> { "execute": "stop" }
186 <- { "return": {} }
188 EQMP
191 .name = "cont",
192 .args_type = "",
193 .mhandler.cmd_new = qmp_marshal_cont,
196 SQMP
197 cont
198 ----
200 Resume emulation.
202 Arguments: None.
204 Example:
206 -> { "execute": "cont" }
207 <- { "return": {} }
209 EQMP
212 .name = "system_wakeup",
213 .args_type = "",
214 .mhandler.cmd_new = qmp_marshal_system_wakeup,
217 SQMP
218 system_wakeup
219 -------------
221 Wakeup guest from suspend.
223 Arguments: None.
225 Example:
227 -> { "execute": "system_wakeup" }
228 <- { "return": {} }
230 EQMP
233 .name = "system_reset",
234 .args_type = "",
235 .mhandler.cmd_new = qmp_marshal_system_reset,
238 SQMP
239 system_reset
240 ------------
242 Reset the system.
244 Arguments: None.
246 Example:
248 -> { "execute": "system_reset" }
249 <- { "return": {} }
251 EQMP
254 .name = "system_powerdown",
255 .args_type = "",
256 .mhandler.cmd_new = qmp_marshal_system_powerdown,
259 SQMP
260 system_powerdown
261 ----------------
263 Send system power down event.
265 Arguments: None.
267 Example:
269 -> { "execute": "system_powerdown" }
270 <- { "return": {} }
272 EQMP
275 .name = "device_add",
276 .args_type = "device:O",
277 .params = "driver[,prop=value][,...]",
278 .help = "add device, like -device on the command line",
279 .mhandler.cmd_new = qmp_device_add,
282 SQMP
283 device_add
284 ----------
286 Add a device.
288 Arguments:
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
295 Example:
297 -> { "execute": "device_add", "arguments": { "driver": "e1000", "id": "net1" } }
298 <- { "return": {} }
300 Notes:
302 (1) For detailed information about this command, please refer to the
303 'docs/qdev-device-use.txt' file.
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
308 EQMP
311 .name = "device_del",
312 .args_type = "id:s",
313 .mhandler.cmd_new = qmp_marshal_device_del,
316 SQMP
317 device_del
318 ----------
320 Remove a device.
322 Arguments:
324 - "id": the device's ID or QOM path (json-string)
326 Example:
328 -> { "execute": "device_del", "arguments": { "id": "net1" } }
329 <- { "return": {} }
331 Example:
333 -> { "execute": "device_del", "arguments": { "id": "/machine/peripheral-anon/device[0]" } }
334 <- { "return": {} }
336 EQMP
339 .name = "send-key",
340 .args_type = "keys:q,hold-time:i?",
341 .mhandler.cmd_new = qmp_marshal_send_key,
344 SQMP
345 send-key
346 ----------
348 Send keys to VM.
350 Arguments:
352 keys array:
353 - "key": key sequence (a json-array of key union values,
354 union can be number or qcode enum)
356 - hold-time: time to delay key up events, milliseconds. Defaults to 100
357 (json-int, optional)
359 Example:
361 -> { "execute": "send-key",
362 "arguments": { "keys": [ { "type": "qcode", "data": "ctrl" },
363 { "type": "qcode", "data": "alt" },
364 { "type": "qcode", "data": "delete" } ] } }
365 <- { "return": {} }
367 EQMP
370 .name = "cpu",
371 .args_type = "index:i",
372 .mhandler.cmd_new = qmp_marshal_cpu,
375 SQMP
379 Set the default CPU.
381 Arguments:
383 - "index": the CPU's index (json-int)
385 Example:
387 -> { "execute": "cpu", "arguments": { "index": 0 } }
388 <- { "return": {} }
390 Note: CPUs' indexes are obtained with the 'query-cpus' command.
392 EQMP
395 .name = "cpu-add",
396 .args_type = "id:i",
397 .mhandler.cmd_new = qmp_marshal_cpu_add,
400 SQMP
401 cpu-add
402 -------
404 Adds virtual cpu
406 Arguments:
408 - "id": cpu id (json-int)
410 Example:
412 -> { "execute": "cpu-add", "arguments": { "id": 2 } }
413 <- { "return": {} }
415 EQMP
418 .name = "memsave",
419 .args_type = "val:l,size:i,filename:s,cpu:i?",
420 .mhandler.cmd_new = qmp_marshal_memsave,
423 SQMP
424 memsave
425 -------
427 Save to disk virtual memory dump starting at 'val' of size 'size'.
429 Arguments:
431 - "val": the starting address (json-int)
432 - "size": the memory size, in bytes (json-int)
433 - "filename": file path (json-string)
434 - "cpu": virtual CPU index (json-int, optional)
436 Example:
438 -> { "execute": "memsave",
439 "arguments": { "val": 10,
440 "size": 100,
441 "filename": "/tmp/virtual-mem-dump" } }
442 <- { "return": {} }
444 EQMP
447 .name = "pmemsave",
448 .args_type = "val:l,size:i,filename:s",
449 .mhandler.cmd_new = qmp_marshal_pmemsave,
452 SQMP
453 pmemsave
454 --------
456 Save to disk physical memory dump starting at 'val' of size 'size'.
458 Arguments:
460 - "val": the starting address (json-int)
461 - "size": the memory size, in bytes (json-int)
462 - "filename": file path (json-string)
464 Example:
466 -> { "execute": "pmemsave",
467 "arguments": { "val": 10,
468 "size": 100,
469 "filename": "/tmp/physical-mem-dump" } }
470 <- { "return": {} }
472 EQMP
475 .name = "inject-nmi",
476 .args_type = "",
477 .mhandler.cmd_new = qmp_marshal_inject_nmi,
480 SQMP
481 inject-nmi
482 ----------
484 Inject an NMI on the default CPU (x86/s390) or all CPUs (ppc64).
486 Arguments: None.
488 Example:
490 -> { "execute": "inject-nmi" }
491 <- { "return": {} }
493 Note: inject-nmi fails when the guest doesn't support injecting.
495 EQMP
498 .name = "ringbuf-write",
499 .args_type = "device:s,data:s,format:s?",
500 .mhandler.cmd_new = qmp_marshal_ringbuf_write,
503 SQMP
504 ringbuf-write
505 -------------
507 Write to a ring buffer character device.
509 Arguments:
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"
515 Bug: invalid base64 is currently not rejected.
516 Whitespace *is* invalid.
518 Example:
520 -> { "execute": "ringbuf-write",
521 "arguments": { "device": "foo",
522 "data": "abcdefgh",
523 "format": "utf8" } }
524 <- { "return": {} }
526 EQMP
529 .name = "ringbuf-read",
530 .args_type = "device:s,size:i,format:s?",
531 .mhandler.cmd_new = qmp_marshal_ringbuf_read,
534 SQMP
535 ringbuf-read
536 -------------
538 Read from a ring buffer character device.
540 Arguments:
542 - "device": ring buffer character device name (json-string)
543 - "size": how many bytes to read at most (json-int)
544 - Number of data bytes, not number of characters in encoded data
545 - "format": data format (json-string, optional)
546 - Possible values: "utf8" (default), "base64"
547 - Naturally, format "utf8" works only when the ring buffer
548 contains valid UTF-8 text. Invalid UTF-8 sequences get
549 replaced. Bug: replacement doesn't work. Bug: can screw
550 up on encountering NUL characters, after the ring buffer
551 lost data, and when reading stops because the size limit
552 is reached.
554 Example:
556 -> { "execute": "ringbuf-read",
557 "arguments": { "device": "foo",
558 "size": 1000,
559 "format": "utf8" } }
560 <- {"return": "abcdefgh"}
562 EQMP
565 .name = "xen-save-devices-state",
566 .args_type = "filename:F",
567 .mhandler.cmd_new = qmp_marshal_xen_save_devices_state,
570 SQMP
571 xen-save-devices-state
572 -------
574 Save the state of all devices to file. The RAM and the block devices
575 of the VM are not saved by this command.
577 Arguments:
579 - "filename": the file to save the state of the devices to as binary
580 data. See xen-save-devices-state.txt for a description of the binary
581 format.
583 Example:
585 -> { "execute": "xen-save-devices-state",
586 "arguments": { "filename": "/tmp/save" } }
587 <- { "return": {} }
589 EQMP
592 .name = "xen-set-global-dirty-log",
593 .args_type = "enable:b",
594 .mhandler.cmd_new = qmp_marshal_xen_set_global_dirty_log,
597 SQMP
598 xen-set-global-dirty-log
599 -------
601 Enable or disable the global dirty log mode.
603 Arguments:
605 - "enable": Enable it or disable it.
607 Example:
609 -> { "execute": "xen-set-global-dirty-log",
610 "arguments": { "enable": true } }
611 <- { "return": {} }
613 EQMP
616 .name = "migrate",
617 .args_type = "detach:-d,blk:-b,inc:-i,uri:s",
618 .mhandler.cmd_new = qmp_marshal_migrate,
621 SQMP
622 migrate
623 -------
625 Migrate to URI.
627 Arguments:
629 - "blk": block migration, full disk copy (json-bool, optional)
630 - "inc": incremental disk copy (json-bool, optional)
631 - "uri": Destination URI (json-string)
633 Example:
635 -> { "execute": "migrate", "arguments": { "uri": "tcp:0:4446" } }
636 <- { "return": {} }
638 Notes:
640 (1) The 'query-migrate' command should be used to check migration's progress
641 and final result (this information is provided by the 'status' member)
642 (2) All boolean arguments default to false
643 (3) The user Monitor's "detach" argument is invalid in QMP and should not
644 be used
646 EQMP
649 .name = "migrate_cancel",
650 .args_type = "",
651 .mhandler.cmd_new = qmp_marshal_migrate_cancel,
654 SQMP
655 migrate_cancel
656 --------------
658 Cancel the current migration.
660 Arguments: None.
662 Example:
664 -> { "execute": "migrate_cancel" }
665 <- { "return": {} }
667 EQMP
670 .name = "migrate-incoming",
671 .args_type = "uri:s",
672 .mhandler.cmd_new = qmp_marshal_migrate_incoming,
675 SQMP
676 migrate-incoming
677 ----------------
679 Continue an incoming migration
681 Arguments:
683 - "uri": Source/listening URI (json-string)
685 Example:
687 -> { "execute": "migrate-incoming", "arguments": { "uri": "tcp::4446" } }
688 <- { "return": {} }
690 Notes:
692 (1) QEMU must be started with -incoming defer to allow migrate-incoming to
693 be used
694 (2) The uri format is the same as for -incoming
696 EQMP
698 .name = "migrate-set-cache-size",
699 .args_type = "value:o",
700 .mhandler.cmd_new = qmp_marshal_migrate_set_cache_size,
703 SQMP
704 migrate-set-cache-size
705 ----------------------
707 Set cache size to be used by XBZRLE migration, the cache size will be rounded
708 down to the nearest power of 2
710 Arguments:
712 - "value": cache size in bytes (json-int)
714 Example:
716 -> { "execute": "migrate-set-cache-size", "arguments": { "value": 536870912 } }
717 <- { "return": {} }
719 EQMP
721 .name = "query-migrate-cache-size",
722 .args_type = "",
723 .mhandler.cmd_new = qmp_marshal_query_migrate_cache_size,
726 SQMP
727 query-migrate-cache-size
728 ------------------------
730 Show cache size to be used by XBZRLE migration
732 returns a json-object with the following information:
733 - "size" : json-int
735 Example:
737 -> { "execute": "query-migrate-cache-size" }
738 <- { "return": 67108864 }
740 EQMP
743 .name = "migrate_set_speed",
744 .args_type = "value:o",
745 .mhandler.cmd_new = qmp_marshal_migrate_set_speed,
748 SQMP
749 migrate_set_speed
750 -----------------
752 Set maximum speed for migrations.
754 Arguments:
756 - "value": maximum speed, in bytes per second (json-int)
758 Example:
760 -> { "execute": "migrate_set_speed", "arguments": { "value": 1024 } }
761 <- { "return": {} }
763 EQMP
766 .name = "migrate_set_downtime",
767 .args_type = "value:T",
768 .mhandler.cmd_new = qmp_marshal_migrate_set_downtime,
771 SQMP
772 migrate_set_downtime
773 --------------------
775 Set maximum tolerated downtime (in seconds) for migrations.
777 Arguments:
779 - "value": maximum downtime (json-number)
781 Example:
783 -> { "execute": "migrate_set_downtime", "arguments": { "value": 0.1 } }
784 <- { "return": {} }
786 EQMP
789 .name = "client_migrate_info",
790 .args_type = "protocol:s,hostname:s,port:i?,tls-port:i?,cert-subject:s?",
791 .params = "protocol hostname port tls-port cert-subject",
792 .help = "set migration information for remote display",
793 .mhandler.cmd_new = qmp_marshal_client_migrate_info,
796 SQMP
797 client_migrate_info
798 -------------------
800 Set migration information for remote display. This makes the server
801 ask the client to automatically reconnect using the new parameters
802 once migration finished successfully. Only implemented for SPICE.
804 Arguments:
806 - "protocol": must be "spice" (json-string)
807 - "hostname": migration target hostname (json-string)
808 - "port": spice tcp port for plaintext channels (json-int, optional)
809 - "tls-port": spice tcp port for tls-secured channels (json-int, optional)
810 - "cert-subject": server certificate subject (json-string, optional)
812 Example:
814 -> { "execute": "client_migrate_info",
815 "arguments": { "protocol": "spice",
816 "hostname": "virt42.lab.kraxel.org",
817 "port": 1234 } }
818 <- { "return": {} }
820 EQMP
823 .name = "dump-guest-memory",
824 .args_type = "paging:b,protocol:s,begin:i?,end:i?,format:s?",
825 .params = "-p protocol [begin] [length] [format]",
826 .help = "dump guest memory to file",
827 .mhandler.cmd_new = qmp_marshal_dump_guest_memory,
830 SQMP
831 dump
834 Dump guest memory to file. The file can be processed with crash or gdb.
836 Arguments:
838 - "paging": do paging to get guest's memory mapping (json-bool)
839 - "protocol": destination file(started with "file:") or destination file
840 descriptor (started with "fd:") (json-string)
841 - "begin": the starting physical address. It's optional, and should be specified
842 with length together (json-int)
843 - "length": the memory size, in bytes. It's optional, and should be specified
844 with begin together (json-int)
845 - "format": the format of guest memory dump. It's optional, and can be
846 elf|kdump-zlib|kdump-lzo|kdump-snappy, but non-elf formats will
847 conflict with paging and filter, ie. begin and length (json-string)
849 Example:
851 -> { "execute": "dump-guest-memory", "arguments": { "protocol": "fd:dump" } }
852 <- { "return": {} }
854 Notes:
856 (1) All boolean arguments default to false
858 EQMP
861 .name = "query-dump-guest-memory-capability",
862 .args_type = "",
863 .mhandler.cmd_new = qmp_marshal_query_dump_guest_memory_capability,
866 SQMP
867 query-dump-guest-memory-capability
868 ----------
870 Show available formats for 'dump-guest-memory'
872 Example:
874 -> { "execute": "query-dump-guest-memory-capability" }
875 <- { "return": { "formats":
876 ["elf", "kdump-zlib", "kdump-lzo", "kdump-snappy"] }
878 EQMP
880 #if defined TARGET_S390X
882 .name = "dump-skeys",
883 .args_type = "filename:F",
884 .mhandler.cmd_new = qmp_marshal_dump_skeys,
886 #endif
888 SQMP
889 dump-skeys
890 ----------
892 Save guest storage keys to file.
894 Arguments:
896 - "filename": file path (json-string)
898 Example:
900 -> { "execute": "dump-skeys", "arguments": { "filename": "/tmp/skeys" } }
901 <- { "return": {} }
903 EQMP
906 .name = "netdev_add",
907 .args_type = "netdev:O",
908 .mhandler.cmd_new = qmp_netdev_add,
911 SQMP
912 netdev_add
913 ----------
915 Add host network device.
917 Arguments:
919 - "type": the device type, "tap", "user", ... (json-string)
920 - "id": the device's ID, must be unique (json-string)
921 - device options
923 Example:
925 -> { "execute": "netdev_add",
926 "arguments": { "type": "user", "id": "netdev1",
927 "dnssearch": "example.org" } }
928 <- { "return": {} }
930 Note: The supported device options are the same ones supported by the '-netdev'
931 command-line argument, which are listed in the '-help' output or QEMU's
932 manual
934 EQMP
937 .name = "netdev_del",
938 .args_type = "id:s",
939 .mhandler.cmd_new = qmp_marshal_netdev_del,
942 SQMP
943 netdev_del
944 ----------
946 Remove host network device.
948 Arguments:
950 - "id": the device's ID, must be unique (json-string)
952 Example:
954 -> { "execute": "netdev_del", "arguments": { "id": "netdev1" } }
955 <- { "return": {} }
958 EQMP
961 .name = "object-add",
962 .args_type = "qom-type:s,id:s,props:q?",
963 .mhandler.cmd_new = qmp_marshal_object_add,
966 SQMP
967 object-add
968 ----------
970 Create QOM object.
972 Arguments:
974 - "qom-type": the object's QOM type, i.e. the class name (json-string)
975 - "id": the object's ID, must be unique (json-string)
976 - "props": a dictionary of object property values (optional, json-dict)
978 Example:
980 -> { "execute": "object-add", "arguments": { "qom-type": "rng-random", "id": "rng1",
981 "props": { "filename": "/dev/hwrng" } } }
982 <- { "return": {} }
984 EQMP
987 .name = "object-del",
988 .args_type = "id:s",
989 .mhandler.cmd_new = qmp_marshal_object_del,
992 SQMP
993 object-del
994 ----------
996 Remove QOM object.
998 Arguments:
1000 - "id": the object's ID (json-string)
1002 Example:
1004 -> { "execute": "object-del", "arguments": { "id": "rng1" } }
1005 <- { "return": {} }
1008 EQMP
1012 .name = "block_resize",
1013 .args_type = "device:s?,node-name:s?,size:o",
1014 .mhandler.cmd_new = qmp_marshal_block_resize,
1017 SQMP
1018 block_resize
1019 ------------
1021 Resize a block image while a guest is running.
1023 Arguments:
1025 - "device": the device's ID, must be unique (json-string)
1026 - "node-name": the node name in the block driver state graph (json-string)
1027 - "size": new size
1029 Example:
1031 -> { "execute": "block_resize", "arguments": { "device": "scratch", "size": 1073741824 } }
1032 <- { "return": {} }
1034 EQMP
1037 .name = "block-stream",
1038 .args_type = "device:B,base:s?,speed:o?,backing-file:s?,on-error:s?",
1039 .mhandler.cmd_new = qmp_marshal_block_stream,
1042 SQMP
1043 block-stream
1044 ------------
1046 Copy data from a backing file into a block device.
1048 Arguments:
1050 - "device": The device's ID, must be unique (json-string)
1051 - "base": The file name of the backing image above which copying starts
1052 (json-string, optional)
1053 - "backing-file": The backing file string to write into the active layer. This
1054 filename is not validated.
1056 If a pathname string is such that it cannot be resolved by
1057 QEMU, that means that subsequent QMP or HMP commands must use
1058 node-names for the image in question, as filename lookup
1059 methods will fail.
1061 If not specified, QEMU will automatically determine the
1062 backing file string to use, or error out if there is no
1063 obvious choice. Care should be taken when specifying the
1064 string, to specify a valid filename or protocol.
1065 (json-string, optional) (Since 2.1)
1066 - "speed": the maximum speed, in bytes per second (json-int, optional)
1067 - "on-error": the action to take on an error (default 'report'). 'stop' and
1068 'enospc' can only be used if the block device supports io-status.
1069 (json-string, optional) (Since 2.1)
1071 Example:
1073 -> { "execute": "block-stream", "arguments": { "device": "virtio0",
1074 "base": "/tmp/master.qcow2" } }
1075 <- { "return": {} }
1077 EQMP
1080 .name = "block-commit",
1081 .args_type = "device:B,base:s?,top:s?,backing-file:s?,speed:o?",
1082 .mhandler.cmd_new = qmp_marshal_block_commit,
1085 SQMP
1086 block-commit
1087 ------------
1089 Live commit of data from overlay image nodes into backing nodes - i.e., writes
1090 data between 'top' and 'base' into 'base'.
1092 Arguments:
1094 - "device": The device's ID, must be unique (json-string)
1095 - "base": The file name of the backing image to write data into.
1096 If not specified, this is the deepest backing image
1097 (json-string, optional)
1098 - "top": The file name of the backing image within the image chain,
1099 which contains the topmost data to be committed down. If
1100 not specified, this is the active layer. (json-string, optional)
1102 - backing-file: The backing file string to write into the overlay
1103 image of 'top'. If 'top' is the active layer,
1104 specifying a backing file string is an error. This
1105 filename is not validated.
1107 If a pathname string is such that it cannot be
1108 resolved by QEMU, that means that subsequent QMP or
1109 HMP commands must use node-names for the image in
1110 question, as filename lookup methods will fail.
1112 If not specified, QEMU will automatically determine
1113 the backing file string to use, or error out if
1114 there is no obvious choice. Care should be taken
1115 when specifying the string, to specify a valid
1116 filename or protocol.
1117 (json-string, optional) (Since 2.1)
1119 If top == base, that is an error.
1120 If top == active, the job will not be completed by itself,
1121 user needs to complete the job with the block-job-complete
1122 command after getting the ready event. (Since 2.0)
1124 If the base image is smaller than top, then the base image
1125 will be resized to be the same size as top. If top is
1126 smaller than the base image, the base will not be
1127 truncated. If you want the base image size to match the
1128 size of the smaller top, you can safely truncate it
1129 yourself once the commit operation successfully completes.
1130 (json-string)
1131 - "speed": the maximum speed, in bytes per second (json-int, optional)
1134 Example:
1136 -> { "execute": "block-commit", "arguments": { "device": "virtio0",
1137 "top": "/tmp/snap1.qcow2" } }
1138 <- { "return": {} }
1140 EQMP
1143 .name = "drive-backup",
1144 .args_type = "sync:s,device:B,target:s,speed:i?,mode:s?,format:s?,"
1145 "bitmap:s?,on-source-error:s?,on-target-error:s?",
1146 .mhandler.cmd_new = qmp_marshal_drive_backup,
1149 SQMP
1150 drive-backup
1151 ------------
1153 Start a point-in-time copy of a block device to a new destination. The
1154 status of ongoing drive-backup operations can be checked with
1155 query-block-jobs where the BlockJobInfo.type field has the value 'backup'.
1156 The operation can be stopped before it has completed using the
1157 block-job-cancel command.
1159 Arguments:
1161 - "device": the name of the device which should be copied.
1162 (json-string)
1163 - "target": the target of the new image. If the file exists, or if it is a
1164 device, the existing file/device will be used as the new
1165 destination. If it does not exist, a new file will be created.
1166 (json-string)
1167 - "format": the format of the new destination, default is to probe if 'mode' is
1168 'existing', else the format of the source
1169 (json-string, optional)
1170 - "sync": what parts of the disk image should be copied to the destination;
1171 possibilities include "full" for all the disk, "top" for only the sectors
1172 allocated in the topmost image, "incremental" for only the dirty sectors in
1173 the bitmap, or "none" to only replicate new I/O (MirrorSyncMode).
1174 - "bitmap": dirty bitmap name for sync==incremental. Must be present if sync
1175 is "incremental", must NOT be present otherwise.
1176 - "mode": whether and how QEMU should create a new image
1177 (NewImageMode, optional, default 'absolute-paths')
1178 - "speed": the maximum speed, in bytes per second (json-int, optional)
1179 - "on-source-error": the action to take on an error on the source, default
1180 'report'. 'stop' and 'enospc' can only be used
1181 if the block device supports io-status.
1182 (BlockdevOnError, optional)
1183 - "on-target-error": the action to take on an error on the target, default
1184 'report' (no limitations, since this applies to
1185 a different block device than device).
1186 (BlockdevOnError, optional)
1188 Example:
1189 -> { "execute": "drive-backup", "arguments": { "device": "drive0",
1190 "sync": "full",
1191 "target": "backup.img" } }
1192 <- { "return": {} }
1194 EQMP
1197 .name = "blockdev-backup",
1198 .args_type = "sync:s,device:B,target:B,speed:i?,"
1199 "on-source-error:s?,on-target-error:s?",
1200 .mhandler.cmd_new = qmp_marshal_blockdev_backup,
1203 SQMP
1204 blockdev-backup
1205 ---------------
1207 The device version of drive-backup: this command takes an existing named device
1208 as backup target.
1210 Arguments:
1212 - "device": the name of the device which should be copied.
1213 (json-string)
1214 - "target": the name of the backup target device. (json-string)
1215 - "sync": what parts of the disk image should be copied to the destination;
1216 possibilities include "full" for all the disk, "top" for only the
1217 sectors allocated in the topmost image, or "none" to only replicate
1218 new I/O (MirrorSyncMode).
1219 - "speed": the maximum speed, in bytes per second (json-int, optional)
1220 - "on-source-error": the action to take on an error on the source, default
1221 'report'. 'stop' and 'enospc' can only be used
1222 if the block device supports io-status.
1223 (BlockdevOnError, optional)
1224 - "on-target-error": the action to take on an error on the target, default
1225 'report' (no limitations, since this applies to
1226 a different block device than device).
1227 (BlockdevOnError, optional)
1229 Example:
1230 -> { "execute": "blockdev-backup", "arguments": { "device": "src-id",
1231 "sync": "full",
1232 "target": "tgt-id" } }
1233 <- { "return": {} }
1235 EQMP
1238 .name = "block-job-set-speed",
1239 .args_type = "device:B,speed:o",
1240 .mhandler.cmd_new = qmp_marshal_block_job_set_speed,
1244 .name = "block-job-cancel",
1245 .args_type = "device:B,force:b?",
1246 .mhandler.cmd_new = qmp_marshal_block_job_cancel,
1249 .name = "block-job-pause",
1250 .args_type = "device:B",
1251 .mhandler.cmd_new = qmp_marshal_block_job_pause,
1254 .name = "block-job-resume",
1255 .args_type = "device:B",
1256 .mhandler.cmd_new = qmp_marshal_block_job_resume,
1259 .name = "block-job-complete",
1260 .args_type = "device:B",
1261 .mhandler.cmd_new = qmp_marshal_block_job_complete,
1264 .name = "transaction",
1265 .args_type = "actions:q",
1266 .mhandler.cmd_new = qmp_marshal_transaction,
1269 SQMP
1270 transaction
1271 -----------
1273 Atomically operate on one or more block devices. The only supported operations
1274 for now are drive-backup, internal and external snapshotting. A list of
1275 dictionaries is accepted, that contains the actions to be performed.
1276 If there is any failure performing any of the operations, all operations
1277 for the group are abandoned.
1279 For external snapshots, the dictionary contains the device, the file to use for
1280 the new snapshot, and the format. The default format, if not specified, is
1281 qcow2.
1283 Each new snapshot defaults to being created by QEMU (wiping any
1284 contents if the file already exists), but it is also possible to reuse
1285 an externally-created file. In the latter case, you should ensure that
1286 the new image file has the same contents as the current one; QEMU cannot
1287 perform any meaningful check. Typically this is achieved by using the
1288 current image file as the backing file for the new image.
1290 On failure, the original disks pre-snapshot attempt will be used.
1292 For internal snapshots, the dictionary contains the device and the snapshot's
1293 name. If an internal snapshot matching name already exists, the request will
1294 be rejected. Only some image formats support it, for example, qcow2, rbd,
1295 and sheepdog.
1297 On failure, qemu will try delete the newly created internal snapshot in the
1298 transaction. When an I/O error occurs during deletion, the user needs to fix
1299 it later with qemu-img or other command.
1301 Arguments:
1303 actions array:
1304 - "type": the operation to perform. The only supported
1305 value is "blockdev-snapshot-sync". (json-string)
1306 - "data": a dictionary. The contents depend on the value
1307 of "type". When "type" is "blockdev-snapshot-sync":
1308 - "device": device name to snapshot (json-string)
1309 - "node-name": graph node name to snapshot (json-string)
1310 - "snapshot-file": name of new image file (json-string)
1311 - "snapshot-node-name": graph node name of the new snapshot (json-string)
1312 - "format": format of new image (json-string, optional)
1313 - "mode": whether and how QEMU should create the snapshot file
1314 (NewImageMode, optional, default "absolute-paths")
1315 When "type" is "blockdev-snapshot-internal-sync":
1316 - "device": device name to snapshot (json-string)
1317 - "name": name of the new snapshot (json-string)
1319 Example:
1321 -> { "execute": "transaction",
1322 "arguments": { "actions": [
1323 { "type": "blockdev-snapshot-sync", "data" : { "device": "ide-hd0",
1324 "snapshot-file": "/some/place/my-image",
1325 "format": "qcow2" } },
1326 { "type": "blockdev-snapshot-sync", "data" : { "node-name": "myfile",
1327 "snapshot-file": "/some/place/my-image2",
1328 "snapshot-node-name": "node3432",
1329 "mode": "existing",
1330 "format": "qcow2" } },
1331 { "type": "blockdev-snapshot-sync", "data" : { "device": "ide-hd1",
1332 "snapshot-file": "/some/place/my-image2",
1333 "mode": "existing",
1334 "format": "qcow2" } },
1335 { "type": "blockdev-snapshot-internal-sync", "data" : {
1336 "device": "ide-hd2",
1337 "name": "snapshot0" } } ] } }
1338 <- { "return": {} }
1340 EQMP
1343 .name = "block-dirty-bitmap-add",
1344 .args_type = "node:B,name:s,granularity:i?",
1345 .mhandler.cmd_new = qmp_marshal_block_dirty_bitmap_add,
1348 SQMP
1350 block-dirty-bitmap-add
1351 ----------------------
1352 Since 2.4
1354 Create a dirty bitmap with a name on the device, and start tracking the writes.
1356 Arguments:
1358 - "node": device/node on which to create dirty bitmap (json-string)
1359 - "name": name of the new dirty bitmap (json-string)
1360 - "granularity": granularity to track writes with (int, optional)
1362 Example:
1364 -> { "execute": "block-dirty-bitmap-add", "arguments": { "node": "drive0",
1365 "name": "bitmap0" } }
1366 <- { "return": {} }
1368 EQMP
1371 .name = "block-dirty-bitmap-remove",
1372 .args_type = "node:B,name:s",
1373 .mhandler.cmd_new = qmp_marshal_block_dirty_bitmap_remove,
1376 SQMP
1378 block-dirty-bitmap-remove
1379 -------------------------
1380 Since 2.4
1382 Stop write tracking and remove the dirty bitmap that was created with
1383 block-dirty-bitmap-add.
1385 Arguments:
1387 - "node": device/node on which to remove dirty bitmap (json-string)
1388 - "name": name of the dirty bitmap to remove (json-string)
1390 Example:
1392 -> { "execute": "block-dirty-bitmap-remove", "arguments": { "node": "drive0",
1393 "name": "bitmap0" } }
1394 <- { "return": {} }
1396 EQMP
1399 .name = "block-dirty-bitmap-clear",
1400 .args_type = "node:B,name:s",
1401 .mhandler.cmd_new = qmp_marshal_block_dirty_bitmap_clear,
1404 SQMP
1406 block-dirty-bitmap-clear
1407 ------------------------
1408 Since 2.4
1410 Reset the dirty bitmap associated with a node so that an incremental backup
1411 from this point in time forward will only backup clusters modified after this
1412 clear operation.
1414 Arguments:
1416 - "node": device/node on which to remove dirty bitmap (json-string)
1417 - "name": name of the dirty bitmap to remove (json-string)
1419 Example:
1421 -> { "execute": "block-dirty-bitmap-clear", "arguments": { "node": "drive0",
1422 "name": "bitmap0" } }
1423 <- { "return": {} }
1425 EQMP
1428 .name = "blockdev-snapshot-sync",
1429 .args_type = "device:s?,node-name:s?,snapshot-file:s,snapshot-node-name:s?,format:s?,mode:s?",
1430 .mhandler.cmd_new = qmp_marshal_blockdev_snapshot_sync,
1433 SQMP
1434 blockdev-snapshot-sync
1435 ----------------------
1437 Synchronous snapshot of a block device. snapshot-file specifies the
1438 target of the new image. If the file exists, or if it is a device, the
1439 snapshot will be created in the existing file/device. If does not
1440 exist, a new file will be created. format specifies the format of the
1441 snapshot image, default is qcow2.
1443 Arguments:
1445 - "device": device name to snapshot (json-string)
1446 - "node-name": graph node name to snapshot (json-string)
1447 - "snapshot-file": name of new image file (json-string)
1448 - "snapshot-node-name": graph node name of the new snapshot (json-string)
1449 - "mode": whether and how QEMU should create the snapshot file
1450 (NewImageMode, optional, default "absolute-paths")
1451 - "format": format of new image (json-string, optional)
1453 Example:
1455 -> { "execute": "blockdev-snapshot-sync", "arguments": { "device": "ide-hd0",
1456 "snapshot-file":
1457 "/some/place/my-image",
1458 "format": "qcow2" } }
1459 <- { "return": {} }
1461 EQMP
1464 .name = "blockdev-snapshot-internal-sync",
1465 .args_type = "device:B,name:s",
1466 .mhandler.cmd_new = qmp_marshal_blockdev_snapshot_internal_sync,
1469 SQMP
1470 blockdev-snapshot-internal-sync
1471 -------------------------------
1473 Synchronously take an internal snapshot of a block device when the format of
1474 image used supports it. If the name is an empty string, or a snapshot with
1475 name already exists, the operation will fail.
1477 Arguments:
1479 - "device": device name to snapshot (json-string)
1480 - "name": name of the new snapshot (json-string)
1482 Example:
1484 -> { "execute": "blockdev-snapshot-internal-sync",
1485 "arguments": { "device": "ide-hd0",
1486 "name": "snapshot0" }
1488 <- { "return": {} }
1490 EQMP
1493 .name = "blockdev-snapshot-delete-internal-sync",
1494 .args_type = "device:B,id:s?,name:s?",
1495 .mhandler.cmd_new =
1496 qmp_marshal_blockdev_snapshot_delete_internal_sync,
1499 SQMP
1500 blockdev-snapshot-delete-internal-sync
1501 --------------------------------------
1503 Synchronously delete an internal snapshot of a block device when the format of
1504 image used supports it. The snapshot is identified by name or id or both. One
1505 of name or id is required. If the snapshot is not found, the operation will
1506 fail.
1508 Arguments:
1510 - "device": device name (json-string)
1511 - "id": ID of the snapshot (json-string, optional)
1512 - "name": name of the snapshot (json-string, optional)
1514 Example:
1516 -> { "execute": "blockdev-snapshot-delete-internal-sync",
1517 "arguments": { "device": "ide-hd0",
1518 "name": "snapshot0" }
1520 <- { "return": {
1521 "id": "1",
1522 "name": "snapshot0",
1523 "vm-state-size": 0,
1524 "date-sec": 1000012,
1525 "date-nsec": 10,
1526 "vm-clock-sec": 100,
1527 "vm-clock-nsec": 20
1531 EQMP
1534 .name = "drive-mirror",
1535 .args_type = "sync:s,device:B,target:s,speed:i?,mode:s?,format:s?,"
1536 "node-name:s?,replaces:s?,"
1537 "on-source-error:s?,on-target-error:s?,"
1538 "unmap:b?,"
1539 "granularity:i?,buf-size:i?",
1540 .mhandler.cmd_new = qmp_marshal_drive_mirror,
1543 SQMP
1544 drive-mirror
1545 ------------
1547 Start mirroring a block device's writes to a new destination. target
1548 specifies the target of the new image. If the file exists, or if it is
1549 a device, it will be used as the new destination for writes. If it does not
1550 exist, a new file will be created. format specifies the format of the
1551 mirror image, default is to probe if mode='existing', else the format
1552 of the source.
1554 Arguments:
1556 - "device": device name to operate on (json-string)
1557 - "target": name of new image file (json-string)
1558 - "format": format of new image (json-string, optional)
1559 - "node-name": the name of the new block driver state in the node graph
1560 (json-string, optional)
1561 - "replaces": the block driver node name to replace when finished
1562 (json-string, optional)
1563 - "mode": how an image file should be created into the target
1564 file/device (NewImageMode, optional, default 'absolute-paths')
1565 - "speed": maximum speed of the streaming job, in bytes per second
1566 (json-int)
1567 - "granularity": granularity of the dirty bitmap, in bytes (json-int, optional)
1568 - "buf_size": maximum amount of data in flight from source to target, in bytes
1569 (json-int, default 10M)
1570 - "sync": what parts of the disk image should be copied to the destination;
1571 possibilities include "full" for all the disk, "top" for only the sectors
1572 allocated in the topmost image, or "none" to only replicate new I/O
1573 (MirrorSyncMode).
1574 - "on-source-error": the action to take on an error on the source
1575 (BlockdevOnError, default 'report')
1576 - "on-target-error": the action to take on an error on the target
1577 (BlockdevOnError, default 'report')
1578 - "unmap": whether the target sectors should be discarded where source has only
1579 zeroes. (json-bool, optional, default true)
1581 The default value of the granularity is the image cluster size clamped
1582 between 4096 and 65536, if the image format defines one. If the format
1583 does not define a cluster size, the default value of the granularity
1584 is 65536.
1587 Example:
1589 -> { "execute": "drive-mirror", "arguments": { "device": "ide-hd0",
1590 "target": "/some/place/my-image",
1591 "sync": "full",
1592 "format": "qcow2" } }
1593 <- { "return": {} }
1595 EQMP
1598 .name = "change-backing-file",
1599 .args_type = "device:s,image-node-name:s,backing-file:s",
1600 .mhandler.cmd_new = qmp_marshal_change_backing_file,
1603 SQMP
1604 change-backing-file
1605 -------------------
1606 Since: 2.1
1608 Change the backing file in the image file metadata. This does not cause
1609 QEMU to reopen the image file to reparse the backing filename (it may,
1610 however, perform a reopen to change permissions from r/o -> r/w -> r/o,
1611 if needed). The new backing file string is written into the image file
1612 metadata, and the QEMU internal strings are updated.
1614 Arguments:
1616 - "image-node-name": The name of the block driver state node of the
1617 image to modify. The "device" is argument is used to
1618 verify "image-node-name" is in the chain described by
1619 "device".
1620 (json-string, optional)
1622 - "device": The name of the device.
1623 (json-string)
1625 - "backing-file": The string to write as the backing file. This string is
1626 not validated, so care should be taken when specifying
1627 the string or the image chain may not be able to be
1628 reopened again.
1629 (json-string)
1631 Returns: Nothing on success
1632 If "device" does not exist or cannot be determined, DeviceNotFound
1634 EQMP
1637 .name = "balloon",
1638 .args_type = "value:M",
1639 .mhandler.cmd_new = qmp_marshal_balloon,
1642 SQMP
1643 balloon
1644 -------
1646 Request VM to change its memory allocation (in bytes).
1648 Arguments:
1650 - "value": New memory allocation (json-int)
1652 Example:
1654 -> { "execute": "balloon", "arguments": { "value": 536870912 } }
1655 <- { "return": {} }
1657 EQMP
1660 .name = "set_link",
1661 .args_type = "name:s,up:b",
1662 .mhandler.cmd_new = qmp_marshal_set_link,
1665 SQMP
1666 set_link
1667 --------
1669 Change the link status of a network adapter.
1671 Arguments:
1673 - "name": network device name (json-string)
1674 - "up": status is up (json-bool)
1676 Example:
1678 -> { "execute": "set_link", "arguments": { "name": "e1000.0", "up": false } }
1679 <- { "return": {} }
1681 EQMP
1684 .name = "getfd",
1685 .args_type = "fdname:s",
1686 .params = "getfd name",
1687 .help = "receive a file descriptor via SCM rights and assign it a name",
1688 .mhandler.cmd_new = qmp_marshal_getfd,
1691 SQMP
1692 getfd
1693 -----
1695 Receive a file descriptor via SCM rights and assign it a name.
1697 Arguments:
1699 - "fdname": file descriptor name (json-string)
1701 Example:
1703 -> { "execute": "getfd", "arguments": { "fdname": "fd1" } }
1704 <- { "return": {} }
1706 Notes:
1708 (1) If the name specified by the "fdname" argument already exists,
1709 the file descriptor assigned to it will be closed and replaced
1710 by the received file descriptor.
1711 (2) The 'closefd' command can be used to explicitly close the file
1712 descriptor when it is no longer needed.
1714 EQMP
1717 .name = "closefd",
1718 .args_type = "fdname:s",
1719 .params = "closefd name",
1720 .help = "close a file descriptor previously passed via SCM rights",
1721 .mhandler.cmd_new = qmp_marshal_closefd,
1724 SQMP
1725 closefd
1726 -------
1728 Close a file descriptor previously passed via SCM rights.
1730 Arguments:
1732 - "fdname": file descriptor name (json-string)
1734 Example:
1736 -> { "execute": "closefd", "arguments": { "fdname": "fd1" } }
1737 <- { "return": {} }
1739 EQMP
1742 .name = "add-fd",
1743 .args_type = "fdset-id:i?,opaque:s?",
1744 .params = "add-fd fdset-id opaque",
1745 .help = "Add a file descriptor, that was passed via SCM rights, to an fd set",
1746 .mhandler.cmd_new = qmp_marshal_add_fd,
1749 SQMP
1750 add-fd
1751 -------
1753 Add a file descriptor, that was passed via SCM rights, to an fd set.
1755 Arguments:
1757 - "fdset-id": The ID of the fd set to add the file descriptor to.
1758 (json-int, optional)
1759 - "opaque": A free-form string that can be used to describe the fd.
1760 (json-string, optional)
1762 Return a json-object with the following information:
1764 - "fdset-id": The ID of the fd set that the fd was added to. (json-int)
1765 - "fd": The file descriptor that was received via SCM rights and added to the
1766 fd set. (json-int)
1768 Example:
1770 -> { "execute": "add-fd", "arguments": { "fdset-id": 1 } }
1771 <- { "return": { "fdset-id": 1, "fd": 3 } }
1773 Notes:
1775 (1) The list of fd sets is shared by all monitor connections.
1776 (2) If "fdset-id" is not specified, a new fd set will be created.
1778 EQMP
1781 .name = "remove-fd",
1782 .args_type = "fdset-id:i,fd:i?",
1783 .params = "remove-fd fdset-id fd",
1784 .help = "Remove a file descriptor from an fd set",
1785 .mhandler.cmd_new = qmp_marshal_remove_fd,
1788 SQMP
1789 remove-fd
1790 ---------
1792 Remove a file descriptor from an fd set.
1794 Arguments:
1796 - "fdset-id": The ID of the fd set that the file descriptor belongs to.
1797 (json-int)
1798 - "fd": The file descriptor that is to be removed. (json-int, optional)
1800 Example:
1802 -> { "execute": "remove-fd", "arguments": { "fdset-id": 1, "fd": 3 } }
1803 <- { "return": {} }
1805 Notes:
1807 (1) The list of fd sets is shared by all monitor connections.
1808 (2) If "fd" is not specified, all file descriptors in "fdset-id" will be
1809 removed.
1811 EQMP
1814 .name = "query-fdsets",
1815 .args_type = "",
1816 .help = "Return information describing all fd sets",
1817 .mhandler.cmd_new = qmp_marshal_query_fdsets,
1820 SQMP
1821 query-fdsets
1822 -------------
1824 Return information describing all fd sets.
1826 Arguments: None
1828 Example:
1830 -> { "execute": "query-fdsets" }
1831 <- { "return": [
1833 "fds": [
1835 "fd": 30,
1836 "opaque": "rdonly:/path/to/file"
1839 "fd": 24,
1840 "opaque": "rdwr:/path/to/file"
1843 "fdset-id": 1
1846 "fds": [
1848 "fd": 28
1851 "fd": 29
1854 "fdset-id": 0
1859 Note: The list of fd sets is shared by all monitor connections.
1861 EQMP
1864 .name = "block_passwd",
1865 .args_type = "device:s?,node-name:s?,password:s",
1866 .mhandler.cmd_new = qmp_marshal_block_passwd,
1869 SQMP
1870 block_passwd
1871 ------------
1873 Set the password of encrypted block devices.
1875 Arguments:
1877 - "device": device name (json-string)
1878 - "node-name": name in the block driver state graph (json-string)
1879 - "password": password (json-string)
1881 Example:
1883 -> { "execute": "block_passwd", "arguments": { "device": "ide0-hd0",
1884 "password": "12345" } }
1885 <- { "return": {} }
1887 EQMP
1890 .name = "block_set_io_throttle",
1891 .args_type = "device:B,bps:l,bps_rd:l,bps_wr:l,iops:l,iops_rd:l,iops_wr:l,bps_max:l?,bps_rd_max:l?,bps_wr_max:l?,iops_max:l?,iops_rd_max:l?,iops_wr_max:l?,iops_size:l?,group:s?",
1892 .mhandler.cmd_new = qmp_marshal_block_set_io_throttle,
1895 SQMP
1896 block_set_io_throttle
1897 ------------
1899 Change I/O throttle limits for a block drive.
1901 Arguments:
1903 - "device": device name (json-string)
1904 - "bps": total throughput limit in bytes per second (json-int)
1905 - "bps_rd": read throughput limit in bytes per second (json-int)
1906 - "bps_wr": write throughput limit in bytes per second (json-int)
1907 - "iops": total I/O operations per second (json-int)
1908 - "iops_rd": read I/O operations per second (json-int)
1909 - "iops_wr": write I/O operations per second (json-int)
1910 - "bps_max": total max in bytes (json-int)
1911 - "bps_rd_max": read max in bytes (json-int)
1912 - "bps_wr_max": write max in bytes (json-int)
1913 - "iops_max": total I/O operations max (json-int)
1914 - "iops_rd_max": read I/O operations max (json-int)
1915 - "iops_wr_max": write I/O operations max (json-int)
1916 - "iops_size": I/O size in bytes when limiting (json-int)
1917 - "group": throttle group name (json-string)
1919 Example:
1921 -> { "execute": "block_set_io_throttle", "arguments": { "device": "virtio0",
1922 "bps": 1000000,
1923 "bps_rd": 0,
1924 "bps_wr": 0,
1925 "iops": 0,
1926 "iops_rd": 0,
1927 "iops_wr": 0,
1928 "bps_max": 8000000,
1929 "bps_rd_max": 0,
1930 "bps_wr_max": 0,
1931 "iops_max": 0,
1932 "iops_rd_max": 0,
1933 "iops_wr_max": 0,
1934 "iops_size": 0 } }
1935 <- { "return": {} }
1937 EQMP
1940 .name = "set_password",
1941 .args_type = "protocol:s,password:s,connected:s?",
1942 .mhandler.cmd_new = qmp_marshal_set_password,
1945 SQMP
1946 set_password
1947 ------------
1949 Set the password for vnc/spice protocols.
1951 Arguments:
1953 - "protocol": protocol name (json-string)
1954 - "password": password (json-string)
1955 - "connected": [ keep | disconnect | fail ] (json-string, optional)
1957 Example:
1959 -> { "execute": "set_password", "arguments": { "protocol": "vnc",
1960 "password": "secret" } }
1961 <- { "return": {} }
1963 EQMP
1966 .name = "expire_password",
1967 .args_type = "protocol:s,time:s",
1968 .mhandler.cmd_new = qmp_marshal_expire_password,
1971 SQMP
1972 expire_password
1973 ---------------
1975 Set the password expire time for vnc/spice protocols.
1977 Arguments:
1979 - "protocol": protocol name (json-string)
1980 - "time": [ now | never | +secs | secs ] (json-string)
1982 Example:
1984 -> { "execute": "expire_password", "arguments": { "protocol": "vnc",
1985 "time": "+60" } }
1986 <- { "return": {} }
1988 EQMP
1991 .name = "add_client",
1992 .args_type = "protocol:s,fdname:s,skipauth:b?,tls:b?",
1993 .mhandler.cmd_new = qmp_marshal_add_client,
1996 SQMP
1997 add_client
1998 ----------
2000 Add a graphics client
2002 Arguments:
2004 - "protocol": protocol name (json-string)
2005 - "fdname": file descriptor name (json-string)
2006 - "skipauth": whether to skip authentication (json-bool, optional)
2007 - "tls": whether to perform TLS (json-bool, optional)
2009 Example:
2011 -> { "execute": "add_client", "arguments": { "protocol": "vnc",
2012 "fdname": "myclient" } }
2013 <- { "return": {} }
2015 EQMP
2017 .name = "qmp_capabilities",
2018 .args_type = "",
2019 .params = "",
2020 .help = "enable QMP capabilities",
2021 .mhandler.cmd_new = qmp_capabilities,
2024 SQMP
2025 qmp_capabilities
2026 ----------------
2028 Enable QMP capabilities.
2030 Arguments: None.
2032 Example:
2034 -> { "execute": "qmp_capabilities" }
2035 <- { "return": {} }
2037 Note: This command must be issued before issuing any other command.
2039 EQMP
2042 .name = "human-monitor-command",
2043 .args_type = "command-line:s,cpu-index:i?",
2044 .mhandler.cmd_new = qmp_marshal_human_monitor_command,
2047 SQMP
2048 human-monitor-command
2049 ---------------------
2051 Execute a Human Monitor command.
2053 Arguments:
2055 - command-line: the command name and its arguments, just like the
2056 Human Monitor's shell (json-string)
2057 - cpu-index: select the CPU number to be used by commands which access CPU
2058 data, like 'info registers'. The Monitor selects CPU 0 if this
2059 argument is not provided (json-int, optional)
2061 Example:
2063 -> { "execute": "human-monitor-command", "arguments": { "command-line": "info kvm" } }
2064 <- { "return": "kvm support: enabled\r\n" }
2066 Notes:
2068 (1) The Human Monitor is NOT an stable interface, this means that command
2069 names, arguments and responses can change or be removed at ANY time.
2070 Applications that rely on long term stability guarantees should NOT
2071 use this command
2073 (2) Limitations:
2075 o This command is stateless, this means that commands that depend
2076 on state information (such as getfd) might not work
2078 o Commands that prompt the user for data (eg. 'cont' when the block
2079 device is encrypted) don't currently work
2081 3. Query Commands
2082 =================
2084 HXCOMM Each query command below is inside a SQMP/EQMP section, do NOT change
2085 HXCOMM this! We will possibly move query commands definitions inside those
2086 HXCOMM sections, just like regular commands.
2088 EQMP
2090 SQMP
2091 query-version
2092 -------------
2094 Show QEMU version.
2096 Return a json-object with the following information:
2098 - "qemu": A json-object containing three integer values:
2099 - "major": QEMU's major version (json-int)
2100 - "minor": QEMU's minor version (json-int)
2101 - "micro": QEMU's micro version (json-int)
2102 - "package": package's version (json-string)
2104 Example:
2106 -> { "execute": "query-version" }
2107 <- {
2108 "return":{
2109 "qemu":{
2110 "major":0,
2111 "minor":11,
2112 "micro":5
2114 "package":""
2118 EQMP
2121 .name = "query-version",
2122 .args_type = "",
2123 .mhandler.cmd_new = qmp_marshal_query_version,
2126 SQMP
2127 query-commands
2128 --------------
2130 List QMP available commands.
2132 Each command is represented by a json-object, the returned value is a json-array
2133 of all commands.
2135 Each json-object contain:
2137 - "name": command's name (json-string)
2139 Example:
2141 -> { "execute": "query-commands" }
2142 <- {
2143 "return":[
2145 "name":"query-balloon"
2148 "name":"system_powerdown"
2153 Note: This example has been shortened as the real response is too long.
2155 EQMP
2158 .name = "query-commands",
2159 .args_type = "",
2160 .mhandler.cmd_new = qmp_marshal_query_commands,
2163 SQMP
2164 query-events
2165 --------------
2167 List QMP available events.
2169 Each event is represented by a json-object, the returned value is a json-array
2170 of all events.
2172 Each json-object contains:
2174 - "name": event's name (json-string)
2176 Example:
2178 -> { "execute": "query-events" }
2179 <- {
2180 "return":[
2182 "name":"SHUTDOWN"
2185 "name":"RESET"
2190 Note: This example has been shortened as the real response is too long.
2192 EQMP
2195 .name = "query-events",
2196 .args_type = "",
2197 .mhandler.cmd_new = qmp_marshal_query_events,
2200 SQMP
2201 query-qmp-schema
2202 ----------------
2204 Return the QMP wire schema. The returned value is a json-array of
2205 named schema entities. Entities are commands, events and various
2206 types. See docs/qapi-code-gen.txt for information on their structure
2207 and intended use.
2209 EQMP
2212 .name = "query-qmp-schema",
2213 .args_type = "",
2214 .mhandler.cmd_new = qmp_query_qmp_schema,
2217 SQMP
2218 query-chardev
2219 -------------
2221 Each device is represented by a json-object. The returned value is a json-array
2222 of all devices.
2224 Each json-object contain the following:
2226 - "label": device's label (json-string)
2227 - "filename": device's file (json-string)
2228 - "frontend-open": open/closed state of the frontend device attached to this
2229 backend (json-bool)
2231 Example:
2233 -> { "execute": "query-chardev" }
2234 <- {
2235 "return": [
2237 "label": "charchannel0",
2238 "filename": "unix:/var/lib/libvirt/qemu/seabios.rhel6.agent,server",
2239 "frontend-open": false
2242 "label": "charmonitor",
2243 "filename": "unix:/var/lib/libvirt/qemu/seabios.rhel6.monitor,server",
2244 "frontend-open": true
2247 "label": "charserial0",
2248 "filename": "pty:/dev/pts/2",
2249 "frontend-open": true
2254 EQMP
2257 .name = "query-chardev",
2258 .args_type = "",
2259 .mhandler.cmd_new = qmp_marshal_query_chardev,
2262 SQMP
2263 query-chardev-backends
2264 -------------
2266 List available character device backends.
2268 Each backend is represented by a json-object, the returned value is a json-array
2269 of all backends.
2271 Each json-object contains:
2273 - "name": backend name (json-string)
2275 Example:
2277 -> { "execute": "query-chardev-backends" }
2278 <- {
2279 "return":[
2281 "name":"udp"
2284 "name":"tcp"
2287 "name":"unix"
2290 "name":"spiceport"
2295 EQMP
2298 .name = "query-chardev-backends",
2299 .args_type = "",
2300 .mhandler.cmd_new = qmp_marshal_query_chardev_backends,
2303 SQMP
2304 query-block
2305 -----------
2307 Show the block devices.
2309 Each block device information is stored in a json-object and the returned value
2310 is a json-array of all devices.
2312 Each json-object contain the following:
2314 - "device": device name (json-string)
2315 - "type": device type (json-string)
2316 - deprecated, retained for backward compatibility
2317 - Possible values: "unknown"
2318 - "removable": true if the device is removable, false otherwise (json-bool)
2319 - "locked": true if the device is locked, false otherwise (json-bool)
2320 - "tray_open": only present if removable, true if the device has a tray,
2321 and it is open (json-bool)
2322 - "inserted": only present if the device is inserted, it is a json-object
2323 containing the following:
2324 - "file": device file name (json-string)
2325 - "ro": true if read-only, false otherwise (json-bool)
2326 - "drv": driver format name (json-string)
2327 - Possible values: "blkdebug", "bochs", "cloop", "dmg",
2328 "file", "file", "ftp", "ftps", "host_cdrom",
2329 "host_device", "http", "https",
2330 "nbd", "parallels", "qcow", "qcow2", "raw",
2331 "tftp", "vdi", "vmdk", "vpc", "vvfat"
2332 - "backing_file": backing file name (json-string, optional)
2333 - "backing_file_depth": number of files in the backing file chain (json-int)
2334 - "encrypted": true if encrypted, false otherwise (json-bool)
2335 - "bps": limit total bytes per second (json-int)
2336 - "bps_rd": limit read bytes per second (json-int)
2337 - "bps_wr": limit write bytes per second (json-int)
2338 - "iops": limit total I/O operations per second (json-int)
2339 - "iops_rd": limit read operations per second (json-int)
2340 - "iops_wr": limit write operations per second (json-int)
2341 - "bps_max": total max in bytes (json-int)
2342 - "bps_rd_max": read max in bytes (json-int)
2343 - "bps_wr_max": write max in bytes (json-int)
2344 - "iops_max": total I/O operations max (json-int)
2345 - "iops_rd_max": read I/O operations max (json-int)
2346 - "iops_wr_max": write I/O operations max (json-int)
2347 - "iops_size": I/O size when limiting by iops (json-int)
2348 - "detect_zeroes": detect and optimize zero writing (json-string)
2349 - Possible values: "off", "on", "unmap"
2350 - "write_threshold": write offset threshold in bytes, a event will be
2351 emitted if crossed. Zero if disabled (json-int)
2352 - "image": the detail of the image, it is a json-object containing
2353 the following:
2354 - "filename": image file name (json-string)
2355 - "format": image format (json-string)
2356 - "virtual-size": image capacity in bytes (json-int)
2357 - "dirty-flag": true if image is not cleanly closed, not present
2358 means clean (json-bool, optional)
2359 - "actual-size": actual size on disk in bytes of the image, not
2360 present when image does not support thin
2361 provision (json-int, optional)
2362 - "cluster-size": size of a cluster in bytes, not present if image
2363 format does not support it (json-int, optional)
2364 - "encrypted": true if the image is encrypted, not present means
2365 false or the image format does not support
2366 encryption (json-bool, optional)
2367 - "backing_file": backing file name, not present means no backing
2368 file is used or the image format does not
2369 support backing file chain
2370 (json-string, optional)
2371 - "full-backing-filename": full path of the backing file, not
2372 present if it equals backing_file or no
2373 backing file is used
2374 (json-string, optional)
2375 - "backing-filename-format": the format of the backing file, not
2376 present means unknown or no backing
2377 file (json-string, optional)
2378 - "snapshots": the internal snapshot info, it is an optional list
2379 of json-object containing the following:
2380 - "id": unique snapshot id (json-string)
2381 - "name": snapshot name (json-string)
2382 - "vm-state-size": size of the VM state in bytes (json-int)
2383 - "date-sec": UTC date of the snapshot in seconds (json-int)
2384 - "date-nsec": fractional part in nanoseconds to be used with
2385 date-sec (json-int)
2386 - "vm-clock-sec": VM clock relative to boot in seconds
2387 (json-int)
2388 - "vm-clock-nsec": fractional part in nanoseconds to be used
2389 with vm-clock-sec (json-int)
2390 - "backing-image": the detail of the backing image, it is an
2391 optional json-object only present when a
2392 backing image present for this image
2394 - "io-status": I/O operation status, only present if the device supports it
2395 and the VM is configured to stop on errors. It's always reset
2396 to "ok" when the "cont" command is issued (json_string, optional)
2397 - Possible values: "ok", "failed", "nospace"
2399 Example:
2401 -> { "execute": "query-block" }
2402 <- {
2403 "return":[
2405 "io-status": "ok",
2406 "device":"ide0-hd0",
2407 "locked":false,
2408 "removable":false,
2409 "inserted":{
2410 "ro":false,
2411 "drv":"qcow2",
2412 "encrypted":false,
2413 "file":"disks/test.qcow2",
2414 "backing_file_depth":1,
2415 "bps":1000000,
2416 "bps_rd":0,
2417 "bps_wr":0,
2418 "iops":1000000,
2419 "iops_rd":0,
2420 "iops_wr":0,
2421 "bps_max": 8000000,
2422 "bps_rd_max": 0,
2423 "bps_wr_max": 0,
2424 "iops_max": 0,
2425 "iops_rd_max": 0,
2426 "iops_wr_max": 0,
2427 "iops_size": 0,
2428 "detect_zeroes": "on",
2429 "write_threshold": 0,
2430 "image":{
2431 "filename":"disks/test.qcow2",
2432 "format":"qcow2",
2433 "virtual-size":2048000,
2434 "backing_file":"base.qcow2",
2435 "full-backing-filename":"disks/base.qcow2",
2436 "backing-filename-format":"qcow2",
2437 "snapshots":[
2439 "id": "1",
2440 "name": "snapshot1",
2441 "vm-state-size": 0,
2442 "date-sec": 10000200,
2443 "date-nsec": 12,
2444 "vm-clock-sec": 206,
2445 "vm-clock-nsec": 30
2448 "backing-image":{
2449 "filename":"disks/base.qcow2",
2450 "format":"qcow2",
2451 "virtual-size":2048000
2455 "type":"unknown"
2458 "io-status": "ok",
2459 "device":"ide1-cd0",
2460 "locked":false,
2461 "removable":true,
2462 "type":"unknown"
2465 "device":"floppy0",
2466 "locked":false,
2467 "removable":true,
2468 "type":"unknown"
2471 "device":"sd0",
2472 "locked":false,
2473 "removable":true,
2474 "type":"unknown"
2479 EQMP
2482 .name = "query-block",
2483 .args_type = "",
2484 .mhandler.cmd_new = qmp_marshal_query_block,
2487 SQMP
2488 query-blockstats
2489 ----------------
2491 Show block device statistics.
2493 Each device statistic information is stored in a json-object and the returned
2494 value is a json-array of all devices.
2496 Each json-object contain the following:
2498 - "device": device name (json-string)
2499 - "stats": A json-object with the statistics information, it contains:
2500 - "rd_bytes": bytes read (json-int)
2501 - "wr_bytes": bytes written (json-int)
2502 - "rd_operations": read operations (json-int)
2503 - "wr_operations": write operations (json-int)
2504 - "flush_operations": cache flush operations (json-int)
2505 - "wr_total_time_ns": total time spend on writes in nano-seconds (json-int)
2506 - "rd_total_time_ns": total time spend on reads in nano-seconds (json-int)
2507 - "flush_total_time_ns": total time spend on cache flushes in nano-seconds (json-int)
2508 - "wr_highest_offset": Highest offset of a sector written since the
2509 BlockDriverState has been opened (json-int)
2510 - "rd_merged": number of read requests that have been merged into
2511 another request (json-int)
2512 - "wr_merged": number of write requests that have been merged into
2513 another request (json-int)
2514 - "parent": Contains recursively the statistics of the underlying
2515 protocol (e.g. the host file for a qcow2 image). If there is
2516 no underlying protocol, this field is omitted
2517 (json-object, optional)
2519 Example:
2521 -> { "execute": "query-blockstats" }
2522 <- {
2523 "return":[
2525 "device":"ide0-hd0",
2526 "parent":{
2527 "stats":{
2528 "wr_highest_offset":3686448128,
2529 "wr_bytes":9786368,
2530 "wr_operations":751,
2531 "rd_bytes":122567168,
2532 "rd_operations":36772
2533 "wr_total_times_ns":313253456
2534 "rd_total_times_ns":3465673657
2535 "flush_total_times_ns":49653
2536 "flush_operations":61,
2537 "rd_merged":0,
2538 "wr_merged":0
2541 "stats":{
2542 "wr_highest_offset":2821110784,
2543 "wr_bytes":9786368,
2544 "wr_operations":692,
2545 "rd_bytes":122739200,
2546 "rd_operations":36604
2547 "flush_operations":51,
2548 "wr_total_times_ns":313253456
2549 "rd_total_times_ns":3465673657
2550 "flush_total_times_ns":49653,
2551 "rd_merged":0,
2552 "wr_merged":0
2556 "device":"ide1-cd0",
2557 "stats":{
2558 "wr_highest_offset":0,
2559 "wr_bytes":0,
2560 "wr_operations":0,
2561 "rd_bytes":0,
2562 "rd_operations":0
2563 "flush_operations":0,
2564 "wr_total_times_ns":0
2565 "rd_total_times_ns":0
2566 "flush_total_times_ns":0,
2567 "rd_merged":0,
2568 "wr_merged":0
2572 "device":"floppy0",
2573 "stats":{
2574 "wr_highest_offset":0,
2575 "wr_bytes":0,
2576 "wr_operations":0,
2577 "rd_bytes":0,
2578 "rd_operations":0
2579 "flush_operations":0,
2580 "wr_total_times_ns":0
2581 "rd_total_times_ns":0
2582 "flush_total_times_ns":0,
2583 "rd_merged":0,
2584 "wr_merged":0
2588 "device":"sd0",
2589 "stats":{
2590 "wr_highest_offset":0,
2591 "wr_bytes":0,
2592 "wr_operations":0,
2593 "rd_bytes":0,
2594 "rd_operations":0
2595 "flush_operations":0,
2596 "wr_total_times_ns":0
2597 "rd_total_times_ns":0
2598 "flush_total_times_ns":0,
2599 "rd_merged":0,
2600 "wr_merged":0
2606 EQMP
2609 .name = "query-blockstats",
2610 .args_type = "query-nodes:b?",
2611 .mhandler.cmd_new = qmp_marshal_query_blockstats,
2614 SQMP
2615 query-cpus
2616 ----------
2618 Show CPU information.
2620 Return a json-array. Each CPU is represented by a json-object, which contains:
2622 - "CPU": CPU index (json-int)
2623 - "current": true if this is the current CPU, false otherwise (json-bool)
2624 - "halted": true if the cpu is halted, false otherwise (json-bool)
2625 - "qom_path": path to the CPU object in the QOM tree (json-str)
2626 - Current program counter. The key's name depends on the architecture:
2627 "pc": i386/x86_64 (json-int)
2628 "nip": PPC (json-int)
2629 "pc" and "npc": sparc (json-int)
2630 "PC": mips (json-int)
2631 - "thread_id": ID of the underlying host thread (json-int)
2633 Example:
2635 -> { "execute": "query-cpus" }
2636 <- {
2637 "return":[
2639 "CPU":0,
2640 "current":true,
2641 "halted":false,
2642 "qom_path":"/machine/unattached/device[0]",
2643 "pc":3227107138,
2644 "thread_id":3134
2647 "CPU":1,
2648 "current":false,
2649 "halted":true,
2650 "qom_path":"/machine/unattached/device[2]",
2651 "pc":7108165,
2652 "thread_id":3135
2657 EQMP
2660 .name = "query-cpus",
2661 .args_type = "",
2662 .mhandler.cmd_new = qmp_marshal_query_cpus,
2665 SQMP
2666 query-iothreads
2667 ---------------
2669 Returns a list of information about each iothread.
2671 Note this list excludes the QEMU main loop thread, which is not declared
2672 using the -object iothread command-line option. It is always the main thread
2673 of the process.
2675 Return a json-array. Each iothread is represented by a json-object, which contains:
2677 - "id": name of iothread (json-str)
2678 - "thread-id": ID of the underlying host thread (json-int)
2680 Example:
2682 -> { "execute": "query-iothreads" }
2683 <- {
2684 "return":[
2686 "id":"iothread0",
2687 "thread-id":3134
2690 "id":"iothread1",
2691 "thread-id":3135
2696 EQMP
2699 .name = "query-iothreads",
2700 .args_type = "",
2701 .mhandler.cmd_new = qmp_marshal_query_iothreads,
2704 SQMP
2705 query-pci
2706 ---------
2708 PCI buses and devices information.
2710 The returned value is a json-array of all buses. Each bus is represented by
2711 a json-object, which has a key with a json-array of all PCI devices attached
2712 to it. Each device is represented by a json-object.
2714 The bus json-object contains the following:
2716 - "bus": bus number (json-int)
2717 - "devices": a json-array of json-objects, each json-object represents a
2718 PCI device
2720 The PCI device json-object contains the following:
2722 - "bus": identical to the parent's bus number (json-int)
2723 - "slot": slot number (json-int)
2724 - "function": function number (json-int)
2725 - "class_info": a json-object containing:
2726 - "desc": device class description (json-string, optional)
2727 - "class": device class number (json-int)
2728 - "id": a json-object containing:
2729 - "device": device ID (json-int)
2730 - "vendor": vendor ID (json-int)
2731 - "irq": device's IRQ if assigned (json-int, optional)
2732 - "qdev_id": qdev id string (json-string)
2733 - "pci_bridge": It's a json-object, only present if this device is a
2734 PCI bridge, contains:
2735 - "bus": bus number (json-int)
2736 - "secondary": secondary bus number (json-int)
2737 - "subordinate": subordinate bus number (json-int)
2738 - "io_range": I/O memory range information, a json-object with the
2739 following members:
2740 - "base": base address, in bytes (json-int)
2741 - "limit": limit address, in bytes (json-int)
2742 - "memory_range": memory range information, a json-object with the
2743 following members:
2744 - "base": base address, in bytes (json-int)
2745 - "limit": limit address, in bytes (json-int)
2746 - "prefetchable_range": Prefetchable memory range information, a
2747 json-object with the following members:
2748 - "base": base address, in bytes (json-int)
2749 - "limit": limit address, in bytes (json-int)
2750 - "devices": a json-array of PCI devices if there's any attached, each
2751 each element is represented by a json-object, which contains
2752 the same members of the 'PCI device json-object' described
2753 above (optional)
2754 - "regions": a json-array of json-objects, each json-object represents a
2755 memory region of this device
2757 The memory range json-object contains the following:
2759 - "base": base memory address (json-int)
2760 - "limit": limit value (json-int)
2762 The region json-object can be an I/O region or a memory region, an I/O region
2763 json-object contains the following:
2765 - "type": "io" (json-string, fixed)
2766 - "bar": BAR number (json-int)
2767 - "address": memory address (json-int)
2768 - "size": memory size (json-int)
2770 A memory region json-object contains the following:
2772 - "type": "memory" (json-string, fixed)
2773 - "bar": BAR number (json-int)
2774 - "address": memory address (json-int)
2775 - "size": memory size (json-int)
2776 - "mem_type_64": true or false (json-bool)
2777 - "prefetch": true or false (json-bool)
2779 Example:
2781 -> { "execute": "query-pci" }
2782 <- {
2783 "return":[
2785 "bus":0,
2786 "devices":[
2788 "bus":0,
2789 "qdev_id":"",
2790 "slot":0,
2791 "class_info":{
2792 "class":1536,
2793 "desc":"Host bridge"
2795 "id":{
2796 "device":32902,
2797 "vendor":4663
2799 "function":0,
2800 "regions":[
2805 "bus":0,
2806 "qdev_id":"",
2807 "slot":1,
2808 "class_info":{
2809 "class":1537,
2810 "desc":"ISA bridge"
2812 "id":{
2813 "device":32902,
2814 "vendor":28672
2816 "function":0,
2817 "regions":[
2822 "bus":0,
2823 "qdev_id":"",
2824 "slot":1,
2825 "class_info":{
2826 "class":257,
2827 "desc":"IDE controller"
2829 "id":{
2830 "device":32902,
2831 "vendor":28688
2833 "function":1,
2834 "regions":[
2836 "bar":4,
2837 "size":16,
2838 "address":49152,
2839 "type":"io"
2844 "bus":0,
2845 "qdev_id":"",
2846 "slot":2,
2847 "class_info":{
2848 "class":768,
2849 "desc":"VGA controller"
2851 "id":{
2852 "device":4115,
2853 "vendor":184
2855 "function":0,
2856 "regions":[
2858 "prefetch":true,
2859 "mem_type_64":false,
2860 "bar":0,
2861 "size":33554432,
2862 "address":4026531840,
2863 "type":"memory"
2866 "prefetch":false,
2867 "mem_type_64":false,
2868 "bar":1,
2869 "size":4096,
2870 "address":4060086272,
2871 "type":"memory"
2874 "prefetch":false,
2875 "mem_type_64":false,
2876 "bar":6,
2877 "size":65536,
2878 "address":-1,
2879 "type":"memory"
2884 "bus":0,
2885 "qdev_id":"",
2886 "irq":11,
2887 "slot":4,
2888 "class_info":{
2889 "class":1280,
2890 "desc":"RAM controller"
2892 "id":{
2893 "device":6900,
2894 "vendor":4098
2896 "function":0,
2897 "regions":[
2899 "bar":0,
2900 "size":32,
2901 "address":49280,
2902 "type":"io"
2911 Note: This example has been shortened as the real response is too long.
2913 EQMP
2916 .name = "query-pci",
2917 .args_type = "",
2918 .mhandler.cmd_new = qmp_marshal_query_pci,
2921 SQMP
2922 query-kvm
2923 ---------
2925 Show KVM information.
2927 Return a json-object with the following information:
2929 - "enabled": true if KVM support is enabled, false otherwise (json-bool)
2930 - "present": true if QEMU has KVM support, false otherwise (json-bool)
2932 Example:
2934 -> { "execute": "query-kvm" }
2935 <- { "return": { "enabled": true, "present": true } }
2937 EQMP
2940 .name = "query-kvm",
2941 .args_type = "",
2942 .mhandler.cmd_new = qmp_marshal_query_kvm,
2945 SQMP
2946 query-status
2947 ------------
2949 Return a json-object with the following information:
2951 - "running": true if the VM is running, or false if it is paused (json-bool)
2952 - "singlestep": true if the VM is in single step mode,
2953 false otherwise (json-bool)
2954 - "status": one of the following values (json-string)
2955 "debug" - QEMU is running on a debugger
2956 "inmigrate" - guest is paused waiting for an incoming migration
2957 "internal-error" - An internal error that prevents further guest
2958 execution has occurred
2959 "io-error" - the last IOP has failed and the device is configured
2960 to pause on I/O errors
2961 "paused" - guest has been paused via the 'stop' command
2962 "postmigrate" - guest is paused following a successful 'migrate'
2963 "prelaunch" - QEMU was started with -S and guest has not started
2964 "finish-migrate" - guest is paused to finish the migration process
2965 "restore-vm" - guest is paused to restore VM state
2966 "running" - guest is actively running
2967 "save-vm" - guest is paused to save the VM state
2968 "shutdown" - guest is shut down (and -no-shutdown is in use)
2969 "watchdog" - the watchdog action is configured to pause and
2970 has been triggered
2972 Example:
2974 -> { "execute": "query-status" }
2975 <- { "return": { "running": true, "singlestep": false, "status": "running" } }
2977 EQMP
2980 .name = "query-status",
2981 .args_type = "",
2982 .mhandler.cmd_new = qmp_marshal_query_status,
2985 SQMP
2986 query-mice
2987 ----------
2989 Show VM mice information.
2991 Each mouse is represented by a json-object, the returned value is a json-array
2992 of all mice.
2994 The mouse json-object contains the following:
2996 - "name": mouse's name (json-string)
2997 - "index": mouse's index (json-int)
2998 - "current": true if this mouse is receiving events, false otherwise (json-bool)
2999 - "absolute": true if the mouse generates absolute input events (json-bool)
3001 Example:
3003 -> { "execute": "query-mice" }
3004 <- {
3005 "return":[
3007 "name":"QEMU Microsoft Mouse",
3008 "index":0,
3009 "current":false,
3010 "absolute":false
3013 "name":"QEMU PS/2 Mouse",
3014 "index":1,
3015 "current":true,
3016 "absolute":true
3021 EQMP
3024 .name = "query-mice",
3025 .args_type = "",
3026 .mhandler.cmd_new = qmp_marshal_query_mice,
3029 SQMP
3030 query-vnc
3031 ---------
3033 Show VNC server information.
3035 Return a json-object with server information. Connected clients are returned
3036 as a json-array of json-objects.
3038 The main json-object contains the following:
3040 - "enabled": true or false (json-bool)
3041 - "host": server's IP address (json-string)
3042 - "family": address family (json-string)
3043 - Possible values: "ipv4", "ipv6", "unix", "unknown"
3044 - "service": server's port number (json-string)
3045 - "auth": authentication method (json-string)
3046 - Possible values: "invalid", "none", "ra2", "ra2ne", "sasl", "tight",
3047 "tls", "ultra", "unknown", "vencrypt", "vencrypt",
3048 "vencrypt+plain", "vencrypt+tls+none",
3049 "vencrypt+tls+plain", "vencrypt+tls+sasl",
3050 "vencrypt+tls+vnc", "vencrypt+x509+none",
3051 "vencrypt+x509+plain", "vencrypt+x509+sasl",
3052 "vencrypt+x509+vnc", "vnc"
3053 - "clients": a json-array of all connected clients
3055 Clients are described by a json-object, each one contain the following:
3057 - "host": client's IP address (json-string)
3058 - "family": address family (json-string)
3059 - Possible values: "ipv4", "ipv6", "unix", "unknown"
3060 - "service": client's port number (json-string)
3061 - "x509_dname": TLS dname (json-string, optional)
3062 - "sasl_username": SASL username (json-string, optional)
3064 Example:
3066 -> { "execute": "query-vnc" }
3067 <- {
3068 "return":{
3069 "enabled":true,
3070 "host":"0.0.0.0",
3071 "service":"50402",
3072 "auth":"vnc",
3073 "family":"ipv4",
3074 "clients":[
3076 "host":"127.0.0.1",
3077 "service":"50401",
3078 "family":"ipv4"
3084 EQMP
3087 .name = "query-vnc",
3088 .args_type = "",
3089 .mhandler.cmd_new = qmp_marshal_query_vnc,
3092 .name = "query-vnc-servers",
3093 .args_type = "",
3094 .mhandler.cmd_new = qmp_marshal_query_vnc_servers,
3097 SQMP
3098 query-spice
3099 -----------
3101 Show SPICE server information.
3103 Return a json-object with server information. Connected clients are returned
3104 as a json-array of json-objects.
3106 The main json-object contains the following:
3108 - "enabled": true or false (json-bool)
3109 - "host": server's IP address (json-string)
3110 - "port": server's port number (json-int, optional)
3111 - "tls-port": server's port number (json-int, optional)
3112 - "auth": authentication method (json-string)
3113 - Possible values: "none", "spice"
3114 - "channels": a json-array of all active channels clients
3116 Channels are described by a json-object, each one contain the following:
3118 - "host": client's IP address (json-string)
3119 - "family": address family (json-string)
3120 - Possible values: "ipv4", "ipv6", "unix", "unknown"
3121 - "port": client's port number (json-string)
3122 - "connection-id": spice connection id. All channels with the same id
3123 belong to the same spice session (json-int)
3124 - "channel-type": channel type. "1" is the main control channel, filter for
3125 this one if you want track spice sessions only (json-int)
3126 - "channel-id": channel id. Usually "0", might be different needed when
3127 multiple channels of the same type exist, such as multiple
3128 display channels in a multihead setup (json-int)
3129 - "tls": whether the channel is encrypted (json-bool)
3131 Example:
3133 -> { "execute": "query-spice" }
3134 <- {
3135 "return": {
3136 "enabled": true,
3137 "auth": "spice",
3138 "port": 5920,
3139 "tls-port": 5921,
3140 "host": "0.0.0.0",
3141 "channels": [
3143 "port": "54924",
3144 "family": "ipv4",
3145 "channel-type": 1,
3146 "connection-id": 1804289383,
3147 "host": "127.0.0.1",
3148 "channel-id": 0,
3149 "tls": true
3152 "port": "36710",
3153 "family": "ipv4",
3154 "channel-type": 4,
3155 "connection-id": 1804289383,
3156 "host": "127.0.0.1",
3157 "channel-id": 0,
3158 "tls": false
3160 [ ... more channels follow ... ]
3165 EQMP
3167 #if defined(CONFIG_SPICE)
3169 .name = "query-spice",
3170 .args_type = "",
3171 .mhandler.cmd_new = qmp_marshal_query_spice,
3173 #endif
3175 SQMP
3176 query-name
3177 ----------
3179 Show VM name.
3181 Return a json-object with the following information:
3183 - "name": VM's name (json-string, optional)
3185 Example:
3187 -> { "execute": "query-name" }
3188 <- { "return": { "name": "qemu-name" } }
3190 EQMP
3193 .name = "query-name",
3194 .args_type = "",
3195 .mhandler.cmd_new = qmp_marshal_query_name,
3198 SQMP
3199 query-uuid
3200 ----------
3202 Show VM UUID.
3204 Return a json-object with the following information:
3206 - "UUID": Universally Unique Identifier (json-string)
3208 Example:
3210 -> { "execute": "query-uuid" }
3211 <- { "return": { "UUID": "550e8400-e29b-41d4-a716-446655440000" } }
3213 EQMP
3216 .name = "query-uuid",
3217 .args_type = "",
3218 .mhandler.cmd_new = qmp_marshal_query_uuid,
3221 SQMP
3222 query-command-line-options
3223 --------------------------
3225 Show command line option schema.
3227 Return a json-array of command line option schema for all options (or for
3228 the given option), returning an error if the given option doesn't exist.
3230 Each array entry contains the following:
3232 - "option": option name (json-string)
3233 - "parameters": a json-array describes all parameters of the option:
3234 - "name": parameter name (json-string)
3235 - "type": parameter type (one of 'string', 'boolean', 'number',
3236 or 'size')
3237 - "help": human readable description of the parameter
3238 (json-string, optional)
3239 - "default": default value string for the parameter
3240 (json-string, optional)
3242 Example:
3244 -> { "execute": "query-command-line-options", "arguments": { "option": "option-rom" } }
3245 <- { "return": [
3247 "parameters": [
3249 "name": "romfile",
3250 "type": "string"
3253 "name": "bootindex",
3254 "type": "number"
3257 "option": "option-rom"
3262 EQMP
3265 .name = "query-command-line-options",
3266 .args_type = "option:s?",
3267 .mhandler.cmd_new = qmp_marshal_query_command_line_options,
3270 SQMP
3271 query-migrate
3272 -------------
3274 Migration status.
3276 Return a json-object. If migration is active there will be another json-object
3277 with RAM migration status and if block migration is active another one with
3278 block migration status.
3280 The main json-object contains the following:
3282 - "status": migration status (json-string)
3283 - Possible values: "setup", "active", "completed", "failed", "cancelled"
3284 - "total-time": total amount of ms since migration started. If
3285 migration has ended, it returns the total migration
3286 time (json-int)
3287 - "setup-time" amount of setup time in milliseconds _before_ the
3288 iterations begin but _after_ the QMP command is issued.
3289 This is designed to provide an accounting of any activities
3290 (such as RDMA pinning) which may be expensive, but do not
3291 actually occur during the iterative migration rounds
3292 themselves. (json-int)
3293 - "downtime": only present when migration has finished correctly
3294 total amount in ms for downtime that happened (json-int)
3295 - "expected-downtime": only present while migration is active
3296 total amount in ms for downtime that was calculated on
3297 the last bitmap round (json-int)
3298 - "ram": only present if "status" is "active", it is a json-object with the
3299 following RAM information:
3300 - "transferred": amount transferred in bytes (json-int)
3301 - "remaining": amount remaining to transfer in bytes (json-int)
3302 - "total": total amount of memory in bytes (json-int)
3303 - "duplicate": number of pages filled entirely with the same
3304 byte (json-int)
3305 These are sent over the wire much more efficiently.
3306 - "skipped": number of skipped zero pages (json-int)
3307 - "normal" : number of whole pages transferred. I.e. they
3308 were not sent as duplicate or xbzrle pages (json-int)
3309 - "normal-bytes" : number of bytes transferred in whole
3310 pages. This is just normal pages times size of one page,
3311 but this way upper levels don't need to care about page
3312 size (json-int)
3313 - "dirty-sync-count": times that dirty ram was synchronized (json-int)
3314 - "disk": only present if "status" is "active" and it is a block migration,
3315 it is a json-object with the following disk information:
3316 - "transferred": amount transferred in bytes (json-int)
3317 - "remaining": amount remaining to transfer in bytes json-int)
3318 - "total": total disk size in bytes (json-int)
3319 - "xbzrle-cache": only present if XBZRLE is active.
3320 It is a json-object with the following XBZRLE information:
3321 - "cache-size": XBZRLE cache size in bytes
3322 - "bytes": number of bytes transferred for XBZRLE compressed pages
3323 - "pages": number of XBZRLE compressed pages
3324 - "cache-miss": number of XBRZRLE page cache misses
3325 - "cache-miss-rate": rate of XBRZRLE page cache misses
3326 - "overflow": number of times XBZRLE overflows. This means
3327 that the XBZRLE encoding was bigger than just sent the
3328 whole page, and then we sent the whole page instead (as as
3329 normal page).
3331 Examples:
3333 1. Before the first migration
3335 -> { "execute": "query-migrate" }
3336 <- { "return": {} }
3338 2. Migration is done and has succeeded
3340 -> { "execute": "query-migrate" }
3341 <- { "return": {
3342 "status": "completed",
3343 "ram":{
3344 "transferred":123,
3345 "remaining":123,
3346 "total":246,
3347 "total-time":12345,
3348 "setup-time":12345,
3349 "downtime":12345,
3350 "duplicate":123,
3351 "normal":123,
3352 "normal-bytes":123456,
3353 "dirty-sync-count":15
3358 3. Migration is done and has failed
3360 -> { "execute": "query-migrate" }
3361 <- { "return": { "status": "failed" } }
3363 4. Migration is being performed and is not a block migration:
3365 -> { "execute": "query-migrate" }
3366 <- {
3367 "return":{
3368 "status":"active",
3369 "ram":{
3370 "transferred":123,
3371 "remaining":123,
3372 "total":246,
3373 "total-time":12345,
3374 "setup-time":12345,
3375 "expected-downtime":12345,
3376 "duplicate":123,
3377 "normal":123,
3378 "normal-bytes":123456,
3379 "dirty-sync-count":15
3384 5. Migration is being performed and is a block migration:
3386 -> { "execute": "query-migrate" }
3387 <- {
3388 "return":{
3389 "status":"active",
3390 "ram":{
3391 "total":1057024,
3392 "remaining":1053304,
3393 "transferred":3720,
3394 "total-time":12345,
3395 "setup-time":12345,
3396 "expected-downtime":12345,
3397 "duplicate":123,
3398 "normal":123,
3399 "normal-bytes":123456,
3400 "dirty-sync-count":15
3402 "disk":{
3403 "total":20971520,
3404 "remaining":20880384,
3405 "transferred":91136
3410 6. Migration is being performed and XBZRLE is active:
3412 -> { "execute": "query-migrate" }
3413 <- {
3414 "return":{
3415 "status":"active",
3416 "capabilities" : [ { "capability": "xbzrle", "state" : true } ],
3417 "ram":{
3418 "total":1057024,
3419 "remaining":1053304,
3420 "transferred":3720,
3421 "total-time":12345,
3422 "setup-time":12345,
3423 "expected-downtime":12345,
3424 "duplicate":10,
3425 "normal":3333,
3426 "normal-bytes":3412992,
3427 "dirty-sync-count":15
3429 "xbzrle-cache":{
3430 "cache-size":67108864,
3431 "bytes":20971520,
3432 "pages":2444343,
3433 "cache-miss":2244,
3434 "cache-miss-rate":0.123,
3435 "overflow":34434
3440 EQMP
3443 .name = "query-migrate",
3444 .args_type = "",
3445 .mhandler.cmd_new = qmp_marshal_query_migrate,
3448 SQMP
3449 migrate-set-capabilities
3450 ------------------------
3452 Enable/Disable migration capabilities
3454 - "xbzrle": XBZRLE support
3455 - "rdma-pin-all": pin all pages when using RDMA during migration
3456 - "auto-converge": throttle down guest to help convergence of migration
3457 - "zero-blocks": compress zero blocks during block migration
3458 - "events": generate events for each migration state change
3460 Arguments:
3462 Example:
3464 -> { "execute": "migrate-set-capabilities" , "arguments":
3465 { "capabilities": [ { "capability": "xbzrle", "state": true } ] } }
3467 EQMP
3470 .name = "migrate-set-capabilities",
3471 .args_type = "capabilities:q",
3472 .params = "capability:s,state:b",
3473 .mhandler.cmd_new = qmp_marshal_migrate_set_capabilities,
3475 SQMP
3476 query-migrate-capabilities
3477 --------------------------
3479 Query current migration capabilities
3481 - "capabilities": migration capabilities state
3482 - "xbzrle" : XBZRLE state (json-bool)
3483 - "rdma-pin-all" : RDMA Pin Page state (json-bool)
3484 - "auto-converge" : Auto Converge state (json-bool)
3485 - "zero-blocks" : Zero Blocks state (json-bool)
3487 Arguments:
3489 Example:
3491 -> { "execute": "query-migrate-capabilities" }
3492 <- { "return": [ { "state": false, "capability": "xbzrle" } ] }
3494 EQMP
3497 .name = "query-migrate-capabilities",
3498 .args_type = "",
3499 .mhandler.cmd_new = qmp_marshal_query_migrate_capabilities,
3502 SQMP
3503 migrate-set-parameters
3504 ----------------------
3506 Set migration parameters
3508 - "compress-level": set compression level during migration (json-int)
3509 - "compress-threads": set compression thread count for migration (json-int)
3510 - "decompress-threads": set decompression thread count for migration (json-int)
3512 Arguments:
3514 Example:
3516 -> { "execute": "migrate-set-parameters" , "arguments":
3517 { "compress-level": 1 } }
3519 EQMP
3522 .name = "migrate-set-parameters",
3523 .args_type =
3524 "compress-level:i?,compress-threads:i?,decompress-threads:i?",
3525 .mhandler.cmd_new = qmp_marshal_migrate_set_parameters,
3527 SQMP
3528 query-migrate-parameters
3529 ------------------------
3531 Query current migration parameters
3533 - "parameters": migration parameters value
3534 - "compress-level" : compression level value (json-int)
3535 - "compress-threads" : compression thread count value (json-int)
3536 - "decompress-threads" : decompression thread count value (json-int)
3538 Arguments:
3540 Example:
3542 -> { "execute": "query-migrate-parameters" }
3543 <- {
3544 "return": {
3545 "decompress-threads", 2,
3546 "compress-threads", 8,
3547 "compress-level", 1
3551 EQMP
3554 .name = "query-migrate-parameters",
3555 .args_type = "",
3556 .mhandler.cmd_new = qmp_marshal_query_migrate_parameters,
3559 SQMP
3560 query-balloon
3561 -------------
3563 Show balloon information.
3565 Make an asynchronous request for balloon info. When the request completes a
3566 json-object will be returned containing the following data:
3568 - "actual": current balloon value in bytes (json-int)
3570 Example:
3572 -> { "execute": "query-balloon" }
3573 <- {
3574 "return":{
3575 "actual":1073741824,
3579 EQMP
3582 .name = "query-balloon",
3583 .args_type = "",
3584 .mhandler.cmd_new = qmp_marshal_query_balloon,
3588 .name = "query-block-jobs",
3589 .args_type = "",
3590 .mhandler.cmd_new = qmp_marshal_query_block_jobs,
3594 .name = "qom-list",
3595 .args_type = "path:s",
3596 .mhandler.cmd_new = qmp_marshal_qom_list,
3600 .name = "qom-set",
3601 .args_type = "path:s,property:s,value:q",
3602 .mhandler.cmd_new = qmp_marshal_qom_set,
3606 .name = "qom-get",
3607 .args_type = "path:s,property:s",
3608 .mhandler.cmd_new = qmp_marshal_qom_get,
3612 .name = "nbd-server-start",
3613 .args_type = "addr:q",
3614 .mhandler.cmd_new = qmp_marshal_nbd_server_start,
3617 .name = "nbd-server-add",
3618 .args_type = "device:B,writable:b?",
3619 .mhandler.cmd_new = qmp_marshal_nbd_server_add,
3622 .name = "nbd-server-stop",
3623 .args_type = "",
3624 .mhandler.cmd_new = qmp_marshal_nbd_server_stop,
3628 .name = "change-vnc-password",
3629 .args_type = "password:s",
3630 .mhandler.cmd_new = qmp_marshal_change_vnc_password,
3633 .name = "qom-list-types",
3634 .args_type = "implements:s?,abstract:b?",
3635 .mhandler.cmd_new = qmp_marshal_qom_list_types,
3639 .name = "device-list-properties",
3640 .args_type = "typename:s",
3641 .mhandler.cmd_new = qmp_marshal_device_list_properties,
3645 .name = "query-machines",
3646 .args_type = "",
3647 .mhandler.cmd_new = qmp_marshal_query_machines,
3651 .name = "query-cpu-definitions",
3652 .args_type = "",
3653 .mhandler.cmd_new = qmp_marshal_query_cpu_definitions,
3657 .name = "query-target",
3658 .args_type = "",
3659 .mhandler.cmd_new = qmp_marshal_query_target,
3663 .name = "query-tpm",
3664 .args_type = "",
3665 .mhandler.cmd_new = qmp_marshal_query_tpm,
3668 SQMP
3669 query-tpm
3670 ---------
3672 Return information about the TPM device.
3674 Arguments: None
3676 Example:
3678 -> { "execute": "query-tpm" }
3679 <- { "return":
3681 { "model": "tpm-tis",
3682 "options":
3683 { "type": "passthrough",
3684 "data":
3685 { "cancel-path": "/sys/class/misc/tpm0/device/cancel",
3686 "path": "/dev/tpm0"
3689 "id": "tpm0"
3694 EQMP
3697 .name = "query-tpm-models",
3698 .args_type = "",
3699 .mhandler.cmd_new = qmp_marshal_query_tpm_models,
3702 SQMP
3703 query-tpm-models
3704 ----------------
3706 Return a list of supported TPM models.
3708 Arguments: None
3710 Example:
3712 -> { "execute": "query-tpm-models" }
3713 <- { "return": [ "tpm-tis" ] }
3715 EQMP
3718 .name = "query-tpm-types",
3719 .args_type = "",
3720 .mhandler.cmd_new = qmp_marshal_query_tpm_types,
3723 SQMP
3724 query-tpm-types
3725 ---------------
3727 Return a list of supported TPM types.
3729 Arguments: None
3731 Example:
3733 -> { "execute": "query-tpm-types" }
3734 <- { "return": [ "passthrough" ] }
3736 EQMP
3739 .name = "chardev-add",
3740 .args_type = "id:s,backend:q",
3741 .mhandler.cmd_new = qmp_marshal_chardev_add,
3744 SQMP
3745 chardev-add
3746 ----------------
3748 Add a chardev.
3750 Arguments:
3752 - "id": the chardev's ID, must be unique (json-string)
3753 - "backend": chardev backend type + parameters
3755 Examples:
3757 -> { "execute" : "chardev-add",
3758 "arguments" : { "id" : "foo",
3759 "backend" : { "type" : "null", "data" : {} } } }
3760 <- { "return": {} }
3762 -> { "execute" : "chardev-add",
3763 "arguments" : { "id" : "bar",
3764 "backend" : { "type" : "file",
3765 "data" : { "out" : "/tmp/bar.log" } } } }
3766 <- { "return": {} }
3768 -> { "execute" : "chardev-add",
3769 "arguments" : { "id" : "baz",
3770 "backend" : { "type" : "pty", "data" : {} } } }
3771 <- { "return": { "pty" : "/dev/pty/42" } }
3773 EQMP
3776 .name = "chardev-remove",
3777 .args_type = "id:s",
3778 .mhandler.cmd_new = qmp_marshal_chardev_remove,
3782 SQMP
3783 chardev-remove
3784 --------------
3786 Remove a chardev.
3788 Arguments:
3790 - "id": the chardev's ID, must exist and not be in use (json-string)
3792 Example:
3794 -> { "execute": "chardev-remove", "arguments": { "id" : "foo" } }
3795 <- { "return": {} }
3797 EQMP
3799 .name = "query-rx-filter",
3800 .args_type = "name:s?",
3801 .mhandler.cmd_new = qmp_marshal_query_rx_filter,
3804 SQMP
3805 query-rx-filter
3806 ---------------
3808 Show rx-filter information.
3810 Returns a json-array of rx-filter information for all NICs (or for the
3811 given NIC), returning an error if the given NIC doesn't exist, or
3812 given NIC doesn't support rx-filter querying, or given net client
3813 isn't a NIC.
3815 The query will clear the event notification flag of each NIC, then qemu
3816 will start to emit event to QMP monitor.
3818 Each array entry contains the following:
3820 - "name": net client name (json-string)
3821 - "promiscuous": promiscuous mode is enabled (json-bool)
3822 - "multicast": multicast receive state (one of 'normal', 'none', 'all')
3823 - "unicast": unicast receive state (one of 'normal', 'none', 'all')
3824 - "vlan": vlan receive state (one of 'normal', 'none', 'all') (Since 2.0)
3825 - "broadcast-allowed": allow to receive broadcast (json-bool)
3826 - "multicast-overflow": multicast table is overflowed (json-bool)
3827 - "unicast-overflow": unicast table is overflowed (json-bool)
3828 - "main-mac": main macaddr string (json-string)
3829 - "vlan-table": a json-array of active vlan id
3830 - "unicast-table": a json-array of unicast macaddr string
3831 - "multicast-table": a json-array of multicast macaddr string
3833 Example:
3835 -> { "execute": "query-rx-filter", "arguments": { "name": "vnet0" } }
3836 <- { "return": [
3838 "promiscuous": true,
3839 "name": "vnet0",
3840 "main-mac": "52:54:00:12:34:56",
3841 "unicast": "normal",
3842 "vlan": "normal",
3843 "vlan-table": [
3847 "unicast-table": [
3849 "multicast": "normal",
3850 "multicast-overflow": false,
3851 "unicast-overflow": false,
3852 "multicast-table": [
3853 "01:00:5e:00:00:01",
3854 "33:33:00:00:00:01",
3855 "33:33:ff:12:34:56"
3857 "broadcast-allowed": false
3862 EQMP
3865 .name = "blockdev-add",
3866 .args_type = "options:q",
3867 .mhandler.cmd_new = qmp_marshal_blockdev_add,
3870 SQMP
3871 blockdev-add
3872 ------------
3874 Add a block device.
3876 This command is still a work in progress. It doesn't support all
3877 block drivers, it lacks a matching blockdev-del, and more. Stay away
3878 from it unless you want to help with its development.
3880 Arguments:
3882 - "options": block driver options
3884 Example (1):
3886 -> { "execute": "blockdev-add",
3887 "arguments": { "options" : { "driver": "qcow2",
3888 "file": { "driver": "file",
3889 "filename": "test.qcow2" } } } }
3890 <- { "return": {} }
3892 Example (2):
3894 -> { "execute": "blockdev-add",
3895 "arguments": {
3896 "options": {
3897 "driver": "qcow2",
3898 "id": "my_disk",
3899 "discard": "unmap",
3900 "cache": {
3901 "direct": true,
3902 "writeback": true
3904 "file": {
3905 "driver": "file",
3906 "filename": "/tmp/test.qcow2"
3908 "backing": {
3909 "driver": "raw",
3910 "file": {
3911 "driver": "file",
3912 "filename": "/dev/fdset/4"
3919 <- { "return": {} }
3921 EQMP
3924 .name = "query-named-block-nodes",
3925 .args_type = "",
3926 .mhandler.cmd_new = qmp_marshal_query_named_block_nodes,
3929 SQMP
3930 @query-named-block-nodes
3931 ------------------------
3933 Return a list of BlockDeviceInfo for all the named block driver nodes
3935 Example:
3937 -> { "execute": "query-named-block-nodes" }
3938 <- { "return": [ { "ro":false,
3939 "drv":"qcow2",
3940 "encrypted":false,
3941 "file":"disks/test.qcow2",
3942 "node-name": "my-node",
3943 "backing_file_depth":1,
3944 "bps":1000000,
3945 "bps_rd":0,
3946 "bps_wr":0,
3947 "iops":1000000,
3948 "iops_rd":0,
3949 "iops_wr":0,
3950 "bps_max": 8000000,
3951 "bps_rd_max": 0,
3952 "bps_wr_max": 0,
3953 "iops_max": 0,
3954 "iops_rd_max": 0,
3955 "iops_wr_max": 0,
3956 "iops_size": 0,
3957 "write_threshold": 0,
3958 "image":{
3959 "filename":"disks/test.qcow2",
3960 "format":"qcow2",
3961 "virtual-size":2048000,
3962 "backing_file":"base.qcow2",
3963 "full-backing-filename":"disks/base.qcow2",
3964 "backing-filename-format":"qcow2",
3965 "snapshots":[
3967 "id": "1",
3968 "name": "snapshot1",
3969 "vm-state-size": 0,
3970 "date-sec": 10000200,
3971 "date-nsec": 12,
3972 "vm-clock-sec": 206,
3973 "vm-clock-nsec": 30
3976 "backing-image":{
3977 "filename":"disks/base.qcow2",
3978 "format":"qcow2",
3979 "virtual-size":2048000
3981 } } ] }
3983 EQMP
3986 .name = "query-memdev",
3987 .args_type = "",
3988 .mhandler.cmd_new = qmp_marshal_query_memdev,
3991 SQMP
3992 query-memdev
3993 ------------
3995 Show memory devices information.
3998 Example (1):
4000 -> { "execute": "query-memdev" }
4001 <- { "return": [
4003 "size": 536870912,
4004 "merge": false,
4005 "dump": true,
4006 "prealloc": false,
4007 "host-nodes": [0, 1],
4008 "policy": "bind"
4011 "size": 536870912,
4012 "merge": false,
4013 "dump": true,
4014 "prealloc": true,
4015 "host-nodes": [2, 3],
4016 "policy": "preferred"
4021 EQMP
4024 .name = "query-memory-devices",
4025 .args_type = "",
4026 .mhandler.cmd_new = qmp_marshal_query_memory_devices,
4029 SQMP
4030 @query-memory-devices
4031 --------------------
4033 Return a list of memory devices.
4035 Example:
4036 -> { "execute": "query-memory-devices" }
4037 <- { "return": [ { "data":
4038 { "addr": 5368709120,
4039 "hotpluggable": true,
4040 "hotplugged": true,
4041 "id": "d1",
4042 "memdev": "/objects/memX",
4043 "node": 0,
4044 "size": 1073741824,
4045 "slot": 0},
4046 "type": "dimm"
4047 } ] }
4048 EQMP
4051 .name = "query-acpi-ospm-status",
4052 .args_type = "",
4053 .mhandler.cmd_new = qmp_marshal_query_acpi_ospm_status,
4056 SQMP
4057 @query-acpi-ospm-status
4058 --------------------
4060 Return list of ACPIOSTInfo for devices that support status reporting
4061 via ACPI _OST method.
4063 Example:
4064 -> { "execute": "query-acpi-ospm-status" }
4065 <- { "return": [ { "device": "d1", "slot": "0", "slot-type": "DIMM", "source": 1, "status": 0},
4066 { "slot": "1", "slot-type": "DIMM", "source": 0, "status": 0},
4067 { "slot": "2", "slot-type": "DIMM", "source": 0, "status": 0},
4068 { "slot": "3", "slot-type": "DIMM", "source": 0, "status": 0}
4070 EQMP
4072 #if defined TARGET_I386
4074 .name = "rtc-reset-reinjection",
4075 .args_type = "",
4076 .mhandler.cmd_new = qmp_marshal_rtc_reset_reinjection,
4078 #endif
4080 SQMP
4081 rtc-reset-reinjection
4082 ---------------------
4084 Reset the RTC interrupt reinjection backlog.
4086 Arguments: None.
4088 Example:
4090 -> { "execute": "rtc-reset-reinjection" }
4091 <- { "return": {} }
4092 EQMP
4095 .name = "trace-event-get-state",
4096 .args_type = "name:s",
4097 .mhandler.cmd_new = qmp_marshal_trace_event_get_state,
4100 SQMP
4101 trace-event-get-state
4102 ---------------------
4104 Query the state of events.
4106 Example:
4108 -> { "execute": "trace-event-get-state", "arguments": { "name": "qemu_memalign" } }
4109 <- { "return": [ { "name": "qemu_memalign", "state": "disabled" } ] }
4110 EQMP
4113 .name = "trace-event-set-state",
4114 .args_type = "name:s,enable:b,ignore-unavailable:b?",
4115 .mhandler.cmd_new = qmp_marshal_trace_event_set_state,
4118 SQMP
4119 trace-event-set-state
4120 ---------------------
4122 Set the state of events.
4124 Example:
4126 -> { "execute": "trace-event-set-state", "arguments": { "name": "qemu_memalign", "enable": "true" } }
4127 <- { "return": {} }
4128 EQMP
4131 .name = "x-input-send-event",
4132 .args_type = "console:i?,events:q",
4133 .mhandler.cmd_new = qmp_marshal_x_input_send_event,
4136 SQMP
4137 @x-input-send-event
4138 -----------------
4140 Send input event to guest.
4142 Arguments:
4144 - "console": console index. (json-int, optional)
4145 - "events": list of input events.
4147 The consoles are visible in the qom tree, under
4148 /backend/console[$index]. They have a device link and head property, so
4149 it is possible to map which console belongs to which device and display.
4151 Note: this command is experimental, and not a stable API.
4153 Example (1):
4155 Press left mouse button.
4157 -> { "execute": "x-input-send-event",
4158 "arguments": { "console": 0,
4159 "events": [ { "type": "btn",
4160 "data" : { "down": true, "button": "Left" } } ] } }
4161 <- { "return": {} }
4163 -> { "execute": "x-input-send-event",
4164 "arguments": { "console": 0,
4165 "events": [ { "type": "btn",
4166 "data" : { "down": false, "button": "Left" } } ] } }
4167 <- { "return": {} }
4169 Example (2):
4171 Press ctrl-alt-del.
4173 -> { "execute": "x-input-send-event",
4174 "arguments": { "console": 0, "events": [
4175 { "type": "key", "data" : { "down": true,
4176 "key": {"type": "qcode", "data": "ctrl" } } },
4177 { "type": "key", "data" : { "down": true,
4178 "key": {"type": "qcode", "data": "alt" } } },
4179 { "type": "key", "data" : { "down": true,
4180 "key": {"type": "qcode", "data": "delete" } } } ] } }
4181 <- { "return": {} }
4183 Example (3):
4185 Move mouse pointer to absolute coordinates (20000, 400).
4187 -> { "execute": "x-input-send-event" ,
4188 "arguments": { "console": 0, "events": [
4189 { "type": "abs", "data" : { "axis": "X", "value" : 20000 } },
4190 { "type": "abs", "data" : { "axis": "Y", "value" : 400 } } ] } }
4191 <- { "return": {} }
4193 EQMP
4196 .name = "block-set-write-threshold",
4197 .args_type = "node-name:s,write-threshold:l",
4198 .mhandler.cmd_new = qmp_marshal_block_set_write_threshold,
4201 SQMP
4202 block-set-write-threshold
4203 ------------
4205 Change the write threshold for a block drive. The threshold is an offset,
4206 thus must be non-negative. Default is no write threshold.
4207 Setting the threshold to zero disables it.
4209 Arguments:
4211 - "node-name": the node name in the block driver state graph (json-string)
4212 - "write-threshold": the write threshold in bytes (json-int)
4214 Example:
4216 -> { "execute": "block-set-write-threshold",
4217 "arguments": { "node-name": "mydev",
4218 "write-threshold": 17179869184 } }
4219 <- { "return": {} }
4221 EQMP
4224 .name = "query-rocker",
4225 .args_type = "name:s",
4226 .mhandler.cmd_new = qmp_marshal_query_rocker,
4229 SQMP
4230 Show rocker switch
4231 ------------------
4233 Arguments:
4235 - "name": switch name
4237 Example:
4239 -> { "execute": "query-rocker", "arguments": { "name": "sw1" } }
4240 <- { "return": {"name": "sw1", "ports": 2, "id": 1327446905938}}
4242 EQMP
4245 .name = "query-rocker-ports",
4246 .args_type = "name:s",
4247 .mhandler.cmd_new = qmp_marshal_query_rocker_ports,
4250 SQMP
4251 Show rocker switch ports
4252 ------------------------
4254 Arguments:
4256 - "name": switch name
4258 Example:
4260 -> { "execute": "query-rocker-ports", "arguments": { "name": "sw1" } }
4261 <- { "return": [ {"duplex": "full", "enabled": true, "name": "sw1.1",
4262 "autoneg": "off", "link-up": true, "speed": 10000},
4263 {"duplex": "full", "enabled": true, "name": "sw1.2",
4264 "autoneg": "off", "link-up": true, "speed": 10000}
4267 EQMP
4270 .name = "query-rocker-of-dpa-flows",
4271 .args_type = "name:s,tbl-id:i?",
4272 .mhandler.cmd_new = qmp_marshal_query_rocker_of_dpa_flows,
4275 SQMP
4276 Show rocker switch OF-DPA flow tables
4277 -------------------------------------
4279 Arguments:
4281 - "name": switch name
4282 - "tbl-id": (optional) flow table ID
4284 Example:
4286 -> { "execute": "query-rocker-of-dpa-flows", "arguments": { "name": "sw1" } }
4287 <- { "return": [ {"key": {"in-pport": 0, "priority": 1, "tbl-id": 0},
4288 "hits": 138,
4289 "cookie": 0,
4290 "action": {"goto-tbl": 10},
4291 "mask": {"in-pport": 4294901760}
4293 {...more...},
4296 EQMP
4299 .name = "query-rocker-of-dpa-groups",
4300 .args_type = "name:s,type:i?",
4301 .mhandler.cmd_new = qmp_marshal_query_rocker_of_dpa_groups,
4304 SQMP
4305 Show rocker OF-DPA group tables
4306 -------------------------------
4308 Arguments:
4310 - "name": switch name
4311 - "type": (optional) group type
4313 Example:
4315 -> { "execute": "query-rocker-of-dpa-groups", "arguments": { "name": "sw1" } }
4316 <- { "return": [ {"type": 0, "out-pport": 2, "pport": 2, "vlan-id": 3841,
4317 "pop-vlan": 1, "id": 251723778},
4318 {"type": 0, "out-pport": 0, "pport": 0, "vlan-id": 3841,
4319 "pop-vlan": 1, "id": 251723776},
4320 {"type": 0, "out-pport": 1, "pport": 1, "vlan-id": 3840,
4321 "pop-vlan": 1, "id": 251658241},
4322 {"type": 0, "out-pport": 0, "pport": 0, "vlan-id": 3840,
4323 "pop-vlan": 1, "id": 251658240}