]> git.proxmox.com Git - qemu.git/blob - qmp-commands.hx
qmp: add drive-mirror command
[qemu.git] / qmp-commands.hx
1 HXCOMM QMP dispatch table and documentation
2 HXCOMM Text between SQMP and EQMP is copied to the QMP documention file and
3 HXCOMM does not show up in the other formats.
4
5 SQMP
6 QMP Supported Commands
7 ----------------------
8
9 This document describes all commands currently supported by QMP.
10
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.
14
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.
18
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.
22
23 Also, the following notation is used to denote data flow:
24
25 -> data issued by the Client
26 <- Server data response
27
28 Please, refer to the QMP specification (QMP/qmp-spec.txt) for detailed
29 information on the Server command and response formats.
30
31 NOTE: This document is temporary and will be replaced soon.
32
33 1. Stability Considerations
34 ===========================
35
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.
39
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.
42
43 If you're planning to adopt QMP, please observe the following:
44
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
48
49 2. DO NOT rely on anything which is not explicit documented
50
51 3. Errors, in special, are not documented. Applications should NOT check
52 for specific errors classes or data (it's strongly recommended to only
53 check for the "error" key)
54
55 2. Regular Commands
56 ===================
57
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.
60
61 EQMP
62
63 {
64 .name = "quit",
65 .args_type = "",
66 .mhandler.cmd_new = qmp_marshal_input_quit,
67 },
68
69 SQMP
70 quit
71 ----
72
73 Quit the emulator.
74
75 Arguments: None.
76
77 Example:
78
79 -> { "execute": "quit" }
80 <- { "return": {} }
81
82 EQMP
83
84 {
85 .name = "eject",
86 .args_type = "force:-f,device:B",
87 .mhandler.cmd_new = qmp_marshal_input_eject,
88 },
89
90 SQMP
91 eject
92 -----
93
94 Eject a removable medium.
95
96 Arguments:
97
98 - force: force ejection (json-bool, optional)
99 - device: device name (json-string)
100
101 Example:
102
103 -> { "execute": "eject", "arguments": { "device": "ide1-cd0" } }
104 <- { "return": {} }
105
106 Note: The "force" argument defaults to false.
107
108 EQMP
109
110 {
111 .name = "change",
112 .args_type = "device:B,target:F,arg:s?",
113 .mhandler.cmd_new = qmp_marshal_input_change,
114 },
115
116 SQMP
117 change
118 ------
119
120 Change a removable medium or VNC configuration.
121
122 Arguments:
123
124 - "device": device name (json-string)
125 - "target": filename or item (json-string)
126 - "arg": additional argument (json-string, optional)
127
128 Examples:
129
130 1. Change a removable medium
131
132 -> { "execute": "change",
133 "arguments": { "device": "ide1-cd0",
134 "target": "/srv/images/Fedora-12-x86_64-DVD.iso" } }
135 <- { "return": {} }
136
137 2. Change VNC password
138
139 -> { "execute": "change",
140 "arguments": { "device": "vnc", "target": "password",
141 "arg": "foobar1" } }
142 <- { "return": {} }
143
144 EQMP
145
146 {
147 .name = "screendump",
148 .args_type = "filename:F",
149 .mhandler.cmd_new = qmp_marshal_input_screendump,
150 },
151
152 SQMP
153 screendump
154 ----------
155
156 Save screen into PPM image.
157
158 Arguments:
159
160 - "filename": file path (json-string)
161
162 Example:
163
164 -> { "execute": "screendump", "arguments": { "filename": "/tmp/image" } }
165 <- { "return": {} }
166
167 EQMP
168
169 {
170 .name = "stop",
171 .args_type = "",
172 .mhandler.cmd_new = qmp_marshal_input_stop,
173 },
174
175 SQMP
176 stop
177 ----
178
179 Stop the emulator.
180
181 Arguments: None.
182
183 Example:
184
185 -> { "execute": "stop" }
186 <- { "return": {} }
187
188 EQMP
189
190 {
191 .name = "cont",
192 .args_type = "",
193 .mhandler.cmd_new = qmp_marshal_input_cont,
194 },
195
196 SQMP
197 cont
198 ----
199
200 Resume emulation.
201
202 Arguments: None.
203
204 Example:
205
206 -> { "execute": "cont" }
207 <- { "return": {} }
208
209 EQMP
210
211 {
212 .name = "system_wakeup",
213 .args_type = "",
214 .mhandler.cmd_new = qmp_marshal_input_system_wakeup,
215 },
216
217 SQMP
218 system_wakeup
219 -------------
220
221 Wakeup guest from suspend.
222
223 Arguments: None.
224
225 Example:
226
227 -> { "execute": "system_wakeup" }
228 <- { "return": {} }
229
230 EQMP
231
232 {
233 .name = "system_reset",
234 .args_type = "",
235 .mhandler.cmd_new = qmp_marshal_input_system_reset,
236 },
237
238 SQMP
239 system_reset
240 ------------
241
242 Reset the system.
243
244 Arguments: None.
245
246 Example:
247
248 -> { "execute": "system_reset" }
249 <- { "return": {} }
250
251 EQMP
252
253 {
254 .name = "system_powerdown",
255 .args_type = "",
256 .mhandler.cmd_new = qmp_marshal_input_system_powerdown,
257 },
258
259 SQMP
260 system_powerdown
261 ----------------
262
263 Send system power down event.
264
265 Arguments: None.
266
267 Example:
268
269 -> { "execute": "system_powerdown" }
270 <- { "return": {} }
271
272 EQMP
273
274 {
275 .name = "device_add",
276 .args_type = "device:O",
277 .params = "driver[,prop=value][,...]",
278 .help = "add device, like -device on the command line",
279 .user_print = monitor_user_noop,
280 .mhandler.cmd_new = do_device_add,
281 },
282
283 SQMP
284 device_add
285 ----------
286
287 Add a device.
288
289 Arguments:
290
291 - "driver": the name of the new device's driver (json-string)
292 - "bus": the device's parent bus (device tree path, json-string, optional)
293 - "id": the device's ID, must be unique (json-string)
294 - device properties
295
296 Example:
297
298 -> { "execute": "device_add", "arguments": { "driver": "e1000", "id": "net1" } }
299 <- { "return": {} }
300
301 Notes:
302
303 (1) For detailed information about this command, please refer to the
304 'docs/qdev-device-use.txt' file.
305
306 (2) It's possible to list device properties by running QEMU with the
307 "-device DEVICE,\?" command-line argument, where DEVICE is the device's name
308
309 EQMP
310
311 {
312 .name = "device_del",
313 .args_type = "id:s",
314 .mhandler.cmd_new = qmp_marshal_input_device_del,
315 },
316
317 SQMP
318 device_del
319 ----------
320
321 Remove a device.
322
323 Arguments:
324
325 - "id": the device's ID (json-string)
326
327 Example:
328
329 -> { "execute": "device_del", "arguments": { "id": "net1" } }
330 <- { "return": {} }
331
332 EQMP
333
334 {
335 .name = "send-key",
336 .args_type = "keys:O,hold-time:i?",
337 .mhandler.cmd_new = qmp_marshal_input_send_key,
338 },
339
340 SQMP
341 send-key
342 ----------
343
344 Send keys to VM.
345
346 Arguments:
347
348 keys array:
349 - "key": key sequence (a json-array of key enum values)
350
351 - hold-time: time to delay key up events, milliseconds. Defaults to 100
352 (json-int, optional)
353
354 Example:
355
356 -> { "execute": "send-key",
357 "arguments": { 'keys': [ 'ctrl', 'alt', 'delete' ] } }
358 <- { "return": {} }
359
360 EQMP
361
362 {
363 .name = "cpu",
364 .args_type = "index:i",
365 .mhandler.cmd_new = qmp_marshal_input_cpu,
366 },
367
368 SQMP
369 cpu
370 ---
371
372 Set the default CPU.
373
374 Arguments:
375
376 - "index": the CPU's index (json-int)
377
378 Example:
379
380 -> { "execute": "cpu", "arguments": { "index": 0 } }
381 <- { "return": {} }
382
383 Note: CPUs' indexes are obtained with the 'query-cpus' command.
384
385 EQMP
386
387 {
388 .name = "memsave",
389 .args_type = "val:l,size:i,filename:s,cpu:i?",
390 .mhandler.cmd_new = qmp_marshal_input_memsave,
391 },
392
393 SQMP
394 memsave
395 -------
396
397 Save to disk virtual memory dump starting at 'val' of size 'size'.
398
399 Arguments:
400
401 - "val": the starting address (json-int)
402 - "size": the memory size, in bytes (json-int)
403 - "filename": file path (json-string)
404 - "cpu": virtual CPU index (json-int, optional)
405
406 Example:
407
408 -> { "execute": "memsave",
409 "arguments": { "val": 10,
410 "size": 100,
411 "filename": "/tmp/virtual-mem-dump" } }
412 <- { "return": {} }
413
414 EQMP
415
416 {
417 .name = "pmemsave",
418 .args_type = "val:l,size:i,filename:s",
419 .mhandler.cmd_new = qmp_marshal_input_pmemsave,
420 },
421
422 SQMP
423 pmemsave
424 --------
425
426 Save to disk physical memory dump starting at 'val' of size 'size'.
427
428 Arguments:
429
430 - "val": the starting address (json-int)
431 - "size": the memory size, in bytes (json-int)
432 - "filename": file path (json-string)
433
434 Example:
435
436 -> { "execute": "pmemsave",
437 "arguments": { "val": 10,
438 "size": 100,
439 "filename": "/tmp/physical-mem-dump" } }
440 <- { "return": {} }
441
442 EQMP
443
444 {
445 .name = "inject-nmi",
446 .args_type = "",
447 .mhandler.cmd_new = qmp_marshal_input_inject_nmi,
448 },
449
450 SQMP
451 inject-nmi
452 ----------
453
454 Inject an NMI on guest's CPUs.
455
456 Arguments: None.
457
458 Example:
459
460 -> { "execute": "inject-nmi" }
461 <- { "return": {} }
462
463 Note: inject-nmi fails when the guest doesn't support injecting.
464 Currently, only x86 guests do.
465
466 EQMP
467
468 {
469 .name = "xen-save-devices-state",
470 .args_type = "filename:F",
471 .mhandler.cmd_new = qmp_marshal_input_xen_save_devices_state,
472 },
473
474 SQMP
475 xen-save-devices-state
476 -------
477
478 Save the state of all devices to file. The RAM and the block devices
479 of the VM are not saved by this command.
480
481 Arguments:
482
483 - "filename": the file to save the state of the devices to as binary
484 data. See xen-save-devices-state.txt for a description of the binary
485 format.
486
487 Example:
488
489 -> { "execute": "xen-save-devices-state",
490 "arguments": { "filename": "/tmp/save" } }
491 <- { "return": {} }
492
493 EQMP
494
495 {
496 .name = "xen-set-global-dirty-log",
497 .args_type = "enable:b",
498 .mhandler.cmd_new = qmp_marshal_input_xen_set_global_dirty_log,
499 },
500
501 SQMP
502 xen-set-global-dirty-log
503 -------
504
505 Enable or disable the global dirty log mode.
506
507 Arguments:
508
509 - "enable": Enable it or disable it.
510
511 Example:
512
513 -> { "execute": "xen-set-global-dirty-log",
514 "arguments": { "enable": true } }
515 <- { "return": {} }
516
517 EQMP
518
519 {
520 .name = "migrate",
521 .args_type = "detach:-d,blk:-b,inc:-i,uri:s",
522 .mhandler.cmd_new = qmp_marshal_input_migrate,
523 },
524
525 SQMP
526 migrate
527 -------
528
529 Migrate to URI.
530
531 Arguments:
532
533 - "blk": block migration, full disk copy (json-bool, optional)
534 - "inc": incremental disk copy (json-bool, optional)
535 - "uri": Destination URI (json-string)
536
537 Example:
538
539 -> { "execute": "migrate", "arguments": { "uri": "tcp:0:4446" } }
540 <- { "return": {} }
541
542 Notes:
543
544 (1) The 'query-migrate' command should be used to check migration's progress
545 and final result (this information is provided by the 'status' member)
546 (2) All boolean arguments default to false
547 (3) The user Monitor's "detach" argument is invalid in QMP and should not
548 be used
549
550 EQMP
551
552 {
553 .name = "migrate_cancel",
554 .args_type = "",
555 .mhandler.cmd_new = qmp_marshal_input_migrate_cancel,
556 },
557
558 SQMP
559 migrate_cancel
560 --------------
561
562 Cancel the current migration.
563
564 Arguments: None.
565
566 Example:
567
568 -> { "execute": "migrate_cancel" }
569 <- { "return": {} }
570
571 EQMP
572 {
573 .name = "migrate-set-cache-size",
574 .args_type = "value:o",
575 .mhandler.cmd_new = qmp_marshal_input_migrate_set_cache_size,
576 },
577
578 SQMP
579 migrate-set-cache-size
580 ---------------------
581
582 Set cache size to be used by XBZRLE migration, the cache size will be rounded
583 down to the nearest power of 2
584
585 Arguments:
586
587 - "value": cache size in bytes (json-int)
588
589 Example:
590
591 -> { "execute": "migrate-set-cache-size", "arguments": { "value": 536870912 } }
592 <- { "return": {} }
593
594 EQMP
595 {
596 .name = "query-migrate-cache-size",
597 .args_type = "",
598 .mhandler.cmd_new = qmp_marshal_input_query_migrate_cache_size,
599 },
600
601 SQMP
602 query-migrate-cache-size
603 ---------------------
604
605 Show cache size to be used by XBZRLE migration
606
607 returns a json-object with the following information:
608 - "size" : json-int
609
610 Example:
611
612 -> { "execute": "query-migrate-cache-size" }
613 <- { "return": 67108864 }
614
615 EQMP
616
617 {
618 .name = "migrate_set_speed",
619 .args_type = "value:o",
620 .mhandler.cmd_new = qmp_marshal_input_migrate_set_speed,
621 },
622
623 SQMP
624 migrate_set_speed
625 -----------------
626
627 Set maximum speed for migrations.
628
629 Arguments:
630
631 - "value": maximum speed, in bytes per second (json-int)
632
633 Example:
634
635 -> { "execute": "migrate_set_speed", "arguments": { "value": 1024 } }
636 <- { "return": {} }
637
638 EQMP
639
640 {
641 .name = "migrate_set_downtime",
642 .args_type = "value:T",
643 .mhandler.cmd_new = qmp_marshal_input_migrate_set_downtime,
644 },
645
646 SQMP
647 migrate_set_downtime
648 --------------------
649
650 Set maximum tolerated downtime (in seconds) for migrations.
651
652 Arguments:
653
654 - "value": maximum downtime (json-number)
655
656 Example:
657
658 -> { "execute": "migrate_set_downtime", "arguments": { "value": 0.1 } }
659 <- { "return": {} }
660
661 EQMP
662
663 {
664 .name = "client_migrate_info",
665 .args_type = "protocol:s,hostname:s,port:i?,tls-port:i?,cert-subject:s?",
666 .params = "protocol hostname port tls-port cert-subject",
667 .help = "send migration info to spice/vnc client",
668 .user_print = monitor_user_noop,
669 .mhandler.cmd_async = client_migrate_info,
670 .flags = MONITOR_CMD_ASYNC,
671 },
672
673 SQMP
674 client_migrate_info
675 ------------------
676
677 Set the spice/vnc connection info for the migration target. The spice/vnc
678 server will ask the spice/vnc client to automatically reconnect using the
679 new parameters (if specified) once the vm migration finished successfully.
680
681 Arguments:
682
683 - "protocol": protocol: "spice" or "vnc" (json-string)
684 - "hostname": migration target hostname (json-string)
685 - "port": spice/vnc tcp port for plaintext channels (json-int, optional)
686 - "tls-port": spice tcp port for tls-secured channels (json-int, optional)
687 - "cert-subject": server certificate subject (json-string, optional)
688
689 Example:
690
691 -> { "execute": "client_migrate_info",
692 "arguments": { "protocol": "spice",
693 "hostname": "virt42.lab.kraxel.org",
694 "port": 1234 } }
695 <- { "return": {} }
696
697 EQMP
698
699 {
700 .name = "dump-guest-memory",
701 .args_type = "paging:b,protocol:s,begin:i?,end:i?",
702 .params = "-p protocol [begin] [length]",
703 .help = "dump guest memory to file",
704 .user_print = monitor_user_noop,
705 .mhandler.cmd_new = qmp_marshal_input_dump_guest_memory,
706 },
707
708 SQMP
709 dump
710
711
712 Dump guest memory to file. The file can be processed with crash or gdb.
713
714 Arguments:
715
716 - "paging": do paging to get guest's memory mapping (json-bool)
717 - "protocol": destination file(started with "file:") or destination file
718 descriptor (started with "fd:") (json-string)
719 - "begin": the starting physical address. It's optional, and should be specified
720 with length together (json-int)
721 - "length": the memory size, in bytes. It's optional, and should be specified
722 with begin together (json-int)
723
724 Example:
725
726 -> { "execute": "dump-guest-memory", "arguments": { "protocol": "fd:dump" } }
727 <- { "return": {} }
728
729 Notes:
730
731 (1) All boolean arguments default to false
732
733 EQMP
734
735 {
736 .name = "netdev_add",
737 .args_type = "netdev:O",
738 .mhandler.cmd_new = qmp_netdev_add,
739 },
740
741 SQMP
742 netdev_add
743 ----------
744
745 Add host network device.
746
747 Arguments:
748
749 - "type": the device type, "tap", "user", ... (json-string)
750 - "id": the device's ID, must be unique (json-string)
751 - device options
752
753 Example:
754
755 -> { "execute": "netdev_add", "arguments": { "type": "user", "id": "netdev1" } }
756 <- { "return": {} }
757
758 Note: The supported device options are the same ones supported by the '-net'
759 command-line argument, which are listed in the '-help' output or QEMU's
760 manual
761
762 EQMP
763
764 {
765 .name = "netdev_del",
766 .args_type = "id:s",
767 .mhandler.cmd_new = qmp_marshal_input_netdev_del,
768 },
769
770 SQMP
771 netdev_del
772 ----------
773
774 Remove host network device.
775
776 Arguments:
777
778 - "id": the device's ID, must be unique (json-string)
779
780 Example:
781
782 -> { "execute": "netdev_del", "arguments": { "id": "netdev1" } }
783 <- { "return": {} }
784
785
786 EQMP
787
788 {
789 .name = "block_resize",
790 .args_type = "device:B,size:o",
791 .mhandler.cmd_new = qmp_marshal_input_block_resize,
792 },
793
794 SQMP
795 block_resize
796 ------------
797
798 Resize a block image while a guest is running.
799
800 Arguments:
801
802 - "device": the device's ID, must be unique (json-string)
803 - "size": new size
804
805 Example:
806
807 -> { "execute": "block_resize", "arguments": { "device": "scratch", "size": 1073741824 } }
808 <- { "return": {} }
809
810 EQMP
811
812 {
813 .name = "block-stream",
814 .args_type = "device:B,base:s?,speed:o?,on-error:s?",
815 .mhandler.cmd_new = qmp_marshal_input_block_stream,
816 },
817
818 {
819 .name = "block-commit",
820 .args_type = "device:B,base:s?,top:s,speed:o?",
821 .mhandler.cmd_new = qmp_marshal_input_block_commit,
822 },
823
824 {
825 .name = "block-job-set-speed",
826 .args_type = "device:B,speed:o",
827 .mhandler.cmd_new = qmp_marshal_input_block_job_set_speed,
828 },
829
830 {
831 .name = "block-job-cancel",
832 .args_type = "device:B,force:b?",
833 .mhandler.cmd_new = qmp_marshal_input_block_job_cancel,
834 },
835 {
836 .name = "block-job-pause",
837 .args_type = "device:B",
838 .mhandler.cmd_new = qmp_marshal_input_block_job_pause,
839 },
840 {
841 .name = "block-job-resume",
842 .args_type = "device:B",
843 .mhandler.cmd_new = qmp_marshal_input_block_job_resume,
844 },
845 {
846 .name = "block-job-complete",
847 .args_type = "device:B",
848 .mhandler.cmd_new = qmp_marshal_input_block_job_complete,
849 },
850 {
851 .name = "transaction",
852 .args_type = "actions:q",
853 .mhandler.cmd_new = qmp_marshal_input_transaction,
854 },
855
856 SQMP
857 transaction
858 -----------
859
860 Atomically operate on one or more block devices. The only supported
861 operation for now is snapshotting. If there is any failure performing
862 any of the operations, all snapshots for the group are abandoned, and
863 the original disks pre-snapshot attempt are used.
864
865 A list of dictionaries is accepted, that contains the actions to be performed.
866 For snapshots this is the device, the file to use for the new snapshot,
867 and the format. The default format, if not specified, is qcow2.
868
869 Each new snapshot defaults to being created by QEMU (wiping any
870 contents if the file already exists), but it is also possible to reuse
871 an externally-created file. In the latter case, you should ensure that
872 the new image file has the same contents as the current one; QEMU cannot
873 perform any meaningful check. Typically this is achieved by using the
874 current image file as the backing file for the new image.
875
876 Arguments:
877
878 actions array:
879 - "type": the operation to perform. The only supported
880 value is "blockdev-snapshot-sync". (json-string)
881 - "data": a dictionary. The contents depend on the value
882 of "type". When "type" is "blockdev-snapshot-sync":
883 - "device": device name to snapshot (json-string)
884 - "snapshot-file": name of new image file (json-string)
885 - "format": format of new image (json-string, optional)
886 - "mode": whether and how QEMU should create the snapshot file
887 (NewImageMode, optional, default "absolute-paths")
888
889 Example:
890
891 -> { "execute": "transaction",
892 "arguments": { "actions": [
893 { 'type': 'blockdev-snapshot-sync', 'data' : { "device": "ide-hd0",
894 "snapshot-file": "/some/place/my-image",
895 "format": "qcow2" } },
896 { 'type': 'blockdev-snapshot-sync', 'data' : { "device": "ide-hd1",
897 "snapshot-file": "/some/place/my-image2",
898 "mode": "existing",
899 "format": "qcow2" } } ] } }
900 <- { "return": {} }
901
902 EQMP
903
904 {
905 .name = "blockdev-snapshot-sync",
906 .args_type = "device:B,snapshot-file:s,format:s?,mode:s?",
907 .mhandler.cmd_new = qmp_marshal_input_blockdev_snapshot_sync,
908 },
909
910 SQMP
911 blockdev-snapshot-sync
912 ----------------------
913
914 Synchronous snapshot of a block device. snapshot-file specifies the
915 target of the new image. If the file exists, or if it is a device, the
916 snapshot will be created in the existing file/device. If does not
917 exist, a new file will be created. format specifies the format of the
918 snapshot image, default is qcow2.
919
920 Arguments:
921
922 - "device": device name to snapshot (json-string)
923 - "snapshot-file": name of new image file (json-string)
924 - "mode": whether and how QEMU should create the snapshot file
925 (NewImageMode, optional, default "absolute-paths")
926 - "format": format of new image (json-string, optional)
927
928 Example:
929
930 -> { "execute": "blockdev-snapshot-sync", "arguments": { "device": "ide-hd0",
931 "snapshot-file":
932 "/some/place/my-image",
933 "format": "qcow2" } }
934 <- { "return": {} }
935
936 EQMP
937
938 {
939 .name = "drive-mirror",
940 .args_type = "sync:s,device:B,target:s,speed:i?,mode:s?,format:s?",
941 .mhandler.cmd_new = qmp_marshal_input_drive_mirror,
942 },
943
944 SQMP
945 drive-mirror
946 ------------
947
948 Start mirroring a block device's writes to a new destination. target
949 specifies the target of the new image. If the file exists, or if it is
950 a device, it will be used as the new destination for writes. If it does not
951 exist, a new file will be created. format specifies the format of the
952 mirror image, default is to probe if mode='existing', else the format
953 of the source.
954
955 Arguments:
956
957 - "device": device name to operate on (json-string)
958 - "target": name of new image file (json-string)
959 - "format": format of new image (json-string, optional)
960 - "mode": how an image file should be created into the target
961 file/device (NewImageMode, optional, default 'absolute-paths')
962 - "speed": maximum speed of the streaming job, in bytes per second
963 (json-int)
964 - "sync": what parts of the disk image should be copied to the destination;
965 possibilities include "full" for all the disk, "top" for only the sectors
966 allocated in the topmost image, or "none" to only replicate new I/O
967 (MirrorSyncMode).
968
969
970 Example:
971
972 -> { "execute": "drive-mirror", "arguments": { "device": "ide-hd0",
973 "target": "/some/place/my-image",
974 "sync": "full",
975 "format": "qcow2" } }
976 <- { "return": {} }
977
978 EQMP
979
980 {
981 .name = "balloon",
982 .args_type = "value:M",
983 .mhandler.cmd_new = qmp_marshal_input_balloon,
984 },
985
986 SQMP
987 balloon
988 -------
989
990 Request VM to change its memory allocation (in bytes).
991
992 Arguments:
993
994 - "value": New memory allocation (json-int)
995
996 Example:
997
998 -> { "execute": "balloon", "arguments": { "value": 536870912 } }
999 <- { "return": {} }
1000
1001 EQMP
1002
1003 {
1004 .name = "set_link",
1005 .args_type = "name:s,up:b",
1006 .mhandler.cmd_new = qmp_marshal_input_set_link,
1007 },
1008
1009 SQMP
1010 set_link
1011 --------
1012
1013 Change the link status of a network adapter.
1014
1015 Arguments:
1016
1017 - "name": network device name (json-string)
1018 - "up": status is up (json-bool)
1019
1020 Example:
1021
1022 -> { "execute": "set_link", "arguments": { "name": "e1000.0", "up": false } }
1023 <- { "return": {} }
1024
1025 EQMP
1026
1027 {
1028 .name = "getfd",
1029 .args_type = "fdname:s",
1030 .params = "getfd name",
1031 .help = "receive a file descriptor via SCM rights and assign it a name",
1032 .mhandler.cmd_new = qmp_marshal_input_getfd,
1033 },
1034
1035 SQMP
1036 getfd
1037 -----
1038
1039 Receive a file descriptor via SCM rights and assign it a name.
1040
1041 Arguments:
1042
1043 - "fdname": file descriptor name (json-string)
1044
1045 Example:
1046
1047 -> { "execute": "getfd", "arguments": { "fdname": "fd1" } }
1048 <- { "return": {} }
1049
1050 Notes:
1051
1052 (1) If the name specified by the "fdname" argument already exists,
1053 the file descriptor assigned to it will be closed and replaced
1054 by the received file descriptor.
1055 (2) The 'closefd' command can be used to explicitly close the file
1056 descriptor when it is no longer needed.
1057
1058 EQMP
1059
1060 {
1061 .name = "closefd",
1062 .args_type = "fdname:s",
1063 .params = "closefd name",
1064 .help = "close a file descriptor previously passed via SCM rights",
1065 .mhandler.cmd_new = qmp_marshal_input_closefd,
1066 },
1067
1068 SQMP
1069 closefd
1070 -------
1071
1072 Close a file descriptor previously passed via SCM rights.
1073
1074 Arguments:
1075
1076 - "fdname": file descriptor name (json-string)
1077
1078 Example:
1079
1080 -> { "execute": "closefd", "arguments": { "fdname": "fd1" } }
1081 <- { "return": {} }
1082
1083 EQMP
1084
1085 {
1086 .name = "add-fd",
1087 .args_type = "fdset-id:i?,opaque:s?",
1088 .params = "add-fd fdset-id opaque",
1089 .help = "Add a file descriptor, that was passed via SCM rights, to an fd set",
1090 .mhandler.cmd_new = qmp_marshal_input_add_fd,
1091 },
1092
1093 SQMP
1094 add-fd
1095 -------
1096
1097 Add a file descriptor, that was passed via SCM rights, to an fd set.
1098
1099 Arguments:
1100
1101 - "fdset-id": The ID of the fd set to add the file descriptor to.
1102 (json-int, optional)
1103 - "opaque": A free-form string that can be used to describe the fd.
1104 (json-string, optional)
1105
1106 Return a json-object with the following information:
1107
1108 - "fdset-id": The ID of the fd set that the fd was added to. (json-int)
1109 - "fd": The file descriptor that was received via SCM rights and added to the
1110 fd set. (json-int)
1111
1112 Example:
1113
1114 -> { "execute": "add-fd", "arguments": { "fdset-id": 1 } }
1115 <- { "return": { "fdset-id": 1, "fd": 3 } }
1116
1117 Notes:
1118
1119 (1) The list of fd sets is shared by all monitor connections.
1120 (2) If "fdset-id" is not specified, a new fd set will be created.
1121
1122 EQMP
1123
1124 {
1125 .name = "remove-fd",
1126 .args_type = "fdset-id:i,fd:i?",
1127 .params = "remove-fd fdset-id fd",
1128 .help = "Remove a file descriptor from an fd set",
1129 .mhandler.cmd_new = qmp_marshal_input_remove_fd,
1130 },
1131
1132 SQMP
1133 remove-fd
1134 ---------
1135
1136 Remove a file descriptor from an fd set.
1137
1138 Arguments:
1139
1140 - "fdset-id": The ID of the fd set that the file descriptor belongs to.
1141 (json-int)
1142 - "fd": The file descriptor that is to be removed. (json-int, optional)
1143
1144 Example:
1145
1146 -> { "execute": "remove-fd", "arguments": { "fdset-id": 1, "fd": 3 } }
1147 <- { "return": {} }
1148
1149 Notes:
1150
1151 (1) The list of fd sets is shared by all monitor connections.
1152 (2) If "fd" is not specified, all file descriptors in "fdset-id" will be
1153 removed.
1154
1155 EQMP
1156
1157 {
1158 .name = "query-fdsets",
1159 .args_type = "",
1160 .help = "Return information describing all fd sets",
1161 .mhandler.cmd_new = qmp_marshal_input_query_fdsets,
1162 },
1163
1164 SQMP
1165 query-fdsets
1166 -------------
1167
1168 Return information describing all fd sets.
1169
1170 Arguments: None
1171
1172 Example:
1173
1174 -> { "execute": "query-fdsets" }
1175 <- { "return": [
1176 {
1177 "fds": [
1178 {
1179 "fd": 30,
1180 "opaque": "rdonly:/path/to/file"
1181 },
1182 {
1183 "fd": 24,
1184 "opaque": "rdwr:/path/to/file"
1185 }
1186 ],
1187 "fdset-id": 1
1188 },
1189 {
1190 "fds": [
1191 {
1192 "fd": 28
1193 },
1194 {
1195 "fd": 29
1196 }
1197 ],
1198 "fdset-id": 0
1199 }
1200 ]
1201 }
1202
1203 Note: The list of fd sets is shared by all monitor connections.
1204
1205 EQMP
1206
1207 {
1208 .name = "block_passwd",
1209 .args_type = "device:B,password:s",
1210 .mhandler.cmd_new = qmp_marshal_input_block_passwd,
1211 },
1212
1213 SQMP
1214 block_passwd
1215 ------------
1216
1217 Set the password of encrypted block devices.
1218
1219 Arguments:
1220
1221 - "device": device name (json-string)
1222 - "password": password (json-string)
1223
1224 Example:
1225
1226 -> { "execute": "block_passwd", "arguments": { "device": "ide0-hd0",
1227 "password": "12345" } }
1228 <- { "return": {} }
1229
1230 EQMP
1231
1232 {
1233 .name = "block_set_io_throttle",
1234 .args_type = "device:B,bps:l,bps_rd:l,bps_wr:l,iops:l,iops_rd:l,iops_wr:l",
1235 .mhandler.cmd_new = qmp_marshal_input_block_set_io_throttle,
1236 },
1237
1238 SQMP
1239 block_set_io_throttle
1240 ------------
1241
1242 Change I/O throttle limits for a block drive.
1243
1244 Arguments:
1245
1246 - "device": device name (json-string)
1247 - "bps": total throughput limit in bytes per second(json-int)
1248 - "bps_rd": read throughput limit in bytes per second(json-int)
1249 - "bps_wr": read throughput limit in bytes per second(json-int)
1250 - "iops": total I/O operations per second(json-int)
1251 - "iops_rd": read I/O operations per second(json-int)
1252 - "iops_wr": write I/O operations per second(json-int)
1253
1254 Example:
1255
1256 -> { "execute": "block_set_io_throttle", "arguments": { "device": "virtio0",
1257 "bps": "1000000",
1258 "bps_rd": "0",
1259 "bps_wr": "0",
1260 "iops": "0",
1261 "iops_rd": "0",
1262 "iops_wr": "0" } }
1263 <- { "return": {} }
1264
1265 EQMP
1266
1267 {
1268 .name = "set_password",
1269 .args_type = "protocol:s,password:s,connected:s?",
1270 .mhandler.cmd_new = qmp_marshal_input_set_password,
1271 },
1272
1273 SQMP
1274 set_password
1275 ------------
1276
1277 Set the password for vnc/spice protocols.
1278
1279 Arguments:
1280
1281 - "protocol": protocol name (json-string)
1282 - "password": password (json-string)
1283 - "connected": [ keep | disconnect | fail ] (josn-string, optional)
1284
1285 Example:
1286
1287 -> { "execute": "set_password", "arguments": { "protocol": "vnc",
1288 "password": "secret" } }
1289 <- { "return": {} }
1290
1291 EQMP
1292
1293 {
1294 .name = "expire_password",
1295 .args_type = "protocol:s,time:s",
1296 .mhandler.cmd_new = qmp_marshal_input_expire_password,
1297 },
1298
1299 SQMP
1300 expire_password
1301 ---------------
1302
1303 Set the password expire time for vnc/spice protocols.
1304
1305 Arguments:
1306
1307 - "protocol": protocol name (json-string)
1308 - "time": [ now | never | +secs | secs ] (json-string)
1309
1310 Example:
1311
1312 -> { "execute": "expire_password", "arguments": { "protocol": "vnc",
1313 "time": "+60" } }
1314 <- { "return": {} }
1315
1316 EQMP
1317
1318 {
1319 .name = "add_client",
1320 .args_type = "protocol:s,fdname:s,skipauth:b?,tls:b?",
1321 .mhandler.cmd_new = qmp_marshal_input_add_client,
1322 },
1323
1324 SQMP
1325 add_client
1326 ----------
1327
1328 Add a graphics client
1329
1330 Arguments:
1331
1332 - "protocol": protocol name (json-string)
1333 - "fdname": file descriptor name (json-string)
1334 - "skipauth": whether to skip authentication (json-bool, optional)
1335 - "tls": whether to perform TLS (json-bool, optional)
1336
1337 Example:
1338
1339 -> { "execute": "add_client", "arguments": { "protocol": "vnc",
1340 "fdname": "myclient" } }
1341 <- { "return": {} }
1342
1343 EQMP
1344 {
1345 .name = "qmp_capabilities",
1346 .args_type = "",
1347 .params = "",
1348 .help = "enable QMP capabilities",
1349 .user_print = monitor_user_noop,
1350 .mhandler.cmd_new = do_qmp_capabilities,
1351 },
1352
1353 SQMP
1354 qmp_capabilities
1355 ----------------
1356
1357 Enable QMP capabilities.
1358
1359 Arguments: None.
1360
1361 Example:
1362
1363 -> { "execute": "qmp_capabilities" }
1364 <- { "return": {} }
1365
1366 Note: This command must be issued before issuing any other command.
1367
1368 EQMP
1369
1370 {
1371 .name = "human-monitor-command",
1372 .args_type = "command-line:s,cpu-index:i?",
1373 .mhandler.cmd_new = qmp_marshal_input_human_monitor_command,
1374 },
1375
1376 SQMP
1377 human-monitor-command
1378 ---------------------
1379
1380 Execute a Human Monitor command.
1381
1382 Arguments:
1383
1384 - command-line: the command name and its arguments, just like the
1385 Human Monitor's shell (json-string)
1386 - cpu-index: select the CPU number to be used by commands which access CPU
1387 data, like 'info registers'. The Monitor selects CPU 0 if this
1388 argument is not provided (json-int, optional)
1389
1390 Example:
1391
1392 -> { "execute": "human-monitor-command", "arguments": { "command-line": "info kvm" } }
1393 <- { "return": "kvm support: enabled\r\n" }
1394
1395 Notes:
1396
1397 (1) The Human Monitor is NOT an stable interface, this means that command
1398 names, arguments and responses can change or be removed at ANY time.
1399 Applications that rely on long term stability guarantees should NOT
1400 use this command
1401
1402 (2) Limitations:
1403
1404 o This command is stateless, this means that commands that depend
1405 on state information (such as getfd) might not work
1406
1407 o Commands that prompt the user for data (eg. 'cont' when the block
1408 device is encrypted) don't currently work
1409
1410 3. Query Commands
1411 =================
1412
1413 HXCOMM Each query command below is inside a SQMP/EQMP section, do NOT change
1414 HXCOMM this! We will possibly move query commands definitions inside those
1415 HXCOMM sections, just like regular commands.
1416
1417 EQMP
1418
1419 SQMP
1420 query-version
1421 -------------
1422
1423 Show QEMU version.
1424
1425 Return a json-object with the following information:
1426
1427 - "qemu": A json-object containing three integer values:
1428 - "major": QEMU's major version (json-int)
1429 - "minor": QEMU's minor version (json-int)
1430 - "micro": QEMU's micro version (json-int)
1431 - "package": package's version (json-string)
1432
1433 Example:
1434
1435 -> { "execute": "query-version" }
1436 <- {
1437 "return":{
1438 "qemu":{
1439 "major":0,
1440 "minor":11,
1441 "micro":5
1442 },
1443 "package":""
1444 }
1445 }
1446
1447 EQMP
1448
1449 {
1450 .name = "query-version",
1451 .args_type = "",
1452 .mhandler.cmd_new = qmp_marshal_input_query_version,
1453 },
1454
1455 SQMP
1456 query-commands
1457 --------------
1458
1459 List QMP available commands.
1460
1461 Each command is represented by a json-object, the returned value is a json-array
1462 of all commands.
1463
1464 Each json-object contain:
1465
1466 - "name": command's name (json-string)
1467
1468 Example:
1469
1470 -> { "execute": "query-commands" }
1471 <- {
1472 "return":[
1473 {
1474 "name":"query-balloon"
1475 },
1476 {
1477 "name":"system_powerdown"
1478 }
1479 ]
1480 }
1481
1482 Note: This example has been shortened as the real response is too long.
1483
1484 EQMP
1485
1486 {
1487 .name = "query-commands",
1488 .args_type = "",
1489 .mhandler.cmd_new = qmp_marshal_input_query_commands,
1490 },
1491
1492 SQMP
1493 query-events
1494 --------------
1495
1496 List QMP available events.
1497
1498 Each event is represented by a json-object, the returned value is a json-array
1499 of all events.
1500
1501 Each json-object contains:
1502
1503 - "name": event's name (json-string)
1504
1505 Example:
1506
1507 -> { "execute": "query-events" }
1508 <- {
1509 "return":[
1510 {
1511 "name":"SHUTDOWN"
1512 },
1513 {
1514 "name":"RESET"
1515 }
1516 ]
1517 }
1518
1519 Note: This example has been shortened as the real response is too long.
1520
1521 EQMP
1522
1523 {
1524 .name = "query-events",
1525 .args_type = "",
1526 .mhandler.cmd_new = qmp_marshal_input_query_events,
1527 },
1528
1529 SQMP
1530 query-chardev
1531 -------------
1532
1533 Each device is represented by a json-object. The returned value is a json-array
1534 of all devices.
1535
1536 Each json-object contain the following:
1537
1538 - "label": device's label (json-string)
1539 - "filename": device's file (json-string)
1540
1541 Example:
1542
1543 -> { "execute": "query-chardev" }
1544 <- {
1545 "return":[
1546 {
1547 "label":"monitor",
1548 "filename":"stdio"
1549 },
1550 {
1551 "label":"serial0",
1552 "filename":"vc"
1553 }
1554 ]
1555 }
1556
1557 EQMP
1558
1559 {
1560 .name = "query-chardev",
1561 .args_type = "",
1562 .mhandler.cmd_new = qmp_marshal_input_query_chardev,
1563 },
1564
1565 SQMP
1566 query-block
1567 -----------
1568
1569 Show the block devices.
1570
1571 Each block device information is stored in a json-object and the returned value
1572 is a json-array of all devices.
1573
1574 Each json-object contain the following:
1575
1576 - "device": device name (json-string)
1577 - "type": device type (json-string)
1578 - deprecated, retained for backward compatibility
1579 - Possible values: "unknown"
1580 - "removable": true if the device is removable, false otherwise (json-bool)
1581 - "locked": true if the device is locked, false otherwise (json-bool)
1582 - "tray-open": only present if removable, true if the device has a tray,
1583 and it is open (json-bool)
1584 - "inserted": only present if the device is inserted, it is a json-object
1585 containing the following:
1586 - "file": device file name (json-string)
1587 - "ro": true if read-only, false otherwise (json-bool)
1588 - "drv": driver format name (json-string)
1589 - Possible values: "blkdebug", "bochs", "cloop", "cow", "dmg",
1590 "file", "file", "ftp", "ftps", "host_cdrom",
1591 "host_device", "host_floppy", "http", "https",
1592 "nbd", "parallels", "qcow", "qcow2", "raw",
1593 "tftp", "vdi", "vmdk", "vpc", "vvfat"
1594 - "backing_file": backing file name (json-string, optional)
1595 - "backing_file_depth": number of files in the backing file chain (json-int)
1596 - "encrypted": true if encrypted, false otherwise (json-bool)
1597 - "bps": limit total bytes per second (json-int)
1598 - "bps_rd": limit read bytes per second (json-int)
1599 - "bps_wr": limit write bytes per second (json-int)
1600 - "iops": limit total I/O operations per second (json-int)
1601 - "iops_rd": limit read operations per second (json-int)
1602 - "iops_wr": limit write operations per second (json-int)
1603
1604 - "io-status": I/O operation status, only present if the device supports it
1605 and the VM is configured to stop on errors. It's always reset
1606 to "ok" when the "cont" command is issued (json_string, optional)
1607 - Possible values: "ok", "failed", "nospace"
1608
1609 Example:
1610
1611 -> { "execute": "query-block" }
1612 <- {
1613 "return":[
1614 {
1615 "io-status": "ok",
1616 "device":"ide0-hd0",
1617 "locked":false,
1618 "removable":false,
1619 "inserted":{
1620 "ro":false,
1621 "drv":"qcow2",
1622 "encrypted":false,
1623 "file":"disks/test.img",
1624 "backing_file_depth":0,
1625 "bps":1000000,
1626 "bps_rd":0,
1627 "bps_wr":0,
1628 "iops":1000000,
1629 "iops_rd":0,
1630 "iops_wr":0,
1631 },
1632 "type":"unknown"
1633 },
1634 {
1635 "io-status": "ok",
1636 "device":"ide1-cd0",
1637 "locked":false,
1638 "removable":true,
1639 "type":"unknown"
1640 },
1641 {
1642 "device":"floppy0",
1643 "locked":false,
1644 "removable":true,
1645 "type":"unknown"
1646 },
1647 {
1648 "device":"sd0",
1649 "locked":false,
1650 "removable":true,
1651 "type":"unknown"
1652 }
1653 ]
1654 }
1655
1656 EQMP
1657
1658 {
1659 .name = "query-block",
1660 .args_type = "",
1661 .mhandler.cmd_new = qmp_marshal_input_query_block,
1662 },
1663
1664 SQMP
1665 query-blockstats
1666 ----------------
1667
1668 Show block device statistics.
1669
1670 Each device statistic information is stored in a json-object and the returned
1671 value is a json-array of all devices.
1672
1673 Each json-object contain the following:
1674
1675 - "device": device name (json-string)
1676 - "stats": A json-object with the statistics information, it contains:
1677 - "rd_bytes": bytes read (json-int)
1678 - "wr_bytes": bytes written (json-int)
1679 - "rd_operations": read operations (json-int)
1680 - "wr_operations": write operations (json-int)
1681 - "flush_operations": cache flush operations (json-int)
1682 - "wr_total_time_ns": total time spend on writes in nano-seconds (json-int)
1683 - "rd_total_time_ns": total time spend on reads in nano-seconds (json-int)
1684 - "flush_total_time_ns": total time spend on cache flushes in nano-seconds (json-int)
1685 - "wr_highest_offset": Highest offset of a sector written since the
1686 BlockDriverState has been opened (json-int)
1687 - "parent": Contains recursively the statistics of the underlying
1688 protocol (e.g. the host file for a qcow2 image). If there is
1689 no underlying protocol, this field is omitted
1690 (json-object, optional)
1691
1692 Example:
1693
1694 -> { "execute": "query-blockstats" }
1695 <- {
1696 "return":[
1697 {
1698 "device":"ide0-hd0",
1699 "parent":{
1700 "stats":{
1701 "wr_highest_offset":3686448128,
1702 "wr_bytes":9786368,
1703 "wr_operations":751,
1704 "rd_bytes":122567168,
1705 "rd_operations":36772
1706 "wr_total_times_ns":313253456
1707 "rd_total_times_ns":3465673657
1708 "flush_total_times_ns":49653
1709 "flush_operations":61,
1710 }
1711 },
1712 "stats":{
1713 "wr_highest_offset":2821110784,
1714 "wr_bytes":9786368,
1715 "wr_operations":692,
1716 "rd_bytes":122739200,
1717 "rd_operations":36604
1718 "flush_operations":51,
1719 "wr_total_times_ns":313253456
1720 "rd_total_times_ns":3465673657
1721 "flush_total_times_ns":49653
1722 }
1723 },
1724 {
1725 "device":"ide1-cd0",
1726 "stats":{
1727 "wr_highest_offset":0,
1728 "wr_bytes":0,
1729 "wr_operations":0,
1730 "rd_bytes":0,
1731 "rd_operations":0
1732 "flush_operations":0,
1733 "wr_total_times_ns":0
1734 "rd_total_times_ns":0
1735 "flush_total_times_ns":0
1736 }
1737 },
1738 {
1739 "device":"floppy0",
1740 "stats":{
1741 "wr_highest_offset":0,
1742 "wr_bytes":0,
1743 "wr_operations":0,
1744 "rd_bytes":0,
1745 "rd_operations":0
1746 "flush_operations":0,
1747 "wr_total_times_ns":0
1748 "rd_total_times_ns":0
1749 "flush_total_times_ns":0
1750 }
1751 },
1752 {
1753 "device":"sd0",
1754 "stats":{
1755 "wr_highest_offset":0,
1756 "wr_bytes":0,
1757 "wr_operations":0,
1758 "rd_bytes":0,
1759 "rd_operations":0
1760 "flush_operations":0,
1761 "wr_total_times_ns":0
1762 "rd_total_times_ns":0
1763 "flush_total_times_ns":0
1764 }
1765 }
1766 ]
1767 }
1768
1769 EQMP
1770
1771 {
1772 .name = "query-blockstats",
1773 .args_type = "",
1774 .mhandler.cmd_new = qmp_marshal_input_query_blockstats,
1775 },
1776
1777 SQMP
1778 query-cpus
1779 ----------
1780
1781 Show CPU information.
1782
1783 Return a json-array. Each CPU is represented by a json-object, which contains:
1784
1785 - "CPU": CPU index (json-int)
1786 - "current": true if this is the current CPU, false otherwise (json-bool)
1787 - "halted": true if the cpu is halted, false otherwise (json-bool)
1788 - Current program counter. The key's name depends on the architecture:
1789 "pc": i386/x86_64 (json-int)
1790 "nip": PPC (json-int)
1791 "pc" and "npc": sparc (json-int)
1792 "PC": mips (json-int)
1793 - "thread_id": ID of the underlying host thread (json-int)
1794
1795 Example:
1796
1797 -> { "execute": "query-cpus" }
1798 <- {
1799 "return":[
1800 {
1801 "CPU":0,
1802 "current":true,
1803 "halted":false,
1804 "pc":3227107138
1805 "thread_id":3134
1806 },
1807 {
1808 "CPU":1,
1809 "current":false,
1810 "halted":true,
1811 "pc":7108165
1812 "thread_id":3135
1813 }
1814 ]
1815 }
1816
1817 EQMP
1818
1819 {
1820 .name = "query-cpus",
1821 .args_type = "",
1822 .mhandler.cmd_new = qmp_marshal_input_query_cpus,
1823 },
1824
1825 SQMP
1826 query-pci
1827 ---------
1828
1829 PCI buses and devices information.
1830
1831 The returned value is a json-array of all buses. Each bus is represented by
1832 a json-object, which has a key with a json-array of all PCI devices attached
1833 to it. Each device is represented by a json-object.
1834
1835 The bus json-object contains the following:
1836
1837 - "bus": bus number (json-int)
1838 - "devices": a json-array of json-objects, each json-object represents a
1839 PCI device
1840
1841 The PCI device json-object contains the following:
1842
1843 - "bus": identical to the parent's bus number (json-int)
1844 - "slot": slot number (json-int)
1845 - "function": function number (json-int)
1846 - "class_info": a json-object containing:
1847 - "desc": device class description (json-string, optional)
1848 - "class": device class number (json-int)
1849 - "id": a json-object containing:
1850 - "device": device ID (json-int)
1851 - "vendor": vendor ID (json-int)
1852 - "irq": device's IRQ if assigned (json-int, optional)
1853 - "qdev_id": qdev id string (json-string)
1854 - "pci_bridge": It's a json-object, only present if this device is a
1855 PCI bridge, contains:
1856 - "bus": bus number (json-int)
1857 - "secondary": secondary bus number (json-int)
1858 - "subordinate": subordinate bus number (json-int)
1859 - "io_range": I/O memory range information, a json-object with the
1860 following members:
1861 - "base": base address, in bytes (json-int)
1862 - "limit": limit address, in bytes (json-int)
1863 - "memory_range": memory range information, a json-object with the
1864 following members:
1865 - "base": base address, in bytes (json-int)
1866 - "limit": limit address, in bytes (json-int)
1867 - "prefetchable_range": Prefetchable memory range information, a
1868 json-object with the following members:
1869 - "base": base address, in bytes (json-int)
1870 - "limit": limit address, in bytes (json-int)
1871 - "devices": a json-array of PCI devices if there's any attached, each
1872 each element is represented by a json-object, which contains
1873 the same members of the 'PCI device json-object' described
1874 above (optional)
1875 - "regions": a json-array of json-objects, each json-object represents a
1876 memory region of this device
1877
1878 The memory range json-object contains the following:
1879
1880 - "base": base memory address (json-int)
1881 - "limit": limit value (json-int)
1882
1883 The region json-object can be an I/O region or a memory region, an I/O region
1884 json-object contains the following:
1885
1886 - "type": "io" (json-string, fixed)
1887 - "bar": BAR number (json-int)
1888 - "address": memory address (json-int)
1889 - "size": memory size (json-int)
1890
1891 A memory region json-object contains the following:
1892
1893 - "type": "memory" (json-string, fixed)
1894 - "bar": BAR number (json-int)
1895 - "address": memory address (json-int)
1896 - "size": memory size (json-int)
1897 - "mem_type_64": true or false (json-bool)
1898 - "prefetch": true or false (json-bool)
1899
1900 Example:
1901
1902 -> { "execute": "query-pci" }
1903 <- {
1904 "return":[
1905 {
1906 "bus":0,
1907 "devices":[
1908 {
1909 "bus":0,
1910 "qdev_id":"",
1911 "slot":0,
1912 "class_info":{
1913 "class":1536,
1914 "desc":"Host bridge"
1915 },
1916 "id":{
1917 "device":32902,
1918 "vendor":4663
1919 },
1920 "function":0,
1921 "regions":[
1922
1923 ]
1924 },
1925 {
1926 "bus":0,
1927 "qdev_id":"",
1928 "slot":1,
1929 "class_info":{
1930 "class":1537,
1931 "desc":"ISA bridge"
1932 },
1933 "id":{
1934 "device":32902,
1935 "vendor":28672
1936 },
1937 "function":0,
1938 "regions":[
1939
1940 ]
1941 },
1942 {
1943 "bus":0,
1944 "qdev_id":"",
1945 "slot":1,
1946 "class_info":{
1947 "class":257,
1948 "desc":"IDE controller"
1949 },
1950 "id":{
1951 "device":32902,
1952 "vendor":28688
1953 },
1954 "function":1,
1955 "regions":[
1956 {
1957 "bar":4,
1958 "size":16,
1959 "address":49152,
1960 "type":"io"
1961 }
1962 ]
1963 },
1964 {
1965 "bus":0,
1966 "qdev_id":"",
1967 "slot":2,
1968 "class_info":{
1969 "class":768,
1970 "desc":"VGA controller"
1971 },
1972 "id":{
1973 "device":4115,
1974 "vendor":184
1975 },
1976 "function":0,
1977 "regions":[
1978 {
1979 "prefetch":true,
1980 "mem_type_64":false,
1981 "bar":0,
1982 "size":33554432,
1983 "address":4026531840,
1984 "type":"memory"
1985 },
1986 {
1987 "prefetch":false,
1988 "mem_type_64":false,
1989 "bar":1,
1990 "size":4096,
1991 "address":4060086272,
1992 "type":"memory"
1993 },
1994 {
1995 "prefetch":false,
1996 "mem_type_64":false,
1997 "bar":6,
1998 "size":65536,
1999 "address":-1,
2000 "type":"memory"
2001 }
2002 ]
2003 },
2004 {
2005 "bus":0,
2006 "qdev_id":"",
2007 "irq":11,
2008 "slot":4,
2009 "class_info":{
2010 "class":1280,
2011 "desc":"RAM controller"
2012 },
2013 "id":{
2014 "device":6900,
2015 "vendor":4098
2016 },
2017 "function":0,
2018 "regions":[
2019 {
2020 "bar":0,
2021 "size":32,
2022 "address":49280,
2023 "type":"io"
2024 }
2025 ]
2026 }
2027 ]
2028 }
2029 ]
2030 }
2031
2032 Note: This example has been shortened as the real response is too long.
2033
2034 EQMP
2035
2036 {
2037 .name = "query-pci",
2038 .args_type = "",
2039 .mhandler.cmd_new = qmp_marshal_input_query_pci,
2040 },
2041
2042 SQMP
2043 query-kvm
2044 ---------
2045
2046 Show KVM information.
2047
2048 Return a json-object with the following information:
2049
2050 - "enabled": true if KVM support is enabled, false otherwise (json-bool)
2051 - "present": true if QEMU has KVM support, false otherwise (json-bool)
2052
2053 Example:
2054
2055 -> { "execute": "query-kvm" }
2056 <- { "return": { "enabled": true, "present": true } }
2057
2058 EQMP
2059
2060 {
2061 .name = "query-kvm",
2062 .args_type = "",
2063 .mhandler.cmd_new = qmp_marshal_input_query_kvm,
2064 },
2065
2066 SQMP
2067 query-status
2068 ------------
2069
2070 Return a json-object with the following information:
2071
2072 - "running": true if the VM is running, or false if it is paused (json-bool)
2073 - "singlestep": true if the VM is in single step mode,
2074 false otherwise (json-bool)
2075 - "status": one of the following values (json-string)
2076 "debug" - QEMU is running on a debugger
2077 "inmigrate" - guest is paused waiting for an incoming migration
2078 "internal-error" - An internal error that prevents further guest
2079 execution has occurred
2080 "io-error" - the last IOP has failed and the device is configured
2081 to pause on I/O errors
2082 "paused" - guest has been paused via the 'stop' command
2083 "postmigrate" - guest is paused following a successful 'migrate'
2084 "prelaunch" - QEMU was started with -S and guest has not started
2085 "finish-migrate" - guest is paused to finish the migration process
2086 "restore-vm" - guest is paused to restore VM state
2087 "running" - guest is actively running
2088 "save-vm" - guest is paused to save the VM state
2089 "shutdown" - guest is shut down (and -no-shutdown is in use)
2090 "watchdog" - the watchdog action is configured to pause and
2091 has been triggered
2092
2093 Example:
2094
2095 -> { "execute": "query-status" }
2096 <- { "return": { "running": true, "singlestep": false, "status": "running" } }
2097
2098 EQMP
2099
2100 {
2101 .name = "query-status",
2102 .args_type = "",
2103 .mhandler.cmd_new = qmp_marshal_input_query_status,
2104 },
2105
2106 SQMP
2107 query-mice
2108 ----------
2109
2110 Show VM mice information.
2111
2112 Each mouse is represented by a json-object, the returned value is a json-array
2113 of all mice.
2114
2115 The mouse json-object contains the following:
2116
2117 - "name": mouse's name (json-string)
2118 - "index": mouse's index (json-int)
2119 - "current": true if this mouse is receiving events, false otherwise (json-bool)
2120 - "absolute": true if the mouse generates absolute input events (json-bool)
2121
2122 Example:
2123
2124 -> { "execute": "query-mice" }
2125 <- {
2126 "return":[
2127 {
2128 "name":"QEMU Microsoft Mouse",
2129 "index":0,
2130 "current":false,
2131 "absolute":false
2132 },
2133 {
2134 "name":"QEMU PS/2 Mouse",
2135 "index":1,
2136 "current":true,
2137 "absolute":true
2138 }
2139 ]
2140 }
2141
2142 EQMP
2143
2144 {
2145 .name = "query-mice",
2146 .args_type = "",
2147 .mhandler.cmd_new = qmp_marshal_input_query_mice,
2148 },
2149
2150 SQMP
2151 query-vnc
2152 ---------
2153
2154 Show VNC server information.
2155
2156 Return a json-object with server information. Connected clients are returned
2157 as a json-array of json-objects.
2158
2159 The main json-object contains the following:
2160
2161 - "enabled": true or false (json-bool)
2162 - "host": server's IP address (json-string)
2163 - "family": address family (json-string)
2164 - Possible values: "ipv4", "ipv6", "unix", "unknown"
2165 - "service": server's port number (json-string)
2166 - "auth": authentication method (json-string)
2167 - Possible values: "invalid", "none", "ra2", "ra2ne", "sasl", "tight",
2168 "tls", "ultra", "unknown", "vencrypt", "vencrypt",
2169 "vencrypt+plain", "vencrypt+tls+none",
2170 "vencrypt+tls+plain", "vencrypt+tls+sasl",
2171 "vencrypt+tls+vnc", "vencrypt+x509+none",
2172 "vencrypt+x509+plain", "vencrypt+x509+sasl",
2173 "vencrypt+x509+vnc", "vnc"
2174 - "clients": a json-array of all connected clients
2175
2176 Clients are described by a json-object, each one contain the following:
2177
2178 - "host": client's IP address (json-string)
2179 - "family": address family (json-string)
2180 - Possible values: "ipv4", "ipv6", "unix", "unknown"
2181 - "service": client's port number (json-string)
2182 - "x509_dname": TLS dname (json-string, optional)
2183 - "sasl_username": SASL username (json-string, optional)
2184
2185 Example:
2186
2187 -> { "execute": "query-vnc" }
2188 <- {
2189 "return":{
2190 "enabled":true,
2191 "host":"0.0.0.0",
2192 "service":"50402",
2193 "auth":"vnc",
2194 "family":"ipv4",
2195 "clients":[
2196 {
2197 "host":"127.0.0.1",
2198 "service":"50401",
2199 "family":"ipv4"
2200 }
2201 ]
2202 }
2203 }
2204
2205 EQMP
2206
2207 {
2208 .name = "query-vnc",
2209 .args_type = "",
2210 .mhandler.cmd_new = qmp_marshal_input_query_vnc,
2211 },
2212
2213 SQMP
2214 query-spice
2215 -----------
2216
2217 Show SPICE server information.
2218
2219 Return a json-object with server information. Connected clients are returned
2220 as a json-array of json-objects.
2221
2222 The main json-object contains the following:
2223
2224 - "enabled": true or false (json-bool)
2225 - "host": server's IP address (json-string)
2226 - "port": server's port number (json-int, optional)
2227 - "tls-port": server's port number (json-int, optional)
2228 - "auth": authentication method (json-string)
2229 - Possible values: "none", "spice"
2230 - "channels": a json-array of all active channels clients
2231
2232 Channels are described by a json-object, each one contain the following:
2233
2234 - "host": client's IP address (json-string)
2235 - "family": address family (json-string)
2236 - Possible values: "ipv4", "ipv6", "unix", "unknown"
2237 - "port": client's port number (json-string)
2238 - "connection-id": spice connection id. All channels with the same id
2239 belong to the same spice session (json-int)
2240 - "channel-type": channel type. "1" is the main control channel, filter for
2241 this one if you want track spice sessions only (json-int)
2242 - "channel-id": channel id. Usually "0", might be different needed when
2243 multiple channels of the same type exist, such as multiple
2244 display channels in a multihead setup (json-int)
2245 - "tls": whevener the channel is encrypted (json-bool)
2246
2247 Example:
2248
2249 -> { "execute": "query-spice" }
2250 <- {
2251 "return": {
2252 "enabled": true,
2253 "auth": "spice",
2254 "port": 5920,
2255 "tls-port": 5921,
2256 "host": "0.0.0.0",
2257 "channels": [
2258 {
2259 "port": "54924",
2260 "family": "ipv4",
2261 "channel-type": 1,
2262 "connection-id": 1804289383,
2263 "host": "127.0.0.1",
2264 "channel-id": 0,
2265 "tls": true
2266 },
2267 {
2268 "port": "36710",
2269 "family": "ipv4",
2270 "channel-type": 4,
2271 "connection-id": 1804289383,
2272 "host": "127.0.0.1",
2273 "channel-id": 0,
2274 "tls": false
2275 },
2276 [ ... more channels follow ... ]
2277 ]
2278 }
2279 }
2280
2281 EQMP
2282
2283 #if defined(CONFIG_SPICE)
2284 {
2285 .name = "query-spice",
2286 .args_type = "",
2287 .mhandler.cmd_new = qmp_marshal_input_query_spice,
2288 },
2289 #endif
2290
2291 SQMP
2292 query-name
2293 ----------
2294
2295 Show VM name.
2296
2297 Return a json-object with the following information:
2298
2299 - "name": VM's name (json-string, optional)
2300
2301 Example:
2302
2303 -> { "execute": "query-name" }
2304 <- { "return": { "name": "qemu-name" } }
2305
2306 EQMP
2307
2308 {
2309 .name = "query-name",
2310 .args_type = "",
2311 .mhandler.cmd_new = qmp_marshal_input_query_name,
2312 },
2313
2314 SQMP
2315 query-uuid
2316 ----------
2317
2318 Show VM UUID.
2319
2320 Return a json-object with the following information:
2321
2322 - "UUID": Universally Unique Identifier (json-string)
2323
2324 Example:
2325
2326 -> { "execute": "query-uuid" }
2327 <- { "return": { "UUID": "550e8400-e29b-41d4-a716-446655440000" } }
2328
2329 EQMP
2330
2331 {
2332 .name = "query-uuid",
2333 .args_type = "",
2334 .mhandler.cmd_new = qmp_marshal_input_query_uuid,
2335 },
2336
2337 SQMP
2338 query-migrate
2339 -------------
2340
2341 Migration status.
2342
2343 Return a json-object. If migration is active there will be another json-object
2344 with RAM migration status and if block migration is active another one with
2345 block migration status.
2346
2347 The main json-object contains the following:
2348
2349 - "status": migration status (json-string)
2350 - Possible values: "active", "completed", "failed", "cancelled"
2351 - "total-time": total amount of ms since migration started. If
2352 migration has ended, it returns the total migration
2353 time (json-int)
2354 - "downtime": only present when migration has finished correctly
2355 total amount in ms for downtime that happened (json-int)
2356 - "expected-downtime": only present while migration is active
2357 total amount in ms for downtime that was calculated on
2358 the last bitmap round (json-int)
2359 - "ram": only present if "status" is "active", it is a json-object with the
2360 following RAM information (in bytes):
2361 - "transferred": amount transferred (json-int)
2362 - "remaining": amount remaining (json-int)
2363 - "total": total (json-int)
2364 - "duplicate": number of duplicated pages (json-int)
2365 - "normal" : number of normal pages transferred (json-int)
2366 - "normal-bytes" : number of normal bytes transferred (json-int)
2367 - "disk": only present if "status" is "active" and it is a block migration,
2368 it is a json-object with the following disk information (in bytes):
2369 - "transferred": amount transferred (json-int)
2370 - "remaining": amount remaining (json-int)
2371 - "total": total (json-int)
2372 - "xbzrle-cache": only present if XBZRLE is active.
2373 It is a json-object with the following XBZRLE information:
2374 - "cache-size": XBZRLE cache size
2375 - "bytes": total XBZRLE bytes transferred
2376 - "pages": number of XBZRLE compressed pages
2377 - "cache-miss": number of cache misses
2378 - "overflow": number of XBZRLE overflows
2379 Examples:
2380
2381 1. Before the first migration
2382
2383 -> { "execute": "query-migrate" }
2384 <- { "return": {} }
2385
2386 2. Migration is done and has succeeded
2387
2388 -> { "execute": "query-migrate" }
2389 <- { "return": {
2390 "status": "completed",
2391 "ram":{
2392 "transferred":123,
2393 "remaining":123,
2394 "total":246,
2395 "total-time":12345,
2396 "downtime":12345,
2397 "duplicate":123,
2398 "normal":123,
2399 "normal-bytes":123456
2400 }
2401 }
2402 }
2403
2404 3. Migration is done and has failed
2405
2406 -> { "execute": "query-migrate" }
2407 <- { "return": { "status": "failed" } }
2408
2409 4. Migration is being performed and is not a block migration:
2410
2411 -> { "execute": "query-migrate" }
2412 <- {
2413 "return":{
2414 "status":"active",
2415 "ram":{
2416 "transferred":123,
2417 "remaining":123,
2418 "total":246,
2419 "total-time":12345,
2420 "expected-downtime":12345,
2421 "duplicate":123,
2422 "normal":123,
2423 "normal-bytes":123456
2424 }
2425 }
2426 }
2427
2428 5. Migration is being performed and is a block migration:
2429
2430 -> { "execute": "query-migrate" }
2431 <- {
2432 "return":{
2433 "status":"active",
2434 "ram":{
2435 "total":1057024,
2436 "remaining":1053304,
2437 "transferred":3720,
2438 "total-time":12345,
2439 "expected-downtime":12345,
2440 "duplicate":123,
2441 "normal":123,
2442 "normal-bytes":123456
2443 },
2444 "disk":{
2445 "total":20971520,
2446 "remaining":20880384,
2447 "transferred":91136
2448 }
2449 }
2450 }
2451
2452 6. Migration is being performed and XBZRLE is active:
2453
2454 -> { "execute": "query-migrate" }
2455 <- {
2456 "return":{
2457 "status":"active",
2458 "capabilities" : [ { "capability": "xbzrle", "state" : true } ],
2459 "ram":{
2460 "total":1057024,
2461 "remaining":1053304,
2462 "transferred":3720,
2463 "total-time":12345,
2464 "expected-downtime":12345,
2465 "duplicate":10,
2466 "normal":3333,
2467 "normal-bytes":3412992
2468 },
2469 "xbzrle-cache":{
2470 "cache-size":67108864,
2471 "bytes":20971520,
2472 "pages":2444343,
2473 "cache-miss":2244,
2474 "overflow":34434
2475 }
2476 }
2477 }
2478
2479 EQMP
2480
2481 {
2482 .name = "query-migrate",
2483 .args_type = "",
2484 .mhandler.cmd_new = qmp_marshal_input_query_migrate,
2485 },
2486
2487 SQMP
2488 migrate-set-capabilities
2489 -------
2490
2491 Enable/Disable migration capabilities
2492
2493 - "xbzrle": xbzrle support
2494
2495 Arguments:
2496
2497 Example:
2498
2499 -> { "execute": "migrate-set-capabilities" , "arguments":
2500 { "capabilities": [ { "capability": "xbzrle", "state": true } ] } }
2501
2502 EQMP
2503
2504 {
2505 .name = "migrate-set-capabilities",
2506 .args_type = "capabilities:O",
2507 .params = "capability:s,state:b",
2508 .mhandler.cmd_new = qmp_marshal_input_migrate_set_capabilities,
2509 },
2510 SQMP
2511 query-migrate-capabilities
2512 -------
2513
2514 Query current migration capabilities
2515
2516 - "capabilities": migration capabilities state
2517 - "xbzrle" : XBZRLE state (json-bool)
2518
2519 Arguments:
2520
2521 Example:
2522
2523 -> { "execute": "query-migrate-capabilities" }
2524 <- { "return": {
2525 "capabilities" : [ { "capability" : "xbzrle", "state" : false } ]
2526 }
2527 }
2528 EQMP
2529
2530 {
2531 .name = "query-migrate-capabilities",
2532 .args_type = "",
2533 .mhandler.cmd_new = qmp_marshal_input_query_migrate_capabilities,
2534 },
2535
2536 SQMP
2537 query-balloon
2538 -------------
2539
2540 Show balloon information.
2541
2542 Make an asynchronous request for balloon info. When the request completes a
2543 json-object will be returned containing the following data:
2544
2545 - "actual": current balloon value in bytes (json-int)
2546 - "mem_swapped_in": Amount of memory swapped in bytes (json-int, optional)
2547 - "mem_swapped_out": Amount of memory swapped out in bytes (json-int, optional)
2548 - "major_page_faults": Number of major faults (json-int, optional)
2549 - "minor_page_faults": Number of minor faults (json-int, optional)
2550 - "free_mem": Total amount of free and unused memory in
2551 bytes (json-int, optional)
2552 - "total_mem": Total amount of available memory in bytes (json-int, optional)
2553
2554 Example:
2555
2556 -> { "execute": "query-balloon" }
2557 <- {
2558 "return":{
2559 "actual":1073741824,
2560 "mem_swapped_in":0,
2561 "mem_swapped_out":0,
2562 "major_page_faults":142,
2563 "minor_page_faults":239245,
2564 "free_mem":1014185984,
2565 "total_mem":1044668416
2566 }
2567 }
2568
2569 EQMP
2570
2571 {
2572 .name = "query-balloon",
2573 .args_type = "",
2574 .mhandler.cmd_new = qmp_marshal_input_query_balloon,
2575 },
2576
2577 {
2578 .name = "query-block-jobs",
2579 .args_type = "",
2580 .mhandler.cmd_new = qmp_marshal_input_query_block_jobs,
2581 },
2582
2583 {
2584 .name = "qom-list",
2585 .args_type = "path:s",
2586 .mhandler.cmd_new = qmp_marshal_input_qom_list,
2587 },
2588
2589 {
2590 .name = "qom-set",
2591 .args_type = "path:s,property:s,value:q",
2592 .mhandler.cmd_new = qmp_qom_set,
2593 },
2594
2595 {
2596 .name = "qom-get",
2597 .args_type = "path:s,property:s",
2598 .mhandler.cmd_new = qmp_qom_get,
2599 },
2600
2601 {
2602 .name = "change-vnc-password",
2603 .args_type = "password:s",
2604 .mhandler.cmd_new = qmp_marshal_input_change_vnc_password,
2605 },
2606 {
2607 .name = "qom-list-types",
2608 .args_type = "implements:s?,abstract:b?",
2609 .mhandler.cmd_new = qmp_marshal_input_qom_list_types,
2610 },
2611
2612 {
2613 .name = "device-list-properties",
2614 .args_type = "typename:s",
2615 .mhandler.cmd_new = qmp_marshal_input_device_list_properties,
2616 },
2617
2618 {
2619 .name = "query-machines",
2620 .args_type = "",
2621 .mhandler.cmd_new = qmp_marshal_input_query_machines,
2622 },
2623
2624 {
2625 .name = "query-cpu-definitions",
2626 .args_type = "",
2627 .mhandler.cmd_new = qmp_marshal_input_query_cpu_definitions,
2628 },
2629
2630 {
2631 .name = "query-target",
2632 .args_type = "",
2633 .mhandler.cmd_new = qmp_marshal_input_query_target,
2634 },