]> git.proxmox.com Git - qemu.git/blob - qmp-commands.hx
block: add block-job-complete
[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 = "balloon",
940 .args_type = "value:M",
941 .mhandler.cmd_new = qmp_marshal_input_balloon,
942 },
943
944 SQMP
945 balloon
946 -------
947
948 Request VM to change its memory allocation (in bytes).
949
950 Arguments:
951
952 - "value": New memory allocation (json-int)
953
954 Example:
955
956 -> { "execute": "balloon", "arguments": { "value": 536870912 } }
957 <- { "return": {} }
958
959 EQMP
960
961 {
962 .name = "set_link",
963 .args_type = "name:s,up:b",
964 .mhandler.cmd_new = qmp_marshal_input_set_link,
965 },
966
967 SQMP
968 set_link
969 --------
970
971 Change the link status of a network adapter.
972
973 Arguments:
974
975 - "name": network device name (json-string)
976 - "up": status is up (json-bool)
977
978 Example:
979
980 -> { "execute": "set_link", "arguments": { "name": "e1000.0", "up": false } }
981 <- { "return": {} }
982
983 EQMP
984
985 {
986 .name = "getfd",
987 .args_type = "fdname:s",
988 .params = "getfd name",
989 .help = "receive a file descriptor via SCM rights and assign it a name",
990 .mhandler.cmd_new = qmp_marshal_input_getfd,
991 },
992
993 SQMP
994 getfd
995 -----
996
997 Receive a file descriptor via SCM rights and assign it a name.
998
999 Arguments:
1000
1001 - "fdname": file descriptor name (json-string)
1002
1003 Example:
1004
1005 -> { "execute": "getfd", "arguments": { "fdname": "fd1" } }
1006 <- { "return": {} }
1007
1008 Notes:
1009
1010 (1) If the name specified by the "fdname" argument already exists,
1011 the file descriptor assigned to it will be closed and replaced
1012 by the received file descriptor.
1013 (2) The 'closefd' command can be used to explicitly close the file
1014 descriptor when it is no longer needed.
1015
1016 EQMP
1017
1018 {
1019 .name = "closefd",
1020 .args_type = "fdname:s",
1021 .params = "closefd name",
1022 .help = "close a file descriptor previously passed via SCM rights",
1023 .mhandler.cmd_new = qmp_marshal_input_closefd,
1024 },
1025
1026 SQMP
1027 closefd
1028 -------
1029
1030 Close a file descriptor previously passed via SCM rights.
1031
1032 Arguments:
1033
1034 - "fdname": file descriptor name (json-string)
1035
1036 Example:
1037
1038 -> { "execute": "closefd", "arguments": { "fdname": "fd1" } }
1039 <- { "return": {} }
1040
1041 EQMP
1042
1043 {
1044 .name = "add-fd",
1045 .args_type = "fdset-id:i?,opaque:s?",
1046 .params = "add-fd fdset-id opaque",
1047 .help = "Add a file descriptor, that was passed via SCM rights, to an fd set",
1048 .mhandler.cmd_new = qmp_marshal_input_add_fd,
1049 },
1050
1051 SQMP
1052 add-fd
1053 -------
1054
1055 Add a file descriptor, that was passed via SCM rights, to an fd set.
1056
1057 Arguments:
1058
1059 - "fdset-id": The ID of the fd set to add the file descriptor to.
1060 (json-int, optional)
1061 - "opaque": A free-form string that can be used to describe the fd.
1062 (json-string, optional)
1063
1064 Return a json-object with the following information:
1065
1066 - "fdset-id": The ID of the fd set that the fd was added to. (json-int)
1067 - "fd": The file descriptor that was received via SCM rights and added to the
1068 fd set. (json-int)
1069
1070 Example:
1071
1072 -> { "execute": "add-fd", "arguments": { "fdset-id": 1 } }
1073 <- { "return": { "fdset-id": 1, "fd": 3 } }
1074
1075 Notes:
1076
1077 (1) The list of fd sets is shared by all monitor connections.
1078 (2) If "fdset-id" is not specified, a new fd set will be created.
1079
1080 EQMP
1081
1082 {
1083 .name = "remove-fd",
1084 .args_type = "fdset-id:i,fd:i?",
1085 .params = "remove-fd fdset-id fd",
1086 .help = "Remove a file descriptor from an fd set",
1087 .mhandler.cmd_new = qmp_marshal_input_remove_fd,
1088 },
1089
1090 SQMP
1091 remove-fd
1092 ---------
1093
1094 Remove a file descriptor from an fd set.
1095
1096 Arguments:
1097
1098 - "fdset-id": The ID of the fd set that the file descriptor belongs to.
1099 (json-int)
1100 - "fd": The file descriptor that is to be removed. (json-int, optional)
1101
1102 Example:
1103
1104 -> { "execute": "remove-fd", "arguments": { "fdset-id": 1, "fd": 3 } }
1105 <- { "return": {} }
1106
1107 Notes:
1108
1109 (1) The list of fd sets is shared by all monitor connections.
1110 (2) If "fd" is not specified, all file descriptors in "fdset-id" will be
1111 removed.
1112
1113 EQMP
1114
1115 {
1116 .name = "query-fdsets",
1117 .args_type = "",
1118 .help = "Return information describing all fd sets",
1119 .mhandler.cmd_new = qmp_marshal_input_query_fdsets,
1120 },
1121
1122 SQMP
1123 query-fdsets
1124 -------------
1125
1126 Return information describing all fd sets.
1127
1128 Arguments: None
1129
1130 Example:
1131
1132 -> { "execute": "query-fdsets" }
1133 <- { "return": [
1134 {
1135 "fds": [
1136 {
1137 "fd": 30,
1138 "opaque": "rdonly:/path/to/file"
1139 },
1140 {
1141 "fd": 24,
1142 "opaque": "rdwr:/path/to/file"
1143 }
1144 ],
1145 "fdset-id": 1
1146 },
1147 {
1148 "fds": [
1149 {
1150 "fd": 28
1151 },
1152 {
1153 "fd": 29
1154 }
1155 ],
1156 "fdset-id": 0
1157 }
1158 ]
1159 }
1160
1161 Note: The list of fd sets is shared by all monitor connections.
1162
1163 EQMP
1164
1165 {
1166 .name = "block_passwd",
1167 .args_type = "device:B,password:s",
1168 .mhandler.cmd_new = qmp_marshal_input_block_passwd,
1169 },
1170
1171 SQMP
1172 block_passwd
1173 ------------
1174
1175 Set the password of encrypted block devices.
1176
1177 Arguments:
1178
1179 - "device": device name (json-string)
1180 - "password": password (json-string)
1181
1182 Example:
1183
1184 -> { "execute": "block_passwd", "arguments": { "device": "ide0-hd0",
1185 "password": "12345" } }
1186 <- { "return": {} }
1187
1188 EQMP
1189
1190 {
1191 .name = "block_set_io_throttle",
1192 .args_type = "device:B,bps:l,bps_rd:l,bps_wr:l,iops:l,iops_rd:l,iops_wr:l",
1193 .mhandler.cmd_new = qmp_marshal_input_block_set_io_throttle,
1194 },
1195
1196 SQMP
1197 block_set_io_throttle
1198 ------------
1199
1200 Change I/O throttle limits for a block drive.
1201
1202 Arguments:
1203
1204 - "device": device name (json-string)
1205 - "bps": total throughput limit in bytes per second(json-int)
1206 - "bps_rd": read throughput limit in bytes per second(json-int)
1207 - "bps_wr": read throughput limit in bytes per second(json-int)
1208 - "iops": total I/O operations per second(json-int)
1209 - "iops_rd": read I/O operations per second(json-int)
1210 - "iops_wr": write I/O operations per second(json-int)
1211
1212 Example:
1213
1214 -> { "execute": "block_set_io_throttle", "arguments": { "device": "virtio0",
1215 "bps": "1000000",
1216 "bps_rd": "0",
1217 "bps_wr": "0",
1218 "iops": "0",
1219 "iops_rd": "0",
1220 "iops_wr": "0" } }
1221 <- { "return": {} }
1222
1223 EQMP
1224
1225 {
1226 .name = "set_password",
1227 .args_type = "protocol:s,password:s,connected:s?",
1228 .mhandler.cmd_new = qmp_marshal_input_set_password,
1229 },
1230
1231 SQMP
1232 set_password
1233 ------------
1234
1235 Set the password for vnc/spice protocols.
1236
1237 Arguments:
1238
1239 - "protocol": protocol name (json-string)
1240 - "password": password (json-string)
1241 - "connected": [ keep | disconnect | fail ] (josn-string, optional)
1242
1243 Example:
1244
1245 -> { "execute": "set_password", "arguments": { "protocol": "vnc",
1246 "password": "secret" } }
1247 <- { "return": {} }
1248
1249 EQMP
1250
1251 {
1252 .name = "expire_password",
1253 .args_type = "protocol:s,time:s",
1254 .mhandler.cmd_new = qmp_marshal_input_expire_password,
1255 },
1256
1257 SQMP
1258 expire_password
1259 ---------------
1260
1261 Set the password expire time for vnc/spice protocols.
1262
1263 Arguments:
1264
1265 - "protocol": protocol name (json-string)
1266 - "time": [ now | never | +secs | secs ] (json-string)
1267
1268 Example:
1269
1270 -> { "execute": "expire_password", "arguments": { "protocol": "vnc",
1271 "time": "+60" } }
1272 <- { "return": {} }
1273
1274 EQMP
1275
1276 {
1277 .name = "add_client",
1278 .args_type = "protocol:s,fdname:s,skipauth:b?,tls:b?",
1279 .mhandler.cmd_new = qmp_marshal_input_add_client,
1280 },
1281
1282 SQMP
1283 add_client
1284 ----------
1285
1286 Add a graphics client
1287
1288 Arguments:
1289
1290 - "protocol": protocol name (json-string)
1291 - "fdname": file descriptor name (json-string)
1292 - "skipauth": whether to skip authentication (json-bool, optional)
1293 - "tls": whether to perform TLS (json-bool, optional)
1294
1295 Example:
1296
1297 -> { "execute": "add_client", "arguments": { "protocol": "vnc",
1298 "fdname": "myclient" } }
1299 <- { "return": {} }
1300
1301 EQMP
1302 {
1303 .name = "qmp_capabilities",
1304 .args_type = "",
1305 .params = "",
1306 .help = "enable QMP capabilities",
1307 .user_print = monitor_user_noop,
1308 .mhandler.cmd_new = do_qmp_capabilities,
1309 },
1310
1311 SQMP
1312 qmp_capabilities
1313 ----------------
1314
1315 Enable QMP capabilities.
1316
1317 Arguments: None.
1318
1319 Example:
1320
1321 -> { "execute": "qmp_capabilities" }
1322 <- { "return": {} }
1323
1324 Note: This command must be issued before issuing any other command.
1325
1326 EQMP
1327
1328 {
1329 .name = "human-monitor-command",
1330 .args_type = "command-line:s,cpu-index:i?",
1331 .mhandler.cmd_new = qmp_marshal_input_human_monitor_command,
1332 },
1333
1334 SQMP
1335 human-monitor-command
1336 ---------------------
1337
1338 Execute a Human Monitor command.
1339
1340 Arguments:
1341
1342 - command-line: the command name and its arguments, just like the
1343 Human Monitor's shell (json-string)
1344 - cpu-index: select the CPU number to be used by commands which access CPU
1345 data, like 'info registers'. The Monitor selects CPU 0 if this
1346 argument is not provided (json-int, optional)
1347
1348 Example:
1349
1350 -> { "execute": "human-monitor-command", "arguments": { "command-line": "info kvm" } }
1351 <- { "return": "kvm support: enabled\r\n" }
1352
1353 Notes:
1354
1355 (1) The Human Monitor is NOT an stable interface, this means that command
1356 names, arguments and responses can change or be removed at ANY time.
1357 Applications that rely on long term stability guarantees should NOT
1358 use this command
1359
1360 (2) Limitations:
1361
1362 o This command is stateless, this means that commands that depend
1363 on state information (such as getfd) might not work
1364
1365 o Commands that prompt the user for data (eg. 'cont' when the block
1366 device is encrypted) don't currently work
1367
1368 3. Query Commands
1369 =================
1370
1371 HXCOMM Each query command below is inside a SQMP/EQMP section, do NOT change
1372 HXCOMM this! We will possibly move query commands definitions inside those
1373 HXCOMM sections, just like regular commands.
1374
1375 EQMP
1376
1377 SQMP
1378 query-version
1379 -------------
1380
1381 Show QEMU version.
1382
1383 Return a json-object with the following information:
1384
1385 - "qemu": A json-object containing three integer values:
1386 - "major": QEMU's major version (json-int)
1387 - "minor": QEMU's minor version (json-int)
1388 - "micro": QEMU's micro version (json-int)
1389 - "package": package's version (json-string)
1390
1391 Example:
1392
1393 -> { "execute": "query-version" }
1394 <- {
1395 "return":{
1396 "qemu":{
1397 "major":0,
1398 "minor":11,
1399 "micro":5
1400 },
1401 "package":""
1402 }
1403 }
1404
1405 EQMP
1406
1407 {
1408 .name = "query-version",
1409 .args_type = "",
1410 .mhandler.cmd_new = qmp_marshal_input_query_version,
1411 },
1412
1413 SQMP
1414 query-commands
1415 --------------
1416
1417 List QMP available commands.
1418
1419 Each command is represented by a json-object, the returned value is a json-array
1420 of all commands.
1421
1422 Each json-object contain:
1423
1424 - "name": command's name (json-string)
1425
1426 Example:
1427
1428 -> { "execute": "query-commands" }
1429 <- {
1430 "return":[
1431 {
1432 "name":"query-balloon"
1433 },
1434 {
1435 "name":"system_powerdown"
1436 }
1437 ]
1438 }
1439
1440 Note: This example has been shortened as the real response is too long.
1441
1442 EQMP
1443
1444 {
1445 .name = "query-commands",
1446 .args_type = "",
1447 .mhandler.cmd_new = qmp_marshal_input_query_commands,
1448 },
1449
1450 SQMP
1451 query-events
1452 --------------
1453
1454 List QMP available events.
1455
1456 Each event is represented by a json-object, the returned value is a json-array
1457 of all events.
1458
1459 Each json-object contains:
1460
1461 - "name": event's name (json-string)
1462
1463 Example:
1464
1465 -> { "execute": "query-events" }
1466 <- {
1467 "return":[
1468 {
1469 "name":"SHUTDOWN"
1470 },
1471 {
1472 "name":"RESET"
1473 }
1474 ]
1475 }
1476
1477 Note: This example has been shortened as the real response is too long.
1478
1479 EQMP
1480
1481 {
1482 .name = "query-events",
1483 .args_type = "",
1484 .mhandler.cmd_new = qmp_marshal_input_query_events,
1485 },
1486
1487 SQMP
1488 query-chardev
1489 -------------
1490
1491 Each device is represented by a json-object. The returned value is a json-array
1492 of all devices.
1493
1494 Each json-object contain the following:
1495
1496 - "label": device's label (json-string)
1497 - "filename": device's file (json-string)
1498
1499 Example:
1500
1501 -> { "execute": "query-chardev" }
1502 <- {
1503 "return":[
1504 {
1505 "label":"monitor",
1506 "filename":"stdio"
1507 },
1508 {
1509 "label":"serial0",
1510 "filename":"vc"
1511 }
1512 ]
1513 }
1514
1515 EQMP
1516
1517 {
1518 .name = "query-chardev",
1519 .args_type = "",
1520 .mhandler.cmd_new = qmp_marshal_input_query_chardev,
1521 },
1522
1523 SQMP
1524 query-block
1525 -----------
1526
1527 Show the block devices.
1528
1529 Each block device information is stored in a json-object and the returned value
1530 is a json-array of all devices.
1531
1532 Each json-object contain the following:
1533
1534 - "device": device name (json-string)
1535 - "type": device type (json-string)
1536 - deprecated, retained for backward compatibility
1537 - Possible values: "unknown"
1538 - "removable": true if the device is removable, false otherwise (json-bool)
1539 - "locked": true if the device is locked, false otherwise (json-bool)
1540 - "tray-open": only present if removable, true if the device has a tray,
1541 and it is open (json-bool)
1542 - "inserted": only present if the device is inserted, it is a json-object
1543 containing the following:
1544 - "file": device file name (json-string)
1545 - "ro": true if read-only, false otherwise (json-bool)
1546 - "drv": driver format name (json-string)
1547 - Possible values: "blkdebug", "bochs", "cloop", "cow", "dmg",
1548 "file", "file", "ftp", "ftps", "host_cdrom",
1549 "host_device", "host_floppy", "http", "https",
1550 "nbd", "parallels", "qcow", "qcow2", "raw",
1551 "tftp", "vdi", "vmdk", "vpc", "vvfat"
1552 - "backing_file": backing file name (json-string, optional)
1553 - "backing_file_depth": number of files in the backing file chain (json-int)
1554 - "encrypted": true if encrypted, false otherwise (json-bool)
1555 - "bps": limit total bytes per second (json-int)
1556 - "bps_rd": limit read bytes per second (json-int)
1557 - "bps_wr": limit write bytes per second (json-int)
1558 - "iops": limit total I/O operations per second (json-int)
1559 - "iops_rd": limit read operations per second (json-int)
1560 - "iops_wr": limit write operations per second (json-int)
1561
1562 - "io-status": I/O operation status, only present if the device supports it
1563 and the VM is configured to stop on errors. It's always reset
1564 to "ok" when the "cont" command is issued (json_string, optional)
1565 - Possible values: "ok", "failed", "nospace"
1566
1567 Example:
1568
1569 -> { "execute": "query-block" }
1570 <- {
1571 "return":[
1572 {
1573 "io-status": "ok",
1574 "device":"ide0-hd0",
1575 "locked":false,
1576 "removable":false,
1577 "inserted":{
1578 "ro":false,
1579 "drv":"qcow2",
1580 "encrypted":false,
1581 "file":"disks/test.img",
1582 "backing_file_depth":0,
1583 "bps":1000000,
1584 "bps_rd":0,
1585 "bps_wr":0,
1586 "iops":1000000,
1587 "iops_rd":0,
1588 "iops_wr":0,
1589 },
1590 "type":"unknown"
1591 },
1592 {
1593 "io-status": "ok",
1594 "device":"ide1-cd0",
1595 "locked":false,
1596 "removable":true,
1597 "type":"unknown"
1598 },
1599 {
1600 "device":"floppy0",
1601 "locked":false,
1602 "removable":true,
1603 "type":"unknown"
1604 },
1605 {
1606 "device":"sd0",
1607 "locked":false,
1608 "removable":true,
1609 "type":"unknown"
1610 }
1611 ]
1612 }
1613
1614 EQMP
1615
1616 {
1617 .name = "query-block",
1618 .args_type = "",
1619 .mhandler.cmd_new = qmp_marshal_input_query_block,
1620 },
1621
1622 SQMP
1623 query-blockstats
1624 ----------------
1625
1626 Show block device statistics.
1627
1628 Each device statistic information is stored in a json-object and the returned
1629 value is a json-array of all devices.
1630
1631 Each json-object contain the following:
1632
1633 - "device": device name (json-string)
1634 - "stats": A json-object with the statistics information, it contains:
1635 - "rd_bytes": bytes read (json-int)
1636 - "wr_bytes": bytes written (json-int)
1637 - "rd_operations": read operations (json-int)
1638 - "wr_operations": write operations (json-int)
1639 - "flush_operations": cache flush operations (json-int)
1640 - "wr_total_time_ns": total time spend on writes in nano-seconds (json-int)
1641 - "rd_total_time_ns": total time spend on reads in nano-seconds (json-int)
1642 - "flush_total_time_ns": total time spend on cache flushes in nano-seconds (json-int)
1643 - "wr_highest_offset": Highest offset of a sector written since the
1644 BlockDriverState has been opened (json-int)
1645 - "parent": Contains recursively the statistics of the underlying
1646 protocol (e.g. the host file for a qcow2 image). If there is
1647 no underlying protocol, this field is omitted
1648 (json-object, optional)
1649
1650 Example:
1651
1652 -> { "execute": "query-blockstats" }
1653 <- {
1654 "return":[
1655 {
1656 "device":"ide0-hd0",
1657 "parent":{
1658 "stats":{
1659 "wr_highest_offset":3686448128,
1660 "wr_bytes":9786368,
1661 "wr_operations":751,
1662 "rd_bytes":122567168,
1663 "rd_operations":36772
1664 "wr_total_times_ns":313253456
1665 "rd_total_times_ns":3465673657
1666 "flush_total_times_ns":49653
1667 "flush_operations":61,
1668 }
1669 },
1670 "stats":{
1671 "wr_highest_offset":2821110784,
1672 "wr_bytes":9786368,
1673 "wr_operations":692,
1674 "rd_bytes":122739200,
1675 "rd_operations":36604
1676 "flush_operations":51,
1677 "wr_total_times_ns":313253456
1678 "rd_total_times_ns":3465673657
1679 "flush_total_times_ns":49653
1680 }
1681 },
1682 {
1683 "device":"ide1-cd0",
1684 "stats":{
1685 "wr_highest_offset":0,
1686 "wr_bytes":0,
1687 "wr_operations":0,
1688 "rd_bytes":0,
1689 "rd_operations":0
1690 "flush_operations":0,
1691 "wr_total_times_ns":0
1692 "rd_total_times_ns":0
1693 "flush_total_times_ns":0
1694 }
1695 },
1696 {
1697 "device":"floppy0",
1698 "stats":{
1699 "wr_highest_offset":0,
1700 "wr_bytes":0,
1701 "wr_operations":0,
1702 "rd_bytes":0,
1703 "rd_operations":0
1704 "flush_operations":0,
1705 "wr_total_times_ns":0
1706 "rd_total_times_ns":0
1707 "flush_total_times_ns":0
1708 }
1709 },
1710 {
1711 "device":"sd0",
1712 "stats":{
1713 "wr_highest_offset":0,
1714 "wr_bytes":0,
1715 "wr_operations":0,
1716 "rd_bytes":0,
1717 "rd_operations":0
1718 "flush_operations":0,
1719 "wr_total_times_ns":0
1720 "rd_total_times_ns":0
1721 "flush_total_times_ns":0
1722 }
1723 }
1724 ]
1725 }
1726
1727 EQMP
1728
1729 {
1730 .name = "query-blockstats",
1731 .args_type = "",
1732 .mhandler.cmd_new = qmp_marshal_input_query_blockstats,
1733 },
1734
1735 SQMP
1736 query-cpus
1737 ----------
1738
1739 Show CPU information.
1740
1741 Return a json-array. Each CPU is represented by a json-object, which contains:
1742
1743 - "CPU": CPU index (json-int)
1744 - "current": true if this is the current CPU, false otherwise (json-bool)
1745 - "halted": true if the cpu is halted, false otherwise (json-bool)
1746 - Current program counter. The key's name depends on the architecture:
1747 "pc": i386/x86_64 (json-int)
1748 "nip": PPC (json-int)
1749 "pc" and "npc": sparc (json-int)
1750 "PC": mips (json-int)
1751 - "thread_id": ID of the underlying host thread (json-int)
1752
1753 Example:
1754
1755 -> { "execute": "query-cpus" }
1756 <- {
1757 "return":[
1758 {
1759 "CPU":0,
1760 "current":true,
1761 "halted":false,
1762 "pc":3227107138
1763 "thread_id":3134
1764 },
1765 {
1766 "CPU":1,
1767 "current":false,
1768 "halted":true,
1769 "pc":7108165
1770 "thread_id":3135
1771 }
1772 ]
1773 }
1774
1775 EQMP
1776
1777 {
1778 .name = "query-cpus",
1779 .args_type = "",
1780 .mhandler.cmd_new = qmp_marshal_input_query_cpus,
1781 },
1782
1783 SQMP
1784 query-pci
1785 ---------
1786
1787 PCI buses and devices information.
1788
1789 The returned value is a json-array of all buses. Each bus is represented by
1790 a json-object, which has a key with a json-array of all PCI devices attached
1791 to it. Each device is represented by a json-object.
1792
1793 The bus json-object contains the following:
1794
1795 - "bus": bus number (json-int)
1796 - "devices": a json-array of json-objects, each json-object represents a
1797 PCI device
1798
1799 The PCI device json-object contains the following:
1800
1801 - "bus": identical to the parent's bus number (json-int)
1802 - "slot": slot number (json-int)
1803 - "function": function number (json-int)
1804 - "class_info": a json-object containing:
1805 - "desc": device class description (json-string, optional)
1806 - "class": device class number (json-int)
1807 - "id": a json-object containing:
1808 - "device": device ID (json-int)
1809 - "vendor": vendor ID (json-int)
1810 - "irq": device's IRQ if assigned (json-int, optional)
1811 - "qdev_id": qdev id string (json-string)
1812 - "pci_bridge": It's a json-object, only present if this device is a
1813 PCI bridge, contains:
1814 - "bus": bus number (json-int)
1815 - "secondary": secondary bus number (json-int)
1816 - "subordinate": subordinate bus number (json-int)
1817 - "io_range": I/O memory range information, a json-object with the
1818 following members:
1819 - "base": base address, in bytes (json-int)
1820 - "limit": limit address, in bytes (json-int)
1821 - "memory_range": memory range information, a json-object with the
1822 following members:
1823 - "base": base address, in bytes (json-int)
1824 - "limit": limit address, in bytes (json-int)
1825 - "prefetchable_range": Prefetchable memory range information, a
1826 json-object with the following members:
1827 - "base": base address, in bytes (json-int)
1828 - "limit": limit address, in bytes (json-int)
1829 - "devices": a json-array of PCI devices if there's any attached, each
1830 each element is represented by a json-object, which contains
1831 the same members of the 'PCI device json-object' described
1832 above (optional)
1833 - "regions": a json-array of json-objects, each json-object represents a
1834 memory region of this device
1835
1836 The memory range json-object contains the following:
1837
1838 - "base": base memory address (json-int)
1839 - "limit": limit value (json-int)
1840
1841 The region json-object can be an I/O region or a memory region, an I/O region
1842 json-object contains the following:
1843
1844 - "type": "io" (json-string, fixed)
1845 - "bar": BAR number (json-int)
1846 - "address": memory address (json-int)
1847 - "size": memory size (json-int)
1848
1849 A memory region json-object contains the following:
1850
1851 - "type": "memory" (json-string, fixed)
1852 - "bar": BAR number (json-int)
1853 - "address": memory address (json-int)
1854 - "size": memory size (json-int)
1855 - "mem_type_64": true or false (json-bool)
1856 - "prefetch": true or false (json-bool)
1857
1858 Example:
1859
1860 -> { "execute": "query-pci" }
1861 <- {
1862 "return":[
1863 {
1864 "bus":0,
1865 "devices":[
1866 {
1867 "bus":0,
1868 "qdev_id":"",
1869 "slot":0,
1870 "class_info":{
1871 "class":1536,
1872 "desc":"Host bridge"
1873 },
1874 "id":{
1875 "device":32902,
1876 "vendor":4663
1877 },
1878 "function":0,
1879 "regions":[
1880
1881 ]
1882 },
1883 {
1884 "bus":0,
1885 "qdev_id":"",
1886 "slot":1,
1887 "class_info":{
1888 "class":1537,
1889 "desc":"ISA bridge"
1890 },
1891 "id":{
1892 "device":32902,
1893 "vendor":28672
1894 },
1895 "function":0,
1896 "regions":[
1897
1898 ]
1899 },
1900 {
1901 "bus":0,
1902 "qdev_id":"",
1903 "slot":1,
1904 "class_info":{
1905 "class":257,
1906 "desc":"IDE controller"
1907 },
1908 "id":{
1909 "device":32902,
1910 "vendor":28688
1911 },
1912 "function":1,
1913 "regions":[
1914 {
1915 "bar":4,
1916 "size":16,
1917 "address":49152,
1918 "type":"io"
1919 }
1920 ]
1921 },
1922 {
1923 "bus":0,
1924 "qdev_id":"",
1925 "slot":2,
1926 "class_info":{
1927 "class":768,
1928 "desc":"VGA controller"
1929 },
1930 "id":{
1931 "device":4115,
1932 "vendor":184
1933 },
1934 "function":0,
1935 "regions":[
1936 {
1937 "prefetch":true,
1938 "mem_type_64":false,
1939 "bar":0,
1940 "size":33554432,
1941 "address":4026531840,
1942 "type":"memory"
1943 },
1944 {
1945 "prefetch":false,
1946 "mem_type_64":false,
1947 "bar":1,
1948 "size":4096,
1949 "address":4060086272,
1950 "type":"memory"
1951 },
1952 {
1953 "prefetch":false,
1954 "mem_type_64":false,
1955 "bar":6,
1956 "size":65536,
1957 "address":-1,
1958 "type":"memory"
1959 }
1960 ]
1961 },
1962 {
1963 "bus":0,
1964 "qdev_id":"",
1965 "irq":11,
1966 "slot":4,
1967 "class_info":{
1968 "class":1280,
1969 "desc":"RAM controller"
1970 },
1971 "id":{
1972 "device":6900,
1973 "vendor":4098
1974 },
1975 "function":0,
1976 "regions":[
1977 {
1978 "bar":0,
1979 "size":32,
1980 "address":49280,
1981 "type":"io"
1982 }
1983 ]
1984 }
1985 ]
1986 }
1987 ]
1988 }
1989
1990 Note: This example has been shortened as the real response is too long.
1991
1992 EQMP
1993
1994 {
1995 .name = "query-pci",
1996 .args_type = "",
1997 .mhandler.cmd_new = qmp_marshal_input_query_pci,
1998 },
1999
2000 SQMP
2001 query-kvm
2002 ---------
2003
2004 Show KVM information.
2005
2006 Return a json-object with the following information:
2007
2008 - "enabled": true if KVM support is enabled, false otherwise (json-bool)
2009 - "present": true if QEMU has KVM support, false otherwise (json-bool)
2010
2011 Example:
2012
2013 -> { "execute": "query-kvm" }
2014 <- { "return": { "enabled": true, "present": true } }
2015
2016 EQMP
2017
2018 {
2019 .name = "query-kvm",
2020 .args_type = "",
2021 .mhandler.cmd_new = qmp_marshal_input_query_kvm,
2022 },
2023
2024 SQMP
2025 query-status
2026 ------------
2027
2028 Return a json-object with the following information:
2029
2030 - "running": true if the VM is running, or false if it is paused (json-bool)
2031 - "singlestep": true if the VM is in single step mode,
2032 false otherwise (json-bool)
2033 - "status": one of the following values (json-string)
2034 "debug" - QEMU is running on a debugger
2035 "inmigrate" - guest is paused waiting for an incoming migration
2036 "internal-error" - An internal error that prevents further guest
2037 execution has occurred
2038 "io-error" - the last IOP has failed and the device is configured
2039 to pause on I/O errors
2040 "paused" - guest has been paused via the 'stop' command
2041 "postmigrate" - guest is paused following a successful 'migrate'
2042 "prelaunch" - QEMU was started with -S and guest has not started
2043 "finish-migrate" - guest is paused to finish the migration process
2044 "restore-vm" - guest is paused to restore VM state
2045 "running" - guest is actively running
2046 "save-vm" - guest is paused to save the VM state
2047 "shutdown" - guest is shut down (and -no-shutdown is in use)
2048 "watchdog" - the watchdog action is configured to pause and
2049 has been triggered
2050
2051 Example:
2052
2053 -> { "execute": "query-status" }
2054 <- { "return": { "running": true, "singlestep": false, "status": "running" } }
2055
2056 EQMP
2057
2058 {
2059 .name = "query-status",
2060 .args_type = "",
2061 .mhandler.cmd_new = qmp_marshal_input_query_status,
2062 },
2063
2064 SQMP
2065 query-mice
2066 ----------
2067
2068 Show VM mice information.
2069
2070 Each mouse is represented by a json-object, the returned value is a json-array
2071 of all mice.
2072
2073 The mouse json-object contains the following:
2074
2075 - "name": mouse's name (json-string)
2076 - "index": mouse's index (json-int)
2077 - "current": true if this mouse is receiving events, false otherwise (json-bool)
2078 - "absolute": true if the mouse generates absolute input events (json-bool)
2079
2080 Example:
2081
2082 -> { "execute": "query-mice" }
2083 <- {
2084 "return":[
2085 {
2086 "name":"QEMU Microsoft Mouse",
2087 "index":0,
2088 "current":false,
2089 "absolute":false
2090 },
2091 {
2092 "name":"QEMU PS/2 Mouse",
2093 "index":1,
2094 "current":true,
2095 "absolute":true
2096 }
2097 ]
2098 }
2099
2100 EQMP
2101
2102 {
2103 .name = "query-mice",
2104 .args_type = "",
2105 .mhandler.cmd_new = qmp_marshal_input_query_mice,
2106 },
2107
2108 SQMP
2109 query-vnc
2110 ---------
2111
2112 Show VNC server information.
2113
2114 Return a json-object with server information. Connected clients are returned
2115 as a json-array of json-objects.
2116
2117 The main json-object contains the following:
2118
2119 - "enabled": true or false (json-bool)
2120 - "host": server's IP address (json-string)
2121 - "family": address family (json-string)
2122 - Possible values: "ipv4", "ipv6", "unix", "unknown"
2123 - "service": server's port number (json-string)
2124 - "auth": authentication method (json-string)
2125 - Possible values: "invalid", "none", "ra2", "ra2ne", "sasl", "tight",
2126 "tls", "ultra", "unknown", "vencrypt", "vencrypt",
2127 "vencrypt+plain", "vencrypt+tls+none",
2128 "vencrypt+tls+plain", "vencrypt+tls+sasl",
2129 "vencrypt+tls+vnc", "vencrypt+x509+none",
2130 "vencrypt+x509+plain", "vencrypt+x509+sasl",
2131 "vencrypt+x509+vnc", "vnc"
2132 - "clients": a json-array of all connected clients
2133
2134 Clients are described by a json-object, each one contain the following:
2135
2136 - "host": client's IP address (json-string)
2137 - "family": address family (json-string)
2138 - Possible values: "ipv4", "ipv6", "unix", "unknown"
2139 - "service": client's port number (json-string)
2140 - "x509_dname": TLS dname (json-string, optional)
2141 - "sasl_username": SASL username (json-string, optional)
2142
2143 Example:
2144
2145 -> { "execute": "query-vnc" }
2146 <- {
2147 "return":{
2148 "enabled":true,
2149 "host":"0.0.0.0",
2150 "service":"50402",
2151 "auth":"vnc",
2152 "family":"ipv4",
2153 "clients":[
2154 {
2155 "host":"127.0.0.1",
2156 "service":"50401",
2157 "family":"ipv4"
2158 }
2159 ]
2160 }
2161 }
2162
2163 EQMP
2164
2165 {
2166 .name = "query-vnc",
2167 .args_type = "",
2168 .mhandler.cmd_new = qmp_marshal_input_query_vnc,
2169 },
2170
2171 SQMP
2172 query-spice
2173 -----------
2174
2175 Show SPICE server information.
2176
2177 Return a json-object with server information. Connected clients are returned
2178 as a json-array of json-objects.
2179
2180 The main json-object contains the following:
2181
2182 - "enabled": true or false (json-bool)
2183 - "host": server's IP address (json-string)
2184 - "port": server's port number (json-int, optional)
2185 - "tls-port": server's port number (json-int, optional)
2186 - "auth": authentication method (json-string)
2187 - Possible values: "none", "spice"
2188 - "channels": a json-array of all active channels clients
2189
2190 Channels are described by a json-object, each one contain the following:
2191
2192 - "host": client's IP address (json-string)
2193 - "family": address family (json-string)
2194 - Possible values: "ipv4", "ipv6", "unix", "unknown"
2195 - "port": client's port number (json-string)
2196 - "connection-id": spice connection id. All channels with the same id
2197 belong to the same spice session (json-int)
2198 - "channel-type": channel type. "1" is the main control channel, filter for
2199 this one if you want track spice sessions only (json-int)
2200 - "channel-id": channel id. Usually "0", might be different needed when
2201 multiple channels of the same type exist, such as multiple
2202 display channels in a multihead setup (json-int)
2203 - "tls": whevener the channel is encrypted (json-bool)
2204
2205 Example:
2206
2207 -> { "execute": "query-spice" }
2208 <- {
2209 "return": {
2210 "enabled": true,
2211 "auth": "spice",
2212 "port": 5920,
2213 "tls-port": 5921,
2214 "host": "0.0.0.0",
2215 "channels": [
2216 {
2217 "port": "54924",
2218 "family": "ipv4",
2219 "channel-type": 1,
2220 "connection-id": 1804289383,
2221 "host": "127.0.0.1",
2222 "channel-id": 0,
2223 "tls": true
2224 },
2225 {
2226 "port": "36710",
2227 "family": "ipv4",
2228 "channel-type": 4,
2229 "connection-id": 1804289383,
2230 "host": "127.0.0.1",
2231 "channel-id": 0,
2232 "tls": false
2233 },
2234 [ ... more channels follow ... ]
2235 ]
2236 }
2237 }
2238
2239 EQMP
2240
2241 #if defined(CONFIG_SPICE)
2242 {
2243 .name = "query-spice",
2244 .args_type = "",
2245 .mhandler.cmd_new = qmp_marshal_input_query_spice,
2246 },
2247 #endif
2248
2249 SQMP
2250 query-name
2251 ----------
2252
2253 Show VM name.
2254
2255 Return a json-object with the following information:
2256
2257 - "name": VM's name (json-string, optional)
2258
2259 Example:
2260
2261 -> { "execute": "query-name" }
2262 <- { "return": { "name": "qemu-name" } }
2263
2264 EQMP
2265
2266 {
2267 .name = "query-name",
2268 .args_type = "",
2269 .mhandler.cmd_new = qmp_marshal_input_query_name,
2270 },
2271
2272 SQMP
2273 query-uuid
2274 ----------
2275
2276 Show VM UUID.
2277
2278 Return a json-object with the following information:
2279
2280 - "UUID": Universally Unique Identifier (json-string)
2281
2282 Example:
2283
2284 -> { "execute": "query-uuid" }
2285 <- { "return": { "UUID": "550e8400-e29b-41d4-a716-446655440000" } }
2286
2287 EQMP
2288
2289 {
2290 .name = "query-uuid",
2291 .args_type = "",
2292 .mhandler.cmd_new = qmp_marshal_input_query_uuid,
2293 },
2294
2295 SQMP
2296 query-migrate
2297 -------------
2298
2299 Migration status.
2300
2301 Return a json-object. If migration is active there will be another json-object
2302 with RAM migration status and if block migration is active another one with
2303 block migration status.
2304
2305 The main json-object contains the following:
2306
2307 - "status": migration status (json-string)
2308 - Possible values: "active", "completed", "failed", "cancelled"
2309 - "total-time": total amount of ms since migration started. If
2310 migration has ended, it returns the total migration
2311 time (json-int)
2312 - "downtime": only present when migration has finished correctly
2313 total amount in ms for downtime that happened (json-int)
2314 - "expected-downtime": only present while migration is active
2315 total amount in ms for downtime that was calculated on
2316 the last bitmap round (json-int)
2317 - "ram": only present if "status" is "active", it is a json-object with the
2318 following RAM information (in bytes):
2319 - "transferred": amount transferred (json-int)
2320 - "remaining": amount remaining (json-int)
2321 - "total": total (json-int)
2322 - "duplicate": number of duplicated pages (json-int)
2323 - "normal" : number of normal pages transferred (json-int)
2324 - "normal-bytes" : number of normal bytes transferred (json-int)
2325 - "disk": only present if "status" is "active" and it is a block migration,
2326 it is a json-object with the following disk information (in bytes):
2327 - "transferred": amount transferred (json-int)
2328 - "remaining": amount remaining (json-int)
2329 - "total": total (json-int)
2330 - "xbzrle-cache": only present if XBZRLE is active.
2331 It is a json-object with the following XBZRLE information:
2332 - "cache-size": XBZRLE cache size
2333 - "bytes": total XBZRLE bytes transferred
2334 - "pages": number of XBZRLE compressed pages
2335 - "cache-miss": number of cache misses
2336 - "overflow": number of XBZRLE overflows
2337 Examples:
2338
2339 1. Before the first migration
2340
2341 -> { "execute": "query-migrate" }
2342 <- { "return": {} }
2343
2344 2. Migration is done and has succeeded
2345
2346 -> { "execute": "query-migrate" }
2347 <- { "return": {
2348 "status": "completed",
2349 "ram":{
2350 "transferred":123,
2351 "remaining":123,
2352 "total":246,
2353 "total-time":12345,
2354 "downtime":12345,
2355 "duplicate":123,
2356 "normal":123,
2357 "normal-bytes":123456
2358 }
2359 }
2360 }
2361
2362 3. Migration is done and has failed
2363
2364 -> { "execute": "query-migrate" }
2365 <- { "return": { "status": "failed" } }
2366
2367 4. Migration is being performed and is not a block migration:
2368
2369 -> { "execute": "query-migrate" }
2370 <- {
2371 "return":{
2372 "status":"active",
2373 "ram":{
2374 "transferred":123,
2375 "remaining":123,
2376 "total":246,
2377 "total-time":12345,
2378 "expected-downtime":12345,
2379 "duplicate":123,
2380 "normal":123,
2381 "normal-bytes":123456
2382 }
2383 }
2384 }
2385
2386 5. Migration is being performed and is a block migration:
2387
2388 -> { "execute": "query-migrate" }
2389 <- {
2390 "return":{
2391 "status":"active",
2392 "ram":{
2393 "total":1057024,
2394 "remaining":1053304,
2395 "transferred":3720,
2396 "total-time":12345,
2397 "expected-downtime":12345,
2398 "duplicate":123,
2399 "normal":123,
2400 "normal-bytes":123456
2401 },
2402 "disk":{
2403 "total":20971520,
2404 "remaining":20880384,
2405 "transferred":91136
2406 }
2407 }
2408 }
2409
2410 6. Migration is being performed and XBZRLE is active:
2411
2412 -> { "execute": "query-migrate" }
2413 <- {
2414 "return":{
2415 "status":"active",
2416 "capabilities" : [ { "capability": "xbzrle", "state" : true } ],
2417 "ram":{
2418 "total":1057024,
2419 "remaining":1053304,
2420 "transferred":3720,
2421 "total-time":12345,
2422 "expected-downtime":12345,
2423 "duplicate":10,
2424 "normal":3333,
2425 "normal-bytes":3412992
2426 },
2427 "xbzrle-cache":{
2428 "cache-size":67108864,
2429 "bytes":20971520,
2430 "pages":2444343,
2431 "cache-miss":2244,
2432 "overflow":34434
2433 }
2434 }
2435 }
2436
2437 EQMP
2438
2439 {
2440 .name = "query-migrate",
2441 .args_type = "",
2442 .mhandler.cmd_new = qmp_marshal_input_query_migrate,
2443 },
2444
2445 SQMP
2446 migrate-set-capabilities
2447 -------
2448
2449 Enable/Disable migration capabilities
2450
2451 - "xbzrle": xbzrle support
2452
2453 Arguments:
2454
2455 Example:
2456
2457 -> { "execute": "migrate-set-capabilities" , "arguments":
2458 { "capabilities": [ { "capability": "xbzrle", "state": true } ] } }
2459
2460 EQMP
2461
2462 {
2463 .name = "migrate-set-capabilities",
2464 .args_type = "capabilities:O",
2465 .params = "capability:s,state:b",
2466 .mhandler.cmd_new = qmp_marshal_input_migrate_set_capabilities,
2467 },
2468 SQMP
2469 query-migrate-capabilities
2470 -------
2471
2472 Query current migration capabilities
2473
2474 - "capabilities": migration capabilities state
2475 - "xbzrle" : XBZRLE state (json-bool)
2476
2477 Arguments:
2478
2479 Example:
2480
2481 -> { "execute": "query-migrate-capabilities" }
2482 <- { "return": {
2483 "capabilities" : [ { "capability" : "xbzrle", "state" : false } ]
2484 }
2485 }
2486 EQMP
2487
2488 {
2489 .name = "query-migrate-capabilities",
2490 .args_type = "",
2491 .mhandler.cmd_new = qmp_marshal_input_query_migrate_capabilities,
2492 },
2493
2494 SQMP
2495 query-balloon
2496 -------------
2497
2498 Show balloon information.
2499
2500 Make an asynchronous request for balloon info. When the request completes a
2501 json-object will be returned containing the following data:
2502
2503 - "actual": current balloon value in bytes (json-int)
2504 - "mem_swapped_in": Amount of memory swapped in bytes (json-int, optional)
2505 - "mem_swapped_out": Amount of memory swapped out in bytes (json-int, optional)
2506 - "major_page_faults": Number of major faults (json-int, optional)
2507 - "minor_page_faults": Number of minor faults (json-int, optional)
2508 - "free_mem": Total amount of free and unused memory in
2509 bytes (json-int, optional)
2510 - "total_mem": Total amount of available memory in bytes (json-int, optional)
2511
2512 Example:
2513
2514 -> { "execute": "query-balloon" }
2515 <- {
2516 "return":{
2517 "actual":1073741824,
2518 "mem_swapped_in":0,
2519 "mem_swapped_out":0,
2520 "major_page_faults":142,
2521 "minor_page_faults":239245,
2522 "free_mem":1014185984,
2523 "total_mem":1044668416
2524 }
2525 }
2526
2527 EQMP
2528
2529 {
2530 .name = "query-balloon",
2531 .args_type = "",
2532 .mhandler.cmd_new = qmp_marshal_input_query_balloon,
2533 },
2534
2535 {
2536 .name = "query-block-jobs",
2537 .args_type = "",
2538 .mhandler.cmd_new = qmp_marshal_input_query_block_jobs,
2539 },
2540
2541 {
2542 .name = "qom-list",
2543 .args_type = "path:s",
2544 .mhandler.cmd_new = qmp_marshal_input_qom_list,
2545 },
2546
2547 {
2548 .name = "qom-set",
2549 .args_type = "path:s,property:s,value:q",
2550 .mhandler.cmd_new = qmp_qom_set,
2551 },
2552
2553 {
2554 .name = "qom-get",
2555 .args_type = "path:s,property:s",
2556 .mhandler.cmd_new = qmp_qom_get,
2557 },
2558
2559 {
2560 .name = "change-vnc-password",
2561 .args_type = "password:s",
2562 .mhandler.cmd_new = qmp_marshal_input_change_vnc_password,
2563 },
2564 {
2565 .name = "qom-list-types",
2566 .args_type = "implements:s?,abstract:b?",
2567 .mhandler.cmd_new = qmp_marshal_input_qom_list_types,
2568 },
2569
2570 {
2571 .name = "device-list-properties",
2572 .args_type = "typename:s",
2573 .mhandler.cmd_new = qmp_marshal_input_device_list_properties,
2574 },
2575
2576 {
2577 .name = "query-machines",
2578 .args_type = "",
2579 .mhandler.cmd_new = qmp_marshal_input_query_machines,
2580 },
2581
2582 {
2583 .name = "query-cpu-definitions",
2584 .args_type = "",
2585 .mhandler.cmd_new = qmp_marshal_input_query_cpu_definitions,
2586 },
2587
2588 {
2589 .name = "query-target",
2590 .args_type = "",
2591 .mhandler.cmd_new = qmp_marshal_input_query_target,
2592 },