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