1# -*- Mode: Python -*- 2# 3 4## 5# = Miscellanea 6## 7 8{ 'include': 'common.json' } 9 10## 11# @qmp_capabilities: 12# 13# Enable QMP capabilities. 14# 15# Arguments: 16# 17# @enable: An optional list of QMPCapability values to enable. The 18# client must not enable any capability that is not 19# mentioned in the QMP greeting message. If the field is not 20# provided, it means no QMP capabilities will be enabled. 21# (since 2.12) 22# 23# Example: 24# 25# -> { "execute": "qmp_capabilities", 26# "arguments": { "enable": [ "oob" ] } } 27# <- { "return": {} } 28# 29# Notes: This command is valid exactly when first connecting: it must be 30# issued before any other command will be accepted, and will fail once the 31# monitor is accepting other commands. (see qemu docs/interop/qmp-spec.txt) 32# 33# The QMP client needs to explicitly enable QMP capabilities, otherwise 34# all the QMP capabilities will be turned off by default. 35# 36# Since: 0.13 37# 38## 39{ 'command': 'qmp_capabilities', 40 'data': { '*enable': [ 'QMPCapability' ] }, 41 'allow-preconfig': true } 42 43## 44# @QMPCapability: 45# 46# Enumeration of capabilities to be advertised during initial client 47# connection, used for agreeing on particular QMP extension behaviors. 48# 49# @oob: QMP ability to support out-of-band requests. 50# (Please refer to qmp-spec.txt for more information on OOB) 51# 52# Since: 2.12 53# 54## 55{ 'enum': 'QMPCapability', 56 'data': [ 'oob' ] } 57 58## 59# @VersionTriple: 60# 61# A three-part version number. 62# 63# @major: The major version number. 64# 65# @minor: The minor version number. 66# 67# @micro: The micro version number. 68# 69# Since: 2.4 70## 71{ 'struct': 'VersionTriple', 72 'data': {'major': 'int', 'minor': 'int', 'micro': 'int'} } 73 74 75## 76# @VersionInfo: 77# 78# A description of QEMU's version. 79# 80# @qemu: The version of QEMU. By current convention, a micro 81# version of 50 signifies a development branch. A micro version 82# greater than or equal to 90 signifies a release candidate for 83# the next minor version. A micro version of less than 50 84# signifies a stable release. 85# 86# @package: QEMU will always set this field to an empty string. Downstream 87# versions of QEMU should set this to a non-empty string. The 88# exact format depends on the downstream however it highly 89# recommended that a unique name is used. 90# 91# Since: 0.14.0 92## 93{ 'struct': 'VersionInfo', 94 'data': {'qemu': 'VersionTriple', 'package': 'str'} } 95 96## 97# @query-version: 98# 99# Returns the current version of QEMU. 100# 101# Returns: A @VersionInfo object describing the current version of QEMU. 102# 103# Since: 0.14.0 104# 105# Example: 106# 107# -> { "execute": "query-version" } 108# <- { 109# "return":{ 110# "qemu":{ 111# "major":0, 112# "minor":11, 113# "micro":5 114# }, 115# "package":"" 116# } 117# } 118# 119## 120{ 'command': 'query-version', 'returns': 'VersionInfo', 121 'allow-preconfig': true } 122 123## 124# @CommandInfo: 125# 126# Information about a QMP command 127# 128# @name: The command name 129# 130# Since: 0.14.0 131## 132{ 'struct': 'CommandInfo', 'data': {'name': 'str'} } 133 134## 135# @query-commands: 136# 137# Return a list of supported QMP commands by this server 138# 139# Returns: A list of @CommandInfo for all supported commands 140# 141# Since: 0.14.0 142# 143# Example: 144# 145# -> { "execute": "query-commands" } 146# <- { 147# "return":[ 148# { 149# "name":"query-balloon" 150# }, 151# { 152# "name":"system_powerdown" 153# } 154# ] 155# } 156# 157# Note: This example has been shortened as the real response is too long. 158# 159## 160{ 'command': 'query-commands', 'returns': ['CommandInfo'], 161 'allow-preconfig': true } 162 163## 164# @LostTickPolicy: 165# 166# Policy for handling lost ticks in timer devices. 167# 168# @discard: throw away the missed tick(s) and continue with future injection 169# normally. Guest time may be delayed, unless the OS has explicit 170# handling of lost ticks 171# 172# @delay: continue to deliver ticks at the normal rate. Guest time will be 173# delayed due to the late tick 174# 175# @slew: deliver ticks at a higher rate to catch up with the missed tick. The 176# guest time should not be delayed once catchup is complete. 177# 178# Since: 2.0 179## 180{ 'enum': 'LostTickPolicy', 181 'data': ['discard', 'delay', 'slew' ] } 182 183## 184# @add_client: 185# 186# Allow client connections for VNC, Spice and socket based 187# character devices to be passed in to QEMU via SCM_RIGHTS. 188# 189# @protocol: protocol name. Valid names are "vnc", "spice" or the 190# name of a character device (eg. from -chardev id=XXXX) 191# 192# @fdname: file descriptor name previously passed via 'getfd' command 193# 194# @skipauth: whether to skip authentication. Only applies 195# to "vnc" and "spice" protocols 196# 197# @tls: whether to perform TLS. Only applies to the "spice" 198# protocol 199# 200# Returns: nothing on success. 201# 202# Since: 0.14.0 203# 204# Example: 205# 206# -> { "execute": "add_client", "arguments": { "protocol": "vnc", 207# "fdname": "myclient" } } 208# <- { "return": {} } 209# 210## 211{ 'command': 'add_client', 212 'data': { 'protocol': 'str', 'fdname': 'str', '*skipauth': 'bool', 213 '*tls': 'bool' } } 214 215## 216# @NameInfo: 217# 218# Guest name information. 219# 220# @name: The name of the guest 221# 222# Since: 0.14.0 223## 224{ 'struct': 'NameInfo', 'data': {'*name': 'str'} } 225 226## 227# @query-name: 228# 229# Return the name information of a guest. 230# 231# Returns: @NameInfo of the guest 232# 233# Since: 0.14.0 234# 235# Example: 236# 237# -> { "execute": "query-name" } 238# <- { "return": { "name": "qemu-name" } } 239# 240## 241{ 'command': 'query-name', 'returns': 'NameInfo', 'allow-preconfig': true } 242 243## 244# @KvmInfo: 245# 246# Information about support for KVM acceleration 247# 248# @enabled: true if KVM acceleration is active 249# 250# @present: true if KVM acceleration is built into this executable 251# 252# Since: 0.14.0 253## 254{ 'struct': 'KvmInfo', 'data': {'enabled': 'bool', 'present': 'bool'} } 255 256## 257# @query-kvm: 258# 259# Returns information about KVM acceleration 260# 261# Returns: @KvmInfo 262# 263# Since: 0.14.0 264# 265# Example: 266# 267# -> { "execute": "query-kvm" } 268# <- { "return": { "enabled": true, "present": true } } 269# 270## 271{ 'command': 'query-kvm', 'returns': 'KvmInfo' } 272 273## 274# @UuidInfo: 275# 276# Guest UUID information (Universally Unique Identifier). 277# 278# @UUID: the UUID of the guest 279# 280# Since: 0.14.0 281# 282# Notes: If no UUID was specified for the guest, a null UUID is returned. 283## 284{ 'struct': 'UuidInfo', 'data': {'UUID': 'str'} } 285 286## 287# @query-uuid: 288# 289# Query the guest UUID information. 290# 291# Returns: The @UuidInfo for the guest 292# 293# Since: 0.14.0 294# 295# Example: 296# 297# -> { "execute": "query-uuid" } 298# <- { "return": { "UUID": "550e8400-e29b-41d4-a716-446655440000" } } 299# 300## 301{ 'command': 'query-uuid', 'returns': 'UuidInfo', 'allow-preconfig': true } 302 303## 304# @EventInfo: 305# 306# Information about a QMP event 307# 308# @name: The event name 309# 310# Since: 1.2.0 311## 312{ 'struct': 'EventInfo', 'data': {'name': 'str'} } 313 314## 315# @query-events: 316# 317# Return information on QMP events. 318# 319# Returns: A list of @EventInfo. 320# 321# Since: 1.2.0 322# 323# Note: This command is deprecated, because its output doesn't reflect 324# compile-time configuration. Use query-qmp-schema instead. 325# 326# Example: 327# 328# -> { "execute": "query-events" } 329# <- { 330# "return": [ 331# { 332# "name":"SHUTDOWN" 333# }, 334# { 335# "name":"RESET" 336# } 337# ] 338# } 339# 340# Note: This example has been shortened as the real response is too long. 341# 342## 343{ 'command': 'query-events', 'returns': ['EventInfo'] } 344 345## 346# @IOThreadInfo: 347# 348# Information about an iothread 349# 350# @id: the identifier of the iothread 351# 352# @thread-id: ID of the underlying host thread 353# 354# @poll-max-ns: maximum polling time in ns, 0 means polling is disabled 355# (since 2.9) 356# 357# @poll-grow: how many ns will be added to polling time, 0 means that it's not 358# configured (since 2.9) 359# 360# @poll-shrink: how many ns will be removed from polling time, 0 means that 361# it's not configured (since 2.9) 362# 363# Since: 2.0 364## 365{ 'struct': 'IOThreadInfo', 366 'data': {'id': 'str', 367 'thread-id': 'int', 368 'poll-max-ns': 'int', 369 'poll-grow': 'int', 370 'poll-shrink': 'int' } } 371 372## 373# @query-iothreads: 374# 375# Returns a list of information about each iothread. 376# 377# Note: this list excludes the QEMU main loop thread, which is not declared 378# using the -object iothread command-line option. It is always the main thread 379# of the process. 380# 381# Returns: a list of @IOThreadInfo for each iothread 382# 383# Since: 2.0 384# 385# Example: 386# 387# -> { "execute": "query-iothreads" } 388# <- { "return": [ 389# { 390# "id":"iothread0", 391# "thread-id":3134 392# }, 393# { 394# "id":"iothread1", 395# "thread-id":3135 396# } 397# ] 398# } 399# 400## 401{ 'command': 'query-iothreads', 'returns': ['IOThreadInfo'], 402 'allow-preconfig': true } 403 404## 405# @BalloonInfo: 406# 407# Information about the guest balloon device. 408# 409# @actual: the number of bytes the balloon currently contains 410# 411# Since: 0.14.0 412# 413## 414{ 'struct': 'BalloonInfo', 'data': {'actual': 'int' } } 415 416## 417# @query-balloon: 418# 419# Return information about the balloon device. 420# 421# Returns: @BalloonInfo on success 422# 423# If the balloon driver is enabled but not functional because the KVM 424# kernel module cannot support it, KvmMissingCap 425# 426# If no balloon device is present, DeviceNotActive 427# 428# Since: 0.14.0 429# 430# Example: 431# 432# -> { "execute": "query-balloon" } 433# <- { "return": { 434# "actual": 1073741824, 435# } 436# } 437# 438## 439{ 'command': 'query-balloon', 'returns': 'BalloonInfo' } 440 441## 442# @BALLOON_CHANGE: 443# 444# Emitted when the guest changes the actual BALLOON level. This value is 445# equivalent to the @actual field return by the 'query-balloon' command 446# 447# @actual: actual level of the guest memory balloon in bytes 448# 449# Note: this event is rate-limited. 450# 451# Since: 1.2 452# 453# Example: 454# 455# <- { "event": "BALLOON_CHANGE", 456# "data": { "actual": 944766976 }, 457# "timestamp": { "seconds": 1267020223, "microseconds": 435656 } } 458# 459## 460{ 'event': 'BALLOON_CHANGE', 461 'data': { 'actual': 'int' } } 462 463## 464# @PciMemoryRange: 465# 466# A PCI device memory region 467# 468# @base: the starting address (guest physical) 469# 470# @limit: the ending address (guest physical) 471# 472# Since: 0.14.0 473## 474{ 'struct': 'PciMemoryRange', 'data': {'base': 'int', 'limit': 'int'} } 475 476## 477# @PciMemoryRegion: 478# 479# Information about a PCI device I/O region. 480# 481# @bar: the index of the Base Address Register for this region 482# 483# @type: 'io' if the region is a PIO region 484# 'memory' if the region is a MMIO region 485# 486# @size: memory size 487# 488# @prefetch: if @type is 'memory', true if the memory is prefetchable 489# 490# @mem_type_64: if @type is 'memory', true if the BAR is 64-bit 491# 492# Since: 0.14.0 493## 494{ 'struct': 'PciMemoryRegion', 495 'data': {'bar': 'int', 'type': 'str', 'address': 'int', 'size': 'int', 496 '*prefetch': 'bool', '*mem_type_64': 'bool' } } 497 498## 499# @PciBusInfo: 500# 501# Information about a bus of a PCI Bridge device 502# 503# @number: primary bus interface number. This should be the number of the 504# bus the device resides on. 505# 506# @secondary: secondary bus interface number. This is the number of the 507# main bus for the bridge 508# 509# @subordinate: This is the highest number bus that resides below the 510# bridge. 511# 512# @io_range: The PIO range for all devices on this bridge 513# 514# @memory_range: The MMIO range for all devices on this bridge 515# 516# @prefetchable_range: The range of prefetchable MMIO for all devices on 517# this bridge 518# 519# Since: 2.4 520## 521{ 'struct': 'PciBusInfo', 522 'data': {'number': 'int', 'secondary': 'int', 'subordinate': 'int', 523 'io_range': 'PciMemoryRange', 524 'memory_range': 'PciMemoryRange', 525 'prefetchable_range': 'PciMemoryRange' } } 526 527## 528# @PciBridgeInfo: 529# 530# Information about a PCI Bridge device 531# 532# @bus: information about the bus the device resides on 533# 534# @devices: a list of @PciDeviceInfo for each device on this bridge 535# 536# Since: 0.14.0 537## 538{ 'struct': 'PciBridgeInfo', 539 'data': {'bus': 'PciBusInfo', '*devices': ['PciDeviceInfo']} } 540 541## 542# @PciDeviceClass: 543# 544# Information about the Class of a PCI device 545# 546# @desc: a string description of the device's class 547# 548# @class: the class code of the device 549# 550# Since: 2.4 551## 552{ 'struct': 'PciDeviceClass', 553 'data': {'*desc': 'str', 'class': 'int'} } 554 555## 556# @PciDeviceId: 557# 558# Information about the Id of a PCI device 559# 560# @device: the PCI device id 561# 562# @vendor: the PCI vendor id 563# 564# @subsystem: the PCI subsystem id (since 3.1) 565# 566# @subsystem-vendor: the PCI subsystem vendor id (since 3.1) 567# 568# Since: 2.4 569## 570{ 'struct': 'PciDeviceId', 571 'data': {'device': 'int', 'vendor': 'int', '*subsystem': 'int', 572 '*subsystem-vendor': 'int'} } 573 574## 575# @PciDeviceInfo: 576# 577# Information about a PCI device 578# 579# @bus: the bus number of the device 580# 581# @slot: the slot the device is located in 582# 583# @function: the function of the slot used by the device 584# 585# @class_info: the class of the device 586# 587# @id: the PCI device id 588# 589# @irq: if an IRQ is assigned to the device, the IRQ number 590# 591# @qdev_id: the device name of the PCI device 592# 593# @pci_bridge: if the device is a PCI bridge, the bridge information 594# 595# @regions: a list of the PCI I/O regions associated with the device 596# 597# Notes: the contents of @class_info.desc are not stable and should only be 598# treated as informational. 599# 600# Since: 0.14.0 601## 602{ 'struct': 'PciDeviceInfo', 603 'data': {'bus': 'int', 'slot': 'int', 'function': 'int', 604 'class_info': 'PciDeviceClass', 'id': 'PciDeviceId', 605 '*irq': 'int', 'qdev_id': 'str', '*pci_bridge': 'PciBridgeInfo', 606 'regions': ['PciMemoryRegion']} } 607 608## 609# @PciInfo: 610# 611# Information about a PCI bus 612# 613# @bus: the bus index 614# 615# @devices: a list of devices on this bus 616# 617# Since: 0.14.0 618## 619{ 'struct': 'PciInfo', 'data': {'bus': 'int', 'devices': ['PciDeviceInfo']} } 620 621## 622# @query-pci: 623# 624# Return information about the PCI bus topology of the guest. 625# 626# Returns: a list of @PciInfo for each PCI bus. Each bus is 627# represented by a json-object, which has a key with a json-array of 628# all PCI devices attached to it. Each device is represented by a 629# json-object. 630# 631# Since: 0.14.0 632# 633# Example: 634# 635# -> { "execute": "query-pci" } 636# <- { "return": [ 637# { 638# "bus": 0, 639# "devices": [ 640# { 641# "bus": 0, 642# "qdev_id": "", 643# "slot": 0, 644# "class_info": { 645# "class": 1536, 646# "desc": "Host bridge" 647# }, 648# "id": { 649# "device": 32902, 650# "vendor": 4663 651# }, 652# "function": 0, 653# "regions": [ 654# ] 655# }, 656# { 657# "bus": 0, 658# "qdev_id": "", 659# "slot": 1, 660# "class_info": { 661# "class": 1537, 662# "desc": "ISA bridge" 663# }, 664# "id": { 665# "device": 32902, 666# "vendor": 28672 667# }, 668# "function": 0, 669# "regions": [ 670# ] 671# }, 672# { 673# "bus": 0, 674# "qdev_id": "", 675# "slot": 1, 676# "class_info": { 677# "class": 257, 678# "desc": "IDE controller" 679# }, 680# "id": { 681# "device": 32902, 682# "vendor": 28688 683# }, 684# "function": 1, 685# "regions": [ 686# { 687# "bar": 4, 688# "size": 16, 689# "address": 49152, 690# "type": "io" 691# } 692# ] 693# }, 694# { 695# "bus": 0, 696# "qdev_id": "", 697# "slot": 2, 698# "class_info": { 699# "class": 768, 700# "desc": "VGA controller" 701# }, 702# "id": { 703# "device": 4115, 704# "vendor": 184 705# }, 706# "function": 0, 707# "regions": [ 708# { 709# "prefetch": true, 710# "mem_type_64": false, 711# "bar": 0, 712# "size": 33554432, 713# "address": 4026531840, 714# "type": "memory" 715# }, 716# { 717# "prefetch": false, 718# "mem_type_64": false, 719# "bar": 1, 720# "size": 4096, 721# "address": 4060086272, 722# "type": "memory" 723# }, 724# { 725# "prefetch": false, 726# "mem_type_64": false, 727# "bar": 6, 728# "size": 65536, 729# "address": -1, 730# "type": "memory" 731# } 732# ] 733# }, 734# { 735# "bus": 0, 736# "qdev_id": "", 737# "irq": 11, 738# "slot": 4, 739# "class_info": { 740# "class": 1280, 741# "desc": "RAM controller" 742# }, 743# "id": { 744# "device": 6900, 745# "vendor": 4098 746# }, 747# "function": 0, 748# "regions": [ 749# { 750# "bar": 0, 751# "size": 32, 752# "address": 49280, 753# "type": "io" 754# } 755# ] 756# } 757# ] 758# } 759# ] 760# } 761# 762# Note: This example has been shortened as the real response is too long. 763# 764## 765{ 'command': 'query-pci', 'returns': ['PciInfo'] } 766 767## 768# @quit: 769# 770# This command will cause the QEMU process to exit gracefully. While every 771# attempt is made to send the QMP response before terminating, this is not 772# guaranteed. When using this interface, a premature EOF would not be 773# unexpected. 774# 775# Since: 0.14.0 776# 777# Example: 778# 779# -> { "execute": "quit" } 780# <- { "return": {} } 781## 782{ 'command': 'quit' } 783 784## 785# @stop: 786# 787# Stop all guest VCPU execution. 788# 789# Since: 0.14.0 790# 791# Notes: This function will succeed even if the guest is already in the stopped 792# state. In "inmigrate" state, it will ensure that the guest 793# remains paused once migration finishes, as if the -S option was 794# passed on the command line. 795# 796# Example: 797# 798# -> { "execute": "stop" } 799# <- { "return": {} } 800# 801## 802{ 'command': 'stop' } 803 804## 805# @system_reset: 806# 807# Performs a hard reset of a guest. 808# 809# Since: 0.14.0 810# 811# Example: 812# 813# -> { "execute": "system_reset" } 814# <- { "return": {} } 815# 816## 817{ 'command': 'system_reset' } 818 819## 820# @system_powerdown: 821# 822# Requests that a guest perform a powerdown operation. 823# 824# Since: 0.14.0 825# 826# Notes: A guest may or may not respond to this command. This command 827# returning does not indicate that a guest has accepted the request or 828# that it has shut down. Many guests will respond to this command by 829# prompting the user in some way. 830# Example: 831# 832# -> { "execute": "system_powerdown" } 833# <- { "return": {} } 834# 835## 836{ 'command': 'system_powerdown' } 837 838## 839# @memsave: 840# 841# Save a portion of guest memory to a file. 842# 843# @val: the virtual address of the guest to start from 844# 845# @size: the size of memory region to save 846# 847# @filename: the file to save the memory to as binary data 848# 849# @cpu-index: the index of the virtual CPU to use for translating the 850# virtual address (defaults to CPU 0) 851# 852# Returns: Nothing on success 853# 854# Since: 0.14.0 855# 856# Notes: Errors were not reliably returned until 1.1 857# 858# Example: 859# 860# -> { "execute": "memsave", 861# "arguments": { "val": 10, 862# "size": 100, 863# "filename": "/tmp/virtual-mem-dump" } } 864# <- { "return": {} } 865# 866## 867{ 'command': 'memsave', 868 'data': {'val': 'int', 'size': 'int', 'filename': 'str', '*cpu-index': 'int'} } 869 870## 871# @pmemsave: 872# 873# Save a portion of guest physical memory to a file. 874# 875# @val: the physical address of the guest to start from 876# 877# @size: the size of memory region to save 878# 879# @filename: the file to save the memory to as binary data 880# 881# Returns: Nothing on success 882# 883# Since: 0.14.0 884# 885# Notes: Errors were not reliably returned until 1.1 886# 887# Example: 888# 889# -> { "execute": "pmemsave", 890# "arguments": { "val": 10, 891# "size": 100, 892# "filename": "/tmp/physical-mem-dump" } } 893# <- { "return": {} } 894# 895## 896{ 'command': 'pmemsave', 897 'data': {'val': 'int', 'size': 'int', 'filename': 'str'} } 898 899## 900# @cont: 901# 902# Resume guest VCPU execution. 903# 904# Since: 0.14.0 905# 906# Returns: If successful, nothing 907# 908# Notes: This command will succeed if the guest is currently running. It 909# will also succeed if the guest is in the "inmigrate" state; in 910# this case, the effect of the command is to make sure the guest 911# starts once migration finishes, removing the effect of the -S 912# command line option if it was passed. 913# 914# Example: 915# 916# -> { "execute": "cont" } 917# <- { "return": {} } 918# 919## 920{ 'command': 'cont' } 921 922## 923# @x-exit-preconfig: 924# 925# Exit from "preconfig" state 926# 927# This command makes QEMU exit the preconfig state and proceed with 928# VM initialization using configuration data provided on the command line 929# and via the QMP monitor during the preconfig state. The command is only 930# available during the preconfig state (i.e. when the --preconfig command 931# line option was in use). 932# 933# Since 3.0 934# 935# Returns: nothing 936# 937# Example: 938# 939# -> { "execute": "x-exit-preconfig" } 940# <- { "return": {} } 941# 942## 943{ 'command': 'x-exit-preconfig', 'allow-preconfig': true } 944 945## 946# @system_wakeup: 947# 948# Wake up guest from suspend. If the guest has wake-up from suspend 949# support enabled (wakeup-suspend-support flag from 950# query-current-machine), wake-up guest from suspend if the guest is 951# in SUSPENDED state. Return an error otherwise. 952# 953# Since: 1.1 954# 955# Returns: nothing. 956# 957# Note: prior to 4.0, this command does nothing in case the guest 958# isn't suspended. 959# 960# Example: 961# 962# -> { "execute": "system_wakeup" } 963# <- { "return": {} } 964# 965## 966{ 'command': 'system_wakeup' } 967 968## 969# @inject-nmi: 970# 971# Injects a Non-Maskable Interrupt into the default CPU (x86/s390) or all CPUs (ppc64). 972# The command fails when the guest doesn't support injecting. 973# 974# Returns: If successful, nothing 975# 976# Since: 0.14.0 977# 978# Note: prior to 2.1, this command was only supported for x86 and s390 VMs 979# 980# Example: 981# 982# -> { "execute": "inject-nmi" } 983# <- { "return": {} } 984# 985## 986{ 'command': 'inject-nmi' } 987 988## 989# @balloon: 990# 991# Request the balloon driver to change its balloon size. 992# 993# @value: the target size of the balloon in bytes 994# 995# Returns: Nothing on success 996# If the balloon driver is enabled but not functional because the KVM 997# kernel module cannot support it, KvmMissingCap 998# If no balloon device is present, DeviceNotActive 999# 1000# Notes: This command just issues a request to the guest. When it returns, 1001# the balloon size may not have changed. A guest can change the balloon 1002# size independent of this command. 1003# 1004# Since: 0.14.0 1005# 1006# Example: 1007# 1008# -> { "execute": "balloon", "arguments": { "value": 536870912 } } 1009# <- { "return": {} } 1010# 1011## 1012{ 'command': 'balloon', 'data': {'value': 'int'} } 1013 1014## 1015# @human-monitor-command: 1016# 1017# Execute a command on the human monitor and return the output. 1018# 1019# @command-line: the command to execute in the human monitor 1020# 1021# @cpu-index: The CPU to use for commands that require an implicit CPU 1022# 1023# Features: 1024# @savevm-monitor-nodes: If present, HMP command savevm only snapshots 1025# monitor-owned nodes if they have no parents. 1026# This allows the use of 'savevm' with 1027# -blockdev. (since 4.2) 1028# 1029# Returns: the output of the command as a string 1030# 1031# Since: 0.14.0 1032# 1033# Notes: This command only exists as a stop-gap. Its use is highly 1034# discouraged. The semantics of this command are not 1035# guaranteed: this means that command names, arguments and 1036# responses can change or be removed at ANY time. Applications 1037# that rely on long term stability guarantees should NOT 1038# use this command. 1039# 1040# Known limitations: 1041# 1042# * This command is stateless, this means that commands that depend 1043# on state information (such as getfd) might not work 1044# 1045# * Commands that prompt the user for data don't currently work 1046# 1047# Example: 1048# 1049# -> { "execute": "human-monitor-command", 1050# "arguments": { "command-line": "info kvm" } } 1051# <- { "return": "kvm support: enabled\r\n" } 1052# 1053## 1054{ 'command': 'human-monitor-command', 1055 'data': {'command-line': 'str', '*cpu-index': 'int'}, 1056 'returns': 'str', 1057 'features': [ 'savevm-monitor-nodes' ] } 1058 1059## 1060# @change: 1061# 1062# This command is multiple commands multiplexed together. 1063# 1064# @device: This is normally the name of a block device but it may also be 'vnc'. 1065# when it's 'vnc', then sub command depends on @target 1066# 1067# @target: If @device is a block device, then this is the new filename. 1068# If @device is 'vnc', then if the value 'password' selects the vnc 1069# change password command. Otherwise, this specifies a new server URI 1070# address to listen to for VNC connections. 1071# 1072# @arg: If @device is a block device, then this is an optional format to open 1073# the device with. 1074# If @device is 'vnc' and @target is 'password', this is the new VNC 1075# password to set. See change-vnc-password for additional notes. 1076# 1077# Returns: Nothing on success. 1078# If @device is not a valid block device, DeviceNotFound 1079# 1080# Notes: This interface is deprecated, and it is strongly recommended that you 1081# avoid using it. For changing block devices, use 1082# blockdev-change-medium; for changing VNC parameters, use 1083# change-vnc-password. 1084# 1085# Since: 0.14.0 1086# 1087# Example: 1088# 1089# 1. Change a removable medium 1090# 1091# -> { "execute": "change", 1092# "arguments": { "device": "ide1-cd0", 1093# "target": "/srv/images/Fedora-12-x86_64-DVD.iso" } } 1094# <- { "return": {} } 1095# 1096# 2. Change VNC password 1097# 1098# -> { "execute": "change", 1099# "arguments": { "device": "vnc", "target": "password", 1100# "arg": "foobar1" } } 1101# <- { "return": {} } 1102# 1103## 1104{ 'command': 'change', 1105 'data': {'device': 'str', 'target': 'str', '*arg': 'str'} } 1106 1107## 1108# @xen-set-global-dirty-log: 1109# 1110# Enable or disable the global dirty log mode. 1111# 1112# @enable: true to enable, false to disable. 1113# 1114# Returns: nothing 1115# 1116# Since: 1.3 1117# 1118# Example: 1119# 1120# -> { "execute": "xen-set-global-dirty-log", 1121# "arguments": { "enable": true } } 1122# <- { "return": {} } 1123# 1124## 1125{ 'command': 'xen-set-global-dirty-log', 'data': { 'enable': 'bool' } } 1126 1127## 1128# @getfd: 1129# 1130# Receive a file descriptor via SCM rights and assign it a name 1131# 1132# @fdname: file descriptor name 1133# 1134# Returns: Nothing on success 1135# 1136# Since: 0.14.0 1137# 1138# Notes: If @fdname already exists, the file descriptor assigned to 1139# it will be closed and replaced by the received file 1140# descriptor. 1141# 1142# The 'closefd' command can be used to explicitly close the 1143# file descriptor when it is no longer needed. 1144# 1145# Example: 1146# 1147# -> { "execute": "getfd", "arguments": { "fdname": "fd1" } } 1148# <- { "return": {} } 1149# 1150## 1151{ 'command': 'getfd', 'data': {'fdname': 'str'} } 1152 1153## 1154# @closefd: 1155# 1156# Close a file descriptor previously passed via SCM rights 1157# 1158# @fdname: file descriptor name 1159# 1160# Returns: Nothing on success 1161# 1162# Since: 0.14.0 1163# 1164# Example: 1165# 1166# -> { "execute": "closefd", "arguments": { "fdname": "fd1" } } 1167# <- { "return": {} } 1168# 1169## 1170{ 'command': 'closefd', 'data': {'fdname': 'str'} } 1171 1172## 1173# @MemoryInfo: 1174# 1175# Actual memory information in bytes. 1176# 1177# @base-memory: size of "base" memory specified with command line 1178# option -m. 1179# 1180# @plugged-memory: size of memory that can be hot-unplugged. This field 1181# is omitted if target doesn't support memory hotplug 1182# (i.e. CONFIG_MEM_DEVICE not defined at build time). 1183# 1184# Since: 2.11.0 1185## 1186{ 'struct': 'MemoryInfo', 1187 'data' : { 'base-memory': 'size', '*plugged-memory': 'size' } } 1188 1189## 1190# @query-memory-size-summary: 1191# 1192# Return the amount of initially allocated and present hotpluggable (if 1193# enabled) memory in bytes. 1194# 1195# Example: 1196# 1197# -> { "execute": "query-memory-size-summary" } 1198# <- { "return": { "base-memory": 4294967296, "plugged-memory": 0 } } 1199# 1200# Since: 2.11.0 1201## 1202{ 'command': 'query-memory-size-summary', 'returns': 'MemoryInfo' } 1203 1204 1205## 1206# @AddfdInfo: 1207# 1208# Information about a file descriptor that was added to an fd set. 1209# 1210# @fdset-id: The ID of the fd set that @fd was added to. 1211# 1212# @fd: The file descriptor that was received via SCM rights and 1213# added to the fd set. 1214# 1215# Since: 1.2.0 1216## 1217{ 'struct': 'AddfdInfo', 'data': {'fdset-id': 'int', 'fd': 'int'} } 1218 1219## 1220# @add-fd: 1221# 1222# Add a file descriptor, that was passed via SCM rights, to an fd set. 1223# 1224# @fdset-id: The ID of the fd set to add the file descriptor to. 1225# 1226# @opaque: A free-form string that can be used to describe the fd. 1227# 1228# Returns: @AddfdInfo on success 1229# 1230# If file descriptor was not received, FdNotSupplied 1231# 1232# If @fdset-id is a negative value, InvalidParameterValue 1233# 1234# Notes: The list of fd sets is shared by all monitor connections. 1235# 1236# If @fdset-id is not specified, a new fd set will be created. 1237# 1238# Since: 1.2.0 1239# 1240# Example: 1241# 1242# -> { "execute": "add-fd", "arguments": { "fdset-id": 1 } } 1243# <- { "return": { "fdset-id": 1, "fd": 3 } } 1244# 1245## 1246{ 'command': 'add-fd', 1247 'data': { '*fdset-id': 'int', 1248 '*opaque': 'str' }, 1249 'returns': 'AddfdInfo' } 1250 1251## 1252# @remove-fd: 1253# 1254# Remove a file descriptor from an fd set. 1255# 1256# @fdset-id: The ID of the fd set that the file descriptor belongs to. 1257# 1258# @fd: The file descriptor that is to be removed. 1259# 1260# Returns: Nothing on success 1261# If @fdset-id or @fd is not found, FdNotFound 1262# 1263# Since: 1.2.0 1264# 1265# Notes: The list of fd sets is shared by all monitor connections. 1266# 1267# If @fd is not specified, all file descriptors in @fdset-id 1268# will be removed. 1269# 1270# Example: 1271# 1272# -> { "execute": "remove-fd", "arguments": { "fdset-id": 1, "fd": 3 } } 1273# <- { "return": {} } 1274# 1275## 1276{ 'command': 'remove-fd', 'data': {'fdset-id': 'int', '*fd': 'int'} } 1277 1278## 1279# @FdsetFdInfo: 1280# 1281# Information about a file descriptor that belongs to an fd set. 1282# 1283# @fd: The file descriptor value. 1284# 1285# @opaque: A free-form string that can be used to describe the fd. 1286# 1287# Since: 1.2.0 1288## 1289{ 'struct': 'FdsetFdInfo', 1290 'data': {'fd': 'int', '*opaque': 'str'} } 1291 1292## 1293# @FdsetInfo: 1294# 1295# Information about an fd set. 1296# 1297# @fdset-id: The ID of the fd set. 1298# 1299# @fds: A list of file descriptors that belong to this fd set. 1300# 1301# Since: 1.2.0 1302## 1303{ 'struct': 'FdsetInfo', 1304 'data': {'fdset-id': 'int', 'fds': ['FdsetFdInfo']} } 1305 1306## 1307# @query-fdsets: 1308# 1309# Return information describing all fd sets. 1310# 1311# Returns: A list of @FdsetInfo 1312# 1313# Since: 1.2.0 1314# 1315# Note: The list of fd sets is shared by all monitor connections. 1316# 1317# Example: 1318# 1319# -> { "execute": "query-fdsets" } 1320# <- { "return": [ 1321# { 1322# "fds": [ 1323# { 1324# "fd": 30, 1325# "opaque": "rdonly:/path/to/file" 1326# }, 1327# { 1328# "fd": 24, 1329# "opaque": "rdwr:/path/to/file" 1330# } 1331# ], 1332# "fdset-id": 1 1333# }, 1334# { 1335# "fds": [ 1336# { 1337# "fd": 28 1338# }, 1339# { 1340# "fd": 29 1341# } 1342# ], 1343# "fdset-id": 0 1344# } 1345# ] 1346# } 1347# 1348## 1349{ 'command': 'query-fdsets', 'returns': ['FdsetInfo'] } 1350 1351## 1352# @AcpiTableOptions: 1353# 1354# Specify an ACPI table on the command line to load. 1355# 1356# At most one of @file and @data can be specified. The list of files specified 1357# by any one of them is loaded and concatenated in order. If both are omitted, 1358# @data is implied. 1359# 1360# Other fields / optargs can be used to override fields of the generic ACPI 1361# table header; refer to the ACPI specification 5.0, section 5.2.6 System 1362# Description Table Header. If a header field is not overridden, then the 1363# corresponding value from the concatenated blob is used (in case of @file), or 1364# it is filled in with a hard-coded value (in case of @data). 1365# 1366# String fields are copied into the matching ACPI member from lowest address 1367# upwards, and silently truncated / NUL-padded to length. 1368# 1369# @sig: table signature / identifier (4 bytes) 1370# 1371# @rev: table revision number (dependent on signature, 1 byte) 1372# 1373# @oem_id: OEM identifier (6 bytes) 1374# 1375# @oem_table_id: OEM table identifier (8 bytes) 1376# 1377# @oem_rev: OEM-supplied revision number (4 bytes) 1378# 1379# @asl_compiler_id: identifier of the utility that created the table 1380# (4 bytes) 1381# 1382# @asl_compiler_rev: revision number of the utility that created the 1383# table (4 bytes) 1384# 1385# @file: colon (:) separated list of pathnames to load and 1386# concatenate as table data. The resultant binary blob is expected to 1387# have an ACPI table header. At least one file is required. This field 1388# excludes @data. 1389# 1390# @data: colon (:) separated list of pathnames to load and 1391# concatenate as table data. The resultant binary blob must not have an 1392# ACPI table header. At least one file is required. This field excludes 1393# @file. 1394# 1395# Since: 1.5 1396## 1397{ 'struct': 'AcpiTableOptions', 1398 'data': { 1399 '*sig': 'str', 1400 '*rev': 'uint8', 1401 '*oem_id': 'str', 1402 '*oem_table_id': 'str', 1403 '*oem_rev': 'uint32', 1404 '*asl_compiler_id': 'str', 1405 '*asl_compiler_rev': 'uint32', 1406 '*file': 'str', 1407 '*data': 'str' }} 1408 1409## 1410# @CommandLineParameterType: 1411# 1412# Possible types for an option parameter. 1413# 1414# @string: accepts a character string 1415# 1416# @boolean: accepts "on" or "off" 1417# 1418# @number: accepts a number 1419# 1420# @size: accepts a number followed by an optional suffix (K)ilo, 1421# (M)ega, (G)iga, (T)era 1422# 1423# Since: 1.5 1424## 1425{ 'enum': 'CommandLineParameterType', 1426 'data': ['string', 'boolean', 'number', 'size'] } 1427 1428## 1429# @CommandLineParameterInfo: 1430# 1431# Details about a single parameter of a command line option. 1432# 1433# @name: parameter name 1434# 1435# @type: parameter @CommandLineParameterType 1436# 1437# @help: human readable text string, not suitable for parsing. 1438# 1439# @default: default value string (since 2.1) 1440# 1441# Since: 1.5 1442## 1443{ 'struct': 'CommandLineParameterInfo', 1444 'data': { 'name': 'str', 1445 'type': 'CommandLineParameterType', 1446 '*help': 'str', 1447 '*default': 'str' } } 1448 1449## 1450# @CommandLineOptionInfo: 1451# 1452# Details about a command line option, including its list of parameter details 1453# 1454# @option: option name 1455# 1456# @parameters: an array of @CommandLineParameterInfo 1457# 1458# Since: 1.5 1459## 1460{ 'struct': 'CommandLineOptionInfo', 1461 'data': { 'option': 'str', 'parameters': ['CommandLineParameterInfo'] } } 1462 1463## 1464# @query-command-line-options: 1465# 1466# Query command line option schema. 1467# 1468# @option: option name 1469# 1470# Returns: list of @CommandLineOptionInfo for all options (or for the given 1471# @option). Returns an error if the given @option doesn't exist. 1472# 1473# Since: 1.5 1474# 1475# Example: 1476# 1477# -> { "execute": "query-command-line-options", 1478# "arguments": { "option": "option-rom" } } 1479# <- { "return": [ 1480# { 1481# "parameters": [ 1482# { 1483# "name": "romfile", 1484# "type": "string" 1485# }, 1486# { 1487# "name": "bootindex", 1488# "type": "number" 1489# } 1490# ], 1491# "option": "option-rom" 1492# } 1493# ] 1494# } 1495# 1496## 1497{'command': 'query-command-line-options', 1498 'data': { '*option': 'str' }, 1499 'returns': ['CommandLineOptionInfo'], 1500 'allow-preconfig': true } 1501 1502## 1503# @PCDIMMDeviceInfo: 1504# 1505# PCDIMMDevice state information 1506# 1507# @id: device's ID 1508# 1509# @addr: physical address, where device is mapped 1510# 1511# @size: size of memory that the device provides 1512# 1513# @slot: slot number at which device is plugged in 1514# 1515# @node: NUMA node number where device is plugged in 1516# 1517# @memdev: memory backend linked with device 1518# 1519# @hotplugged: true if device was hotplugged 1520# 1521# @hotpluggable: true if device if could be added/removed while machine is running 1522# 1523# Since: 2.1 1524## 1525{ 'struct': 'PCDIMMDeviceInfo', 1526 'data': { '*id': 'str', 1527 'addr': 'int', 1528 'size': 'int', 1529 'slot': 'int', 1530 'node': 'int', 1531 'memdev': 'str', 1532 'hotplugged': 'bool', 1533 'hotpluggable': 'bool' 1534 } 1535} 1536 1537## 1538# @VirtioPMEMDeviceInfo: 1539# 1540# VirtioPMEM state information 1541# 1542# @id: device's ID 1543# 1544# @memaddr: physical address in memory, where device is mapped 1545# 1546# @size: size of memory that the device provides 1547# 1548# @memdev: memory backend linked with device 1549# 1550# Since: 4.1 1551## 1552{ 'struct': 'VirtioPMEMDeviceInfo', 1553 'data': { '*id': 'str', 1554 'memaddr': 'size', 1555 'size': 'size', 1556 'memdev': 'str' 1557 } 1558} 1559 1560## 1561# @MemoryDeviceInfo: 1562# 1563# Union containing information about a memory device 1564# 1565# nvdimm is included since 2.12. virtio-pmem is included since 4.1. 1566# 1567# Since: 2.1 1568## 1569{ 'union': 'MemoryDeviceInfo', 1570 'data': { 'dimm': 'PCDIMMDeviceInfo', 1571 'nvdimm': 'PCDIMMDeviceInfo', 1572 'virtio-pmem': 'VirtioPMEMDeviceInfo' 1573 } 1574} 1575 1576## 1577# @query-memory-devices: 1578# 1579# Lists available memory devices and their state 1580# 1581# Since: 2.1 1582# 1583# Example: 1584# 1585# -> { "execute": "query-memory-devices" } 1586# <- { "return": [ { "data": 1587# { "addr": 5368709120, 1588# "hotpluggable": true, 1589# "hotplugged": true, 1590# "id": "d1", 1591# "memdev": "/objects/memX", 1592# "node": 0, 1593# "size": 1073741824, 1594# "slot": 0}, 1595# "type": "dimm" 1596# } ] } 1597# 1598## 1599{ 'command': 'query-memory-devices', 'returns': ['MemoryDeviceInfo'] } 1600 1601## 1602# @MEM_UNPLUG_ERROR: 1603# 1604# Emitted when memory hot unplug error occurs. 1605# 1606# @device: device name 1607# 1608# @msg: Informative message 1609# 1610# Since: 2.4 1611# 1612# Example: 1613# 1614# <- { "event": "MEM_UNPLUG_ERROR" 1615# "data": { "device": "dimm1", 1616# "msg": "acpi: device unplug for unsupported device" 1617# }, 1618# "timestamp": { "seconds": 1265044230, "microseconds": 450486 } } 1619# 1620## 1621{ 'event': 'MEM_UNPLUG_ERROR', 1622 'data': { 'device': 'str', 'msg': 'str' } } 1623 1624## 1625# @ACPISlotType: 1626# 1627# @DIMM: memory slot 1628# @CPU: logical CPU slot (since 2.7) 1629## 1630{ 'enum': 'ACPISlotType', 'data': [ 'DIMM', 'CPU' ] } 1631 1632## 1633# @ACPIOSTInfo: 1634# 1635# OSPM Status Indication for a device 1636# For description of possible values of @source and @status fields 1637# see "_OST (OSPM Status Indication)" chapter of ACPI5.0 spec. 1638# 1639# @device: device ID associated with slot 1640# 1641# @slot: slot ID, unique per slot of a given @slot-type 1642# 1643# @slot-type: type of the slot 1644# 1645# @source: an integer containing the source event 1646# 1647# @status: an integer containing the status code 1648# 1649# Since: 2.1 1650## 1651{ 'struct': 'ACPIOSTInfo', 1652 'data' : { '*device': 'str', 1653 'slot': 'str', 1654 'slot-type': 'ACPISlotType', 1655 'source': 'int', 1656 'status': 'int' } } 1657 1658## 1659# @query-acpi-ospm-status: 1660# 1661# Return a list of ACPIOSTInfo for devices that support status 1662# reporting via ACPI _OST method. 1663# 1664# Since: 2.1 1665# 1666# Example: 1667# 1668# -> { "execute": "query-acpi-ospm-status" } 1669# <- { "return": [ { "device": "d1", "slot": "0", "slot-type": "DIMM", "source": 1, "status": 0}, 1670# { "slot": "1", "slot-type": "DIMM", "source": 0, "status": 0}, 1671# { "slot": "2", "slot-type": "DIMM", "source": 0, "status": 0}, 1672# { "slot": "3", "slot-type": "DIMM", "source": 0, "status": 0} 1673# ]} 1674# 1675## 1676{ 'command': 'query-acpi-ospm-status', 'returns': ['ACPIOSTInfo'] } 1677 1678## 1679# @ACPI_DEVICE_OST: 1680# 1681# Emitted when guest executes ACPI _OST method. 1682# 1683# @info: OSPM Status Indication 1684# 1685# Since: 2.1 1686# 1687# Example: 1688# 1689# <- { "event": "ACPI_DEVICE_OST", 1690# "data": { "device": "d1", "slot": "0", 1691# "slot-type": "DIMM", "source": 1, "status": 0 } } 1692# 1693## 1694{ 'event': 'ACPI_DEVICE_OST', 1695 'data': { 'info': 'ACPIOSTInfo' } } 1696 1697## 1698# @ReplayMode: 1699# 1700# Mode of the replay subsystem. 1701# 1702# @none: normal execution mode. Replay or record are not enabled. 1703# 1704# @record: record mode. All non-deterministic data is written into the 1705# replay log. 1706# 1707# @play: replay mode. Non-deterministic data required for system execution 1708# is read from the log. 1709# 1710# Since: 2.5 1711## 1712{ 'enum': 'ReplayMode', 1713 'data': [ 'none', 'record', 'play' ] } 1714 1715## 1716# @xen-load-devices-state: 1717# 1718# Load the state of all devices from file. The RAM and the block devices 1719# of the VM are not loaded by this command. 1720# 1721# @filename: the file to load the state of the devices from as binary 1722# data. See xen-save-devices-state.txt for a description of the binary 1723# format. 1724# 1725# Since: 2.7 1726# 1727# Example: 1728# 1729# -> { "execute": "xen-load-devices-state", 1730# "arguments": { "filename": "/tmp/resume" } } 1731# <- { "return": {} } 1732# 1733## 1734{ 'command': 'xen-load-devices-state', 'data': {'filename': 'str'} } 1735 1736## 1737# @GuidInfo: 1738# 1739# GUID information. 1740# 1741# @guid: the globally unique identifier 1742# 1743# Since: 2.9 1744## 1745{ 'struct': 'GuidInfo', 'data': {'guid': 'str'} } 1746 1747## 1748# @query-vm-generation-id: 1749# 1750# Show Virtual Machine Generation ID 1751# 1752# Since: 2.9 1753## 1754{ 'command': 'query-vm-generation-id', 'returns': 'GuidInfo' } 1755 1756