]> git.proxmox.com Git - qemu.git/blame - qmp-commands.hx
QAPI: Introduce memchar-write QMP command
[qemu.git] / qmp-commands.hx
CommitLineData
82a56f0d
LC
1HXCOMM QMP dispatch table and documentation
2HXCOMM Text between SQMP and EQMP is copied to the QMP documention file and
3HXCOMM does not show up in the other formats.
4
5SQMP
6 QMP Supported Commands
7 ----------------------
8
9This document describes all commands currently supported by QMP.
10
11Most of the time their usage is exactly the same as in the user Monitor, this
12means that any other document which also describe commands (the manpage,
13QEMU's manual, etc) can and should be consulted.
14
15QMP has two types of commands: regular and query commands. Regular commands
16usually change the Virtual Machine's state someway, while query commands just
17return information. The sections below are divided accordingly.
18
19It's important to observe that all communication examples are formatted in
20a reader-friendly way, so that they're easier to understand. However, in real
21protocol usage, they're emitted as a single line.
22
23Also, the following notation is used to denote data flow:
24
25-> data issued by the Client
26<- Server data response
27
28Please, refer to the QMP specification (QMP/qmp-spec.txt) for detailed
29information on the Server command and response formats.
30
31NOTE: This document is temporary and will be replaced soon.
32
331. Stability Considerations
34===========================
35
36The current QMP command set (described in this file) may be useful for a
37number of use cases, however it's limited and several commands have bad
38defined semantics, specially with regard to command completion.
39
40These problems are going to be solved incrementally in the next QEMU releases
41and we're going to establish a deprecation policy for badly defined commands.
42
43If you're planning to adopt QMP, please observe the following:
44
c20cdf8b 45 1. The deprecation policy will take effect and be documented soon, please
82a56f0d
LC
46 check the documentation of each used command as soon as a new release of
47 QEMU is available
48
49 2. DO NOT rely on anything which is not explicit documented
50
51 3. Errors, in special, are not documented. Applications should NOT check
52 for specific errors classes or data (it's strongly recommended to only
53 check for the "error" key)
54
552. Regular Commands
56===================
57
58Server's responses in the examples below are always a success response, please
59refer to the QMP specification for more details on error responses.
60
61EQMP
62
63 {
64 .name = "quit",
65 .args_type = "",
7a7f325e 66 .mhandler.cmd_new = qmp_marshal_input_quit,
82a56f0d
LC
67 },
68
69SQMP
70quit
71----
72
73Quit the emulator.
74
75Arguments: None.
76
77Example:
78
79-> { "execute": "quit" }
80<- { "return": {} }
81
82EQMP
83
84 {
85 .name = "eject",
86 .args_type = "force:-f,device:B",
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",
ad39cf6d 149 .mhandler.cmd_new = qmp_marshal_input_screendump,
82a56f0d
LC
150 },
151
152SQMP
153screendump
154----------
155
156Save screen into PPM image.
157
158Arguments:
159
160- "filename": file path (json-string)
161
162Example:
163
164-> { "execute": "screendump", "arguments": { "filename": "/tmp/image" } }
165<- { "return": {} }
166
167EQMP
168
169 {
170 .name = "stop",
171 .args_type = "",
5f158f21 172 .mhandler.cmd_new = qmp_marshal_input_stop,
82a56f0d
LC
173 },
174
175SQMP
176stop
177----
178
179Stop the emulator.
180
181Arguments: None.
182
183Example:
184
185-> { "execute": "stop" }
186<- { "return": {} }
187
188EQMP
189
190 {
191 .name = "cont",
192 .args_type = "",
e42e818b 193 .mhandler.cmd_new = qmp_marshal_input_cont,
82a56f0d
LC
194 },
195
196SQMP
197cont
198----
199
200Resume emulation.
201
202Arguments: None.
203
204Example:
205
206-> { "execute": "cont" }
207<- { "return": {} }
9b9df25a
GH
208
209EQMP
210
211 {
212 .name = "system_wakeup",
213 .args_type = "",
214 .mhandler.cmd_new = qmp_marshal_input_system_wakeup,
215 },
216
217SQMP
218system_wakeup
219-------------
220
221Wakeup guest from suspend.
222
223Arguments: None.
224
225Example:
226
227-> { "execute": "system_wakeup" }
228<- { "return": {} }
82a56f0d
LC
229
230EQMP
231
232 {
233 .name = "system_reset",
234 .args_type = "",
38d22653 235 .mhandler.cmd_new = qmp_marshal_input_system_reset,
82a56f0d
LC
236 },
237
238SQMP
239system_reset
240------------
241
242Reset the system.
243
244Arguments: None.
245
246Example:
247
248-> { "execute": "system_reset" }
249<- { "return": {} }
250
251EQMP
252
253 {
254 .name = "system_powerdown",
255 .args_type = "",
22e1bb9c 256 .mhandler.cmd_new = qmp_marshal_input_system_powerdown,
82a56f0d
LC
257 },
258
259SQMP
260system_powerdown
261----------------
262
263Send system power down event.
264
265Arguments: None.
266
267Example:
268
269-> { "execute": "system_powerdown" }
270<- { "return": {} }
271
272EQMP
273
274 {
275 .name = "device_add",
276 .args_type = "device:O",
277 .params = "driver[,prop=value][,...]",
278 .help = "add device, like -device on the command line",
279 .user_print = monitor_user_noop,
280 .mhandler.cmd_new = do_device_add,
281 },
282
283SQMP
284device_add
285----------
286
287Add a device.
288
289Arguments:
290
291- "driver": the name of the new device's driver (json-string)
292- "bus": the device's parent bus (device tree path, json-string, optional)
293- "id": the device's ID, must be unique (json-string)
294- device properties
295
296Example:
297
298-> { "execute": "device_add", "arguments": { "driver": "e1000", "id": "net1" } }
299<- { "return": {} }
300
301Notes:
302
303(1) For detailed information about this command, please refer to the
304 'docs/qdev-device-use.txt' file.
305
306(2) It's possible to list device properties by running QEMU with the
307 "-device DEVICE,\?" command-line argument, where DEVICE is the device's name
308
309EQMP
310
311 {
312 .name = "device_del",
313 .args_type = "id:s",
a15fef21 314 .mhandler.cmd_new = qmp_marshal_input_device_del,
82a56f0d
LC
315 },
316
317SQMP
318device_del
319----------
320
321Remove a device.
322
323Arguments:
324
325- "id": the device's ID (json-string)
326
327Example:
328
329-> { "execute": "device_del", "arguments": { "id": "net1" } }
330<- { "return": {} }
331
e4c8f004
AK
332EQMP
333
334 {
335 .name = "send-key",
336 .args_type = "keys:O,hold-time:i?",
337 .mhandler.cmd_new = qmp_marshal_input_send_key,
338 },
339
340SQMP
341send-key
342----------
343
344Send keys to VM.
345
346Arguments:
347
348keys array:
349 - "key": key sequence (a json-array of key enum values)
350
351- hold-time: time to delay key up events, milliseconds. Defaults to 100
352 (json-int, optional)
353
354Example:
355
356-> { "execute": "send-key",
357 "arguments": { 'keys': [ 'ctrl', 'alt', 'delete' ] } }
358<- { "return": {} }
359
82a56f0d
LC
360EQMP
361
362 {
363 .name = "cpu",
364 .args_type = "index:i",
755f1968 365 .mhandler.cmd_new = qmp_marshal_input_cpu,
82a56f0d
LC
366 },
367
368SQMP
369cpu
370---
371
372Set the default CPU.
373
374Arguments:
375
376- "index": the CPU's index (json-int)
377
378Example:
379
380-> { "execute": "cpu", "arguments": { "index": 0 } }
381<- { "return": {} }
382
383Note: CPUs' indexes are obtained with the 'query-cpus' command.
384
385EQMP
386
387 {
388 .name = "memsave",
0cfd6a9a
LC
389 .args_type = "val:l,size:i,filename:s,cpu:i?",
390 .mhandler.cmd_new = qmp_marshal_input_memsave,
82a56f0d
LC
391 },
392
393SQMP
394memsave
395-------
396
397Save to disk virtual memory dump starting at 'val' of size 'size'.
398
399Arguments:
400
401- "val": the starting address (json-int)
402- "size": the memory size, in bytes (json-int)
403- "filename": file path (json-string)
0cfd6a9a 404- "cpu": virtual CPU index (json-int, optional)
82a56f0d
LC
405
406Example:
407
408-> { "execute": "memsave",
409 "arguments": { "val": 10,
410 "size": 100,
411 "filename": "/tmp/virtual-mem-dump" } }
412<- { "return": {} }
413
82a56f0d
LC
414EQMP
415
416 {
417 .name = "pmemsave",
418 .args_type = "val:l,size:i,filename:s",
6d3962bf 419 .mhandler.cmd_new = qmp_marshal_input_pmemsave,
82a56f0d
LC
420 },
421
422SQMP
423pmemsave
424--------
425
426Save to disk physical memory dump starting at 'val' of size 'size'.
427
428Arguments:
429
430- "val": the starting address (json-int)
431- "size": the memory size, in bytes (json-int)
432- "filename": file path (json-string)
433
434Example:
435
436-> { "execute": "pmemsave",
437 "arguments": { "val": 10,
438 "size": 100,
439 "filename": "/tmp/physical-mem-dump" } }
440<- { "return": {} }
441
a4046664
LJ
442EQMP
443
444 {
445 .name = "inject-nmi",
446 .args_type = "",
ab49ab5c 447 .mhandler.cmd_new = qmp_marshal_input_inject_nmi,
a4046664
LJ
448 },
449
450SQMP
451inject-nmi
452----------
453
454Inject an NMI on guest's CPUs.
455
456Arguments: None.
457
458Example:
459
460-> { "execute": "inject-nmi" }
461<- { "return": {} }
462
de253f14
LC
463Note: inject-nmi fails when the guest doesn't support injecting.
464 Currently, only x86 guests do.
a4046664 465
1f590cf9
LL
466EQMP
467
468 {
469 .name = "memchar-write",
470 .args_type = "device:s,size:i,data:s,format:s?",
471 .mhandler.cmd_new = qmp_marshal_input_memchar_write,
472 },
473
474SQMP
475memchar-write
476-------------
477
478Provide writing interface for CirMemCharDriver. Write data to memory
479char device.
480
481Arguments:
482
483- "device": the name of the char device, must be unique (json-string)
484- "size": the memory size, in bytes, should be power of 2 (json-int)
485- "data": the source data write to memory (json-string)
486- "format": the data format write to memory, default is
487 utf8. (json-string, optional)
488 - Possible values: "utf8", "base64"
489
490Example:
491
492-> { "execute": "memchar-write",
493 "arguments": { "device": foo,
494 "size": 8,
495 "data": "abcdefgh",
496 "format": "utf8" } }
497<- { "return": {} }
498
a7ae8355
SS
499EQMP
500
501 {
502 .name = "xen-save-devices-state",
503 .args_type = "filename:F",
504 .mhandler.cmd_new = qmp_marshal_input_xen_save_devices_state,
505 },
506
507SQMP
508xen-save-devices-state
509-------
510
511Save the state of all devices to file. The RAM and the block devices
512of the VM are not saved by this command.
513
514Arguments:
515
516- "filename": the file to save the state of the devices to as binary
517data. See xen-save-devices-state.txt for a description of the binary
518format.
519
520Example:
521
522-> { "execute": "xen-save-devices-state",
523 "arguments": { "filename": "/tmp/save" } }
524<- { "return": {} }
525
39f42439
AP
526EQMP
527
528 {
529 .name = "xen-set-global-dirty-log",
530 .args_type = "enable:b",
531 .mhandler.cmd_new = qmp_marshal_input_xen_set_global_dirty_log,
532 },
533
534SQMP
535xen-set-global-dirty-log
536-------
537
538Enable or disable the global dirty log mode.
539
540Arguments:
541
542- "enable": Enable it or disable it.
543
544Example:
545
546-> { "execute": "xen-set-global-dirty-log",
547 "arguments": { "enable": true } }
548<- { "return": {} }
549
82a56f0d
LC
550EQMP
551
552 {
553 .name = "migrate",
554 .args_type = "detach:-d,blk:-b,inc:-i,uri:s",
e1c37d0e 555 .mhandler.cmd_new = qmp_marshal_input_migrate,
82a56f0d
LC
556 },
557
558SQMP
559migrate
560-------
561
562Migrate to URI.
563
564Arguments:
565
566- "blk": block migration, full disk copy (json-bool, optional)
567- "inc": incremental disk copy (json-bool, optional)
568- "uri": Destination URI (json-string)
569
570Example:
571
572-> { "execute": "migrate", "arguments": { "uri": "tcp:0:4446" } }
573<- { "return": {} }
574
575Notes:
576
577(1) The 'query-migrate' command should be used to check migration's progress
578 and final result (this information is provided by the 'status' member)
579(2) All boolean arguments default to false
580(3) The user Monitor's "detach" argument is invalid in QMP and should not
581 be used
582
583EQMP
584
585 {
586 .name = "migrate_cancel",
587 .args_type = "",
6cdedb07 588 .mhandler.cmd_new = qmp_marshal_input_migrate_cancel,
82a56f0d
LC
589 },
590
591SQMP
592migrate_cancel
593--------------
594
595Cancel the current migration.
596
597Arguments: None.
598
599Example:
600
601-> { "execute": "migrate_cancel" }
602<- { "return": {} }
603
9e1ba4cc
OW
604EQMP
605{
606 .name = "migrate-set-cache-size",
607 .args_type = "value:o",
608 .mhandler.cmd_new = qmp_marshal_input_migrate_set_cache_size,
609 },
610
611SQMP
612migrate-set-cache-size
613---------------------
614
615Set cache size to be used by XBZRLE migration, the cache size will be rounded
616down to the nearest power of 2
617
618Arguments:
619
620- "value": cache size in bytes (json-int)
621
622Example:
623
624-> { "execute": "migrate-set-cache-size", "arguments": { "value": 536870912 } }
625<- { "return": {} }
626
627EQMP
628 {
629 .name = "query-migrate-cache-size",
630 .args_type = "",
631 .mhandler.cmd_new = qmp_marshal_input_query_migrate_cache_size,
632 },
633
634SQMP
635query-migrate-cache-size
636---------------------
637
638Show cache size to be used by XBZRLE migration
639
640returns a json-object with the following information:
641- "size" : json-int
642
643Example:
644
645-> { "execute": "query-migrate-cache-size" }
646<- { "return": 67108864 }
647
82a56f0d
LC
648EQMP
649
650 {
651 .name = "migrate_set_speed",
3a019b6e 652 .args_type = "value:o",
3dc85383 653 .mhandler.cmd_new = qmp_marshal_input_migrate_set_speed,
82a56f0d
LC
654 },
655
e866e239 656SQMP
ff73edf5
JS
657migrate_set_speed
658-----------------
e866e239 659
ff73edf5 660Set maximum speed for migrations.
e866e239
GH
661
662Arguments:
663
ff73edf5 664- "value": maximum speed, in bytes per second (json-int)
e866e239
GH
665
666Example:
667
ff73edf5 668-> { "execute": "migrate_set_speed", "arguments": { "value": 1024 } }
e866e239
GH
669<- { "return": {} }
670
671EQMP
672
673 {
ff73edf5
JS
674 .name = "migrate_set_downtime",
675 .args_type = "value:T",
4f0a993b 676 .mhandler.cmd_new = qmp_marshal_input_migrate_set_downtime,
e866e239
GH
677 },
678
82a56f0d 679SQMP
ff73edf5
JS
680migrate_set_downtime
681--------------------
82a56f0d 682
ff73edf5 683Set maximum tolerated downtime (in seconds) for migrations.
82a56f0d
LC
684
685Arguments:
686
ff73edf5 687- "value": maximum downtime (json-number)
82a56f0d
LC
688
689Example:
690
ff73edf5 691-> { "execute": "migrate_set_downtime", "arguments": { "value": 0.1 } }
82a56f0d
LC
692<- { "return": {} }
693
694EQMP
695
696 {
ff73edf5
JS
697 .name = "client_migrate_info",
698 .args_type = "protocol:s,hostname:s,port:i?,tls-port:i?,cert-subject:s?",
699 .params = "protocol hostname port tls-port cert-subject",
700 .help = "send migration info to spice/vnc client",
82a56f0d 701 .user_print = monitor_user_noop,
edc5cb1a
YH
702 .mhandler.cmd_async = client_migrate_info,
703 .flags = MONITOR_CMD_ASYNC,
82a56f0d
LC
704 },
705
706SQMP
ff73edf5
JS
707client_migrate_info
708------------------
82a56f0d 709
ff73edf5
JS
710Set the spice/vnc connection info for the migration target. The spice/vnc
711server will ask the spice/vnc client to automatically reconnect using the
712new parameters (if specified) once the vm migration finished successfully.
82a56f0d
LC
713
714Arguments:
715
ff73edf5
JS
716- "protocol": protocol: "spice" or "vnc" (json-string)
717- "hostname": migration target hostname (json-string)
718- "port": spice/vnc tcp port for plaintext channels (json-int, optional)
719- "tls-port": spice tcp port for tls-secured channels (json-int, optional)
720- "cert-subject": server certificate subject (json-string, optional)
82a56f0d
LC
721
722Example:
723
ff73edf5
JS
724-> { "execute": "client_migrate_info",
725 "arguments": { "protocol": "spice",
726 "hostname": "virt42.lab.kraxel.org",
727 "port": 1234 } }
82a56f0d
LC
728<- { "return": {} }
729
783e9b48
WC
730EQMP
731
732 {
733 .name = "dump-guest-memory",
734 .args_type = "paging:b,protocol:s,begin:i?,end:i?",
735 .params = "-p protocol [begin] [length]",
736 .help = "dump guest memory to file",
737 .user_print = monitor_user_noop,
738 .mhandler.cmd_new = qmp_marshal_input_dump_guest_memory,
739 },
740
741SQMP
742dump
743
744
745Dump guest memory to file. The file can be processed with crash or gdb.
746
747Arguments:
748
749- "paging": do paging to get guest's memory mapping (json-bool)
750- "protocol": destination file(started with "file:") or destination file
751 descriptor (started with "fd:") (json-string)
752- "begin": the starting physical address. It's optional, and should be specified
753 with length together (json-int)
754- "length": the memory size, in bytes. It's optional, and should be specified
755 with begin together (json-int)
756
757Example:
758
759-> { "execute": "dump-guest-memory", "arguments": { "protocol": "fd:dump" } }
760<- { "return": {} }
761
762Notes:
763
764(1) All boolean arguments default to false
765
82a56f0d
LC
766EQMP
767
768 {
769 .name = "netdev_add",
770 .args_type = "netdev:O",
928059a3 771 .mhandler.cmd_new = qmp_netdev_add,
82a56f0d
LC
772 },
773
774SQMP
775netdev_add
776----------
777
778Add host network device.
779
780Arguments:
781
782- "type": the device type, "tap", "user", ... (json-string)
783- "id": the device's ID, must be unique (json-string)
784- device options
785
786Example:
787
788-> { "execute": "netdev_add", "arguments": { "type": "user", "id": "netdev1" } }
789<- { "return": {} }
790
791Note: The supported device options are the same ones supported by the '-net'
792 command-line argument, which are listed in the '-help' output or QEMU's
793 manual
794
795EQMP
796
797 {
798 .name = "netdev_del",
799 .args_type = "id:s",
5f964155 800 .mhandler.cmd_new = qmp_marshal_input_netdev_del,
82a56f0d
LC
801 },
802
803SQMP
804netdev_del
805----------
806
807Remove host network device.
808
809Arguments:
810
811- "id": the device's ID, must be unique (json-string)
812
813Example:
814
815-> { "execute": "netdev_del", "arguments": { "id": "netdev1" } }
816<- { "return": {} }
817
6d4a2b3a
CH
818
819EQMP
820
821 {
822 .name = "block_resize",
823 .args_type = "device:B,size:o",
5e7caacb 824 .mhandler.cmd_new = qmp_marshal_input_block_resize,
6d4a2b3a
CH
825 },
826
827SQMP
828block_resize
829------------
830
831Resize a block image while a guest is running.
832
833Arguments:
834
835- "device": the device's ID, must be unique (json-string)
836- "size": new size
837
838Example:
839
840-> { "execute": "block_resize", "arguments": { "device": "scratch", "size": 1073741824 } }
841<- { "return": {} }
842
d967b2f1
JS
843EQMP
844
12bd451f 845 {
db58f9c0 846 .name = "block-stream",
1d809098 847 .args_type = "device:B,base:s?,speed:o?,on-error:s?",
12bd451f
SH
848 .mhandler.cmd_new = qmp_marshal_input_block_stream,
849 },
850
ed61fc10
JC
851 {
852 .name = "block-commit",
853 .args_type = "device:B,base:s?,top:s,speed:o?",
854 .mhandler.cmd_new = qmp_marshal_input_block_commit,
855 },
856
2d47c6e9 857 {
db58f9c0 858 .name = "block-job-set-speed",
882ec7ce 859 .args_type = "device:B,speed:o",
2d47c6e9
SH
860 .mhandler.cmd_new = qmp_marshal_input_block_job_set_speed,
861 },
862
370521a1 863 {
db58f9c0 864 .name = "block-job-cancel",
6e37fb81 865 .args_type = "device:B,force:b?",
370521a1
SH
866 .mhandler.cmd_new = qmp_marshal_input_block_job_cancel,
867 },
6e37fb81
PB
868 {
869 .name = "block-job-pause",
870 .args_type = "device:B",
871 .mhandler.cmd_new = qmp_marshal_input_block_job_pause,
872 },
873 {
874 .name = "block-job-resume",
875 .args_type = "device:B",
876 .mhandler.cmd_new = qmp_marshal_input_block_job_resume,
877 },
aeae883b
PB
878 {
879 .name = "block-job-complete",
880 .args_type = "device:B",
881 .mhandler.cmd_new = qmp_marshal_input_block_job_complete,
882 },
c186402c 883 {
52e7c241 884 .name = "transaction",
b9f8978c 885 .args_type = "actions:q",
52e7c241 886 .mhandler.cmd_new = qmp_marshal_input_transaction,
c186402c
JC
887 },
888
889SQMP
52e7c241
PB
890transaction
891-----------
c186402c 892
52e7c241
PB
893Atomically operate on one or more block devices. The only supported
894operation for now is snapshotting. If there is any failure performing
895any of the operations, all snapshots for the group are abandoned, and
896the original disks pre-snapshot attempt are used.
c186402c 897
52e7c241
PB
898A list of dictionaries is accepted, that contains the actions to be performed.
899For snapshots this is the device, the file to use for the new snapshot,
900and the format. The default format, if not specified, is qcow2.
c186402c 901
bc8b094f
PB
902Each new snapshot defaults to being created by QEMU (wiping any
903contents if the file already exists), but it is also possible to reuse
904an externally-created file. In the latter case, you should ensure that
905the new image file has the same contents as the current one; QEMU cannot
906perform any meaningful check. Typically this is achieved by using the
907current image file as the backing file for the new image.
908
c186402c
JC
909Arguments:
910
52e7c241
PB
911actions array:
912 - "type": the operation to perform. The only supported
913 value is "blockdev-snapshot-sync". (json-string)
914 - "data": a dictionary. The contents depend on the value
915 of "type". When "type" is "blockdev-snapshot-sync":
916 - "device": device name to snapshot (json-string)
917 - "snapshot-file": name of new image file (json-string)
918 - "format": format of new image (json-string, optional)
bc8b094f
PB
919 - "mode": whether and how QEMU should create the snapshot file
920 (NewImageMode, optional, default "absolute-paths")
c186402c
JC
921
922Example:
923
52e7c241
PB
924-> { "execute": "transaction",
925 "arguments": { "actions": [
926 { 'type': 'blockdev-snapshot-sync', 'data' : { "device": "ide-hd0",
927 "snapshot-file": "/some/place/my-image",
928 "format": "qcow2" } },
929 { 'type': 'blockdev-snapshot-sync', 'data' : { "device": "ide-hd1",
930 "snapshot-file": "/some/place/my-image2",
bc8b094f 931 "mode": "existing",
52e7c241 932 "format": "qcow2" } } ] } }
c186402c
JC
933<- { "return": {} }
934
935EQMP
370521a1 936
d967b2f1
JS
937 {
938 .name = "blockdev-snapshot-sync",
31155b9b 939 .args_type = "device:B,snapshot-file:s,format:s?,mode:s?",
6106e249 940 .mhandler.cmd_new = qmp_marshal_input_blockdev_snapshot_sync,
d967b2f1
JS
941 },
942
943SQMP
944blockdev-snapshot-sync
945----------------------
946
947Synchronous snapshot of a block device. snapshot-file specifies the
948target of the new image. If the file exists, or if it is a device, the
949snapshot will be created in the existing file/device. If does not
950exist, a new file will be created. format specifies the format of the
951snapshot image, default is qcow2.
952
953Arguments:
954
955- "device": device name to snapshot (json-string)
956- "snapshot-file": name of new image file (json-string)
6cc2a415
PB
957- "mode": whether and how QEMU should create the snapshot file
958 (NewImageMode, optional, default "absolute-paths")
d967b2f1
JS
959- "format": format of new image (json-string, optional)
960
961Example:
962
7f3850c2
LC
963-> { "execute": "blockdev-snapshot-sync", "arguments": { "device": "ide-hd0",
964 "snapshot-file":
965 "/some/place/my-image",
966 "format": "qcow2" } }
d967b2f1
JS
967<- { "return": {} }
968
d9b902db
PB
969EQMP
970
971 {
972 .name = "drive-mirror",
b952b558
PB
973 .args_type = "sync:s,device:B,target:s,speed:i?,mode:s?,format:s?,"
974 "on-source-error:s?,on-target-error:s?",
d9b902db
PB
975 .mhandler.cmd_new = qmp_marshal_input_drive_mirror,
976 },
977
978SQMP
979drive-mirror
980------------
981
982Start mirroring a block device's writes to a new destination. target
983specifies the target of the new image. If the file exists, or if it is
984a device, it will be used as the new destination for writes. If it does not
985exist, a new file will be created. format specifies the format of the
986mirror image, default is to probe if mode='existing', else the format
987of the source.
988
989Arguments:
990
991- "device": device name to operate on (json-string)
992- "target": name of new image file (json-string)
993- "format": format of new image (json-string, optional)
994- "mode": how an image file should be created into the target
995 file/device (NewImageMode, optional, default 'absolute-paths')
996- "speed": maximum speed of the streaming job, in bytes per second
997 (json-int)
998- "sync": what parts of the disk image should be copied to the destination;
999 possibilities include "full" for all the disk, "top" for only the sectors
1000 allocated in the topmost image, or "none" to only replicate new I/O
1001 (MirrorSyncMode).
b952b558
PB
1002- "on-source-error": the action to take on an error on the source
1003 (BlockdevOnError, default 'report')
1004- "on-target-error": the action to take on an error on the target
1005 (BlockdevOnError, default 'report')
1006
d9b902db
PB
1007
1008
1009Example:
1010
1011-> { "execute": "drive-mirror", "arguments": { "device": "ide-hd0",
1012 "target": "/some/place/my-image",
1013 "sync": "full",
1014 "format": "qcow2" } }
1015<- { "return": {} }
1016
82a56f0d
LC
1017EQMP
1018
1019 {
1020 .name = "balloon",
1021 .args_type = "value:M",
d72f3264 1022 .mhandler.cmd_new = qmp_marshal_input_balloon,
82a56f0d
LC
1023 },
1024
1025SQMP
1026balloon
1027-------
1028
1029Request VM to change its memory allocation (in bytes).
1030
1031Arguments:
1032
1033- "value": New memory allocation (json-int)
1034
1035Example:
1036
1037-> { "execute": "balloon", "arguments": { "value": 536870912 } }
1038<- { "return": {} }
1039
1040EQMP
1041
1042 {
1043 .name = "set_link",
1044 .args_type = "name:s,up:b",
4b37156c 1045 .mhandler.cmd_new = qmp_marshal_input_set_link,
82a56f0d
LC
1046 },
1047
1048SQMP
1049set_link
1050--------
1051
1052Change the link status of a network adapter.
1053
1054Arguments:
1055
1056- "name": network device name (json-string)
1057- "up": status is up (json-bool)
1058
1059Example:
1060
1061-> { "execute": "set_link", "arguments": { "name": "e1000.0", "up": false } }
1062<- { "return": {} }
1063
1064EQMP
1065
1066 {
1067 .name = "getfd",
1068 .args_type = "fdname:s",
1069 .params = "getfd name",
1070 .help = "receive a file descriptor via SCM rights and assign it a name",
208c9d1b 1071 .mhandler.cmd_new = qmp_marshal_input_getfd,
82a56f0d
LC
1072 },
1073
1074SQMP
1075getfd
1076-----
1077
1078Receive a file descriptor via SCM rights and assign it a name.
1079
1080Arguments:
1081
1082- "fdname": file descriptor name (json-string)
1083
1084Example:
1085
1086-> { "execute": "getfd", "arguments": { "fdname": "fd1" } }
1087<- { "return": {} }
1088
208c9d1b
CB
1089Notes:
1090
1091(1) If the name specified by the "fdname" argument already exists,
1092 the file descriptor assigned to it will be closed and replaced
1093 by the received file descriptor.
1094(2) The 'closefd' command can be used to explicitly close the file
1095 descriptor when it is no longer needed.
1096
82a56f0d
LC
1097EQMP
1098
1099 {
1100 .name = "closefd",
1101 .args_type = "fdname:s",
1102 .params = "closefd name",
1103 .help = "close a file descriptor previously passed via SCM rights",
208c9d1b 1104 .mhandler.cmd_new = qmp_marshal_input_closefd,
82a56f0d
LC
1105 },
1106
1107SQMP
1108closefd
1109-------
1110
1111Close a file descriptor previously passed via SCM rights.
1112
1113Arguments:
1114
1115- "fdname": file descriptor name (json-string)
1116
1117Example:
1118
1119-> { "execute": "closefd", "arguments": { "fdname": "fd1" } }
1120<- { "return": {} }
1121
ba1c048a
CB
1122EQMP
1123
1124 {
1125 .name = "add-fd",
1126 .args_type = "fdset-id:i?,opaque:s?",
1127 .params = "add-fd fdset-id opaque",
1128 .help = "Add a file descriptor, that was passed via SCM rights, to an fd set",
1129 .mhandler.cmd_new = qmp_marshal_input_add_fd,
1130 },
1131
1132SQMP
1133add-fd
1134-------
1135
1136Add a file descriptor, that was passed via SCM rights, to an fd set.
1137
1138Arguments:
1139
1140- "fdset-id": The ID of the fd set to add the file descriptor to.
1141 (json-int, optional)
1142- "opaque": A free-form string that can be used to describe the fd.
1143 (json-string, optional)
1144
1145Return a json-object with the following information:
1146
1147- "fdset-id": The ID of the fd set that the fd was added to. (json-int)
1148- "fd": The file descriptor that was received via SCM rights and added to the
1149 fd set. (json-int)
1150
1151Example:
1152
1153-> { "execute": "add-fd", "arguments": { "fdset-id": 1 } }
1154<- { "return": { "fdset-id": 1, "fd": 3 } }
1155
1156Notes:
1157
1158(1) The list of fd sets is shared by all monitor connections.
1159(2) If "fdset-id" is not specified, a new fd set will be created.
1160
1161EQMP
1162
1163 {
1164 .name = "remove-fd",
1165 .args_type = "fdset-id:i,fd:i?",
1166 .params = "remove-fd fdset-id fd",
1167 .help = "Remove a file descriptor from an fd set",
1168 .mhandler.cmd_new = qmp_marshal_input_remove_fd,
1169 },
1170
1171SQMP
1172remove-fd
1173---------
1174
1175Remove a file descriptor from an fd set.
1176
1177Arguments:
1178
1179- "fdset-id": The ID of the fd set that the file descriptor belongs to.
1180 (json-int)
1181- "fd": The file descriptor that is to be removed. (json-int, optional)
1182
1183Example:
1184
1185-> { "execute": "remove-fd", "arguments": { "fdset-id": 1, "fd": 3 } }
1186<- { "return": {} }
1187
1188Notes:
1189
1190(1) The list of fd sets is shared by all monitor connections.
1191(2) If "fd" is not specified, all file descriptors in "fdset-id" will be
1192 removed.
1193
1194EQMP
1195
1196 {
1197 .name = "query-fdsets",
1198 .args_type = "",
1199 .help = "Return information describing all fd sets",
1200 .mhandler.cmd_new = qmp_marshal_input_query_fdsets,
1201 },
1202
1203SQMP
1204query-fdsets
1205-------------
1206
1207Return information describing all fd sets.
1208
1209Arguments: None
1210
1211Example:
1212
1213-> { "execute": "query-fdsets" }
1214<- { "return": [
1215 {
1216 "fds": [
1217 {
1218 "fd": 30,
1219 "opaque": "rdonly:/path/to/file"
1220 },
1221 {
1222 "fd": 24,
1223 "opaque": "rdwr:/path/to/file"
1224 }
1225 ],
1226 "fdset-id": 1
1227 },
1228 {
1229 "fds": [
1230 {
1231 "fd": 28
1232 },
1233 {
1234 "fd": 29
1235 }
1236 ],
1237 "fdset-id": 0
1238 }
1239 ]
1240 }
1241
1242Note: The list of fd sets is shared by all monitor connections.
1243
82a56f0d
LC
1244EQMP
1245
1246 {
1247 .name = "block_passwd",
1248 .args_type = "device:B,password:s",
a4dea8a9 1249 .mhandler.cmd_new = qmp_marshal_input_block_passwd,
82a56f0d
LC
1250 },
1251
1252SQMP
1253block_passwd
1254------------
1255
1256Set the password of encrypted block devices.
1257
1258Arguments:
1259
1260- "device": device name (json-string)
1261- "password": password (json-string)
1262
1263Example:
1264
1265-> { "execute": "block_passwd", "arguments": { "device": "ide0-hd0",
1266 "password": "12345" } }
1267<- { "return": {} }
1268
727f005e
ZYW
1269EQMP
1270
1271 {
1272 .name = "block_set_io_throttle",
1273 .args_type = "device:B,bps:l,bps_rd:l,bps_wr:l,iops:l,iops_rd:l,iops_wr:l",
80047da5 1274 .mhandler.cmd_new = qmp_marshal_input_block_set_io_throttle,
727f005e
ZYW
1275 },
1276
1277SQMP
1278block_set_io_throttle
1279------------
1280
1281Change I/O throttle limits for a block drive.
1282
1283Arguments:
1284
1285- "device": device name (json-string)
1286- "bps": total throughput limit in bytes per second(json-int)
1287- "bps_rd": read throughput limit in bytes per second(json-int)
1288- "bps_wr": read throughput limit in bytes per second(json-int)
1289- "iops": total I/O operations per second(json-int)
1290- "iops_rd": read I/O operations per second(json-int)
1291- "iops_wr": write I/O operations per second(json-int)
1292
1293Example:
1294
1295-> { "execute": "block_set_io_throttle", "arguments": { "device": "virtio0",
1296 "bps": "1000000",
1297 "bps_rd": "0",
1298 "bps_wr": "0",
1299 "iops": "0",
1300 "iops_rd": "0",
1301 "iops_wr": "0" } }
1302<- { "return": {} }
1303
7572150c
GH
1304EQMP
1305
1306 {
1307 .name = "set_password",
1308 .args_type = "protocol:s,password:s,connected:s?",
fbf796fd 1309 .mhandler.cmd_new = qmp_marshal_input_set_password,
7572150c
GH
1310 },
1311
1312SQMP
1313set_password
1314------------
1315
1316Set the password for vnc/spice protocols.
1317
1318Arguments:
1319
1320- "protocol": protocol name (json-string)
1321- "password": password (json-string)
1322- "connected": [ keep | disconnect | fail ] (josn-string, optional)
1323
1324Example:
1325
1326-> { "execute": "set_password", "arguments": { "protocol": "vnc",
1327 "password": "secret" } }
1328<- { "return": {} }
1329
1330EQMP
1331
1332 {
1333 .name = "expire_password",
1334 .args_type = "protocol:s,time:s",
9ad5372d 1335 .mhandler.cmd_new = qmp_marshal_input_expire_password,
7572150c
GH
1336 },
1337
1338SQMP
1339expire_password
1340---------------
1341
1342Set the password expire time for vnc/spice protocols.
1343
1344Arguments:
1345
1346- "protocol": protocol name (json-string)
1347- "time": [ now | never | +secs | secs ] (json-string)
1348
1349Example:
1350
1351-> { "execute": "expire_password", "arguments": { "protocol": "vnc",
1352 "time": "+60" } }
1353<- { "return": {} }
1354
82a56f0d
LC
1355EQMP
1356
13661089
DB
1357 {
1358 .name = "add_client",
f1f5f407 1359 .args_type = "protocol:s,fdname:s,skipauth:b?,tls:b?",
b224e5e2 1360 .mhandler.cmd_new = qmp_marshal_input_add_client,
13661089
DB
1361 },
1362
1363SQMP
1364add_client
1365----------
1366
1367Add a graphics client
1368
1369Arguments:
1370
1371- "protocol": protocol name (json-string)
1372- "fdname": file descriptor name (json-string)
f1f5f407
DB
1373- "skipauth": whether to skip authentication (json-bool, optional)
1374- "tls": whether to perform TLS (json-bool, optional)
13661089
DB
1375
1376Example:
1377
1378-> { "execute": "add_client", "arguments": { "protocol": "vnc",
1379 "fdname": "myclient" } }
1380<- { "return": {} }
1381
1382EQMP
82a56f0d
LC
1383 {
1384 .name = "qmp_capabilities",
1385 .args_type = "",
1386 .params = "",
1387 .help = "enable QMP capabilities",
1388 .user_print = monitor_user_noop,
1389 .mhandler.cmd_new = do_qmp_capabilities,
1390 },
1391
1392SQMP
1393qmp_capabilities
1394----------------
1395
1396Enable QMP capabilities.
1397
1398Arguments: None.
1399
1400Example:
1401
1402-> { "execute": "qmp_capabilities" }
1403<- { "return": {} }
1404
1405Note: This command must be issued before issuing any other command.
1406
0268d97c
LC
1407EQMP
1408
1409 {
1410 .name = "human-monitor-command",
1411 .args_type = "command-line:s,cpu-index:i?",
d51a67b4 1412 .mhandler.cmd_new = qmp_marshal_input_human_monitor_command,
0268d97c
LC
1413 },
1414
1415SQMP
1416human-monitor-command
1417---------------------
1418
1419Execute a Human Monitor command.
1420
1421Arguments:
1422
1423- command-line: the command name and its arguments, just like the
1424 Human Monitor's shell (json-string)
1425- cpu-index: select the CPU number to be used by commands which access CPU
1426 data, like 'info registers'. The Monitor selects CPU 0 if this
1427 argument is not provided (json-int, optional)
1428
1429Example:
1430
1431-> { "execute": "human-monitor-command", "arguments": { "command-line": "info kvm" } }
1432<- { "return": "kvm support: enabled\r\n" }
1433
1434Notes:
1435
1436(1) The Human Monitor is NOT an stable interface, this means that command
1437 names, arguments and responses can change or be removed at ANY time.
1438 Applications that rely on long term stability guarantees should NOT
1439 use this command
1440
1441(2) Limitations:
1442
1443 o This command is stateless, this means that commands that depend
1444 on state information (such as getfd) might not work
1445
1446 o Commands that prompt the user for data (eg. 'cont' when the block
1447 device is encrypted) don't currently work
1448
82a56f0d
LC
14493. Query Commands
1450=================
1451
1452HXCOMM Each query command below is inside a SQMP/EQMP section, do NOT change
1453HXCOMM this! We will possibly move query commands definitions inside those
1454HXCOMM sections, just like regular commands.
1455
1456EQMP
1457
1458SQMP
1459query-version
1460-------------
1461
1462Show QEMU version.
1463
1464Return a json-object with the following information:
1465
1466- "qemu": A json-object containing three integer values:
1467 - "major": QEMU's major version (json-int)
1468 - "minor": QEMU's minor version (json-int)
1469 - "micro": QEMU's micro version (json-int)
1470- "package": package's version (json-string)
1471
1472Example:
1473
1474-> { "execute": "query-version" }
1475<- {
1476 "return":{
1477 "qemu":{
1478 "major":0,
1479 "minor":11,
1480 "micro":5
1481 },
1482 "package":""
1483 }
1484 }
1485
1486EQMP
1487
b9c15f16
LC
1488 {
1489 .name = "query-version",
1490 .args_type = "",
1491 .mhandler.cmd_new = qmp_marshal_input_query_version,
1492 },
1493
82a56f0d
LC
1494SQMP
1495query-commands
1496--------------
1497
1498List QMP available commands.
1499
1500Each command is represented by a json-object, the returned value is a json-array
1501of all commands.
1502
1503Each json-object contain:
1504
1505- "name": command's name (json-string)
1506
1507Example:
1508
1509-> { "execute": "query-commands" }
1510<- {
1511 "return":[
1512 {
1513 "name":"query-balloon"
1514 },
1515 {
1516 "name":"system_powerdown"
1517 }
1518 ]
1519 }
1520
1521Note: This example has been shortened as the real response is too long.
1522
1523EQMP
1524
aa9b79bc
LC
1525 {
1526 .name = "query-commands",
1527 .args_type = "",
1528 .mhandler.cmd_new = qmp_marshal_input_query_commands,
1529 },
1530
4860853d
DB
1531SQMP
1532query-events
1533--------------
1534
1535List QMP available events.
1536
1537Each event is represented by a json-object, the returned value is a json-array
1538of all events.
1539
1540Each json-object contains:
1541
1542- "name": event's name (json-string)
1543
1544Example:
1545
1546-> { "execute": "query-events" }
1547<- {
1548 "return":[
1549 {
1550 "name":"SHUTDOWN"
1551 },
1552 {
1553 "name":"RESET"
1554 }
1555 ]
1556 }
1557
1558Note: This example has been shortened as the real response is too long.
1559
1560EQMP
1561
1562 {
1563 .name = "query-events",
1564 .args_type = "",
1565 .mhandler.cmd_new = qmp_marshal_input_query_events,
1566 },
1567
82a56f0d
LC
1568SQMP
1569query-chardev
1570-------------
1571
1572Each device is represented by a json-object. The returned value is a json-array
1573of all devices.
1574
1575Each json-object contain the following:
1576
1577- "label": device's label (json-string)
1578- "filename": device's file (json-string)
1579
1580Example:
1581
1582-> { "execute": "query-chardev" }
1583<- {
1584 "return":[
1585 {
1586 "label":"monitor",
1587 "filename":"stdio"
1588 },
1589 {
1590 "label":"serial0",
1591 "filename":"vc"
1592 }
1593 ]
1594 }
1595
1596EQMP
1597
c5a415a0
LC
1598 {
1599 .name = "query-chardev",
1600 .args_type = "",
1601 .mhandler.cmd_new = qmp_marshal_input_query_chardev,
1602 },
1603
82a56f0d
LC
1604SQMP
1605query-block
1606-----------
1607
1608Show the block devices.
1609
1610Each block device information is stored in a json-object and the returned value
1611is a json-array of all devices.
1612
1613Each json-object contain the following:
1614
1615- "device": device name (json-string)
1616- "type": device type (json-string)
d8aeeb31
MA
1617 - deprecated, retained for backward compatibility
1618 - Possible values: "unknown"
82a56f0d
LC
1619- "removable": true if the device is removable, false otherwise (json-bool)
1620- "locked": true if the device is locked, false otherwise (json-bool)
e4def80b
MA
1621- "tray-open": only present if removable, true if the device has a tray,
1622 and it is open (json-bool)
82a56f0d
LC
1623- "inserted": only present if the device is inserted, it is a json-object
1624 containing the following:
1625 - "file": device file name (json-string)
1626 - "ro": true if read-only, false otherwise (json-bool)
1627 - "drv": driver format name (json-string)
1628 - Possible values: "blkdebug", "bochs", "cloop", "cow", "dmg",
1629 "file", "file", "ftp", "ftps", "host_cdrom",
1630 "host_device", "host_floppy", "http", "https",
1631 "nbd", "parallels", "qcow", "qcow2", "raw",
1632 "tftp", "vdi", "vmdk", "vpc", "vvfat"
1633 - "backing_file": backing file name (json-string, optional)
2e3e3317 1634 - "backing_file_depth": number of files in the backing file chain (json-int)
82a56f0d 1635 - "encrypted": true if encrypted, false otherwise (json-bool)
727f005e
ZYW
1636 - "bps": limit total bytes per second (json-int)
1637 - "bps_rd": limit read bytes per second (json-int)
1638 - "bps_wr": limit write bytes per second (json-int)
1639 - "iops": limit total I/O operations per second (json-int)
1640 - "iops_rd": limit read operations per second (json-int)
1641 - "iops_wr": limit write operations per second (json-int)
1642
f04ef601
LC
1643- "io-status": I/O operation status, only present if the device supports it
1644 and the VM is configured to stop on errors. It's always reset
1645 to "ok" when the "cont" command is issued (json_string, optional)
1646 - Possible values: "ok", "failed", "nospace"
82a56f0d
LC
1647
1648Example:
1649
1650-> { "execute": "query-block" }
1651<- {
1652 "return":[
1653 {
f04ef601 1654 "io-status": "ok",
82a56f0d
LC
1655 "device":"ide0-hd0",
1656 "locked":false,
1657 "removable":false,
1658 "inserted":{
1659 "ro":false,
1660 "drv":"qcow2",
1661 "encrypted":false,
727f005e 1662 "file":"disks/test.img",
2e3e3317 1663 "backing_file_depth":0,
727f005e
ZYW
1664 "bps":1000000,
1665 "bps_rd":0,
1666 "bps_wr":0,
1667 "iops":1000000,
1668 "iops_rd":0,
1669 "iops_wr":0,
82a56f0d 1670 },
d8aeeb31 1671 "type":"unknown"
82a56f0d
LC
1672 },
1673 {
f04ef601 1674 "io-status": "ok",
82a56f0d
LC
1675 "device":"ide1-cd0",
1676 "locked":false,
1677 "removable":true,
d8aeeb31 1678 "type":"unknown"
82a56f0d
LC
1679 },
1680 {
1681 "device":"floppy0",
1682 "locked":false,
1683 "removable":true,
d8aeeb31 1684 "type":"unknown"
82a56f0d
LC
1685 },
1686 {
1687 "device":"sd0",
1688 "locked":false,
1689 "removable":true,
d8aeeb31 1690 "type":"unknown"
82a56f0d
LC
1691 }
1692 ]
1693 }
1694
1695EQMP
1696
b2023818
LC
1697 {
1698 .name = "query-block",
1699 .args_type = "",
1700 .mhandler.cmd_new = qmp_marshal_input_query_block,
1701 },
1702
82a56f0d
LC
1703SQMP
1704query-blockstats
1705----------------
1706
1707Show block device statistics.
1708
1709Each device statistic information is stored in a json-object and the returned
1710value is a json-array of all devices.
1711
1712Each json-object contain the following:
1713
1714- "device": device name (json-string)
1715- "stats": A json-object with the statistics information, it contains:
1716 - "rd_bytes": bytes read (json-int)
1717 - "wr_bytes": bytes written (json-int)
1718 - "rd_operations": read operations (json-int)
1719 - "wr_operations": write operations (json-int)
e8045d67 1720 - "flush_operations": cache flush operations (json-int)
c488c7f6
CH
1721 - "wr_total_time_ns": total time spend on writes in nano-seconds (json-int)
1722 - "rd_total_time_ns": total time spend on reads in nano-seconds (json-int)
1723 - "flush_total_time_ns": total time spend on cache flushes in nano-seconds (json-int)
82a56f0d
LC
1724 - "wr_highest_offset": Highest offset of a sector written since the
1725 BlockDriverState has been opened (json-int)
1726- "parent": Contains recursively the statistics of the underlying
1727 protocol (e.g. the host file for a qcow2 image). If there is
1728 no underlying protocol, this field is omitted
1729 (json-object, optional)
1730
1731Example:
1732
1733-> { "execute": "query-blockstats" }
1734<- {
1735 "return":[
1736 {
1737 "device":"ide0-hd0",
1738 "parent":{
1739 "stats":{
1740 "wr_highest_offset":3686448128,
1741 "wr_bytes":9786368,
1742 "wr_operations":751,
1743 "rd_bytes":122567168,
1744 "rd_operations":36772
c488c7f6
CH
1745 "wr_total_times_ns":313253456
1746 "rd_total_times_ns":3465673657
1747 "flush_total_times_ns":49653
e8045d67 1748 "flush_operations":61,
82a56f0d
LC
1749 }
1750 },
1751 "stats":{
1752 "wr_highest_offset":2821110784,
1753 "wr_bytes":9786368,
1754 "wr_operations":692,
1755 "rd_bytes":122739200,
1756 "rd_operations":36604
e8045d67 1757 "flush_operations":51,
c488c7f6
CH
1758 "wr_total_times_ns":313253456
1759 "rd_total_times_ns":3465673657
1760 "flush_total_times_ns":49653
82a56f0d
LC
1761 }
1762 },
1763 {
1764 "device":"ide1-cd0",
1765 "stats":{
1766 "wr_highest_offset":0,
1767 "wr_bytes":0,
1768 "wr_operations":0,
1769 "rd_bytes":0,
1770 "rd_operations":0
e8045d67 1771 "flush_operations":0,
c488c7f6
CH
1772 "wr_total_times_ns":0
1773 "rd_total_times_ns":0
1774 "flush_total_times_ns":0
82a56f0d
LC
1775 }
1776 },
1777 {
1778 "device":"floppy0",
1779 "stats":{
1780 "wr_highest_offset":0,
1781 "wr_bytes":0,
1782 "wr_operations":0,
1783 "rd_bytes":0,
1784 "rd_operations":0
e8045d67 1785 "flush_operations":0,
c488c7f6
CH
1786 "wr_total_times_ns":0
1787 "rd_total_times_ns":0
1788 "flush_total_times_ns":0
82a56f0d
LC
1789 }
1790 },
1791 {
1792 "device":"sd0",
1793 "stats":{
1794 "wr_highest_offset":0,
1795 "wr_bytes":0,
1796 "wr_operations":0,
1797 "rd_bytes":0,
1798 "rd_operations":0
e8045d67 1799 "flush_operations":0,
c488c7f6
CH
1800 "wr_total_times_ns":0
1801 "rd_total_times_ns":0
1802 "flush_total_times_ns":0
82a56f0d
LC
1803 }
1804 }
1805 ]
1806 }
1807
1808EQMP
1809
f11f57e4
LC
1810 {
1811 .name = "query-blockstats",
1812 .args_type = "",
1813 .mhandler.cmd_new = qmp_marshal_input_query_blockstats,
1814 },
1815
82a56f0d
LC
1816SQMP
1817query-cpus
1818----------
1819
1820Show CPU information.
1821
1822Return a json-array. Each CPU is represented by a json-object, which contains:
1823
1824- "CPU": CPU index (json-int)
1825- "current": true if this is the current CPU, false otherwise (json-bool)
1826- "halted": true if the cpu is halted, false otherwise (json-bool)
1827- Current program counter. The key's name depends on the architecture:
1828 "pc": i386/x86_64 (json-int)
1829 "nip": PPC (json-int)
1830 "pc" and "npc": sparc (json-int)
1831 "PC": mips (json-int)
dc7a09cf 1832- "thread_id": ID of the underlying host thread (json-int)
82a56f0d
LC
1833
1834Example:
1835
1836-> { "execute": "query-cpus" }
1837<- {
1838 "return":[
1839 {
1840 "CPU":0,
1841 "current":true,
1842 "halted":false,
1843 "pc":3227107138
dc7a09cf 1844 "thread_id":3134
82a56f0d
LC
1845 },
1846 {
1847 "CPU":1,
1848 "current":false,
1849 "halted":true,
1850 "pc":7108165
dc7a09cf 1851 "thread_id":3135
82a56f0d
LC
1852 }
1853 ]
1854 }
1855
1856EQMP
1857
de0b36b6
LC
1858 {
1859 .name = "query-cpus",
1860 .args_type = "",
1861 .mhandler.cmd_new = qmp_marshal_input_query_cpus,
1862 },
1863
82a56f0d
LC
1864SQMP
1865query-pci
1866---------
1867
1868PCI buses and devices information.
1869
1870The returned value is a json-array of all buses. Each bus is represented by
1871a json-object, which has a key with a json-array of all PCI devices attached
1872to it. Each device is represented by a json-object.
1873
1874The bus json-object contains the following:
1875
1876- "bus": bus number (json-int)
1877- "devices": a json-array of json-objects, each json-object represents a
1878 PCI device
1879
1880The PCI device json-object contains the following:
1881
1882- "bus": identical to the parent's bus number (json-int)
1883- "slot": slot number (json-int)
1884- "function": function number (json-int)
1885- "class_info": a json-object containing:
1886 - "desc": device class description (json-string, optional)
1887 - "class": device class number (json-int)
1888- "id": a json-object containing:
1889 - "device": device ID (json-int)
1890 - "vendor": vendor ID (json-int)
1891- "irq": device's IRQ if assigned (json-int, optional)
1892- "qdev_id": qdev id string (json-string)
1893- "pci_bridge": It's a json-object, only present if this device is a
1894 PCI bridge, contains:
1895 - "bus": bus number (json-int)
1896 - "secondary": secondary bus number (json-int)
1897 - "subordinate": subordinate bus number (json-int)
1898 - "io_range": I/O memory range information, a json-object with the
1899 following members:
1900 - "base": base address, in bytes (json-int)
1901 - "limit": limit address, in bytes (json-int)
1902 - "memory_range": memory range information, a json-object with the
1903 following members:
1904 - "base": base address, in bytes (json-int)
1905 - "limit": limit address, in bytes (json-int)
1906 - "prefetchable_range": Prefetchable memory range information, a
1907 json-object with the following members:
1908 - "base": base address, in bytes (json-int)
1909 - "limit": limit address, in bytes (json-int)
1910 - "devices": a json-array of PCI devices if there's any attached, each
1911 each element is represented by a json-object, which contains
1912 the same members of the 'PCI device json-object' described
1913 above (optional)
1914- "regions": a json-array of json-objects, each json-object represents a
1915 memory region of this device
1916
1917The memory range json-object contains the following:
1918
1919- "base": base memory address (json-int)
1920- "limit": limit value (json-int)
1921
1922The region json-object can be an I/O region or a memory region, an I/O region
1923json-object contains the following:
1924
1925- "type": "io" (json-string, fixed)
1926- "bar": BAR number (json-int)
1927- "address": memory address (json-int)
1928- "size": memory size (json-int)
1929
1930A memory region json-object contains the following:
1931
1932- "type": "memory" (json-string, fixed)
1933- "bar": BAR number (json-int)
1934- "address": memory address (json-int)
1935- "size": memory size (json-int)
1936- "mem_type_64": true or false (json-bool)
1937- "prefetch": true or false (json-bool)
1938
1939Example:
1940
1941-> { "execute": "query-pci" }
1942<- {
1943 "return":[
1944 {
1945 "bus":0,
1946 "devices":[
1947 {
1948 "bus":0,
1949 "qdev_id":"",
1950 "slot":0,
1951 "class_info":{
1952 "class":1536,
1953 "desc":"Host bridge"
1954 },
1955 "id":{
1956 "device":32902,
1957 "vendor":4663
1958 },
1959 "function":0,
1960 "regions":[
1961
1962 ]
1963 },
1964 {
1965 "bus":0,
1966 "qdev_id":"",
1967 "slot":1,
1968 "class_info":{
1969 "class":1537,
1970 "desc":"ISA bridge"
1971 },
1972 "id":{
1973 "device":32902,
1974 "vendor":28672
1975 },
1976 "function":0,
1977 "regions":[
1978
1979 ]
1980 },
1981 {
1982 "bus":0,
1983 "qdev_id":"",
1984 "slot":1,
1985 "class_info":{
1986 "class":257,
1987 "desc":"IDE controller"
1988 },
1989 "id":{
1990 "device":32902,
1991 "vendor":28688
1992 },
1993 "function":1,
1994 "regions":[
1995 {
1996 "bar":4,
1997 "size":16,
1998 "address":49152,
1999 "type":"io"
2000 }
2001 ]
2002 },
2003 {
2004 "bus":0,
2005 "qdev_id":"",
2006 "slot":2,
2007 "class_info":{
2008 "class":768,
2009 "desc":"VGA controller"
2010 },
2011 "id":{
2012 "device":4115,
2013 "vendor":184
2014 },
2015 "function":0,
2016 "regions":[
2017 {
2018 "prefetch":true,
2019 "mem_type_64":false,
2020 "bar":0,
2021 "size":33554432,
2022 "address":4026531840,
2023 "type":"memory"
2024 },
2025 {
2026 "prefetch":false,
2027 "mem_type_64":false,
2028 "bar":1,
2029 "size":4096,
2030 "address":4060086272,
2031 "type":"memory"
2032 },
2033 {
2034 "prefetch":false,
2035 "mem_type_64":false,
2036 "bar":6,
2037 "size":65536,
2038 "address":-1,
2039 "type":"memory"
2040 }
2041 ]
2042 },
2043 {
2044 "bus":0,
2045 "qdev_id":"",
2046 "irq":11,
2047 "slot":4,
2048 "class_info":{
2049 "class":1280,
2050 "desc":"RAM controller"
2051 },
2052 "id":{
2053 "device":6900,
2054 "vendor":4098
2055 },
2056 "function":0,
2057 "regions":[
2058 {
2059 "bar":0,
2060 "size":32,
2061 "address":49280,
2062 "type":"io"
2063 }
2064 ]
2065 }
2066 ]
2067 }
2068 ]
2069 }
2070
2071Note: This example has been shortened as the real response is too long.
2072
2073EQMP
2074
79627472
LC
2075 {
2076 .name = "query-pci",
2077 .args_type = "",
2078 .mhandler.cmd_new = qmp_marshal_input_query_pci,
2079 },
2080
82a56f0d
LC
2081SQMP
2082query-kvm
2083---------
2084
2085Show KVM information.
2086
2087Return a json-object with the following information:
2088
2089- "enabled": true if KVM support is enabled, false otherwise (json-bool)
2090- "present": true if QEMU has KVM support, false otherwise (json-bool)
2091
2092Example:
2093
2094-> { "execute": "query-kvm" }
2095<- { "return": { "enabled": true, "present": true } }
2096
2097EQMP
2098
292a2602
LC
2099 {
2100 .name = "query-kvm",
2101 .args_type = "",
2102 .mhandler.cmd_new = qmp_marshal_input_query_kvm,
2103 },
2104
82a56f0d
LC
2105SQMP
2106query-status
2107------------
2108
2109Return a json-object with the following information:
2110
2111- "running": true if the VM is running, or false if it is paused (json-bool)
2112- "singlestep": true if the VM is in single step mode,
2113 false otherwise (json-bool)
9e37b9dc
LC
2114- "status": one of the following values (json-string)
2115 "debug" - QEMU is running on a debugger
2116 "inmigrate" - guest is paused waiting for an incoming migration
2117 "internal-error" - An internal error that prevents further guest
2118 execution has occurred
2119 "io-error" - the last IOP has failed and the device is configured
2120 to pause on I/O errors
2121 "paused" - guest has been paused via the 'stop' command
2122 "postmigrate" - guest is paused following a successful 'migrate'
2123 "prelaunch" - QEMU was started with -S and guest has not started
2124 "finish-migrate" - guest is paused to finish the migration process
2125 "restore-vm" - guest is paused to restore VM state
2126 "running" - guest is actively running
2127 "save-vm" - guest is paused to save the VM state
2128 "shutdown" - guest is shut down (and -no-shutdown is in use)
2129 "watchdog" - the watchdog action is configured to pause and
2130 has been triggered
82a56f0d
LC
2131
2132Example:
2133
2134-> { "execute": "query-status" }
9e37b9dc 2135<- { "return": { "running": true, "singlestep": false, "status": "running" } }
82a56f0d
LC
2136
2137EQMP
1fa9a5e4
LC
2138
2139 {
2140 .name = "query-status",
2141 .args_type = "",
2142 .mhandler.cmd_new = qmp_marshal_input_query_status,
2143 },
82a56f0d
LC
2144
2145SQMP
2146query-mice
2147----------
2148
2149Show VM mice information.
2150
2151Each mouse is represented by a json-object, the returned value is a json-array
2152of all mice.
2153
2154The mouse json-object contains the following:
2155
2156- "name": mouse's name (json-string)
2157- "index": mouse's index (json-int)
2158- "current": true if this mouse is receiving events, false otherwise (json-bool)
2159- "absolute": true if the mouse generates absolute input events (json-bool)
2160
2161Example:
2162
2163-> { "execute": "query-mice" }
2164<- {
2165 "return":[
2166 {
2167 "name":"QEMU Microsoft Mouse",
2168 "index":0,
2169 "current":false,
2170 "absolute":false
2171 },
2172 {
2173 "name":"QEMU PS/2 Mouse",
2174 "index":1,
2175 "current":true,
2176 "absolute":true
2177 }
2178 ]
2179 }
2180
2181EQMP
2182
e235cec3
LC
2183 {
2184 .name = "query-mice",
2185 .args_type = "",
2186 .mhandler.cmd_new = qmp_marshal_input_query_mice,
2187 },
2188
82a56f0d
LC
2189SQMP
2190query-vnc
2191---------
2192
2193Show VNC server information.
2194
2195Return a json-object with server information. Connected clients are returned
2196as a json-array of json-objects.
2197
2198The main json-object contains the following:
2199
2200- "enabled": true or false (json-bool)
2201- "host": server's IP address (json-string)
2202- "family": address family (json-string)
2203 - Possible values: "ipv4", "ipv6", "unix", "unknown"
2204- "service": server's port number (json-string)
2205- "auth": authentication method (json-string)
2206 - Possible values: "invalid", "none", "ra2", "ra2ne", "sasl", "tight",
2207 "tls", "ultra", "unknown", "vencrypt", "vencrypt",
2208 "vencrypt+plain", "vencrypt+tls+none",
2209 "vencrypt+tls+plain", "vencrypt+tls+sasl",
2210 "vencrypt+tls+vnc", "vencrypt+x509+none",
2211 "vencrypt+x509+plain", "vencrypt+x509+sasl",
2212 "vencrypt+x509+vnc", "vnc"
2213- "clients": a json-array of all connected clients
2214
2215Clients are described by a json-object, each one contain the following:
2216
2217- "host": client's IP address (json-string)
2218- "family": address family (json-string)
2219 - Possible values: "ipv4", "ipv6", "unix", "unknown"
2220- "service": client's port number (json-string)
2221- "x509_dname": TLS dname (json-string, optional)
2222- "sasl_username": SASL username (json-string, optional)
2223
2224Example:
2225
2226-> { "execute": "query-vnc" }
2227<- {
2228 "return":{
2229 "enabled":true,
2230 "host":"0.0.0.0",
2231 "service":"50402",
2232 "auth":"vnc",
2233 "family":"ipv4",
2234 "clients":[
2235 {
2236 "host":"127.0.0.1",
2237 "service":"50401",
2238 "family":"ipv4"
2239 }
2240 ]
2241 }
2242 }
2243
2244EQMP
2245
2b54aa87
LC
2246 {
2247 .name = "query-vnc",
2248 .args_type = "",
2249 .mhandler.cmd_new = qmp_marshal_input_query_vnc,
2250 },
2251
cb42a870
GH
2252SQMP
2253query-spice
2254-----------
2255
2256Show SPICE server information.
2257
2258Return a json-object with server information. Connected clients are returned
2259as a json-array of json-objects.
2260
2261The main json-object contains the following:
2262
2263- "enabled": true or false (json-bool)
2264- "host": server's IP address (json-string)
2265- "port": server's port number (json-int, optional)
2266- "tls-port": server's port number (json-int, optional)
2267- "auth": authentication method (json-string)
2268 - Possible values: "none", "spice"
2269- "channels": a json-array of all active channels clients
2270
2271Channels are described by a json-object, each one contain the following:
2272
2273- "host": client's IP address (json-string)
2274- "family": address family (json-string)
2275 - Possible values: "ipv4", "ipv6", "unix", "unknown"
2276- "port": client's port number (json-string)
2277- "connection-id": spice connection id. All channels with the same id
2278 belong to the same spice session (json-int)
2279- "channel-type": channel type. "1" is the main control channel, filter for
2280 this one if you want track spice sessions only (json-int)
2281- "channel-id": channel id. Usually "0", might be different needed when
2282 multiple channels of the same type exist, such as multiple
2283 display channels in a multihead setup (json-int)
2284- "tls": whevener the channel is encrypted (json-bool)
2285
2286Example:
2287
2288-> { "execute": "query-spice" }
2289<- {
2290 "return": {
2291 "enabled": true,
2292 "auth": "spice",
2293 "port": 5920,
2294 "tls-port": 5921,
2295 "host": "0.0.0.0",
2296 "channels": [
2297 {
2298 "port": "54924",
2299 "family": "ipv4",
2300 "channel-type": 1,
2301 "connection-id": 1804289383,
2302 "host": "127.0.0.1",
2303 "channel-id": 0,
2304 "tls": true
2305 },
2306 {
2307 "port": "36710",
2308 "family": "ipv4",
2309 "channel-type": 4,
2310 "connection-id": 1804289383,
2311 "host": "127.0.0.1",
2312 "channel-id": 0,
2313 "tls": false
2314 },
2315 [ ... more channels follow ... ]
2316 ]
2317 }
2318 }
2319
2320EQMP
2321
d1f29646
LC
2322#if defined(CONFIG_SPICE)
2323 {
2324 .name = "query-spice",
2325 .args_type = "",
2326 .mhandler.cmd_new = qmp_marshal_input_query_spice,
2327 },
2328#endif
2329
82a56f0d
LC
2330SQMP
2331query-name
2332----------
2333
2334Show VM name.
2335
2336Return a json-object with the following information:
2337
2338- "name": VM's name (json-string, optional)
2339
2340Example:
2341
2342-> { "execute": "query-name" }
2343<- { "return": { "name": "qemu-name" } }
2344
2345EQMP
2346
48a32bed
AL
2347 {
2348 .name = "query-name",
2349 .args_type = "",
2350 .mhandler.cmd_new = qmp_marshal_input_query_name,
2351 },
2352
82a56f0d
LC
2353SQMP
2354query-uuid
2355----------
2356
2357Show VM UUID.
2358
2359Return a json-object with the following information:
2360
2361- "UUID": Universally Unique Identifier (json-string)
2362
2363Example:
2364
2365-> { "execute": "query-uuid" }
2366<- { "return": { "UUID": "550e8400-e29b-41d4-a716-446655440000" } }
2367
2368EQMP
2369
efab767e
LC
2370 {
2371 .name = "query-uuid",
2372 .args_type = "",
2373 .mhandler.cmd_new = qmp_marshal_input_query_uuid,
2374 },
2375
82a56f0d
LC
2376SQMP
2377query-migrate
2378-------------
2379
2380Migration status.
2381
2382Return a json-object. If migration is active there will be another json-object
2383with RAM migration status and if block migration is active another one with
2384block migration status.
2385
2386The main json-object contains the following:
2387
2388- "status": migration status (json-string)
2389 - Possible values: "active", "completed", "failed", "cancelled"
7aa939af
JQ
2390- "total-time": total amount of ms since migration started. If
2391 migration has ended, it returns the total migration
2392 time (json-int)
9c5a9fcf
JQ
2393- "downtime": only present when migration has finished correctly
2394 total amount in ms for downtime that happened (json-int)
2c52ddf1
JQ
2395- "expected-downtime": only present while migration is active
2396 total amount in ms for downtime that was calculated on
2397 the last bitmap round (json-int)
82a56f0d
LC
2398- "ram": only present if "status" is "active", it is a json-object with the
2399 following RAM information (in bytes):
2400 - "transferred": amount transferred (json-int)
2401 - "remaining": amount remaining (json-int)
2402 - "total": total (json-int)
004d4c10
OW
2403 - "duplicate": number of duplicated pages (json-int)
2404 - "normal" : number of normal pages transferred (json-int)
2405 - "normal-bytes" : number of normal bytes transferred (json-int)
82a56f0d
LC
2406- "disk": only present if "status" is "active" and it is a block migration,
2407 it is a json-object with the following disk information (in bytes):
2408 - "transferred": amount transferred (json-int)
2409 - "remaining": amount remaining (json-int)
2410 - "total": total (json-int)
f36d55af
OW
2411- "xbzrle-cache": only present if XBZRLE is active.
2412 It is a json-object with the following XBZRLE information:
2413 - "cache-size": XBZRLE cache size
2414 - "bytes": total XBZRLE bytes transferred
2415 - "pages": number of XBZRLE compressed pages
2416 - "cache-miss": number of cache misses
2417 - "overflow": number of XBZRLE overflows
82a56f0d
LC
2418Examples:
2419
24201. Before the first migration
2421
2422-> { "execute": "query-migrate" }
2423<- { "return": {} }
2424
24252. Migration is done and has succeeded
2426
2427-> { "execute": "query-migrate" }
004d4c10
OW
2428<- { "return": {
2429 "status": "completed",
2430 "ram":{
2431 "transferred":123,
2432 "remaining":123,
2433 "total":246,
2434 "total-time":12345,
9c5a9fcf 2435 "downtime":12345,
004d4c10
OW
2436 "duplicate":123,
2437 "normal":123,
2438 "normal-bytes":123456
2439 }
2440 }
2441 }
82a56f0d
LC
2442
24433. Migration is done and has failed
2444
2445-> { "execute": "query-migrate" }
2446<- { "return": { "status": "failed" } }
2447
24484. Migration is being performed and is not a block migration:
2449
2450-> { "execute": "query-migrate" }
2451<- {
2452 "return":{
2453 "status":"active",
2454 "ram":{
2455 "transferred":123,
2456 "remaining":123,
62d4e3fe 2457 "total":246,
004d4c10 2458 "total-time":12345,
2c52ddf1 2459 "expected-downtime":12345,
004d4c10
OW
2460 "duplicate":123,
2461 "normal":123,
2462 "normal-bytes":123456
82a56f0d
LC
2463 }
2464 }
2465 }
2466
24675. Migration is being performed and is a block migration:
2468
2469-> { "execute": "query-migrate" }
2470<- {
2471 "return":{
2472 "status":"active",
2473 "ram":{
2474 "total":1057024,
2475 "remaining":1053304,
62d4e3fe 2476 "transferred":3720,
004d4c10 2477 "total-time":12345,
2c52ddf1 2478 "expected-downtime":12345,
004d4c10
OW
2479 "duplicate":123,
2480 "normal":123,
2481 "normal-bytes":123456
82a56f0d
LC
2482 },
2483 "disk":{
2484 "total":20971520,
2485 "remaining":20880384,
2486 "transferred":91136
2487 }
2488 }
2489 }
2490
f36d55af
OW
24916. Migration is being performed and XBZRLE is active:
2492
2493-> { "execute": "query-migrate" }
2494<- {
2495 "return":{
2496 "status":"active",
2497 "capabilities" : [ { "capability": "xbzrle", "state" : true } ],
2498 "ram":{
2499 "total":1057024,
2500 "remaining":1053304,
2501 "transferred":3720,
2502 "total-time":12345,
2c52ddf1 2503 "expected-downtime":12345,
f36d55af
OW
2504 "duplicate":10,
2505 "normal":3333,
2506 "normal-bytes":3412992
2507 },
2508 "xbzrle-cache":{
2509 "cache-size":67108864,
2510 "bytes":20971520,
2511 "pages":2444343,
2512 "cache-miss":2244,
2513 "overflow":34434
2514 }
2515 }
2516 }
2517
82a56f0d
LC
2518EQMP
2519
791e7c82
LC
2520 {
2521 .name = "query-migrate",
2522 .args_type = "",
2523 .mhandler.cmd_new = qmp_marshal_input_query_migrate,
2524 },
2525
bbf6da32 2526SQMP
00458433
OW
2527migrate-set-capabilities
2528-------
2529
2530Enable/Disable migration capabilities
2531
2532- "xbzrle": xbzrle support
2533
2534Arguments:
2535
2536Example:
2537
2538-> { "execute": "migrate-set-capabilities" , "arguments":
2539 { "capabilities": [ { "capability": "xbzrle", "state": true } ] } }
2540
2541EQMP
2542
2543 {
2544 .name = "migrate-set-capabilities",
2545 .args_type = "capabilities:O",
2546 .params = "capability:s,state:b",
2547 .mhandler.cmd_new = qmp_marshal_input_migrate_set_capabilities,
2548 },
2549SQMP
bbf6da32
OW
2550query-migrate-capabilities
2551-------
2552
2553Query current migration capabilities
2554
2555- "capabilities": migration capabilities state
2556 - "xbzrle" : XBZRLE state (json-bool)
2557
2558Arguments:
2559
2560Example:
2561
2562-> { "execute": "query-migrate-capabilities" }
2563<- { "return": {
2564 "capabilities" : [ { "capability" : "xbzrle", "state" : false } ]
2565 }
2566 }
2567EQMP
2568
2569 {
2570 .name = "query-migrate-capabilities",
2571 .args_type = "",
2572 .mhandler.cmd_new = qmp_marshal_input_query_migrate_capabilities,
2573 },
2574
82a56f0d
LC
2575SQMP
2576query-balloon
2577-------------
2578
2579Show balloon information.
2580
2581Make an asynchronous request for balloon info. When the request completes a
2582json-object will be returned containing the following data:
2583
2584- "actual": current balloon value in bytes (json-int)
82a56f0d
LC
2585
2586Example:
2587
2588-> { "execute": "query-balloon" }
2589<- {
2590 "return":{
2591 "actual":1073741824,
82a56f0d
LC
2592 }
2593 }
2594
2595EQMP
2596
96637bcd
LC
2597 {
2598 .name = "query-balloon",
2599 .args_type = "",
2600 .mhandler.cmd_new = qmp_marshal_input_query_balloon,
2601 },
b4b12c62 2602
fb5458cd
SH
2603 {
2604 .name = "query-block-jobs",
2605 .args_type = "",
2606 .mhandler.cmd_new = qmp_marshal_input_query_block_jobs,
2607 },
2608
b4b12c62
AL
2609 {
2610 .name = "qom-list",
2611 .args_type = "path:s",
2612 .mhandler.cmd_new = qmp_marshal_input_qom_list,
2613 },
eb6e8ea5
AL
2614
2615 {
2616 .name = "qom-set",
b9f8978c 2617 .args_type = "path:s,property:s,value:q",
eb6e8ea5
AL
2618 .mhandler.cmd_new = qmp_qom_set,
2619 },
2620
2621 {
2622 .name = "qom-get",
2623 .args_type = "path:s,property:s",
2624 .mhandler.cmd_new = qmp_qom_get,
2625 },
270b243f 2626
6dd844db
PB
2627 {
2628 .name = "nbd-server-start",
2629 .args_type = "addr:q",
2630 .mhandler.cmd_new = qmp_marshal_input_nbd_server_start,
2631 },
2632 {
2633 .name = "nbd-server-add",
2634 .args_type = "device:B,writable:b?",
2635 .mhandler.cmd_new = qmp_marshal_input_nbd_server_add,
2636 },
2637 {
2638 .name = "nbd-server-stop",
2639 .args_type = "",
2640 .mhandler.cmd_new = qmp_marshal_input_nbd_server_stop,
2641 },
2642
270b243f
LC
2643 {
2644 .name = "change-vnc-password",
2645 .args_type = "password:s",
2646 .mhandler.cmd_new = qmp_marshal_input_change_vnc_password,
2647 },
5eeee3fa
AL
2648 {
2649 .name = "qom-list-types",
2650 .args_type = "implements:s?,abstract:b?",
2651 .mhandler.cmd_new = qmp_marshal_input_qom_list_types,
2652 },
1daa31b9
AL
2653
2654 {
2655 .name = "device-list-properties",
2656 .args_type = "typename:s",
2657 .mhandler.cmd_new = qmp_marshal_input_device_list_properties,
2658 },
2659
01d3c80d
AL
2660 {
2661 .name = "query-machines",
2662 .args_type = "",
2663 .mhandler.cmd_new = qmp_marshal_input_query_machines,
2664 },
2665
e4e31c63
AL
2666 {
2667 .name = "query-cpu-definitions",
2668 .args_type = "",
2669 .mhandler.cmd_new = qmp_marshal_input_query_cpu_definitions,
2670 },
2671
99afc91d
DB
2672 {
2673 .name = "query-target",
2674 .args_type = "",
2675 .mhandler.cmd_new = qmp_marshal_input_query_target,
2676 },
f1a1a356
GH
2677
2678 {
2679 .name = "chardev-add",
2680 .args_type = "id:s,backend:q",
2681 .mhandler.cmd_new = qmp_marshal_input_chardev_add,
2682 },
2683
2684SQMP
2685chardev-add
2686----------------
2687
2688Add a chardev.
2689
2690Arguments:
2691
2692- "id": the chardev's ID, must be unique (json-string)
2693- "backend": chardev backend type + parameters
2694
ffbdbe59 2695Examples:
f1a1a356
GH
2696
2697-> { "execute" : "chardev-add",
2698 "arguments" : { "id" : "foo",
2699 "backend" : { "type" : "null", "data" : {} } } }
2700<- { "return": {} }
2701
ffbdbe59
GH
2702-> { "execute" : "chardev-add",
2703 "arguments" : { "id" : "bar",
2704 "backend" : { "type" : "file",
2705 "data" : { "out" : "/tmp/bar.log" } } } }
2706<- { "return": {} }
2707
0a1a7fab
GH
2708-> { "execute" : "chardev-add",
2709 "arguments" : { "id" : "baz",
2710 "backend" : { "type" : "pty", "data" : {} } } }
2711<- { "return": { "pty" : "/dev/pty/42" } }
2712
f1a1a356
GH
2713EQMP
2714
2715 {
2716 .name = "chardev-remove",
2717 .args_type = "id:s",
2718 .mhandler.cmd_new = qmp_marshal_input_chardev_remove,
2719 },
2720
2721
2722SQMP
2723chardev-remove
2724--------------
2725
2726Remove a chardev.
2727
2728Arguments:
2729
2730- "id": the chardev's ID, must exist and not be in use (json-string)
2731
2732Example:
2733
2734-> { "execute": "chardev-remove", "arguments": { "id" : "foo" } }
2735<- { "return": {} }
2736
2737EQMP