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