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 45 1. The deprecation policy will take effect and be documented soon, please 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 = "", 66 .mhandler.cmd_new = qmp_marshal_input_quit, 67 }, 68 69SQMP 70quit 71---- 72 73Quit the emulator. 74 75Arguments: None. 76 77Example: 78 79-> { "execute": "quit" } 80<- { "return": {} } 81 82EQMP 83 84 { 85 .name = "eject", 86 .args_type = "force:-f,device:B", 87 .mhandler.cmd_new = qmp_marshal_input_eject, 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?", 113 .mhandler.cmd_new = qmp_marshal_input_change, 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 .mhandler.cmd_new = qmp_marshal_input_screendump, 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 = "", 172 .mhandler.cmd_new = qmp_marshal_input_stop, 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 = "", 193 .mhandler.cmd_new = qmp_marshal_input_cont, 194 }, 195 196SQMP 197cont 198---- 199 200Resume emulation. 201 202Arguments: None. 203 204Example: 205 206-> { "execute": "cont" } 207<- { "return": {} } 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": {} } 229 230EQMP 231 232 { 233 .name = "system_reset", 234 .args_type = "", 235 .mhandler.cmd_new = qmp_marshal_input_system_reset, 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 = "", 256 .mhandler.cmd_new = qmp_marshal_input_system_powerdown, 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", 314 .mhandler.cmd_new = qmp_marshal_input_device_del, 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 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 union values, 350 union can be number or qcode enum) 351 352- hold-time: time to delay key up events, milliseconds. Defaults to 100 353 (json-int, optional) 354 355Example: 356 357-> { "execute": "send-key", 358 "arguments": { "keys": [ { "type": "qcode", "data": "ctrl" }, 359 { "type": "qcode", "data": "alt" }, 360 { "type": "qcode", "data": "delete" } ] } } 361<- { "return": {} } 362 363EQMP 364 365 { 366 .name = "cpu", 367 .args_type = "index:i", 368 .mhandler.cmd_new = qmp_marshal_input_cpu, 369 }, 370 371SQMP 372cpu 373--- 374 375Set the default CPU. 376 377Arguments: 378 379- "index": the CPU's index (json-int) 380 381Example: 382 383-> { "execute": "cpu", "arguments": { "index": 0 } } 384<- { "return": {} } 385 386Note: CPUs' indexes are obtained with the 'query-cpus' command. 387 388EQMP 389 390 { 391 .name = "cpu-add", 392 .args_type = "id:i", 393 .mhandler.cmd_new = qmp_marshal_input_cpu_add, 394 }, 395 396SQMP 397cpu-add 398------- 399 400Adds virtual cpu 401 402Arguments: 403 404- "id": cpu id (json-int) 405 406Example: 407 408-> { "execute": "cpu-add", "arguments": { "id": 2 } } 409<- { "return": {} } 410 411EQMP 412 413 { 414 .name = "memsave", 415 .args_type = "val:l,size:i,filename:s,cpu:i?", 416 .mhandler.cmd_new = qmp_marshal_input_memsave, 417 }, 418 419SQMP 420memsave 421------- 422 423Save to disk virtual memory dump starting at 'val' of size 'size'. 424 425Arguments: 426 427- "val": the starting address (json-int) 428- "size": the memory size, in bytes (json-int) 429- "filename": file path (json-string) 430- "cpu": virtual CPU index (json-int, optional) 431 432Example: 433 434-> { "execute": "memsave", 435 "arguments": { "val": 10, 436 "size": 100, 437 "filename": "/tmp/virtual-mem-dump" } } 438<- { "return": {} } 439 440EQMP 441 442 { 443 .name = "pmemsave", 444 .args_type = "val:l,size:i,filename:s", 445 .mhandler.cmd_new = qmp_marshal_input_pmemsave, 446 }, 447 448SQMP 449pmemsave 450-------- 451 452Save to disk physical memory dump starting at 'val' of size 'size'. 453 454Arguments: 455 456- "val": the starting address (json-int) 457- "size": the memory size, in bytes (json-int) 458- "filename": file path (json-string) 459 460Example: 461 462-> { "execute": "pmemsave", 463 "arguments": { "val": 10, 464 "size": 100, 465 "filename": "/tmp/physical-mem-dump" } } 466<- { "return": {} } 467 468EQMP 469 470 { 471 .name = "inject-nmi", 472 .args_type = "", 473 .mhandler.cmd_new = qmp_marshal_input_inject_nmi, 474 }, 475 476SQMP 477inject-nmi 478---------- 479 480Inject an NMI on guest's CPUs. 481 482Arguments: None. 483 484Example: 485 486-> { "execute": "inject-nmi" } 487<- { "return": {} } 488 489Note: inject-nmi fails when the guest doesn't support injecting. 490 Currently, only x86 guests do. 491 492EQMP 493 494 { 495 .name = "ringbuf-write", 496 .args_type = "device:s,data:s,format:s?", 497 .mhandler.cmd_new = qmp_marshal_input_ringbuf_write, 498 }, 499 500SQMP 501ringbuf-write 502------------- 503 504Write to a ring buffer character device. 505 506Arguments: 507 508- "device": ring buffer character device name (json-string) 509- "data": data to write (json-string) 510- "format": data format (json-string, optional) 511 - Possible values: "utf8" (default), "base64" 512 Bug: invalid base64 is currently not rejected. 513 Whitespace *is* invalid. 514 515Example: 516 517-> { "execute": "ringbuf-write", 518 "arguments": { "device": "foo", 519 "data": "abcdefgh", 520 "format": "utf8" } } 521<- { "return": {} } 522 523EQMP 524 525 { 526 .name = "ringbuf-read", 527 .args_type = "device:s,size:i,format:s?", 528 .mhandler.cmd_new = qmp_marshal_input_ringbuf_read, 529 }, 530 531SQMP 532ringbuf-read 533------------- 534 535Read from a ring buffer character device. 536 537Arguments: 538 539- "device": ring buffer character device name (json-string) 540- "size": how many bytes to read at most (json-int) 541 - Number of data bytes, not number of characters in encoded data 542- "format": data format (json-string, optional) 543 - Possible values: "utf8" (default), "base64" 544 - Naturally, format "utf8" works only when the ring buffer 545 contains valid UTF-8 text. Invalid UTF-8 sequences get 546 replaced. Bug: replacement doesn't work. Bug: can screw 547 up on encountering NUL characters, after the ring buffer 548 lost data, and when reading stops because the size limit 549 is reached. 550 551Example: 552 553-> { "execute": "ringbuf-read", 554 "arguments": { "device": "foo", 555 "size": 1000, 556 "format": "utf8" } } 557<- {"return": "abcdefgh"} 558 559EQMP 560 561 { 562 .name = "xen-save-devices-state", 563 .args_type = "filename:F", 564 .mhandler.cmd_new = qmp_marshal_input_xen_save_devices_state, 565 }, 566 567SQMP 568xen-save-devices-state 569------- 570 571Save the state of all devices to file. The RAM and the block devices 572of the VM are not saved by this command. 573 574Arguments: 575 576- "filename": the file to save the state of the devices to as binary 577data. See xen-save-devices-state.txt for a description of the binary 578format. 579 580Example: 581 582-> { "execute": "xen-save-devices-state", 583 "arguments": { "filename": "/tmp/save" } } 584<- { "return": {} } 585 586EQMP 587 588 { 589 .name = "xen-set-global-dirty-log", 590 .args_type = "enable:b", 591 .mhandler.cmd_new = qmp_marshal_input_xen_set_global_dirty_log, 592 }, 593 594SQMP 595xen-set-global-dirty-log 596------- 597 598Enable or disable the global dirty log mode. 599 600Arguments: 601 602- "enable": Enable it or disable it. 603 604Example: 605 606-> { "execute": "xen-set-global-dirty-log", 607 "arguments": { "enable": true } } 608<- { "return": {} } 609 610EQMP 611 612 { 613 .name = "migrate", 614 .args_type = "detach:-d,blk:-b,inc:-i,uri:s", 615 .mhandler.cmd_new = qmp_marshal_input_migrate, 616 }, 617 618SQMP 619migrate 620------- 621 622Migrate to URI. 623 624Arguments: 625 626- "blk": block migration, full disk copy (json-bool, optional) 627- "inc": incremental disk copy (json-bool, optional) 628- "uri": Destination URI (json-string) 629 630Example: 631 632-> { "execute": "migrate", "arguments": { "uri": "tcp:0:4446" } } 633<- { "return": {} } 634 635Notes: 636 637(1) The 'query-migrate' command should be used to check migration's progress 638 and final result (this information is provided by the 'status' member) 639(2) All boolean arguments default to false 640(3) The user Monitor's "detach" argument is invalid in QMP and should not 641 be used 642 643EQMP 644 645 { 646 .name = "migrate_cancel", 647 .args_type = "", 648 .mhandler.cmd_new = qmp_marshal_input_migrate_cancel, 649 }, 650 651SQMP 652migrate_cancel 653-------------- 654 655Cancel the current migration. 656 657Arguments: None. 658 659Example: 660 661-> { "execute": "migrate_cancel" } 662<- { "return": {} } 663 664EQMP 665{ 666 .name = "migrate-set-cache-size", 667 .args_type = "value:o", 668 .mhandler.cmd_new = qmp_marshal_input_migrate_set_cache_size, 669 }, 670 671SQMP 672migrate-set-cache-size 673---------------------- 674 675Set cache size to be used by XBZRLE migration, the cache size will be rounded 676down to the nearest power of 2 677 678Arguments: 679 680- "value": cache size in bytes (json-int) 681 682Example: 683 684-> { "execute": "migrate-set-cache-size", "arguments": { "value": 536870912 } } 685<- { "return": {} } 686 687EQMP 688 { 689 .name = "query-migrate-cache-size", 690 .args_type = "", 691 .mhandler.cmd_new = qmp_marshal_input_query_migrate_cache_size, 692 }, 693 694SQMP 695query-migrate-cache-size 696------------------------ 697 698Show cache size to be used by XBZRLE migration 699 700returns a json-object with the following information: 701- "size" : json-int 702 703Example: 704 705-> { "execute": "query-migrate-cache-size" } 706<- { "return": 67108864 } 707 708EQMP 709 710 { 711 .name = "migrate_set_speed", 712 .args_type = "value:o", 713 .mhandler.cmd_new = qmp_marshal_input_migrate_set_speed, 714 }, 715 716SQMP 717migrate_set_speed 718----------------- 719 720Set maximum speed for migrations. 721 722Arguments: 723 724- "value": maximum speed, in bytes per second (json-int) 725 726Example: 727 728-> { "execute": "migrate_set_speed", "arguments": { "value": 1024 } } 729<- { "return": {} } 730 731EQMP 732 733 { 734 .name = "migrate_set_downtime", 735 .args_type = "value:T", 736 .mhandler.cmd_new = qmp_marshal_input_migrate_set_downtime, 737 }, 738 739SQMP 740migrate_set_downtime 741-------------------- 742 743Set maximum tolerated downtime (in seconds) for migrations. 744 745Arguments: 746 747- "value": maximum downtime (json-number) 748 749Example: 750 751-> { "execute": "migrate_set_downtime", "arguments": { "value": 0.1 } } 752<- { "return": {} } 753 754EQMP 755 756 { 757 .name = "client_migrate_info", 758 .args_type = "protocol:s,hostname:s,port:i?,tls-port:i?,cert-subject:s?", 759 .params = "protocol hostname port tls-port cert-subject", 760 .help = "send migration info to spice/vnc client", 761 .user_print = monitor_user_noop, 762 .mhandler.cmd_async = client_migrate_info, 763 .flags = MONITOR_CMD_ASYNC, 764 }, 765 766SQMP 767client_migrate_info 768------------------ 769 770Set the spice/vnc connection info for the migration target. The spice/vnc 771server will ask the spice/vnc client to automatically reconnect using the 772new parameters (if specified) once the vm migration finished successfully. 773 774Arguments: 775 776- "protocol": protocol: "spice" or "vnc" (json-string) 777- "hostname": migration target hostname (json-string) 778- "port": spice/vnc tcp port for plaintext channels (json-int, optional) 779- "tls-port": spice tcp port for tls-secured channels (json-int, optional) 780- "cert-subject": server certificate subject (json-string, optional) 781 782Example: 783 784-> { "execute": "client_migrate_info", 785 "arguments": { "protocol": "spice", 786 "hostname": "virt42.lab.kraxel.org", 787 "port": 1234 } } 788<- { "return": {} } 789 790EQMP 791 792 { 793 .name = "dump-guest-memory", 794 .args_type = "paging:b,protocol:s,begin:i?,end:i?", 795 .params = "-p protocol [begin] [length]", 796 .help = "dump guest memory to file", 797 .user_print = monitor_user_noop, 798 .mhandler.cmd_new = qmp_marshal_input_dump_guest_memory, 799 }, 800 801SQMP 802dump 803 804 805Dump guest memory to file. The file can be processed with crash or gdb. 806 807Arguments: 808 809- "paging": do paging to get guest's memory mapping (json-bool) 810- "protocol": destination file(started with "file:") or destination file 811 descriptor (started with "fd:") (json-string) 812- "begin": the starting physical address. It's optional, and should be specified 813 with length together (json-int) 814- "length": the memory size, in bytes. It's optional, and should be specified 815 with begin together (json-int) 816 817Example: 818 819-> { "execute": "dump-guest-memory", "arguments": { "protocol": "fd:dump" } } 820<- { "return": {} } 821 822Notes: 823 824(1) All boolean arguments default to false 825 826EQMP 827 828 { 829 .name = "netdev_add", 830 .args_type = "netdev:O", 831 .mhandler.cmd_new = qmp_netdev_add, 832 }, 833 834SQMP 835netdev_add 836---------- 837 838Add host network device. 839 840Arguments: 841 842- "type": the device type, "tap", "user", ... (json-string) 843- "id": the device's ID, must be unique (json-string) 844- device options 845 846Example: 847 848-> { "execute": "netdev_add", "arguments": { "type": "user", "id": "netdev1" } } 849<- { "return": {} } 850 851Note: The supported device options are the same ones supported by the '-netdev' 852 command-line argument, which are listed in the '-help' output or QEMU's 853 manual 854 855EQMP 856 857 { 858 .name = "netdev_del", 859 .args_type = "id:s", 860 .mhandler.cmd_new = qmp_marshal_input_netdev_del, 861 }, 862 863SQMP 864netdev_del 865---------- 866 867Remove host network device. 868 869Arguments: 870 871- "id": the device's ID, must be unique (json-string) 872 873Example: 874 875-> { "execute": "netdev_del", "arguments": { "id": "netdev1" } } 876<- { "return": {} } 877 878 879EQMP 880 881 { 882 .name = "block_resize", 883 .args_type = "device:B,size:o", 884 .mhandler.cmd_new = qmp_marshal_input_block_resize, 885 }, 886 887SQMP 888block_resize 889------------ 890 891Resize a block image while a guest is running. 892 893Arguments: 894 895- "device": the device's ID, must be unique (json-string) 896- "size": new size 897 898Example: 899 900-> { "execute": "block_resize", "arguments": { "device": "scratch", "size": 1073741824 } } 901<- { "return": {} } 902 903EQMP 904 905 { 906 .name = "block-stream", 907 .args_type = "device:B,base:s?,speed:o?,on-error:s?", 908 .mhandler.cmd_new = qmp_marshal_input_block_stream, 909 }, 910 911 { 912 .name = "block-commit", 913 .args_type = "device:B,base:s?,top:s,speed:o?", 914 .mhandler.cmd_new = qmp_marshal_input_block_commit, 915 }, 916 917 { 918 .name = "drive-backup", 919 .args_type = "sync:s,device:B,target:s,speed:i?,mode:s?,format:s?," 920 "on-source-error:s?,on-target-error:s?", 921 .mhandler.cmd_new = qmp_marshal_input_drive_backup, 922 }, 923 924SQMP 925drive-backup 926------------ 927 928Start a point-in-time copy of a block device to a new destination. The 929status of ongoing drive-backup operations can be checked with 930query-block-jobs where the BlockJobInfo.type field has the value 'backup'. 931The operation can be stopped before it has completed using the 932block-job-cancel command. 933 934Arguments: 935 936- "device": the name of the device which should be copied. 937 (json-string) 938- "target": the target of the new image. If the file exists, or if it is a 939 device, the existing file/device will be used as the new 940 destination. If it does not exist, a new file will be created. 941 (json-string) 942- "format": the format of the new destination, default is to probe if 'mode' is 943 'existing', else the format of the source 944 (json-string, optional) 945- "sync": what parts of the disk image should be copied to the destination; 946 possibilities include "full" for all the disk, "top" for only the sectors 947 allocated in the topmost image, or "none" to only replicate new I/O 948 (MirrorSyncMode). 949- "mode": whether and how QEMU should create a new image 950 (NewImageMode, optional, default 'absolute-paths') 951- "speed": the maximum speed, in bytes per second (json-int, optional) 952- "on-source-error": the action to take on an error on the source, default 953 'report'. 'stop' and 'enospc' can only be used 954 if the block device supports io-status. 955 (BlockdevOnError, optional) 956- "on-target-error": the action to take on an error on the target, default 957 'report' (no limitations, since this applies to 958 a different block device than device). 959 (BlockdevOnError, optional) 960 961Example: 962-> { "execute": "drive-backup", "arguments": { "device": "drive0", 963 "sync": "full", 964 "target": "backup.img" } } 965<- { "return": {} } 966EQMP 967 968 { 969 .name = "block-job-set-speed", 970 .args_type = "device:B,speed:o", 971 .mhandler.cmd_new = qmp_marshal_input_block_job_set_speed, 972 }, 973 974 { 975 .name = "block-job-cancel", 976 .args_type = "device:B,force:b?", 977 .mhandler.cmd_new = qmp_marshal_input_block_job_cancel, 978 }, 979 { 980 .name = "block-job-pause", 981 .args_type = "device:B", 982 .mhandler.cmd_new = qmp_marshal_input_block_job_pause, 983 }, 984 { 985 .name = "block-job-resume", 986 .args_type = "device:B", 987 .mhandler.cmd_new = qmp_marshal_input_block_job_resume, 988 }, 989 { 990 .name = "block-job-complete", 991 .args_type = "device:B", 992 .mhandler.cmd_new = qmp_marshal_input_block_job_complete, 993 }, 994 { 995 .name = "transaction", 996 .args_type = "actions:q", 997 .mhandler.cmd_new = qmp_marshal_input_transaction, 998 }, 999 1000SQMP
1001transaction 1002----------- 1003 1004Atomically operate on one or more block devices. The only supported 1005operation for now is snapshotting. If there is any failure performing 1006any of the operations, all snapshots for the group are abandoned, and 1007the original disks pre-snapshot attempt are used. 1008 1009A list of dictionaries is accepted, that contains the actions to be performed. 1010For snapshots this is the device, the file to use for the new snapshot, 1011and the format. The default format, if not specified, is qcow2. 1012 1013Each new snapshot defaults to being created by QEMU (wiping any 1014contents if the file already exists), but it is also possible to reuse 1015an externally-created file. In the latter case, you should ensure that 1016the new image file has the same contents as the current one; QEMU cannot 1017perform any meaningful check. Typically this is achieved by using the 1018current image file as the backing file for the new image. 1019 1020Arguments: 1021 1022actions array: 1023 - "type": the operation to perform. The only supported 1024 value is "blockdev-snapshot-sync". (json-string) 1025 - "data": a dictionary. The contents depend on the value 1026 of "type". When "type" is "blockdev-snapshot-sync": 1027 - "device": device name to snapshot (json-string) 1028 - "snapshot-file": name of new image file (json-string) 1029 - "format": format of new image (json-string, optional) 1030 - "mode": whether and how QEMU should create the snapshot file 1031 (NewImageMode, optional, default "absolute-paths") 1032 1033Example: 1034 1035-> { "execute": "transaction", 1036 "arguments": { "actions": [ 1037 { 'type': 'blockdev-snapshot-sync', 'data' : { "device": "ide-hd0", 1038 "snapshot-file": "/some/place/my-image", 1039 "format": "qcow2" } }, 1040 { 'type': 'blockdev-snapshot-sync', 'data' : { "device": "ide-hd1", 1041 "snapshot-file": "/some/place/my-image2", 1042 "mode": "existing", 1043 "format": "qcow2" } } ] } } 1044<- { "return": {} } 1045 1046EQMP 1047 1048 { 1049 .name = "blockdev-snapshot-sync", 1050 .args_type = "device:B,snapshot-file:s,format:s?,mode:s?", 1051 .mhandler.cmd_new = qmp_marshal_input_blockdev_snapshot_sync, 1052 }, 1053 1054SQMP 1055blockdev-snapshot-sync 1056---------------------- 1057 1058Synchronous snapshot of a block device. snapshot-file specifies the 1059target of the new image. If the file exists, or if it is a device, the 1060snapshot will be created in the existing file/device. If does not 1061exist, a new file will be created. format specifies the format of the 1062snapshot image, default is qcow2. 1063 1064Arguments: 1065 1066- "device": device name to snapshot (json-string) 1067- "snapshot-file": name of new image file (json-string) 1068- "mode": whether and how QEMU should create the snapshot file 1069 (NewImageMode, optional, default "absolute-paths") 1070- "format": format of new image (json-string, optional) 1071 1072Example: 1073 1074-> { "execute": "blockdev-snapshot-sync", "arguments": { "device": "ide-hd0", 1075 "snapshot-file": 1076 "/some/place/my-image", 1077 "format": "qcow2" } } 1078<- { "return": {} } 1079 1080EQMP 1081 1082 { 1083 .name = "drive-mirror", 1084 .args_type = "sync:s,device:B,target:s,speed:i?,mode:s?,format:s?," 1085 "on-source-error:s?,on-target-error:s?," 1086 "granularity:i?,buf-size:i?", 1087 .mhandler.cmd_new = qmp_marshal_input_drive_mirror, 1088 }, 1089 1090SQMP 1091drive-mirror 1092------------ 1093 1094Start mirroring a block device's writes to a new destination. target 1095specifies the target of the new image. If the file exists, or if it is 1096a device, it will be used as the new destination for writes. If it does not 1097exist, a new file will be created. format specifies the format of the 1098mirror image, default is to probe if mode='existing', else the format 1099of the source. 1100 1101Arguments: 1102 1103- "device": device name to operate on (json-string) 1104- "target": name of new image file (json-string) 1105- "format": format of new image (json-string, optional) 1106- "mode": how an image file should be created into the target 1107 file/device (NewImageMode, optional, default 'absolute-paths') 1108- "speed": maximum speed of the streaming job, in bytes per second 1109 (json-int) 1110- "granularity": granularity of the dirty bitmap, in bytes (json-int, optional) 1111- "buf_size": maximum amount of data in flight from source to target, in bytes 1112 (json-int, default 10M) 1113- "sync": what parts of the disk image should be copied to the destination; 1114 possibilities include "full" for all the disk, "top" for only the sectors 1115 allocated in the topmost image, or "none" to only replicate new I/O 1116 (MirrorSyncMode). 1117- "on-source-error": the action to take on an error on the source 1118 (BlockdevOnError, default 'report') 1119- "on-target-error": the action to take on an error on the target 1120 (BlockdevOnError, default 'report') 1121 1122The default value of the granularity is the image cluster size clamped 1123between 4096 and 65536, if the image format defines one. If the format 1124does not define a cluster size, the default value of the granularity 1125is 65536. 1126 1127 1128Example: 1129 1130-> { "execute": "drive-mirror", "arguments": { "device": "ide-hd0", 1131 "target": "/some/place/my-image", 1132 "sync": "full", 1133 "format": "qcow2" } } 1134<- { "return": {} } 1135 1136EQMP 1137 1138 { 1139 .name = "balloon", 1140 .args_type = "value:M", 1141 .mhandler.cmd_new = qmp_marshal_input_balloon, 1142 }, 1143 1144SQMP 1145balloon 1146------- 1147 1148Request VM to change its memory allocation (in bytes). 1149 1150Arguments: 1151 1152- "value": New memory allocation (json-int) 1153 1154Example: 1155 1156-> { "execute": "balloon", "arguments": { "value": 536870912 } } 1157<- { "return": {} } 1158 1159EQMP 1160 1161 { 1162 .name = "set_link", 1163 .args_type = "name:s,up:b", 1164 .mhandler.cmd_new = qmp_marshal_input_set_link, 1165 }, 1166 1167SQMP 1168set_link 1169-------- 1170 1171Change the link status of a network adapter. 1172 1173Arguments: 1174 1175- "name": network device name (json-string) 1176- "up": status is up (json-bool) 1177 1178Example: 1179 1180-> { "execute": "set_link", "arguments": { "name": "e1000.0", "up": false } } 1181<- { "return": {} } 1182 1183EQMP 1184 1185 { 1186 .name = "getfd", 1187 .args_type = "fdname:s", 1188 .params = "getfd name", 1189 .help = "receive a file descriptor via SCM rights and assign it a name", 1190 .mhandler.cmd_new = qmp_marshal_input_getfd, 1191 }, 1192 1193SQMP 1194getfd 1195----- 1196 1197Receive a file descriptor via SCM rights and assign it a name. 1198 1199Arguments: 1200 1201- "fdname": file descriptor name (json-string) 1202 1203Example: 1204 1205-> { "execute": "getfd", "arguments": { "fdname": "fd1" } } 1206<- { "return": {} } 1207 1208Notes: 1209 1210(1) If the name specified by the "fdname" argument already exists, 1211 the file descriptor assigned to it will be closed and replaced 1212 by the received file descriptor. 1213(2) The 'closefd' command can be used to explicitly close the file 1214 descriptor when it is no longer needed. 1215 1216EQMP 1217 1218 { 1219 .name = "closefd", 1220 .args_type = "fdname:s", 1221 .params = "closefd name", 1222 .help = "close a file descriptor previously passed via SCM rights", 1223 .mhandler.cmd_new = qmp_marshal_input_closefd, 1224 }, 1225 1226SQMP 1227closefd 1228------- 1229 1230Close a file descriptor previously passed via SCM rights. 1231 1232Arguments: 1233 1234- "fdname": file descriptor name (json-string) 1235 1236Example: 1237 1238-> { "execute": "closefd", "arguments": { "fdname": "fd1" } } 1239<- { "return": {} } 1240 1241EQMP 1242 1243 { 1244 .name = "add-fd", 1245 .args_type = "fdset-id:i?,opaque:s?", 1246 .params = "add-fd fdset-id opaque", 1247 .help = "Add a file descriptor, that was passed via SCM rights, to an fd set", 1248 .mhandler.cmd_new = qmp_marshal_input_add_fd, 1249 }, 1250 1251SQMP 1252add-fd 1253------- 1254 1255Add a file descriptor, that was passed via SCM rights, to an fd set. 1256 1257Arguments: 1258 1259- "fdset-id": The ID of the fd set to add the file descriptor to. 1260 (json-int, optional) 1261- "opaque": A free-form string that can be used to describe the fd. 1262 (json-string, optional) 1263 1264Return a json-object with the following information: 1265 1266- "fdset-id": The ID of the fd set that the fd was added to. (json-int) 1267- "fd": The file descriptor that was received via SCM rights and added to the 1268 fd set. (json-int) 1269 1270Example: 1271 1272-> { "execute": "add-fd", "arguments": { "fdset-id": 1 } } 1273<- { "return": { "fdset-id": 1, "fd": 3 } } 1274 1275Notes: 1276 1277(1) The list of fd sets is shared by all monitor connections. 1278(2) If "fdset-id" is not specified, a new fd set will be created. 1279 1280EQMP 1281 1282 { 1283 .name = "remove-fd", 1284 .args_type = "fdset-id:i,fd:i?", 1285 .params = "remove-fd fdset-id fd", 1286 .help = "Remove a file descriptor from an fd set", 1287 .mhandler.cmd_new = qmp_marshal_input_remove_fd, 1288 }, 1289 1290SQMP 1291remove-fd 1292--------- 1293 1294Remove a file descriptor from an fd set. 1295 1296Arguments: 1297 1298- "fdset-id": The ID of the fd set that the file descriptor belongs to. 1299 (json-int) 1300- "fd": The file descriptor that is to be removed. (json-int, optional) 1301 1302Example: 1303 1304-> { "execute": "remove-fd", "arguments": { "fdset-id": 1, "fd": 3 } } 1305<- { "return": {} } 1306 1307Notes: 1308 1309(1) The list of fd sets is shared by all monitor connections. 1310(2) If "fd" is not specified, all file descriptors in "fdset-id" will be 1311 removed. 1312 1313EQMP 1314 1315 { 1316 .name = "query-fdsets", 1317 .args_type = "", 1318 .help = "Return information describing all fd sets", 1319 .mhandler.cmd_new = qmp_marshal_input_query_fdsets, 1320 }, 1321 1322SQMP 1323query-fdsets 1324------------- 1325 1326Return information describing all fd sets. 1327 1328Arguments: None 1329 1330Example: 1331 1332-> { "execute": "query-fdsets" } 1333<- { "return": [ 1334 { 1335 "fds": [ 1336 { 1337 "fd": 30, 1338 "opaque": "rdonly:/path/to/file" 1339 }, 1340 { 1341 "fd": 24, 1342 "opaque": "rdwr:/path/to/file" 1343 } 1344 ], 1345 "fdset-id": 1 1346 }, 1347 { 1348 "fds": [ 1349 { 1350 "fd": 28 1351 }, 1352 { 1353 "fd": 29 1354 } 1355 ], 1356 "fdset-id": 0 1357 } 1358 ] 1359 } 1360 1361Note: The list of fd sets is shared by all monitor connections. 1362 1363EQMP 1364 1365 { 1366 .name = "block_passwd", 1367 .args_type = "device:B,password:s", 1368 .mhandler.cmd_new = qmp_marshal_input_block_passwd, 1369 }, 1370 1371SQMP 1372block_passwd 1373------------ 1374 1375Set the password of encrypted block devices. 1376 1377Arguments: 1378 1379- "device": device name (json-string) 1380- "password": password (json-string) 1381 1382Example: 1383 1384-> { "execute": "block_passwd", "arguments": { "device": "ide0-hd0", 1385 "password": "12345" } } 1386<- { "return": {} } 1387 1388EQMP 1389 1390 { 1391 .name = "block_set_io_throttle", 1392 .args_type = "device:B,bps:l,bps_rd:l,bps_wr:l,iops:l,iops_rd:l,iops_wr:l", 1393 .mhandler.cmd_new = qmp_marshal_input_block_set_io_throttle, 1394 }, 1395 1396SQMP 1397block_set_io_throttle 1398------------ 1399 1400Change I/O throttle limits for a block drive. 1401 1402Arguments: 1403 1404- "device": device name (json-string) 1405- "bps": total throughput limit in bytes per second(json-int) 1406- "bps_rd": read throughput limit in bytes per second(json-int) 1407- "bps_wr": read throughput limit in bytes per second(json-int) 1408- "iops": total I/O operations per second(json-int) 1409- "iops_rd": read I/O operations per second(json-int) 1410- "iops_wr": write I/O operations per second(json-int) 1411 1412Example: 1413 1414-> { "execute": "block_set_io_throttle", "arguments": { "device": "virtio0", 1415 "bps": "1000000", 1416 "bps_rd": "0", 1417 "bps_wr": "0", 1418 "iops": "0", 1419 "iops_rd": "0", 1420 "iops_wr": "0" } } 1421<- { "return": {} } 1422 1423EQMP 1424 1425 { 1426 .name = "set_password", 1427 .args_type = "protocol:s,password:s,connected:s?", 1428 .mhandler.cmd_new = qmp_marshal_input_set_password, 1429 }, 1430 1431SQMP 1432set_password 1433------------ 1434 1435Set the password for vnc/spice protocols. 1436 1437Arguments: 1438 1439- "protocol": protocol name (json-string) 1440- "password": password (json-string) 1441- "connected": [ keep | disconnect | fail ] (josn-string, optional) 1442 1443Example: 1444 1445-> { "execute": "set_password", "arguments": { "protocol": "vnc", 1446 "password": "secret" } } 1447<- { "return": {} } 1448 1449EQMP 1450 1451 { 1452 .name = "expire_password", 1453 .args_type = "protocol:s,time:s", 1454 .mhandler.cmd_new = qmp_marshal_input_expire_password, 1455 }, 1456 1457SQMP 1458expire_password 1459--------------- 1460 1461Set the password expire time for vnc/spice protocols. 1462 1463Arguments: 1464 1465- "protocol": protocol name (json-string) 1466- "time": [ now | never | +secs | secs ] (json-string) 1467 1468Example: 1469 1470-> { "execute": "expire_password", "arguments": { "protocol": "vnc", 1471 "time": "+60" } } 1472<- { "return": {} } 1473 1474EQMP 1475 1476 { 1477 .name = "add_client", 1478 .args_type = "protocol:s,fdname:s,skipauth:b?,tls:b?", 1479 .mhandler.cmd_new = qmp_marshal_input_add_client, 1480 }, 1481 1482SQMP 1483add_client 1484---------- 1485 1486Add a graphics client 1487 1488Arguments: 1489 1490- "protocol": protocol name (json-string) 1491- "fdname": file descriptor name (json-string) 1492- "skipauth": whether to skip authentication (json-bool, optional) 1493- "tls": whether to perform TLS (json-bool, optional) 1494 1495Example: 1496 1497-> { "execute": "add_client", "arguments": { "protocol": "vnc", 1498 "fdname": "myclient" } } 1499<- { "return": {} } 1500 1501EQMP 1502 { 1503 .name = "qmp_capabilities", 1504 .args_type = "", 1505 .params = "", 1506 .help = "enable QMP capabilities", 1507 .user_print = monitor_user_noop, 1508 .mhandler.cmd_new = do_qmp_capabilities, 1509 }, 1510 1511SQMP 1512qmp_capabilities 1513---------------- 1514 1515Enable QMP capabilities. 1516 1517Arguments: None. 1518 1519Example: 1520 1521-> { "execute": "qmp_capabilities" } 1522<- { "return": {} } 1523 1524Note: This command must be issued before issuing any other command. 1525 1526EQMP 1527 1528 { 1529 .name = "human-monitor-command", 1530 .args_type = "command-line:s,cpu-index:i?", 1531 .mhandler.cmd_new = qmp_marshal_input_human_monitor_command, 1532 }, 1533 1534SQMP 1535human-monitor-command 1536--------------------- 1537 1538Execute a Human Monitor command. 1539 1540Arguments: 1541 1542- command-line: the command name and its arguments, just like the 1543 Human Monitor's shell (json-string) 1544- cpu-index: select the CPU number to be used by commands which access CPU 1545 data, like 'info registers'. The Monitor selects CPU 0 if this 1546 argument is not provided (json-int, optional) 1547 1548Example: 1549 1550-> { "execute": "human-monitor-command", "arguments": { "command-line": "info kvm" } } 1551<- { "return": "kvm support: enabled\r\n" } 1552 1553Notes: 1554 1555(1) The Human Monitor is NOT an stable interface, this means that command 1556 names, arguments and responses can change or be removed at ANY time. 1557 Applications that rely on long term stability guarantees should NOT 1558 use this command 1559 1560(2) Limitations: 1561 1562 o This command is stateless, this means that commands that depend 1563 on state information (such as getfd) might not work 1564 1565 o Commands that prompt the user for data (eg. 'cont' when the block 1566 device is encrypted) don't currently work 1567 15683. Query Commands 1569================= 1570 1571HXCOMM Each query command below is inside a SQMP/EQMP section, do NOT change 1572HXCOMM this! We will possibly move query commands definitions inside those 1573HXCOMM sections, just like regular commands. 1574 1575EQMP 1576 1577SQMP 1578query-version 1579------------- 1580 1581Show QEMU version. 1582 1583Return a json-object with the following information: 1584 1585- "qemu": A json-object containing three integer values: 1586 - "major": QEMU's major version (json-int) 1587 - "minor": QEMU's minor version (json-int) 1588 - "micro": QEMU's micro version (json-int) 1589- "package": package's version (json-string) 1590 1591Example: 1592 1593-> { "execute": "query-version" } 1594<- { 1595 "return":{ 1596 "qemu":{ 1597 "major":0, 1598 "minor":11, 1599 "micro":5 1600 }, 1601 "package":"" 1602 } 1603 } 1604 1605EQMP 1606 1607 { 1608 .name = "query-version", 1609 .args_type = "", 1610 .mhandler.cmd_new = qmp_marshal_input_query_version, 1611 }, 1612 1613SQMP 1614query-commands 1615-------------- 1616 1617List QMP available commands. 1618 1619Each command is represented by a json-object, the returned value is a json-array 1620of all commands. 1621 1622Each json-object contain: 1623 1624- "name": command's name (json-string) 1625 1626Example: 1627 1628-> { "execute": "query-commands" } 1629<- { 1630 "return":[ 1631 { 1632 "name":"query-balloon" 1633 }, 1634 { 1635 "name":"system_powerdown" 1636 } 1637 ] 1638 } 1639 1640Note: This example has been shortened as the real response is too long. 1641 1642EQMP 1643 1644 { 1645 .name = "query-commands", 1646 .args_type = "", 1647 .mhandler.cmd_new = qmp_marshal_input_query_commands, 1648 }, 1649 1650SQMP 1651query-events 1652-------------- 1653 1654List QMP available events. 1655 1656Each event is represented by a json-object, the returned value is a json-array 1657of all events. 1658 1659Each json-object contains: 1660 1661- "name": event's name (json-string) 1662 1663Example: 1664 1665-> { "execute": "query-events" } 1666<- { 1667 "return":[ 1668 { 1669 "name":"SHUTDOWN" 1670 }, 1671 { 1672 "name":"RESET" 1673 } 1674 ] 1675 } 1676 1677Note: This example has been shortened as the real response is too long. 1678 1679EQMP 1680 1681 { 1682 .name = "query-events", 1683 .args_type = "", 1684 .mhandler.cmd_new = qmp_marshal_input_query_events, 1685 }, 1686 1687SQMP 1688query-chardev 1689------------- 1690 1691Each device is represented by a json-object. The returned value is a json-array 1692of all devices. 1693 1694Each json-object contain the following: 1695 1696- "label": device's label (json-string) 1697- "filename": device's file (json-string) 1698 1699Example: 1700 1701-> { "execute": "query-chardev" } 1702<- { 1703 "return":[ 1704 { 1705 "label":"monitor", 1706 "filename":"stdio" 1707 }, 1708 { 1709 "label":"serial0", 1710 "filename":"vc" 1711 } 1712 ] 1713 } 1714 1715EQMP 1716 1717 { 1718 .name = "query-chardev", 1719 .args_type = "", 1720 .mhandler.cmd_new = qmp_marshal_input_query_chardev, 1721 }, 1722 1723SQMP 1724query-block 1725----------- 1726 1727Show the block devices. 1728 1729Each block device information is stored in a json-object and the returned value 1730is a json-array of all devices. 1731 1732Each json-object contain the following: 1733 1734- "device": device name (json-string) 1735- "type": device type (json-string) 1736 - deprecated, retained for backward compatibility 1737 - Possible values: "unknown" 1738- "removable": true if the device is removable, false otherwise (json-bool) 1739- "locked": true if the device is locked, false otherwise (json-bool) 1740- "tray_open": only present if removable, true if the device has a tray, 1741 and it is open (json-bool) 1742- "inserted": only present if the device is inserted, it is a json-object 1743 containing the following: 1744 - "file": device file name (json-string) 1745 - "ro": true if read-only, false otherwise (json-bool) 1746 - "drv": driver format name (json-string) 1747 - Possible values: "blkdebug", "bochs", "cloop", "cow", "dmg", 1748 "file", "file", "ftp", "ftps", "host_cdrom", 1749 "host_device", "host_floppy", "http", "https", 1750 "nbd", "parallels", "qcow", "qcow2", "raw", 1751 "tftp", "vdi", "vmdk", "vpc", "vvfat" 1752 - "backing_file": backing file name (json-string, optional) 1753 - "backing_file_depth": number of files in the backing file chain (json-int) 1754 - "encrypted": true if encrypted, false otherwise (json-bool) 1755 - "bps": limit total bytes per second (json-int) 1756 - "bps_rd": limit read bytes per second (json-int) 1757 - "bps_wr": limit write bytes per second (json-int) 1758 - "iops": limit total I/O operations per second (json-int) 1759 - "iops_rd": limit read operations per second (json-int) 1760 - "iops_wr": limit write operations per second (json-int) 1761 - "image": the detail of the image, it is a json-object containing 1762 the following: 1763 - "filename": image file name (json-string) 1764 - "format": image format (json-string) 1765 - "virtual-size": image capacity in bytes (json-int) 1766 - "dirty-flag": true if image is not cleanly closed, not present 1767 means clean (json-bool, optional) 1768 - "actual-size": actual size on disk in bytes of the image, not 1769 present when image does not support thin 1770 provision (json-int, optional) 1771 - "cluster-size": size of a cluster in bytes, not present if image 1772 format does not support it (json-int, optional) 1773 - "encrypted": true if the image is encrypted, not present means 1774 false or the image format does not support 1775 encryption (json-bool, optional) 1776 - "backing_file": backing file name, not present means no backing 1777 file is used or the image format does not 1778 support backing file chain 1779 (json-string, optional) 1780 - "full-backing-filename": full path of the backing file, not 1781 present if it equals backing_file or no 1782 backing file is used 1783 (json-string, optional) 1784 - "backing-filename-format": the format of the backing file, not 1785 present means unknown or no backing 1786 file (json-string, optional) 1787 - "snapshots": the internal snapshot info, it is an optional list 1788 of json-object containing the following: 1789 - "id": unique snapshot id (json-string) 1790 - "name": snapshot name (json-string) 1791 - "vm-state-size": size of the VM state in bytes (json-int) 1792 - "date-sec": UTC date of the snapshot in seconds (json-int) 1793 - "date-nsec": fractional part in nanoseconds to be used with 1794 date-sec(json-int) 1795 - "vm-clock-sec": VM clock relative to boot in seconds 1796 (json-int) 1797 - "vm-clock-nsec": fractional part in nanoseconds to be used 1798 with vm-clock-sec (json-int) 1799 - "backing-image": the detail of the backing image, it is an 1800 optional json-object only present when a 1801 backing image present for this image 1802 1803- "io-status": I/O operation status, only present if the device supports it 1804 and the VM is configured to stop on errors. It's always reset 1805 to "ok" when the "cont" command is issued (json_string, optional) 1806 - Possible values: "ok", "failed", "nospace" 1807 1808Example: 1809 1810-> { "execute": "query-block" } 1811<- { 1812 "return":[ 1813 { 1814 "io-status": "ok", 1815 "device":"ide0-hd0", 1816 "locked":false, 1817 "removable":false, 1818 "inserted":{ 1819 "ro":false, 1820 "drv":"qcow2", 1821 "encrypted":false, 1822 "file":"disks/test.qcow2", 1823 "backing_file_depth":1, 1824 "bps":1000000, 1825 "bps_rd":0, 1826 "bps_wr":0, 1827 "iops":1000000, 1828 "iops_rd":0, 1829 "iops_wr":0, 1830 "image":{ 1831 "filename":"disks/test.qcow2", 1832 "format":"qcow2", 1833 "virtual-size":2048000, 1834 "backing_file":"base.qcow2", 1835 "full-backing-filename":"disks/base.qcow2", 1836 "backing-filename-format:"qcow2", 1837 "snapshots":[ 1838 { 1839 "id": "1", 1840 "name": "snapshot1", 1841 "vm-state-size": 0, 1842 "date-sec": 10000200, 1843 "date-nsec": 12, 1844 "vm-clock-sec": 206, 1845 "vm-clock-nsec": 30 1846 } 1847 ], 1848 "backing-image":{ 1849 "filename":"disks/base.qcow2", 1850 "format":"qcow2", 1851 "virtual-size":2048000 1852 } 1853 } 1854 }, 1855 "type":"unknown" 1856 }, 1857 { 1858 "io-status": "ok", 1859 "device":"ide1-cd0", 1860 "locked":false, 1861 "removable":true, 1862 "type":"unknown" 1863 }, 1864 { 1865 "device":"floppy0", 1866 "locked":false, 1867 "removable":true, 1868 "type":"unknown" 1869 }, 1870 { 1871 "device":"sd0", 1872 "locked":false, 1873 "removable":true, 1874 "type":"unknown" 1875 } 1876 ] 1877 } 1878 1879EQMP 1880 1881 { 1882 .name = "query-block", 1883 .args_type = "", 1884 .mhandler.cmd_new = qmp_marshal_input_query_block, 1885 }, 1886 1887SQMP 1888query-blockstats 1889---------------- 1890 1891Show block device statistics. 1892 1893Each device statistic information is stored in a json-object and the returned 1894value is a json-array of all devices. 1895 1896Each json-object contain the following: 1897 1898- "device": device name (json-string) 1899- "stats": A json-object with the statistics information, it contains: 1900 - "rd_bytes": bytes read (json-int) 1901 - "wr_bytes": bytes written (json-int) 1902 - "rd_operations": read operations (json-int) 1903 - "wr_operations": write operations (json-int) 1904 - "flush_operations": cache flush operations (json-int) 1905 - "wr_total_time_ns": total time spend on writes in nano-seconds (json-int) 1906 - "rd_total_time_ns": total time spend on reads in nano-seconds (json-int) 1907 - "flush_total_time_ns": total time spend on cache flushes in nano-seconds (json-int) 1908 - "wr_highest_offset": Highest offset of a sector written since the 1909 BlockDriverState has been opened (json-int) 1910- "parent": Contains recursively the statistics of the underlying 1911 protocol (e.g. the host file for a qcow2 image). If there is 1912 no underlying protocol, this field is omitted 1913 (json-object, optional) 1914 1915Example: 1916 1917-> { "execute": "query-blockstats" } 1918<- { 1919 "return":[ 1920 { 1921 "device":"ide0-hd0", 1922 "parent":{ 1923 "stats":{ 1924 "wr_highest_offset":3686448128, 1925 "wr_bytes":9786368, 1926 "wr_operations":751, 1927 "rd_bytes":122567168, 1928 "rd_operations":36772 1929 "wr_total_times_ns":313253456 1930 "rd_total_times_ns":3465673657 1931 "flush_total_times_ns":49653 1932 "flush_operations":61, 1933 } 1934 }, 1935 "stats":{ 1936 "wr_highest_offset":2821110784, 1937 "wr_bytes":9786368, 1938 "wr_operations":692, 1939 "rd_bytes":122739200, 1940 "rd_operations":36604 1941 "flush_operations":51, 1942 "wr_total_times_ns":313253456 1943 "rd_total_times_ns":3465673657 1944 "flush_total_times_ns":49653 1945 } 1946 }, 1947 { 1948 "device":"ide1-cd0", 1949 "stats":{ 1950 "wr_highest_offset":0, 1951 "wr_bytes":0, 1952 "wr_operations":0, 1953 "rd_bytes":0, 1954 "rd_operations":0 1955 "flush_operations":0, 1956 "wr_total_times_ns":0 1957 "rd_total_times_ns":0 1958 "flush_total_times_ns":0 1959 } 1960 }, 1961 { 1962 "device":"floppy0", 1963 "stats":{ 1964 "wr_highest_offset":0, 1965 "wr_bytes":0, 1966 "wr_operations":0, 1967 "rd_bytes":0, 1968 "rd_operations":0 1969 "flush_operations":0, 1970 "wr_total_times_ns":0 1971 "rd_total_times_ns":0 1972 "flush_total_times_ns":0 1973 } 1974 }, 1975 { 1976 "device":"sd0", 1977 "stats":{ 1978 "wr_highest_offset":0, 1979 "wr_bytes":0, 1980 "wr_operations":0, 1981 "rd_bytes":0, 1982 "rd_operations":0 1983 "flush_operations":0, 1984 "wr_total_times_ns":0 1985 "rd_total_times_ns":0 1986 "flush_total_times_ns":0 1987 } 1988 } 1989 ] 1990 } 1991 1992EQMP 1993 1994 { 1995 .name = "query-blockstats", 1996 .args_type = "", 1997 .mhandler.cmd_new = qmp_marshal_input_query_blockstats, 1998 }, 1999 2000SQMP
2001query-cpus 2002---------- 2003 2004Show CPU information. 2005 2006Return a json-array. Each CPU is represented by a json-object, which contains: 2007 2008- "CPU": CPU index (json-int) 2009- "current": true if this is the current CPU, false otherwise (json-bool) 2010- "halted": true if the cpu is halted, false otherwise (json-bool) 2011- Current program counter. The key's name depends on the architecture: 2012 "pc": i386/x86_64 (json-int) 2013 "nip": PPC (json-int) 2014 "pc" and "npc": sparc (json-int) 2015 "PC": mips (json-int) 2016- "thread_id": ID of the underlying host thread (json-int) 2017 2018Example: 2019 2020-> { "execute": "query-cpus" } 2021<- { 2022 "return":[ 2023 { 2024 "CPU":0, 2025 "current":true, 2026 "halted":false, 2027 "pc":3227107138 2028 "thread_id":3134 2029 }, 2030 { 2031 "CPU":1, 2032 "current":false, 2033 "halted":true, 2034 "pc":7108165 2035 "thread_id":3135 2036 } 2037 ] 2038 } 2039 2040EQMP 2041 2042 { 2043 .name = "query-cpus", 2044 .args_type = "", 2045 .mhandler.cmd_new = qmp_marshal_input_query_cpus, 2046 }, 2047 2048SQMP 2049query-pci 2050--------- 2051 2052PCI buses and devices information. 2053 2054The returned value is a json-array of all buses. Each bus is represented by 2055a json-object, which has a key with a json-array of all PCI devices attached 2056to it. Each device is represented by a json-object. 2057 2058The bus json-object contains the following: 2059 2060- "bus": bus number (json-int) 2061- "devices": a json-array of json-objects, each json-object represents a 2062 PCI device 2063 2064The PCI device json-object contains the following: 2065 2066- "bus": identical to the parent's bus number (json-int) 2067- "slot": slot number (json-int) 2068- "function": function number (json-int) 2069- "class_info": a json-object containing: 2070 - "desc": device class description (json-string, optional) 2071 - "class": device class number (json-int) 2072- "id": a json-object containing: 2073 - "device": device ID (json-int) 2074 - "vendor": vendor ID (json-int) 2075- "irq": device's IRQ if assigned (json-int, optional) 2076- "qdev_id": qdev id string (json-string) 2077- "pci_bridge": It's a json-object, only present if this device is a 2078 PCI bridge, contains: 2079 - "bus": bus number (json-int) 2080 - "secondary": secondary bus number (json-int) 2081 - "subordinate": subordinate bus number (json-int) 2082 - "io_range": I/O memory range information, a json-object with the 2083 following members: 2084 - "base": base address, in bytes (json-int) 2085 - "limit": limit address, in bytes (json-int) 2086 - "memory_range": memory range information, a json-object with the 2087 following members: 2088 - "base": base address, in bytes (json-int) 2089 - "limit": limit address, in bytes (json-int) 2090 - "prefetchable_range": Prefetchable memory range information, a 2091 json-object with the following members: 2092 - "base": base address, in bytes (json-int) 2093 - "limit": limit address, in bytes (json-int) 2094 - "devices": a json-array of PCI devices if there's any attached, each 2095 each element is represented by a json-object, which contains 2096 the same members of the 'PCI device json-object' described 2097 above (optional) 2098- "regions": a json-array of json-objects, each json-object represents a 2099 memory region of this device 2100 2101The memory range json-object contains the following: 2102 2103- "base": base memory address (json-int) 2104- "limit": limit value (json-int) 2105 2106The region json-object can be an I/O region or a memory region, an I/O region 2107json-object contains the following: 2108 2109- "type": "io" (json-string, fixed) 2110- "bar": BAR number (json-int) 2111- "address": memory address (json-int) 2112- "size": memory size (json-int) 2113 2114A memory region json-object contains the following: 2115 2116- "type": "memory" (json-string, fixed) 2117- "bar": BAR number (json-int) 2118- "address": memory address (json-int) 2119- "size": memory size (json-int) 2120- "mem_type_64": true or false (json-bool) 2121- "prefetch": true or false (json-bool) 2122 2123Example: 2124 2125-> { "execute": "query-pci" } 2126<- { 2127 "return":[ 2128 { 2129 "bus":0, 2130 "devices":[ 2131 { 2132 "bus":0, 2133 "qdev_id":"", 2134 "slot":0, 2135 "class_info":{ 2136 "class":1536, 2137 "desc":"Host bridge" 2138 }, 2139 "id":{ 2140 "device":32902, 2141 "vendor":4663 2142 }, 2143 "function":0, 2144 "regions":[ 2145 2146 ] 2147 }, 2148 { 2149 "bus":0, 2150 "qdev_id":"", 2151 "slot":1, 2152 "class_info":{ 2153 "class":1537, 2154 "desc":"ISA bridge" 2155 }, 2156 "id":{ 2157 "device":32902, 2158 "vendor":28672 2159 }, 2160 "function":0, 2161 "regions":[ 2162 2163 ] 2164 }, 2165 { 2166 "bus":0, 2167 "qdev_id":"", 2168 "slot":1, 2169 "class_info":{ 2170 "class":257, 2171 "desc":"IDE controller" 2172 }, 2173 "id":{ 2174 "device":32902, 2175 "vendor":28688 2176 }, 2177 "function":1, 2178 "regions":[ 2179 { 2180 "bar":4, 2181 "size":16, 2182 "address":49152, 2183 "type":"io" 2184 } 2185 ] 2186 }, 2187 { 2188 "bus":0, 2189 "qdev_id":"", 2190 "slot":2, 2191 "class_info":{ 2192 "class":768, 2193 "desc":"VGA controller" 2194 }, 2195 "id":{ 2196 "device":4115, 2197 "vendor":184 2198 }, 2199 "function":0, 2200 "regions":[ 2201 { 2202 "prefetch":true, 2203 "mem_type_64":false, 2204 "bar":0, 2205 "size":33554432, 2206 "address":4026531840, 2207 "type":"memory" 2208 }, 2209 { 2210 "prefetch":false, 2211 "mem_type_64":false, 2212 "bar":1, 2213 "size":4096, 2214 "address":4060086272, 2215 "type":"memory" 2216 }, 2217 { 2218 "prefetch":false, 2219 "mem_type_64":false, 2220 "bar":6, 2221 "size":65536, 2222 "address":-1, 2223 "type":"memory" 2224 } 2225 ] 2226 }, 2227 { 2228 "bus":0, 2229 "qdev_id":"", 2230 "irq":11, 2231 "slot":4, 2232 "class_info":{ 2233 "class":1280, 2234 "desc":"RAM controller" 2235 }, 2236 "id":{ 2237 "device":6900, 2238 "vendor":4098 2239 }, 2240 "function":0, 2241 "regions":[ 2242 { 2243 "bar":0, 2244 "size":32, 2245 "address":49280, 2246 "type":"io" 2247 } 2248 ] 2249 } 2250 ] 2251 } 2252 ] 2253 } 2254 2255Note: This example has been shortened as the real response is too long. 2256 2257EQMP 2258 2259 { 2260 .name = "query-pci", 2261 .args_type = "", 2262 .mhandler.cmd_new = qmp_marshal_input_query_pci, 2263 }, 2264 2265SQMP 2266query-kvm 2267--------- 2268 2269Show KVM information. 2270 2271Return a json-object with the following information: 2272 2273- "enabled": true if KVM support is enabled, false otherwise (json-bool) 2274- "present": true if QEMU has KVM support, false otherwise (json-bool) 2275 2276Example: 2277 2278-> { "execute": "query-kvm" } 2279<- { "return": { "enabled": true, "present": true } } 2280 2281EQMP 2282 2283 { 2284 .name = "query-kvm", 2285 .args_type = "", 2286 .mhandler.cmd_new = qmp_marshal_input_query_kvm, 2287 }, 2288 2289SQMP 2290query-status 2291------------ 2292 2293Return a json-object with the following information: 2294 2295- "running": true if the VM is running, or false if it is paused (json-bool) 2296- "singlestep": true if the VM is in single step mode, 2297 false otherwise (json-bool) 2298- "status": one of the following values (json-string) 2299 "debug" - QEMU is running on a debugger 2300 "inmigrate" - guest is paused waiting for an incoming migration 2301 "internal-error" - An internal error that prevents further guest 2302 execution has occurred 2303 "io-error" - the last IOP has failed and the device is configured 2304 to pause on I/O errors 2305 "paused" - guest has been paused via the 'stop' command 2306 "postmigrate" - guest is paused following a successful 'migrate' 2307 "prelaunch" - QEMU was started with -S and guest has not started 2308 "finish-migrate" - guest is paused to finish the migration process 2309 "restore-vm" - guest is paused to restore VM state 2310 "running" - guest is actively running 2311 "save-vm" - guest is paused to save the VM state 2312 "shutdown" - guest is shut down (and -no-shutdown is in use) 2313 "watchdog" - the watchdog action is configured to pause and 2314 has been triggered 2315 2316Example: 2317 2318-> { "execute": "query-status" } 2319<- { "return": { "running": true, "singlestep": false, "status": "running" } } 2320 2321EQMP 2322 2323 { 2324 .name = "query-status", 2325 .args_type = "", 2326 .mhandler.cmd_new = qmp_marshal_input_query_status, 2327 }, 2328 2329SQMP 2330query-mice 2331---------- 2332 2333Show VM mice information. 2334 2335Each mouse is represented by a json-object, the returned value is a json-array 2336of all mice. 2337 2338The mouse json-object contains the following: 2339 2340- "name": mouse's name (json-string) 2341- "index": mouse's index (json-int) 2342- "current": true if this mouse is receiving events, false otherwise (json-bool) 2343- "absolute": true if the mouse generates absolute input events (json-bool) 2344 2345Example: 2346 2347-> { "execute": "query-mice" } 2348<- { 2349 "return":[ 2350 { 2351 "name":"QEMU Microsoft Mouse", 2352 "index":0, 2353 "current":false, 2354 "absolute":false 2355 }, 2356 { 2357 "name":"QEMU PS/2 Mouse", 2358 "index":1, 2359 "current":true, 2360 "absolute":true 2361 } 2362 ] 2363 } 2364 2365EQMP 2366 2367 { 2368 .name = "query-mice", 2369 .args_type = "", 2370 .mhandler.cmd_new = qmp_marshal_input_query_mice, 2371 }, 2372 2373SQMP 2374query-vnc 2375--------- 2376 2377Show VNC server information. 2378 2379Return a json-object with server information. Connected clients are returned 2380as a json-array of json-objects. 2381 2382The main json-object contains the following: 2383 2384- "enabled": true or false (json-bool) 2385- "host": server's IP address (json-string) 2386- "family": address family (json-string) 2387 - Possible values: "ipv4", "ipv6", "unix", "unknown" 2388- "service": server's port number (json-string) 2389- "auth": authentication method (json-string) 2390 - Possible values: "invalid", "none", "ra2", "ra2ne", "sasl", "tight", 2391 "tls", "ultra", "unknown", "vencrypt", "vencrypt", 2392 "vencrypt+plain", "vencrypt+tls+none", 2393 "vencrypt+tls+plain", "vencrypt+tls+sasl", 2394 "vencrypt+tls+vnc", "vencrypt+x509+none", 2395 "vencrypt+x509+plain", "vencrypt+x509+sasl", 2396 "vencrypt+x509+vnc", "vnc" 2397- "clients": a json-array of all connected clients 2398 2399Clients are described by a json-object, each one contain the following: 2400 2401- "host": client's IP address (json-string) 2402- "family": address family (json-string) 2403 - Possible values: "ipv4", "ipv6", "unix", "unknown" 2404- "service": client's port number (json-string) 2405- "x509_dname": TLS dname (json-string, optional) 2406- "sasl_username": SASL username (json-string, optional) 2407 2408Example: 2409 2410-> { "execute": "query-vnc" } 2411<- { 2412 "return":{ 2413 "enabled":true, 2414 "host":"0.0.0.0", 2415 "service":"50402", 2416 "auth":"vnc", 2417 "family":"ipv4", 2418 "clients":[ 2419 { 2420 "host":"127.0.0.1", 2421 "service":"50401", 2422 "family":"ipv4" 2423 } 2424 ] 2425 } 2426 } 2427 2428EQMP 2429 2430 { 2431 .name = "query-vnc", 2432 .args_type = "", 2433 .mhandler.cmd_new = qmp_marshal_input_query_vnc, 2434 }, 2435 2436SQMP 2437query-spice 2438----------- 2439 2440Show SPICE server information. 2441 2442Return a json-object with server information. Connected clients are returned 2443as a json-array of json-objects. 2444 2445The main json-object contains the following: 2446 2447- "enabled": true or false (json-bool) 2448- "host": server's IP address (json-string) 2449- "port": server's port number (json-int, optional) 2450- "tls-port": server's port number (json-int, optional) 2451- "auth": authentication method (json-string) 2452 - Possible values: "none", "spice" 2453- "channels": a json-array of all active channels clients 2454 2455Channels are described by a json-object, each one contain the following: 2456 2457- "host": client's IP address (json-string) 2458- "family": address family (json-string) 2459 - Possible values: "ipv4", "ipv6", "unix", "unknown" 2460- "port": client's port number (json-string) 2461- "connection-id": spice connection id. All channels with the same id 2462 belong to the same spice session (json-int) 2463- "channel-type": channel type. "1" is the main control channel, filter for 2464 this one if you want track spice sessions only (json-int) 2465- "channel-id": channel id. Usually "0", might be different needed when 2466 multiple channels of the same type exist, such as multiple 2467 display channels in a multihead setup (json-int) 2468- "tls": whevener the channel is encrypted (json-bool) 2469 2470Example: 2471 2472-> { "execute": "query-spice" } 2473<- { 2474 "return": { 2475 "enabled": true, 2476 "auth": "spice", 2477 "port": 5920, 2478 "tls-port": 5921, 2479 "host": "0.0.0.0", 2480 "channels": [ 2481 { 2482 "port": "54924", 2483 "family": "ipv4", 2484 "channel-type": 1, 2485 "connection-id": 1804289383, 2486 "host": "127.0.0.1", 2487 "channel-id": 0, 2488 "tls": true 2489 }, 2490 { 2491 "port": "36710", 2492 "family": "ipv4", 2493 "channel-type": 4, 2494 "connection-id": 1804289383, 2495 "host": "127.0.0.1", 2496 "channel-id": 0, 2497 "tls": false 2498 }, 2499 [ ... more channels follow ... ] 2500 ] 2501 } 2502 } 2503 2504EQMP 2505 2506#if defined(CONFIG_SPICE) 2507 { 2508 .name = "query-spice", 2509 .args_type = "", 2510 .mhandler.cmd_new = qmp_marshal_input_query_spice, 2511 }, 2512#endif 2513 2514SQMP 2515query-name 2516---------- 2517 2518Show VM name. 2519 2520Return a json-object with the following information: 2521 2522- "name": VM's name (json-string, optional) 2523 2524Example: 2525 2526-> { "execute": "query-name" } 2527<- { "return": { "name": "qemu-name" } } 2528 2529EQMP 2530 2531 { 2532 .name = "query-name", 2533 .args_type = "", 2534 .mhandler.cmd_new = qmp_marshal_input_query_name, 2535 }, 2536 2537SQMP 2538query-uuid 2539---------- 2540 2541Show VM UUID. 2542 2543Return a json-object with the following information: 2544 2545- "UUID": Universally Unique Identifier (json-string) 2546 2547Example: 2548 2549-> { "execute": "query-uuid" } 2550<- { "return": { "UUID": "550e8400-e29b-41d4-a716-446655440000" } } 2551 2552EQMP 2553 2554 { 2555 .name = "query-uuid", 2556 .args_type = "", 2557 .mhandler.cmd_new = qmp_marshal_input_query_uuid, 2558 }, 2559 2560SQMP 2561query-command-line-options 2562-------------------------- 2563 2564Show command line option schema. 2565 2566Return a json-array of command line option schema for all options (or for 2567the given option), returning an error if the given option doesn't exist. 2568 2569Each array entry contains the following: 2570 2571- "option": option name (json-string) 2572- "parameters": a json-array describes all parameters of the option: 2573 - "name": parameter name (json-string) 2574 - "type": parameter type (one of 'string', 'boolean', 'number', 2575 or 'size') 2576 - "help": human readable description of the parameter 2577 (json-string, optional) 2578 2579Example: 2580 2581-> { "execute": "query-command-line-options", "arguments": { "option": "option-rom" } } 2582<- { "return": [ 2583 { 2584 "parameters": [ 2585 { 2586 "name": "romfile", 2587 "type": "string" 2588 }, 2589 { 2590 "name": "bootindex", 2591 "type": "number" 2592 } 2593 ], 2594 "option": "option-rom" 2595 } 2596 ] 2597 } 2598 2599EQMP 2600 2601 { 2602 .name = "query-command-line-options", 2603 .args_type = "option:s?", 2604 .mhandler.cmd_new = qmp_marshal_input_query_command_line_options, 2605 }, 2606 2607SQMP 2608query-migrate 2609------------- 2610 2611Migration status. 2612 2613Return a json-object. If migration is active there will be another json-object 2614with RAM migration status and if block migration is active another one with 2615block migration status. 2616 2617The main json-object contains the following: 2618 2619- "status": migration status (json-string) 2620 - Possible values: "active", "completed", "failed", "cancelled" 2621- "total-time": total amount of ms since migration started. If 2622 migration has ended, it returns the total migration 2623 time (json-int) 2624- "setup-time" amount of setup time in milliseconds _before_ the 2625 iterations begin but _after_ the QMP command is issued. 2626 This is designed to provide an accounting of any activities 2627 (such as RDMA pinning) which may be expensive, but do not 2628 actually occur during the iterative migration rounds 2629 themselves. (json-int) 2630- "downtime": only present when migration has finished correctly 2631 total amount in ms for downtime that happened (json-int) 2632- "expected-downtime": only present while migration is active 2633 total amount in ms for downtime that was calculated on 2634 the last bitmap round (json-int) 2635- "ram": only present if "status" is "active", it is a json-object with the 2636 following RAM information: 2637 - "transferred": amount transferred in bytes (json-int) 2638 - "remaining": amount remaining to transfer in bytes (json-int) 2639 - "total": total amount of memory in bytes (json-int) 2640 - "duplicate": number of pages filled entirely with the same 2641 byte (json-int) 2642 These are sent over the wire much more efficiently. 2643 - "skipped": number of skipped zero pages (json-int) 2644 - "normal" : number of whole pages transferred. I.e. they 2645 were not sent as duplicate or xbzrle pages (json-int) 2646 - "normal-bytes" : number of bytes transferred in whole 2647 pages. This is just normal pages times size of one page, 2648 but this way upper levels don't need to care about page 2649 size (json-int) 2650- "disk": only present if "status" is "active" and it is a block migration, 2651 it is a json-object with the following disk information: 2652 - "transferred": amount transferred in bytes (json-int) 2653 - "remaining": amount remaining to transfer in bytes json-int) 2654 - "total": total disk size in bytes (json-int) 2655- "xbzrle-cache": only present if XBZRLE is active. 2656 It is a json-object with the following XBZRLE information: 2657 - "cache-size": XBZRLE cache size in bytes 2658 - "bytes": number of bytes transferred for XBZRLE compressed pages 2659 - "pages": number of XBZRLE compressed pages 2660 - "cache-miss": number of XBRZRLE page cache misses 2661 - "overflow": number of times XBZRLE overflows. This means 2662 that the XBZRLE encoding was bigger than just sent the 2663 whole page, and then we sent the whole page instead (as as 2664 normal page). 2665 2666Examples: 2667 26681. Before the first migration 2669 2670-> { "execute": "query-migrate" } 2671<- { "return": {} } 2672 26732. Migration is done and has succeeded 2674 2675-> { "execute": "query-migrate" } 2676<- { "return": { 2677 "status": "completed", 2678 "ram":{ 2679 "transferred":123, 2680 "remaining":123, 2681 "total":246, 2682 "total-time":12345, 2683 "setup-time":12345, 2684 "downtime":12345, 2685 "duplicate":123, 2686 "normal":123, 2687 "normal-bytes":123456 2688 } 2689 } 2690 } 2691 26923. Migration is done and has failed 2693 2694-> { "execute": "query-migrate" } 2695<- { "return": { "status": "failed" } } 2696 26974. Migration is being performed and is not a block migration: 2698 2699-> { "execute": "query-migrate" } 2700<- { 2701 "return":{ 2702 "status":"active", 2703 "ram":{ 2704 "transferred":123, 2705 "remaining":123, 2706 "total":246, 2707 "total-time":12345, 2708 "setup-time":12345, 2709 "expected-downtime":12345, 2710 "duplicate":123, 2711 "normal":123, 2712 "normal-bytes":123456 2713 } 2714 } 2715 } 2716 27175. Migration is being performed and is a block migration: 2718 2719-> { "execute": "query-migrate" } 2720<- { 2721 "return":{ 2722 "status":"active", 2723 "ram":{ 2724 "total":1057024, 2725 "remaining":1053304, 2726 "transferred":3720, 2727 "total-time":12345, 2728 "setup-time":12345, 2729 "expected-downtime":12345, 2730 "duplicate":123, 2731 "normal":123, 2732 "normal-bytes":123456 2733 }, 2734 "disk":{ 2735 "total":20971520, 2736 "remaining":20880384, 2737 "transferred":91136 2738 } 2739 } 2740 } 2741 27426. Migration is being performed and XBZRLE is active: 2743 2744-> { "execute": "query-migrate" } 2745<- { 2746 "return":{ 2747 "status":"active", 2748 "capabilities" : [ { "capability": "xbzrle", "state" : true } ], 2749 "ram":{ 2750 "total":1057024, 2751 "remaining":1053304, 2752 "transferred":3720, 2753 "total-time":12345, 2754 "setup-time":12345, 2755 "expected-downtime":12345, 2756 "duplicate":10, 2757 "normal":3333, 2758 "normal-bytes":3412992 2759 }, 2760 "xbzrle-cache":{ 2761 "cache-size":67108864, 2762 "bytes":20971520, 2763 "pages":2444343, 2764 "cache-miss":2244, 2765 "overflow":34434 2766 } 2767 } 2768 } 2769 2770EQMP 2771 2772 { 2773 .name = "query-migrate", 2774 .args_type = "", 2775 .mhandler.cmd_new = qmp_marshal_input_query_migrate, 2776 }, 2777 2778SQMP 2779migrate-set-capabilities 2780------------------------ 2781 2782Enable/Disable migration capabilities 2783 2784- "xbzrle": XBZRLE support 2785 2786Arguments: 2787 2788Example: 2789 2790-> { "execute": "migrate-set-capabilities" , "arguments": 2791 { "capabilities": [ { "capability": "xbzrle", "state": true } ] } } 2792 2793EQMP 2794 2795 { 2796 .name = "migrate-set-capabilities", 2797 .args_type = "capabilities:O", 2798 .params = "capability:s,state:b", 2799 .mhandler.cmd_new = qmp_marshal_input_migrate_set_capabilities, 2800 }, 2801SQMP 2802query-migrate-capabilities 2803-------------------------- 2804 2805Query current migration capabilities 2806 2807- "capabilities": migration capabilities state 2808 - "xbzrle" : XBZRLE state (json-bool) 2809 2810Arguments: 2811 2812Example: 2813 2814-> { "execute": "query-migrate-capabilities" } 2815<- { "return": [ { "state": false, "capability": "xbzrle" } ] } 2816 2817EQMP 2818 2819 { 2820 .name = "query-migrate-capabilities", 2821 .args_type = "", 2822 .mhandler.cmd_new = qmp_marshal_input_query_migrate_capabilities, 2823 }, 2824 2825SQMP 2826query-balloon 2827------------- 2828 2829Show balloon information. 2830 2831Make an asynchronous request for balloon info. When the request completes a 2832json-object will be returned containing the following data: 2833 2834- "actual": current balloon value in bytes (json-int) 2835 2836Example: 2837 2838-> { "execute": "query-balloon" } 2839<- { 2840 "return":{ 2841 "actual":1073741824, 2842 } 2843 } 2844 2845EQMP 2846 2847 { 2848 .name = "query-balloon", 2849 .args_type = "", 2850 .mhandler.cmd_new = qmp_marshal_input_query_balloon, 2851 }, 2852 2853 { 2854 .name = "query-block-jobs", 2855 .args_type = "", 2856 .mhandler.cmd_new = qmp_marshal_input_query_block_jobs, 2857 }, 2858 2859 { 2860 .name = "qom-list", 2861 .args_type = "path:s", 2862 .mhandler.cmd_new = qmp_marshal_input_qom_list, 2863 }, 2864 2865 { 2866 .name = "qom-set", 2867 .args_type = "path:s,property:s,value:q", 2868 .mhandler.cmd_new = qmp_qom_set, 2869 }, 2870 2871 { 2872 .name = "qom-get", 2873 .args_type = "path:s,property:s", 2874 .mhandler.cmd_new = qmp_qom_get, 2875 }, 2876 2877 { 2878 .name = "nbd-server-start", 2879 .args_type = "addr:q", 2880 .mhandler.cmd_new = qmp_marshal_input_nbd_server_start, 2881 }, 2882 { 2883 .name = "nbd-server-add", 2884 .args_type = "device:B,writable:b?", 2885 .mhandler.cmd_new = qmp_marshal_input_nbd_server_add, 2886 }, 2887 { 2888 .name = "nbd-server-stop", 2889 .args_type = "", 2890 .mhandler.cmd_new = qmp_marshal_input_nbd_server_stop, 2891 }, 2892 2893 { 2894 .name = "change-vnc-password", 2895 .args_type = "password:s", 2896 .mhandler.cmd_new = qmp_marshal_input_change_vnc_password, 2897 }, 2898 { 2899 .name = "qom-list-types", 2900 .args_type = "implements:s?,abstract:b?", 2901 .mhandler.cmd_new = qmp_marshal_input_qom_list_types, 2902 }, 2903 2904 { 2905 .name = "device-list-properties", 2906 .args_type = "typename:s", 2907 .mhandler.cmd_new = qmp_marshal_input_device_list_properties, 2908 }, 2909 2910 { 2911 .name = "query-machines", 2912 .args_type = "", 2913 .mhandler.cmd_new = qmp_marshal_input_query_machines, 2914 }, 2915 2916 { 2917 .name = "query-cpu-definitions", 2918 .args_type = "", 2919 .mhandler.cmd_new = qmp_marshal_input_query_cpu_definitions, 2920 }, 2921 2922 { 2923 .name = "query-target", 2924 .args_type = "", 2925 .mhandler.cmd_new = qmp_marshal_input_query_target, 2926 }, 2927 2928 { 2929 .name = "query-tpm", 2930 .args_type = "", 2931 .mhandler.cmd_new = qmp_marshal_input_query_tpm, 2932 }, 2933 2934SQMP 2935query-tpm 2936--------- 2937 2938Return information about the TPM device. 2939 2940Arguments: None 2941 2942Example: 2943 2944-> { "execute": "query-tpm" } 2945<- { "return": 2946 [ 2947 { "model": "tpm-tis", 2948 "options": 2949 { "type": "passthrough", 2950 "data": 2951 { "cancel-path": "/sys/class/misc/tpm0/device/cancel", 2952 "path": "/dev/tpm0" 2953 } 2954 }, 2955 "id": "tpm0" 2956 } 2957 ] 2958 } 2959 2960EQMP 2961 2962 { 2963 .name = "query-tpm-models", 2964 .args_type = "", 2965 .mhandler.cmd_new = qmp_marshal_input_query_tpm_models, 2966 }, 2967 2968SQMP 2969query-tpm-models 2970---------------- 2971 2972Return a list of supported TPM models. 2973 2974Arguments: None 2975 2976Example: 2977 2978-> { "execute": "query-tpm-models" } 2979<- { "return": [ "tpm-tis" ] } 2980 2981EQMP 2982 2983 { 2984 .name = "query-tpm-types", 2985 .args_type = "", 2986 .mhandler.cmd_new = qmp_marshal_input_query_tpm_types, 2987 }, 2988 2989SQMP 2990query-tpm-types 2991--------------- 2992 2993Return a list of supported TPM types. 2994 2995Arguments: None 2996 2997Example: 2998 2999-> { "execute": "query-tpm-types" } 3000<- { "return": [ "passthrough" ] }
3001 3002EQMP 3003 3004 { 3005 .name = "chardev-add", 3006 .args_type = "id:s,backend:q", 3007 .mhandler.cmd_new = qmp_marshal_input_chardev_add, 3008 }, 3009 3010SQMP 3011chardev-add 3012---------------- 3013 3014Add a chardev. 3015 3016Arguments: 3017 3018- "id": the chardev's ID, must be unique (json-string) 3019- "backend": chardev backend type + parameters 3020 3021Examples: 3022 3023-> { "execute" : "chardev-add", 3024 "arguments" : { "id" : "foo", 3025 "backend" : { "type" : "null", "data" : {} } } } 3026<- { "return": {} } 3027 3028-> { "execute" : "chardev-add", 3029 "arguments" : { "id" : "bar", 3030 "backend" : { "type" : "file", 3031 "data" : { "out" : "/tmp/bar.log" } } } } 3032<- { "return": {} } 3033 3034-> { "execute" : "chardev-add", 3035 "arguments" : { "id" : "baz", 3036 "backend" : { "type" : "pty", "data" : {} } } } 3037<- { "return": { "pty" : "/dev/pty/42" } } 3038 3039EQMP 3040 3041 { 3042 .name = "chardev-remove", 3043 .args_type = "id:s", 3044 .mhandler.cmd_new = qmp_marshal_input_chardev_remove, 3045 }, 3046 3047 3048SQMP 3049chardev-remove 3050-------------- 3051 3052Remove a chardev. 3053 3054Arguments: 3055 3056- "id": the chardev's ID, must exist and not be in use (json-string) 3057 3058Example: 3059 3060-> { "execute": "chardev-remove", "arguments": { "id" : "foo" } } 3061<- { "return": {} } 3062 3063EQMP 3064 { 3065 .name = "query-rx-filter", 3066 .args_type = "name:s?", 3067 .mhandler.cmd_new = qmp_marshal_input_query_rx_filter, 3068 }, 3069 3070SQMP 3071query-rx-filter 3072--------------- 3073 3074Show rx-filter information. 3075 3076Returns a json-array of rx-filter information for all NICs (or for the 3077given NIC), returning an error if the given NIC doesn't exist, or 3078given NIC doesn't support rx-filter querying, or given net client 3079isn't a NIC. 3080 3081The query will clear the event notification flag of each NIC, then qemu 3082will start to emit event to QMP monitor. 3083 3084Each array entry contains the following: 3085 3086- "name": net client name (json-string) 3087- "promiscuous": promiscuous mode is enabled (json-bool) 3088- "multicast": multicast receive state (one of 'normal', 'none', 'all') 3089- "unicast": unicast receive state (one of 'normal', 'none', 'all') 3090- "broadcast-allowed": allow to receive broadcast (json-bool) 3091- "multicast-overflow": multicast table is overflowed (json-bool) 3092- "unicast-overflow": unicast table is overflowed (json-bool) 3093- "main-mac": main macaddr string (json-string) 3094- "vlan-table": a json-array of active vlan id 3095- "unicast-table": a json-array of unicast macaddr string 3096- "multicast-table": a json-array of multicast macaddr string 3097 3098Example: 3099 3100-> { "execute": "query-rx-filter", "arguments": { "name": "vnet0" } } 3101<- { "return": [ 3102 { 3103 "promiscuous": true, 3104 "name": "vnet0", 3105 "main-mac": "52:54:00:12:34:56", 3106 "unicast": "normal", 3107 "vlan-table": [ 3108 4, 3109 0 3110 ], 3111 "unicast-table": [ 3112 ], 3113 "multicast": "normal", 3114 "multicast-overflow": false, 3115 "unicast-overflow": false, 3116 "multicast-table": [ 3117 "01:00:5e:00:00:01", 3118 "33:33:00:00:00:01", 3119 "33:33:ff:12:34:56" 3120 ], 3121 "broadcast-allowed": false 3122 } 3123 ] 3124 } 3125 3126EQMP 3127