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