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