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