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