]> git.proxmox.com Git - qemu.git/blob - qmp-commands.hx
Merge remote-tracking branch 'qemu-kvm/memory/urgent' into staging
[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 .params = "filename",
150 .help = "save screen into PPM image 'filename'",
151 .user_print = monitor_user_noop,
152 .mhandler.cmd_new = do_screen_dump,
153 },
154
155 SQMP
156 screendump
157 ----------
158
159 Save screen into PPM image.
160
161 Arguments:
162
163 - "filename": file path (json-string)
164
165 Example:
166
167 -> { "execute": "screendump", "arguments": { "filename": "/tmp/image" } }
168 <- { "return": {} }
169
170 EQMP
171
172 {
173 .name = "stop",
174 .args_type = "",
175 .mhandler.cmd_new = qmp_marshal_input_stop,
176 },
177
178 SQMP
179 stop
180 ----
181
182 Stop the emulator.
183
184 Arguments: None.
185
186 Example:
187
188 -> { "execute": "stop" }
189 <- { "return": {} }
190
191 EQMP
192
193 {
194 .name = "cont",
195 .args_type = "",
196 .mhandler.cmd_new = qmp_marshal_input_cont,
197 },
198
199 SQMP
200 cont
201 ----
202
203 Resume emulation.
204
205 Arguments: None.
206
207 Example:
208
209 -> { "execute": "cont" }
210 <- { "return": {} }
211
212 EQMP
213
214 {
215 .name = "system_wakeup",
216 .args_type = "",
217 .mhandler.cmd_new = qmp_marshal_input_system_wakeup,
218 },
219
220 SQMP
221 system_wakeup
222 -------------
223
224 Wakeup guest from suspend.
225
226 Arguments: None.
227
228 Example:
229
230 -> { "execute": "system_wakeup" }
231 <- { "return": {} }
232
233 EQMP
234
235 {
236 .name = "system_reset",
237 .args_type = "",
238 .mhandler.cmd_new = qmp_marshal_input_system_reset,
239 },
240
241 SQMP
242 system_reset
243 ------------
244
245 Reset the system.
246
247 Arguments: None.
248
249 Example:
250
251 -> { "execute": "system_reset" }
252 <- { "return": {} }
253
254 EQMP
255
256 {
257 .name = "system_powerdown",
258 .args_type = "",
259 .mhandler.cmd_new = qmp_marshal_input_system_powerdown,
260 },
261
262 SQMP
263 system_powerdown
264 ----------------
265
266 Send system power down event.
267
268 Arguments: None.
269
270 Example:
271
272 -> { "execute": "system_powerdown" }
273 <- { "return": {} }
274
275 EQMP
276
277 {
278 .name = "device_add",
279 .args_type = "device:O",
280 .params = "driver[,prop=value][,...]",
281 .help = "add device, like -device on the command line",
282 .user_print = monitor_user_noop,
283 .mhandler.cmd_new = do_device_add,
284 },
285
286 SQMP
287 device_add
288 ----------
289
290 Add a device.
291
292 Arguments:
293
294 - "driver": the name of the new device's driver (json-string)
295 - "bus": the device's parent bus (device tree path, json-string, optional)
296 - "id": the device's ID, must be unique (json-string)
297 - device properties
298
299 Example:
300
301 -> { "execute": "device_add", "arguments": { "driver": "e1000", "id": "net1" } }
302 <- { "return": {} }
303
304 Notes:
305
306 (1) For detailed information about this command, please refer to the
307 'docs/qdev-device-use.txt' file.
308
309 (2) It's possible to list device properties by running QEMU with the
310 "-device DEVICE,\?" command-line argument, where DEVICE is the device's name
311
312 EQMP
313
314 {
315 .name = "device_del",
316 .args_type = "id:s",
317 .params = "device",
318 .help = "remove device",
319 .user_print = monitor_user_noop,
320 .mhandler.cmd_new = do_device_del,
321 },
322
323 SQMP
324 device_del
325 ----------
326
327 Remove a device.
328
329 Arguments:
330
331 - "id": the device's ID (json-string)
332
333 Example:
334
335 -> { "execute": "device_del", "arguments": { "id": "net1" } }
336 <- { "return": {} }
337
338 EQMP
339
340 {
341 .name = "cpu",
342 .args_type = "index:i",
343 .mhandler.cmd_new = qmp_marshal_input_cpu,
344 },
345
346 SQMP
347 cpu
348 ---
349
350 Set the default CPU.
351
352 Arguments:
353
354 - "index": the CPU's index (json-int)
355
356 Example:
357
358 -> { "execute": "cpu", "arguments": { "index": 0 } }
359 <- { "return": {} }
360
361 Note: CPUs' indexes are obtained with the 'query-cpus' command.
362
363 EQMP
364
365 {
366 .name = "memsave",
367 .args_type = "val:l,size:i,filename:s,cpu:i?",
368 .mhandler.cmd_new = qmp_marshal_input_memsave,
369 },
370
371 SQMP
372 memsave
373 -------
374
375 Save to disk virtual memory dump starting at 'val' of size 'size'.
376
377 Arguments:
378
379 - "val": the starting address (json-int)
380 - "size": the memory size, in bytes (json-int)
381 - "filename": file path (json-string)
382 - "cpu": virtual CPU index (json-int, optional)
383
384 Example:
385
386 -> { "execute": "memsave",
387 "arguments": { "val": 10,
388 "size": 100,
389 "filename": "/tmp/virtual-mem-dump" } }
390 <- { "return": {} }
391
392 EQMP
393
394 {
395 .name = "pmemsave",
396 .args_type = "val:l,size:i,filename:s",
397 .mhandler.cmd_new = qmp_marshal_input_pmemsave,
398 },
399
400 SQMP
401 pmemsave
402 --------
403
404 Save to disk physical memory dump starting at 'val' of size 'size'.
405
406 Arguments:
407
408 - "val": the starting address (json-int)
409 - "size": the memory size, in bytes (json-int)
410 - "filename": file path (json-string)
411
412 Example:
413
414 -> { "execute": "pmemsave",
415 "arguments": { "val": 10,
416 "size": 100,
417 "filename": "/tmp/physical-mem-dump" } }
418 <- { "return": {} }
419
420 EQMP
421
422 {
423 .name = "inject-nmi",
424 .args_type = "",
425 .mhandler.cmd_new = qmp_marshal_input_inject_nmi,
426 },
427
428 SQMP
429 inject-nmi
430 ----------
431
432 Inject an NMI on guest's CPUs.
433
434 Arguments: None.
435
436 Example:
437
438 -> { "execute": "inject-nmi" }
439 <- { "return": {} }
440
441 Note: inject-nmi is only supported for x86 guest currently, it will
442 returns "Unsupported" error for non-x86 guest.
443
444 EQMP
445
446 {
447 .name = "migrate",
448 .args_type = "detach:-d,blk:-b,inc:-i,uri:s",
449 .mhandler.cmd_new = qmp_marshal_input_migrate,
450 },
451
452 SQMP
453 migrate
454 -------
455
456 Migrate to URI.
457
458 Arguments:
459
460 - "blk": block migration, full disk copy (json-bool, optional)
461 - "inc": incremental disk copy (json-bool, optional)
462 - "uri": Destination URI (json-string)
463
464 Example:
465
466 -> { "execute": "migrate", "arguments": { "uri": "tcp:0:4446" } }
467 <- { "return": {} }
468
469 Notes:
470
471 (1) The 'query-migrate' command should be used to check migration's progress
472 and final result (this information is provided by the 'status' member)
473 (2) All boolean arguments default to false
474 (3) The user Monitor's "detach" argument is invalid in QMP and should not
475 be used
476
477 EQMP
478
479 {
480 .name = "migrate_cancel",
481 .args_type = "",
482 .mhandler.cmd_new = qmp_marshal_input_migrate_cancel,
483 },
484
485 SQMP
486 migrate_cancel
487 --------------
488
489 Cancel the current migration.
490
491 Arguments: None.
492
493 Example:
494
495 -> { "execute": "migrate_cancel" }
496 <- { "return": {} }
497
498 EQMP
499
500 {
501 .name = "migrate_set_speed",
502 .args_type = "value:o",
503 .mhandler.cmd_new = qmp_marshal_input_migrate_set_speed,
504 },
505
506 SQMP
507 migrate_set_speed
508 -----------------
509
510 Set maximum speed for migrations.
511
512 Arguments:
513
514 - "value": maximum speed, in bytes per second (json-int)
515
516 Example:
517
518 -> { "execute": "migrate_set_speed", "arguments": { "value": 1024 } }
519 <- { "return": {} }
520
521 EQMP
522
523 {
524 .name = "migrate_set_downtime",
525 .args_type = "value:T",
526 .mhandler.cmd_new = qmp_marshal_input_migrate_set_downtime,
527 },
528
529 SQMP
530 migrate_set_downtime
531 --------------------
532
533 Set maximum tolerated downtime (in seconds) for migrations.
534
535 Arguments:
536
537 - "value": maximum downtime (json-number)
538
539 Example:
540
541 -> { "execute": "migrate_set_downtime", "arguments": { "value": 0.1 } }
542 <- { "return": {} }
543
544 EQMP
545
546 {
547 .name = "client_migrate_info",
548 .args_type = "protocol:s,hostname:s,port:i?,tls-port:i?,cert-subject:s?",
549 .params = "protocol hostname port tls-port cert-subject",
550 .help = "send migration info to spice/vnc client",
551 .user_print = monitor_user_noop,
552 .mhandler.cmd_async = client_migrate_info,
553 .flags = MONITOR_CMD_ASYNC,
554 },
555
556 SQMP
557 client_migrate_info
558 ------------------
559
560 Set the spice/vnc connection info for the migration target. The spice/vnc
561 server will ask the spice/vnc client to automatically reconnect using the
562 new parameters (if specified) once the vm migration finished successfully.
563
564 Arguments:
565
566 - "protocol": protocol: "spice" or "vnc" (json-string)
567 - "hostname": migration target hostname (json-string)
568 - "port": spice/vnc tcp port for plaintext channels (json-int, optional)
569 - "tls-port": spice tcp port for tls-secured channels (json-int, optional)
570 - "cert-subject": server certificate subject (json-string, optional)
571
572 Example:
573
574 -> { "execute": "client_migrate_info",
575 "arguments": { "protocol": "spice",
576 "hostname": "virt42.lab.kraxel.org",
577 "port": 1234 } }
578 <- { "return": {} }
579
580 EQMP
581
582 {
583 .name = "netdev_add",
584 .args_type = "netdev:O",
585 .params = "[user|tap|socket],id=str[,prop=value][,...]",
586 .help = "add host network device",
587 .user_print = monitor_user_noop,
588 .mhandler.cmd_new = do_netdev_add,
589 },
590
591 SQMP
592 netdev_add
593 ----------
594
595 Add host network device.
596
597 Arguments:
598
599 - "type": the device type, "tap", "user", ... (json-string)
600 - "id": the device's ID, must be unique (json-string)
601 - device options
602
603 Example:
604
605 -> { "execute": "netdev_add", "arguments": { "type": "user", "id": "netdev1" } }
606 <- { "return": {} }
607
608 Note: The supported device options are the same ones supported by the '-net'
609 command-line argument, which are listed in the '-help' output or QEMU's
610 manual
611
612 EQMP
613
614 {
615 .name = "netdev_del",
616 .args_type = "id:s",
617 .params = "id",
618 .help = "remove host network device",
619 .user_print = monitor_user_noop,
620 .mhandler.cmd_new = do_netdev_del,
621 },
622
623 SQMP
624 netdev_del
625 ----------
626
627 Remove host network device.
628
629 Arguments:
630
631 - "id": the device's ID, must be unique (json-string)
632
633 Example:
634
635 -> { "execute": "netdev_del", "arguments": { "id": "netdev1" } }
636 <- { "return": {} }
637
638
639 EQMP
640
641 {
642 .name = "block_resize",
643 .args_type = "device:B,size:o",
644 .mhandler.cmd_new = qmp_marshal_input_block_resize,
645 },
646
647 SQMP
648 block_resize
649 ------------
650
651 Resize a block image while a guest is running.
652
653 Arguments:
654
655 - "device": the device's ID, must be unique (json-string)
656 - "size": new size
657
658 Example:
659
660 -> { "execute": "block_resize", "arguments": { "device": "scratch", "size": 1073741824 } }
661 <- { "return": {} }
662
663 EQMP
664
665 {
666 .name = "block_stream",
667 .args_type = "device:B,base:s?",
668 .mhandler.cmd_new = qmp_marshal_input_block_stream,
669 },
670
671 {
672 .name = "block_job_set_speed",
673 .args_type = "device:B,value:o",
674 .mhandler.cmd_new = qmp_marshal_input_block_job_set_speed,
675 },
676
677 {
678 .name = "block_job_cancel",
679 .args_type = "device:B",
680 .mhandler.cmd_new = qmp_marshal_input_block_job_cancel,
681 },
682 {
683 .name = "transaction",
684 .args_type = "actions:O",
685 .mhandler.cmd_new = qmp_marshal_input_transaction,
686 },
687
688 SQMP
689 transaction
690 -----------
691
692 Atomically operate on one or more block devices. The only supported
693 operation for now is snapshotting. If there is any failure performing
694 any of the operations, all snapshots for the group are abandoned, and
695 the original disks pre-snapshot attempt are used.
696
697 A list of dictionaries is accepted, that contains the actions to be performed.
698 For snapshots this is the device, the file to use for the new snapshot,
699 and the format. The default format, if not specified, is qcow2.
700
701 Each new snapshot defaults to being created by QEMU (wiping any
702 contents if the file already exists), but it is also possible to reuse
703 an externally-created file. In the latter case, you should ensure that
704 the new image file has the same contents as the current one; QEMU cannot
705 perform any meaningful check. Typically this is achieved by using the
706 current image file as the backing file for the new image.
707
708 Arguments:
709
710 actions array:
711 - "type": the operation to perform. The only supported
712 value is "blockdev-snapshot-sync". (json-string)
713 - "data": a dictionary. The contents depend on the value
714 of "type". When "type" is "blockdev-snapshot-sync":
715 - "device": device name to snapshot (json-string)
716 - "snapshot-file": name of new image file (json-string)
717 - "format": format of new image (json-string, optional)
718 - "mode": whether and how QEMU should create the snapshot file
719 (NewImageMode, optional, default "absolute-paths")
720
721 Example:
722
723 -> { "execute": "transaction",
724 "arguments": { "actions": [
725 { 'type': 'blockdev-snapshot-sync', 'data' : { "device": "ide-hd0",
726 "snapshot-file": "/some/place/my-image",
727 "format": "qcow2" } },
728 { 'type': 'blockdev-snapshot-sync', 'data' : { "device": "ide-hd1",
729 "snapshot-file": "/some/place/my-image2",
730 "mode": "existing",
731 "format": "qcow2" } } ] } }
732 <- { "return": {} }
733
734 EQMP
735
736 {
737 .name = "blockdev-snapshot-sync",
738 .args_type = "device:B,snapshot-file:s,format:s?",
739 .mhandler.cmd_new = qmp_marshal_input_blockdev_snapshot_sync,
740 },
741
742 SQMP
743 blockdev-snapshot-sync
744 ----------------------
745
746 Synchronous snapshot of a block device. snapshot-file specifies the
747 target of the new image. If the file exists, or if it is a device, the
748 snapshot will be created in the existing file/device. If does not
749 exist, a new file will be created. format specifies the format of the
750 snapshot image, default is qcow2.
751
752 Arguments:
753
754 - "device": device name to snapshot (json-string)
755 - "snapshot-file": name of new image file (json-string)
756 - "mode": whether and how QEMU should create the snapshot file
757 (NewImageMode, optional, default "absolute-paths")
758 - "format": format of new image (json-string, optional)
759
760 Example:
761
762 -> { "execute": "blockdev-snapshot-sync", "arguments": { "device": "ide-hd0",
763 "snapshot-file":
764 "/some/place/my-image",
765 "format": "qcow2" } }
766 <- { "return": {} }
767
768 EQMP
769
770 {
771 .name = "balloon",
772 .args_type = "value:M",
773 .mhandler.cmd_new = qmp_marshal_input_balloon,
774 },
775
776 SQMP
777 balloon
778 -------
779
780 Request VM to change its memory allocation (in bytes).
781
782 Arguments:
783
784 - "value": New memory allocation (json-int)
785
786 Example:
787
788 -> { "execute": "balloon", "arguments": { "value": 536870912 } }
789 <- { "return": {} }
790
791 EQMP
792
793 {
794 .name = "set_link",
795 .args_type = "name:s,up:b",
796 .mhandler.cmd_new = qmp_marshal_input_set_link,
797 },
798
799 SQMP
800 set_link
801 --------
802
803 Change the link status of a network adapter.
804
805 Arguments:
806
807 - "name": network device name (json-string)
808 - "up": status is up (json-bool)
809
810 Example:
811
812 -> { "execute": "set_link", "arguments": { "name": "e1000.0", "up": false } }
813 <- { "return": {} }
814
815 EQMP
816
817 {
818 .name = "getfd",
819 .args_type = "fdname:s",
820 .params = "getfd name",
821 .help = "receive a file descriptor via SCM rights and assign it a name",
822 .user_print = monitor_user_noop,
823 .mhandler.cmd_new = do_getfd,
824 },
825
826 SQMP
827 getfd
828 -----
829
830 Receive a file descriptor via SCM rights and assign it a name.
831
832 Arguments:
833
834 - "fdname": file descriptor name (json-string)
835
836 Example:
837
838 -> { "execute": "getfd", "arguments": { "fdname": "fd1" } }
839 <- { "return": {} }
840
841 EQMP
842
843 {
844 .name = "closefd",
845 .args_type = "fdname:s",
846 .params = "closefd name",
847 .help = "close a file descriptor previously passed via SCM rights",
848 .user_print = monitor_user_noop,
849 .mhandler.cmd_new = do_closefd,
850 },
851
852 SQMP
853 closefd
854 -------
855
856 Close a file descriptor previously passed via SCM rights.
857
858 Arguments:
859
860 - "fdname": file descriptor name (json-string)
861
862 Example:
863
864 -> { "execute": "closefd", "arguments": { "fdname": "fd1" } }
865 <- { "return": {} }
866
867 EQMP
868
869 {
870 .name = "block_passwd",
871 .args_type = "device:B,password:s",
872 .mhandler.cmd_new = qmp_marshal_input_block_passwd,
873 },
874
875 SQMP
876 block_passwd
877 ------------
878
879 Set the password of encrypted block devices.
880
881 Arguments:
882
883 - "device": device name (json-string)
884 - "password": password (json-string)
885
886 Example:
887
888 -> { "execute": "block_passwd", "arguments": { "device": "ide0-hd0",
889 "password": "12345" } }
890 <- { "return": {} }
891
892 EQMP
893
894 {
895 .name = "block_set_io_throttle",
896 .args_type = "device:B,bps:l,bps_rd:l,bps_wr:l,iops:l,iops_rd:l,iops_wr:l",
897 .mhandler.cmd_new = qmp_marshal_input_block_set_io_throttle,
898 },
899
900 SQMP
901 block_set_io_throttle
902 ------------
903
904 Change I/O throttle limits for a block drive.
905
906 Arguments:
907
908 - "device": device name (json-string)
909 - "bps": total throughput limit in bytes per second(json-int)
910 - "bps_rd": read throughput limit in bytes per second(json-int)
911 - "bps_wr": read throughput limit in bytes per second(json-int)
912 - "iops": total I/O operations per second(json-int)
913 - "iops_rd": read I/O operations per second(json-int)
914 - "iops_wr": write I/O operations per second(json-int)
915
916 Example:
917
918 -> { "execute": "block_set_io_throttle", "arguments": { "device": "virtio0",
919 "bps": "1000000",
920 "bps_rd": "0",
921 "bps_wr": "0",
922 "iops": "0",
923 "iops_rd": "0",
924 "iops_wr": "0" } }
925 <- { "return": {} }
926
927 EQMP
928
929 {
930 .name = "set_password",
931 .args_type = "protocol:s,password:s,connected:s?",
932 .mhandler.cmd_new = qmp_marshal_input_set_password,
933 },
934
935 SQMP
936 set_password
937 ------------
938
939 Set the password for vnc/spice protocols.
940
941 Arguments:
942
943 - "protocol": protocol name (json-string)
944 - "password": password (json-string)
945 - "connected": [ keep | disconnect | fail ] (josn-string, optional)
946
947 Example:
948
949 -> { "execute": "set_password", "arguments": { "protocol": "vnc",
950 "password": "secret" } }
951 <- { "return": {} }
952
953 EQMP
954
955 {
956 .name = "expire_password",
957 .args_type = "protocol:s,time:s",
958 .mhandler.cmd_new = qmp_marshal_input_expire_password,
959 },
960
961 SQMP
962 expire_password
963 ---------------
964
965 Set the password expire time for vnc/spice protocols.
966
967 Arguments:
968
969 - "protocol": protocol name (json-string)
970 - "time": [ now | never | +secs | secs ] (json-string)
971
972 Example:
973
974 -> { "execute": "expire_password", "arguments": { "protocol": "vnc",
975 "time": "+60" } }
976 <- { "return": {} }
977
978 EQMP
979
980 {
981 .name = "add_client",
982 .args_type = "protocol:s,fdname:s,skipauth:b?,tls:b?",
983 .params = "protocol fdname skipauth tls",
984 .help = "add a graphics client",
985 .user_print = monitor_user_noop,
986 .mhandler.cmd_new = add_graphics_client,
987 },
988
989 SQMP
990 add_client
991 ----------
992
993 Add a graphics client
994
995 Arguments:
996
997 - "protocol": protocol name (json-string)
998 - "fdname": file descriptor name (json-string)
999 - "skipauth": whether to skip authentication (json-bool, optional)
1000 - "tls": whether to perform TLS (json-bool, optional)
1001
1002 Example:
1003
1004 -> { "execute": "add_client", "arguments": { "protocol": "vnc",
1005 "fdname": "myclient" } }
1006 <- { "return": {} }
1007
1008 EQMP
1009 {
1010 .name = "qmp_capabilities",
1011 .args_type = "",
1012 .params = "",
1013 .help = "enable QMP capabilities",
1014 .user_print = monitor_user_noop,
1015 .mhandler.cmd_new = do_qmp_capabilities,
1016 },
1017
1018 SQMP
1019 qmp_capabilities
1020 ----------------
1021
1022 Enable QMP capabilities.
1023
1024 Arguments: None.
1025
1026 Example:
1027
1028 -> { "execute": "qmp_capabilities" }
1029 <- { "return": {} }
1030
1031 Note: This command must be issued before issuing any other command.
1032
1033 EQMP
1034
1035 {
1036 .name = "human-monitor-command",
1037 .args_type = "command-line:s,cpu-index:i?",
1038 .mhandler.cmd_new = qmp_marshal_input_human_monitor_command,
1039 },
1040
1041 SQMP
1042 human-monitor-command
1043 ---------------------
1044
1045 Execute a Human Monitor command.
1046
1047 Arguments:
1048
1049 - command-line: the command name and its arguments, just like the
1050 Human Monitor's shell (json-string)
1051 - cpu-index: select the CPU number to be used by commands which access CPU
1052 data, like 'info registers'. The Monitor selects CPU 0 if this
1053 argument is not provided (json-int, optional)
1054
1055 Example:
1056
1057 -> { "execute": "human-monitor-command", "arguments": { "command-line": "info kvm" } }
1058 <- { "return": "kvm support: enabled\r\n" }
1059
1060 Notes:
1061
1062 (1) The Human Monitor is NOT an stable interface, this means that command
1063 names, arguments and responses can change or be removed at ANY time.
1064 Applications that rely on long term stability guarantees should NOT
1065 use this command
1066
1067 (2) Limitations:
1068
1069 o This command is stateless, this means that commands that depend
1070 on state information (such as getfd) might not work
1071
1072 o Commands that prompt the user for data (eg. 'cont' when the block
1073 device is encrypted) don't currently work
1074
1075 3. Query Commands
1076 =================
1077
1078 HXCOMM Each query command below is inside a SQMP/EQMP section, do NOT change
1079 HXCOMM this! We will possibly move query commands definitions inside those
1080 HXCOMM sections, just like regular commands.
1081
1082 EQMP
1083
1084 SQMP
1085 query-version
1086 -------------
1087
1088 Show QEMU version.
1089
1090 Return a json-object with the following information:
1091
1092 - "qemu": A json-object containing three integer values:
1093 - "major": QEMU's major version (json-int)
1094 - "minor": QEMU's minor version (json-int)
1095 - "micro": QEMU's micro version (json-int)
1096 - "package": package's version (json-string)
1097
1098 Example:
1099
1100 -> { "execute": "query-version" }
1101 <- {
1102 "return":{
1103 "qemu":{
1104 "major":0,
1105 "minor":11,
1106 "micro":5
1107 },
1108 "package":""
1109 }
1110 }
1111
1112 EQMP
1113
1114 {
1115 .name = "query-version",
1116 .args_type = "",
1117 .mhandler.cmd_new = qmp_marshal_input_query_version,
1118 },
1119
1120 SQMP
1121 query-commands
1122 --------------
1123
1124 List QMP available commands.
1125
1126 Each command is represented by a json-object, the returned value is a json-array
1127 of all commands.
1128
1129 Each json-object contain:
1130
1131 - "name": command's name (json-string)
1132
1133 Example:
1134
1135 -> { "execute": "query-commands" }
1136 <- {
1137 "return":[
1138 {
1139 "name":"query-balloon"
1140 },
1141 {
1142 "name":"system_powerdown"
1143 }
1144 ]
1145 }
1146
1147 Note: This example has been shortened as the real response is too long.
1148
1149 EQMP
1150
1151 {
1152 .name = "query-commands",
1153 .args_type = "",
1154 .mhandler.cmd_new = qmp_marshal_input_query_commands,
1155 },
1156
1157 SQMP
1158 query-chardev
1159 -------------
1160
1161 Each device is represented by a json-object. The returned value is a json-array
1162 of all devices.
1163
1164 Each json-object contain the following:
1165
1166 - "label": device's label (json-string)
1167 - "filename": device's file (json-string)
1168
1169 Example:
1170
1171 -> { "execute": "query-chardev" }
1172 <- {
1173 "return":[
1174 {
1175 "label":"monitor",
1176 "filename":"stdio"
1177 },
1178 {
1179 "label":"serial0",
1180 "filename":"vc"
1181 }
1182 ]
1183 }
1184
1185 EQMP
1186
1187 {
1188 .name = "query-chardev",
1189 .args_type = "",
1190 .mhandler.cmd_new = qmp_marshal_input_query_chardev,
1191 },
1192
1193 SQMP
1194 query-block
1195 -----------
1196
1197 Show the block devices.
1198
1199 Each block device information is stored in a json-object and the returned value
1200 is a json-array of all devices.
1201
1202 Each json-object contain the following:
1203
1204 - "device": device name (json-string)
1205 - "type": device type (json-string)
1206 - deprecated, retained for backward compatibility
1207 - Possible values: "unknown"
1208 - "removable": true if the device is removable, false otherwise (json-bool)
1209 - "locked": true if the device is locked, false otherwise (json-bool)
1210 - "tray-open": only present if removable, true if the device has a tray,
1211 and it is open (json-bool)
1212 - "inserted": only present if the device is inserted, it is a json-object
1213 containing the following:
1214 - "file": device file name (json-string)
1215 - "ro": true if read-only, false otherwise (json-bool)
1216 - "drv": driver format name (json-string)
1217 - Possible values: "blkdebug", "bochs", "cloop", "cow", "dmg",
1218 "file", "file", "ftp", "ftps", "host_cdrom",
1219 "host_device", "host_floppy", "http", "https",
1220 "nbd", "parallels", "qcow", "qcow2", "raw",
1221 "tftp", "vdi", "vmdk", "vpc", "vvfat"
1222 - "backing_file": backing file name (json-string, optional)
1223 - "encrypted": true if encrypted, false otherwise (json-bool)
1224 - "bps": limit total bytes per second (json-int)
1225 - "bps_rd": limit read bytes per second (json-int)
1226 - "bps_wr": limit write bytes per second (json-int)
1227 - "iops": limit total I/O operations per second (json-int)
1228 - "iops_rd": limit read operations per second (json-int)
1229 - "iops_wr": limit write operations per second (json-int)
1230
1231 - "io-status": I/O operation status, only present if the device supports it
1232 and the VM is configured to stop on errors. It's always reset
1233 to "ok" when the "cont" command is issued (json_string, optional)
1234 - Possible values: "ok", "failed", "nospace"
1235
1236 Example:
1237
1238 -> { "execute": "query-block" }
1239 <- {
1240 "return":[
1241 {
1242 "io-status": "ok",
1243 "device":"ide0-hd0",
1244 "locked":false,
1245 "removable":false,
1246 "inserted":{
1247 "ro":false,
1248 "drv":"qcow2",
1249 "encrypted":false,
1250 "file":"disks/test.img",
1251 "bps":1000000,
1252 "bps_rd":0,
1253 "bps_wr":0,
1254 "iops":1000000,
1255 "iops_rd":0,
1256 "iops_wr":0,
1257 },
1258 "type":"unknown"
1259 },
1260 {
1261 "io-status": "ok",
1262 "device":"ide1-cd0",
1263 "locked":false,
1264 "removable":true,
1265 "type":"unknown"
1266 },
1267 {
1268 "device":"floppy0",
1269 "locked":false,
1270 "removable":true,
1271 "type":"unknown"
1272 },
1273 {
1274 "device":"sd0",
1275 "locked":false,
1276 "removable":true,
1277 "type":"unknown"
1278 }
1279 ]
1280 }
1281
1282 EQMP
1283
1284 {
1285 .name = "query-block",
1286 .args_type = "",
1287 .mhandler.cmd_new = qmp_marshal_input_query_block,
1288 },
1289
1290 SQMP
1291 query-blockstats
1292 ----------------
1293
1294 Show block device statistics.
1295
1296 Each device statistic information is stored in a json-object and the returned
1297 value is a json-array of all devices.
1298
1299 Each json-object contain the following:
1300
1301 - "device": device name (json-string)
1302 - "stats": A json-object with the statistics information, it contains:
1303 - "rd_bytes": bytes read (json-int)
1304 - "wr_bytes": bytes written (json-int)
1305 - "rd_operations": read operations (json-int)
1306 - "wr_operations": write operations (json-int)
1307 - "flush_operations": cache flush operations (json-int)
1308 - "wr_total_time_ns": total time spend on writes in nano-seconds (json-int)
1309 - "rd_total_time_ns": total time spend on reads in nano-seconds (json-int)
1310 - "flush_total_time_ns": total time spend on cache flushes in nano-seconds (json-int)
1311 - "wr_highest_offset": Highest offset of a sector written since the
1312 BlockDriverState has been opened (json-int)
1313 - "parent": Contains recursively the statistics of the underlying
1314 protocol (e.g. the host file for a qcow2 image). If there is
1315 no underlying protocol, this field is omitted
1316 (json-object, optional)
1317
1318 Example:
1319
1320 -> { "execute": "query-blockstats" }
1321 <- {
1322 "return":[
1323 {
1324 "device":"ide0-hd0",
1325 "parent":{
1326 "stats":{
1327 "wr_highest_offset":3686448128,
1328 "wr_bytes":9786368,
1329 "wr_operations":751,
1330 "rd_bytes":122567168,
1331 "rd_operations":36772
1332 "wr_total_times_ns":313253456
1333 "rd_total_times_ns":3465673657
1334 "flush_total_times_ns":49653
1335 "flush_operations":61,
1336 }
1337 },
1338 "stats":{
1339 "wr_highest_offset":2821110784,
1340 "wr_bytes":9786368,
1341 "wr_operations":692,
1342 "rd_bytes":122739200,
1343 "rd_operations":36604
1344 "flush_operations":51,
1345 "wr_total_times_ns":313253456
1346 "rd_total_times_ns":3465673657
1347 "flush_total_times_ns":49653
1348 }
1349 },
1350 {
1351 "device":"ide1-cd0",
1352 "stats":{
1353 "wr_highest_offset":0,
1354 "wr_bytes":0,
1355 "wr_operations":0,
1356 "rd_bytes":0,
1357 "rd_operations":0
1358 "flush_operations":0,
1359 "wr_total_times_ns":0
1360 "rd_total_times_ns":0
1361 "flush_total_times_ns":0
1362 }
1363 },
1364 {
1365 "device":"floppy0",
1366 "stats":{
1367 "wr_highest_offset":0,
1368 "wr_bytes":0,
1369 "wr_operations":0,
1370 "rd_bytes":0,
1371 "rd_operations":0
1372 "flush_operations":0,
1373 "wr_total_times_ns":0
1374 "rd_total_times_ns":0
1375 "flush_total_times_ns":0
1376 }
1377 },
1378 {
1379 "device":"sd0",
1380 "stats":{
1381 "wr_highest_offset":0,
1382 "wr_bytes":0,
1383 "wr_operations":0,
1384 "rd_bytes":0,
1385 "rd_operations":0
1386 "flush_operations":0,
1387 "wr_total_times_ns":0
1388 "rd_total_times_ns":0
1389 "flush_total_times_ns":0
1390 }
1391 }
1392 ]
1393 }
1394
1395 EQMP
1396
1397 {
1398 .name = "query-blockstats",
1399 .args_type = "",
1400 .mhandler.cmd_new = qmp_marshal_input_query_blockstats,
1401 },
1402
1403 SQMP
1404 query-cpus
1405 ----------
1406
1407 Show CPU information.
1408
1409 Return a json-array. Each CPU is represented by a json-object, which contains:
1410
1411 - "CPU": CPU index (json-int)
1412 - "current": true if this is the current CPU, false otherwise (json-bool)
1413 - "halted": true if the cpu is halted, false otherwise (json-bool)
1414 - Current program counter. The key's name depends on the architecture:
1415 "pc": i386/x86_64 (json-int)
1416 "nip": PPC (json-int)
1417 "pc" and "npc": sparc (json-int)
1418 "PC": mips (json-int)
1419 - "thread_id": ID of the underlying host thread (json-int)
1420
1421 Example:
1422
1423 -> { "execute": "query-cpus" }
1424 <- {
1425 "return":[
1426 {
1427 "CPU":0,
1428 "current":true,
1429 "halted":false,
1430 "pc":3227107138
1431 "thread_id":3134
1432 },
1433 {
1434 "CPU":1,
1435 "current":false,
1436 "halted":true,
1437 "pc":7108165
1438 "thread_id":3135
1439 }
1440 ]
1441 }
1442
1443 EQMP
1444
1445 {
1446 .name = "query-cpus",
1447 .args_type = "",
1448 .mhandler.cmd_new = qmp_marshal_input_query_cpus,
1449 },
1450
1451 SQMP
1452 query-pci
1453 ---------
1454
1455 PCI buses and devices information.
1456
1457 The returned value is a json-array of all buses. Each bus is represented by
1458 a json-object, which has a key with a json-array of all PCI devices attached
1459 to it. Each device is represented by a json-object.
1460
1461 The bus json-object contains the following:
1462
1463 - "bus": bus number (json-int)
1464 - "devices": a json-array of json-objects, each json-object represents a
1465 PCI device
1466
1467 The PCI device json-object contains the following:
1468
1469 - "bus": identical to the parent's bus number (json-int)
1470 - "slot": slot number (json-int)
1471 - "function": function number (json-int)
1472 - "class_info": a json-object containing:
1473 - "desc": device class description (json-string, optional)
1474 - "class": device class number (json-int)
1475 - "id": a json-object containing:
1476 - "device": device ID (json-int)
1477 - "vendor": vendor ID (json-int)
1478 - "irq": device's IRQ if assigned (json-int, optional)
1479 - "qdev_id": qdev id string (json-string)
1480 - "pci_bridge": It's a json-object, only present if this device is a
1481 PCI bridge, contains:
1482 - "bus": bus number (json-int)
1483 - "secondary": secondary bus number (json-int)
1484 - "subordinate": subordinate bus number (json-int)
1485 - "io_range": I/O memory range information, a json-object with the
1486 following members:
1487 - "base": base address, in bytes (json-int)
1488 - "limit": limit address, in bytes (json-int)
1489 - "memory_range": memory range information, a json-object with the
1490 following members:
1491 - "base": base address, in bytes (json-int)
1492 - "limit": limit address, in bytes (json-int)
1493 - "prefetchable_range": Prefetchable memory range information, a
1494 json-object with the following members:
1495 - "base": base address, in bytes (json-int)
1496 - "limit": limit address, in bytes (json-int)
1497 - "devices": a json-array of PCI devices if there's any attached, each
1498 each element is represented by a json-object, which contains
1499 the same members of the 'PCI device json-object' described
1500 above (optional)
1501 - "regions": a json-array of json-objects, each json-object represents a
1502 memory region of this device
1503
1504 The memory range json-object contains the following:
1505
1506 - "base": base memory address (json-int)
1507 - "limit": limit value (json-int)
1508
1509 The region json-object can be an I/O region or a memory region, an I/O region
1510 json-object contains the following:
1511
1512 - "type": "io" (json-string, fixed)
1513 - "bar": BAR number (json-int)
1514 - "address": memory address (json-int)
1515 - "size": memory size (json-int)
1516
1517 A memory region json-object contains the following:
1518
1519 - "type": "memory" (json-string, fixed)
1520 - "bar": BAR number (json-int)
1521 - "address": memory address (json-int)
1522 - "size": memory size (json-int)
1523 - "mem_type_64": true or false (json-bool)
1524 - "prefetch": true or false (json-bool)
1525
1526 Example:
1527
1528 -> { "execute": "query-pci" }
1529 <- {
1530 "return":[
1531 {
1532 "bus":0,
1533 "devices":[
1534 {
1535 "bus":0,
1536 "qdev_id":"",
1537 "slot":0,
1538 "class_info":{
1539 "class":1536,
1540 "desc":"Host bridge"
1541 },
1542 "id":{
1543 "device":32902,
1544 "vendor":4663
1545 },
1546 "function":0,
1547 "regions":[
1548
1549 ]
1550 },
1551 {
1552 "bus":0,
1553 "qdev_id":"",
1554 "slot":1,
1555 "class_info":{
1556 "class":1537,
1557 "desc":"ISA bridge"
1558 },
1559 "id":{
1560 "device":32902,
1561 "vendor":28672
1562 },
1563 "function":0,
1564 "regions":[
1565
1566 ]
1567 },
1568 {
1569 "bus":0,
1570 "qdev_id":"",
1571 "slot":1,
1572 "class_info":{
1573 "class":257,
1574 "desc":"IDE controller"
1575 },
1576 "id":{
1577 "device":32902,
1578 "vendor":28688
1579 },
1580 "function":1,
1581 "regions":[
1582 {
1583 "bar":4,
1584 "size":16,
1585 "address":49152,
1586 "type":"io"
1587 }
1588 ]
1589 },
1590 {
1591 "bus":0,
1592 "qdev_id":"",
1593 "slot":2,
1594 "class_info":{
1595 "class":768,
1596 "desc":"VGA controller"
1597 },
1598 "id":{
1599 "device":4115,
1600 "vendor":184
1601 },
1602 "function":0,
1603 "regions":[
1604 {
1605 "prefetch":true,
1606 "mem_type_64":false,
1607 "bar":0,
1608 "size":33554432,
1609 "address":4026531840,
1610 "type":"memory"
1611 },
1612 {
1613 "prefetch":false,
1614 "mem_type_64":false,
1615 "bar":1,
1616 "size":4096,
1617 "address":4060086272,
1618 "type":"memory"
1619 },
1620 {
1621 "prefetch":false,
1622 "mem_type_64":false,
1623 "bar":6,
1624 "size":65536,
1625 "address":-1,
1626 "type":"memory"
1627 }
1628 ]
1629 },
1630 {
1631 "bus":0,
1632 "qdev_id":"",
1633 "irq":11,
1634 "slot":4,
1635 "class_info":{
1636 "class":1280,
1637 "desc":"RAM controller"
1638 },
1639 "id":{
1640 "device":6900,
1641 "vendor":4098
1642 },
1643 "function":0,
1644 "regions":[
1645 {
1646 "bar":0,
1647 "size":32,
1648 "address":49280,
1649 "type":"io"
1650 }
1651 ]
1652 }
1653 ]
1654 }
1655 ]
1656 }
1657
1658 Note: This example has been shortened as the real response is too long.
1659
1660 EQMP
1661
1662 {
1663 .name = "query-pci",
1664 .args_type = "",
1665 .mhandler.cmd_new = qmp_marshal_input_query_pci,
1666 },
1667
1668 SQMP
1669 query-kvm
1670 ---------
1671
1672 Show KVM information.
1673
1674 Return a json-object with the following information:
1675
1676 - "enabled": true if KVM support is enabled, false otherwise (json-bool)
1677 - "present": true if QEMU has KVM support, false otherwise (json-bool)
1678
1679 Example:
1680
1681 -> { "execute": "query-kvm" }
1682 <- { "return": { "enabled": true, "present": true } }
1683
1684 EQMP
1685
1686 {
1687 .name = "query-kvm",
1688 .args_type = "",
1689 .mhandler.cmd_new = qmp_marshal_input_query_kvm,
1690 },
1691
1692 SQMP
1693 query-status
1694 ------------
1695
1696 Return a json-object with the following information:
1697
1698 - "running": true if the VM is running, or false if it is paused (json-bool)
1699 - "singlestep": true if the VM is in single step mode,
1700 false otherwise (json-bool)
1701 - "status": one of the following values (json-string)
1702 "debug" - QEMU is running on a debugger
1703 "inmigrate" - guest is paused waiting for an incoming migration
1704 "internal-error" - An internal error that prevents further guest
1705 execution has occurred
1706 "io-error" - the last IOP has failed and the device is configured
1707 to pause on I/O errors
1708 "paused" - guest has been paused via the 'stop' command
1709 "postmigrate" - guest is paused following a successful 'migrate'
1710 "prelaunch" - QEMU was started with -S and guest has not started
1711 "finish-migrate" - guest is paused to finish the migration process
1712 "restore-vm" - guest is paused to restore VM state
1713 "running" - guest is actively running
1714 "save-vm" - guest is paused to save the VM state
1715 "shutdown" - guest is shut down (and -no-shutdown is in use)
1716 "watchdog" - the watchdog action is configured to pause and
1717 has been triggered
1718
1719 Example:
1720
1721 -> { "execute": "query-status" }
1722 <- { "return": { "running": true, "singlestep": false, "status": "running" } }
1723
1724 EQMP
1725
1726 {
1727 .name = "query-status",
1728 .args_type = "",
1729 .mhandler.cmd_new = qmp_marshal_input_query_status,
1730 },
1731
1732 SQMP
1733 query-mice
1734 ----------
1735
1736 Show VM mice information.
1737
1738 Each mouse is represented by a json-object, the returned value is a json-array
1739 of all mice.
1740
1741 The mouse json-object contains the following:
1742
1743 - "name": mouse's name (json-string)
1744 - "index": mouse's index (json-int)
1745 - "current": true if this mouse is receiving events, false otherwise (json-bool)
1746 - "absolute": true if the mouse generates absolute input events (json-bool)
1747
1748 Example:
1749
1750 -> { "execute": "query-mice" }
1751 <- {
1752 "return":[
1753 {
1754 "name":"QEMU Microsoft Mouse",
1755 "index":0,
1756 "current":false,
1757 "absolute":false
1758 },
1759 {
1760 "name":"QEMU PS/2 Mouse",
1761 "index":1,
1762 "current":true,
1763 "absolute":true
1764 }
1765 ]
1766 }
1767
1768 EQMP
1769
1770 {
1771 .name = "query-mice",
1772 .args_type = "",
1773 .mhandler.cmd_new = qmp_marshal_input_query_mice,
1774 },
1775
1776 SQMP
1777 query-vnc
1778 ---------
1779
1780 Show VNC server information.
1781
1782 Return a json-object with server information. Connected clients are returned
1783 as a json-array of json-objects.
1784
1785 The main json-object contains the following:
1786
1787 - "enabled": true or false (json-bool)
1788 - "host": server's IP address (json-string)
1789 - "family": address family (json-string)
1790 - Possible values: "ipv4", "ipv6", "unix", "unknown"
1791 - "service": server's port number (json-string)
1792 - "auth": authentication method (json-string)
1793 - Possible values: "invalid", "none", "ra2", "ra2ne", "sasl", "tight",
1794 "tls", "ultra", "unknown", "vencrypt", "vencrypt",
1795 "vencrypt+plain", "vencrypt+tls+none",
1796 "vencrypt+tls+plain", "vencrypt+tls+sasl",
1797 "vencrypt+tls+vnc", "vencrypt+x509+none",
1798 "vencrypt+x509+plain", "vencrypt+x509+sasl",
1799 "vencrypt+x509+vnc", "vnc"
1800 - "clients": a json-array of all connected clients
1801
1802 Clients are described by a json-object, each one contain the following:
1803
1804 - "host": client's IP address (json-string)
1805 - "family": address family (json-string)
1806 - Possible values: "ipv4", "ipv6", "unix", "unknown"
1807 - "service": client's port number (json-string)
1808 - "x509_dname": TLS dname (json-string, optional)
1809 - "sasl_username": SASL username (json-string, optional)
1810
1811 Example:
1812
1813 -> { "execute": "query-vnc" }
1814 <- {
1815 "return":{
1816 "enabled":true,
1817 "host":"0.0.0.0",
1818 "service":"50402",
1819 "auth":"vnc",
1820 "family":"ipv4",
1821 "clients":[
1822 {
1823 "host":"127.0.0.1",
1824 "service":"50401",
1825 "family":"ipv4"
1826 }
1827 ]
1828 }
1829 }
1830
1831 EQMP
1832
1833 {
1834 .name = "query-vnc",
1835 .args_type = "",
1836 .mhandler.cmd_new = qmp_marshal_input_query_vnc,
1837 },
1838
1839 SQMP
1840 query-spice
1841 -----------
1842
1843 Show SPICE server information.
1844
1845 Return a json-object with server information. Connected clients are returned
1846 as a json-array of json-objects.
1847
1848 The main json-object contains the following:
1849
1850 - "enabled": true or false (json-bool)
1851 - "host": server's IP address (json-string)
1852 - "port": server's port number (json-int, optional)
1853 - "tls-port": server's port number (json-int, optional)
1854 - "auth": authentication method (json-string)
1855 - Possible values: "none", "spice"
1856 - "channels": a json-array of all active channels clients
1857
1858 Channels are described by a json-object, each one contain the following:
1859
1860 - "host": client's IP address (json-string)
1861 - "family": address family (json-string)
1862 - Possible values: "ipv4", "ipv6", "unix", "unknown"
1863 - "port": client's port number (json-string)
1864 - "connection-id": spice connection id. All channels with the same id
1865 belong to the same spice session (json-int)
1866 - "channel-type": channel type. "1" is the main control channel, filter for
1867 this one if you want track spice sessions only (json-int)
1868 - "channel-id": channel id. Usually "0", might be different needed when
1869 multiple channels of the same type exist, such as multiple
1870 display channels in a multihead setup (json-int)
1871 - "tls": whevener the channel is encrypted (json-bool)
1872
1873 Example:
1874
1875 -> { "execute": "query-spice" }
1876 <- {
1877 "return": {
1878 "enabled": true,
1879 "auth": "spice",
1880 "port": 5920,
1881 "tls-port": 5921,
1882 "host": "0.0.0.0",
1883 "channels": [
1884 {
1885 "port": "54924",
1886 "family": "ipv4",
1887 "channel-type": 1,
1888 "connection-id": 1804289383,
1889 "host": "127.0.0.1",
1890 "channel-id": 0,
1891 "tls": true
1892 },
1893 {
1894 "port": "36710",
1895 "family": "ipv4",
1896 "channel-type": 4,
1897 "connection-id": 1804289383,
1898 "host": "127.0.0.1",
1899 "channel-id": 0,
1900 "tls": false
1901 },
1902 [ ... more channels follow ... ]
1903 ]
1904 }
1905 }
1906
1907 EQMP
1908
1909 #if defined(CONFIG_SPICE)
1910 {
1911 .name = "query-spice",
1912 .args_type = "",
1913 .mhandler.cmd_new = qmp_marshal_input_query_spice,
1914 },
1915 #endif
1916
1917 SQMP
1918 query-name
1919 ----------
1920
1921 Show VM name.
1922
1923 Return a json-object with the following information:
1924
1925 - "name": VM's name (json-string, optional)
1926
1927 Example:
1928
1929 -> { "execute": "query-name" }
1930 <- { "return": { "name": "qemu-name" } }
1931
1932 EQMP
1933
1934 {
1935 .name = "query-name",
1936 .args_type = "",
1937 .mhandler.cmd_new = qmp_marshal_input_query_name,
1938 },
1939
1940 SQMP
1941 query-uuid
1942 ----------
1943
1944 Show VM UUID.
1945
1946 Return a json-object with the following information:
1947
1948 - "UUID": Universally Unique Identifier (json-string)
1949
1950 Example:
1951
1952 -> { "execute": "query-uuid" }
1953 <- { "return": { "UUID": "550e8400-e29b-41d4-a716-446655440000" } }
1954
1955 EQMP
1956
1957 {
1958 .name = "query-uuid",
1959 .args_type = "",
1960 .mhandler.cmd_new = qmp_marshal_input_query_uuid,
1961 },
1962
1963 SQMP
1964 query-migrate
1965 -------------
1966
1967 Migration status.
1968
1969 Return a json-object. If migration is active there will be another json-object
1970 with RAM migration status and if block migration is active another one with
1971 block migration status.
1972
1973 The main json-object contains the following:
1974
1975 - "status": migration status (json-string)
1976 - Possible values: "active", "completed", "failed", "cancelled"
1977 - "ram": only present if "status" is "active", it is a json-object with the
1978 following RAM information (in bytes):
1979 - "transferred": amount transferred (json-int)
1980 - "remaining": amount remaining (json-int)
1981 - "total": total (json-int)
1982 - "disk": only present if "status" is "active" and it is a block migration,
1983 it is a json-object with the following disk information (in bytes):
1984 - "transferred": amount transferred (json-int)
1985 - "remaining": amount remaining (json-int)
1986 - "total": total (json-int)
1987
1988 Examples:
1989
1990 1. Before the first migration
1991
1992 -> { "execute": "query-migrate" }
1993 <- { "return": {} }
1994
1995 2. Migration is done and has succeeded
1996
1997 -> { "execute": "query-migrate" }
1998 <- { "return": { "status": "completed" } }
1999
2000 3. Migration is done and has failed
2001
2002 -> { "execute": "query-migrate" }
2003 <- { "return": { "status": "failed" } }
2004
2005 4. Migration is being performed and is not a block migration:
2006
2007 -> { "execute": "query-migrate" }
2008 <- {
2009 "return":{
2010 "status":"active",
2011 "ram":{
2012 "transferred":123,
2013 "remaining":123,
2014 "total":246
2015 }
2016 }
2017 }
2018
2019 5. Migration is being performed and is a block migration:
2020
2021 -> { "execute": "query-migrate" }
2022 <- {
2023 "return":{
2024 "status":"active",
2025 "ram":{
2026 "total":1057024,
2027 "remaining":1053304,
2028 "transferred":3720
2029 },
2030 "disk":{
2031 "total":20971520,
2032 "remaining":20880384,
2033 "transferred":91136
2034 }
2035 }
2036 }
2037
2038 EQMP
2039
2040 {
2041 .name = "query-migrate",
2042 .args_type = "",
2043 .mhandler.cmd_new = qmp_marshal_input_query_migrate,
2044 },
2045
2046 SQMP
2047 query-balloon
2048 -------------
2049
2050 Show balloon information.
2051
2052 Make an asynchronous request for balloon info. When the request completes a
2053 json-object will be returned containing the following data:
2054
2055 - "actual": current balloon value in bytes (json-int)
2056 - "mem_swapped_in": Amount of memory swapped in bytes (json-int, optional)
2057 - "mem_swapped_out": Amount of memory swapped out in bytes (json-int, optional)
2058 - "major_page_faults": Number of major faults (json-int, optional)
2059 - "minor_page_faults": Number of minor faults (json-int, optional)
2060 - "free_mem": Total amount of free and unused memory in
2061 bytes (json-int, optional)
2062 - "total_mem": Total amount of available memory in bytes (json-int, optional)
2063
2064 Example:
2065
2066 -> { "execute": "query-balloon" }
2067 <- {
2068 "return":{
2069 "actual":1073741824,
2070 "mem_swapped_in":0,
2071 "mem_swapped_out":0,
2072 "major_page_faults":142,
2073 "minor_page_faults":239245,
2074 "free_mem":1014185984,
2075 "total_mem":1044668416
2076 }
2077 }
2078
2079 EQMP
2080
2081 {
2082 .name = "query-balloon",
2083 .args_type = "",
2084 .mhandler.cmd_new = qmp_marshal_input_query_balloon,
2085 },
2086
2087 {
2088 .name = "query-block-jobs",
2089 .args_type = "",
2090 .mhandler.cmd_new = qmp_marshal_input_query_block_jobs,
2091 },
2092
2093 {
2094 .name = "qom-list",
2095 .args_type = "path:s",
2096 .mhandler.cmd_new = qmp_marshal_input_qom_list,
2097 },
2098
2099 {
2100 .name = "qom-set",
2101 .args_type = "path:s,property:s,opts:O",
2102 .mhandler.cmd_new = qmp_qom_set,
2103 },
2104
2105 {
2106 .name = "qom-get",
2107 .args_type = "path:s,property:s",
2108 .mhandler.cmd_new = qmp_qom_get,
2109 },
2110
2111 {
2112 .name = "change-vnc-password",
2113 .args_type = "password:s",
2114 .mhandler.cmd_new = qmp_marshal_input_change_vnc_password,
2115 },
2116 {
2117 .name = "qom-list-types",
2118 .args_type = "implements:s?,abstract:b?",
2119 .mhandler.cmd_new = qmp_marshal_input_qom_list_types,
2120 },