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# Returns: the output of the command as a string 1024# 1025# Since: 0.14.0 1026# 1027# Notes: This command only exists as a stop-gap. Its use is highly 1028# discouraged. The semantics of this command are not 1029# guaranteed: this means that command names, arguments and 1030# responses can change or be removed at ANY time. Applications 1031# that rely on long term stability guarantees should NOT 1032# use this command. 1033# 1034# Known limitations: 1035# 1036# * This command is stateless, this means that commands that depend 1037# on state information (such as getfd) might not work 1038# 1039# * Commands that prompt the user for data don't currently work 1040# 1041# Example: 1042# 1043# -> { "execute": "human-monitor-command", 1044# "arguments": { "command-line": "info kvm" } } 1045# <- { "return": "kvm support: enabled\r\n" } 1046# 1047## 1048{ 'command': 'human-monitor-command', 1049 'data': {'command-line': 'str', '*cpu-index': 'int'}, 1050 'returns': 'str' } 1051 1052## 1053# @change: 1054# 1055# This command is multiple commands multiplexed together. 1056# 1057# @device: This is normally the name of a block device but it may also be 'vnc'. 1058# when it's 'vnc', then sub command depends on @target 1059# 1060# @target: If @device is a block device, then this is the new filename. 1061# If @device is 'vnc', then if the value 'password' selects the vnc 1062# change password command. Otherwise, this specifies a new server URI 1063# address to listen to for VNC connections. 1064# 1065# @arg: If @device is a block device, then this is an optional format to open 1066# the device with. 1067# If @device is 'vnc' and @target is 'password', this is the new VNC 1068# password to set. See change-vnc-password for additional notes. 1069# 1070# Returns: Nothing on success. 1071# If @device is not a valid block device, DeviceNotFound 1072# 1073# Notes: This interface is deprecated, and it is strongly recommended that you 1074# avoid using it. For changing block devices, use 1075# blockdev-change-medium; for changing VNC parameters, use 1076# change-vnc-password. 1077# 1078# Since: 0.14.0 1079# 1080# Example: 1081# 1082# 1. Change a removable medium 1083# 1084# -> { "execute": "change", 1085# "arguments": { "device": "ide1-cd0", 1086# "target": "/srv/images/Fedora-12-x86_64-DVD.iso" } } 1087# <- { "return": {} } 1088# 1089# 2. Change VNC password 1090# 1091# -> { "execute": "change", 1092# "arguments": { "device": "vnc", "target": "password", 1093# "arg": "foobar1" } } 1094# <- { "return": {} } 1095# 1096## 1097{ 'command': 'change', 1098 'data': {'device': 'str', 'target': 'str', '*arg': 'str'} } 1099 1100## 1101# @xen-set-global-dirty-log: 1102# 1103# Enable or disable the global dirty log mode. 1104# 1105# @enable: true to enable, false to disable. 1106# 1107# Returns: nothing 1108# 1109# Since: 1.3 1110# 1111# Example: 1112# 1113# -> { "execute": "xen-set-global-dirty-log", 1114# "arguments": { "enable": true } } 1115# <- { "return": {} } 1116# 1117## 1118{ 'command': 'xen-set-global-dirty-log', 'data': { 'enable': 'bool' } } 1119 1120## 1121# @getfd: 1122# 1123# Receive a file descriptor via SCM rights and assign it a name 1124# 1125# @fdname: file descriptor name 1126# 1127# Returns: Nothing on success 1128# 1129# Since: 0.14.0 1130# 1131# Notes: If @fdname already exists, the file descriptor assigned to 1132# it will be closed and replaced by the received file 1133# descriptor. 1134# 1135# The 'closefd' command can be used to explicitly close the 1136# file descriptor when it is no longer needed. 1137# 1138# Example: 1139# 1140# -> { "execute": "getfd", "arguments": { "fdname": "fd1" } } 1141# <- { "return": {} } 1142# 1143## 1144{ 'command': 'getfd', 'data': {'fdname': 'str'} } 1145 1146## 1147# @closefd: 1148# 1149# Close a file descriptor previously passed via SCM rights 1150# 1151# @fdname: file descriptor name 1152# 1153# Returns: Nothing on success 1154# 1155# Since: 0.14.0 1156# 1157# Example: 1158# 1159# -> { "execute": "closefd", "arguments": { "fdname": "fd1" } } 1160# <- { "return": {} } 1161# 1162## 1163{ 'command': 'closefd', 'data': {'fdname': 'str'} } 1164 1165## 1166# @MemoryInfo: 1167# 1168# Actual memory information in bytes. 1169# 1170# @base-memory: size of "base" memory specified with command line 1171# option -m. 1172# 1173# @plugged-memory: size of memory that can be hot-unplugged. This field 1174# is omitted if target doesn't support memory hotplug 1175# (i.e. CONFIG_MEM_DEVICE not defined at build time). 1176# 1177# Since: 2.11.0 1178## 1179{ 'struct': 'MemoryInfo', 1180 'data' : { 'base-memory': 'size', '*plugged-memory': 'size' } } 1181 1182## 1183# @query-memory-size-summary: 1184# 1185# Return the amount of initially allocated and present hotpluggable (if 1186# enabled) memory in bytes. 1187# 1188# Example: 1189# 1190# -> { "execute": "query-memory-size-summary" } 1191# <- { "return": { "base-memory": 4294967296, "plugged-memory": 0 } } 1192# 1193# Since: 2.11.0 1194## 1195{ 'command': 'query-memory-size-summary', 'returns': 'MemoryInfo' } 1196 1197 1198## 1199# @AddfdInfo: 1200# 1201# Information about a file descriptor that was added to an fd set. 1202# 1203# @fdset-id: The ID of the fd set that @fd was added to. 1204# 1205# @fd: The file descriptor that was received via SCM rights and 1206# added to the fd set. 1207# 1208# Since: 1.2.0 1209## 1210{ 'struct': 'AddfdInfo', 'data': {'fdset-id': 'int', 'fd': 'int'} } 1211 1212## 1213# @add-fd: 1214# 1215# Add a file descriptor, that was passed via SCM rights, to an fd set. 1216# 1217# @fdset-id: The ID of the fd set to add the file descriptor to. 1218# 1219# @opaque: A free-form string that can be used to describe the fd. 1220# 1221# Returns: @AddfdInfo on success 1222# 1223# If file descriptor was not received, FdNotSupplied 1224# 1225# If @fdset-id is a negative value, InvalidParameterValue 1226# 1227# Notes: The list of fd sets is shared by all monitor connections. 1228# 1229# If @fdset-id is not specified, a new fd set will be created. 1230# 1231# Since: 1.2.0 1232# 1233# Example: 1234# 1235# -> { "execute": "add-fd", "arguments": { "fdset-id": 1 } } 1236# <- { "return": { "fdset-id": 1, "fd": 3 } } 1237# 1238## 1239{ 'command': 'add-fd', 1240 'data': { '*fdset-id': 'int', 1241 '*opaque': 'str' }, 1242 'returns': 'AddfdInfo' } 1243 1244## 1245# @remove-fd: 1246# 1247# Remove a file descriptor from an fd set. 1248# 1249# @fdset-id: The ID of the fd set that the file descriptor belongs to. 1250# 1251# @fd: The file descriptor that is to be removed. 1252# 1253# Returns: Nothing on success 1254# If @fdset-id or @fd is not found, FdNotFound 1255# 1256# Since: 1.2.0 1257# 1258# Notes: The list of fd sets is shared by all monitor connections. 1259# 1260# If @fd is not specified, all file descriptors in @fdset-id 1261# will be removed. 1262# 1263# Example: 1264# 1265# -> { "execute": "remove-fd", "arguments": { "fdset-id": 1, "fd": 3 } } 1266# <- { "return": {} } 1267# 1268## 1269{ 'command': 'remove-fd', 'data': {'fdset-id': 'int', '*fd': 'int'} } 1270 1271## 1272# @FdsetFdInfo: 1273# 1274# Information about a file descriptor that belongs to an fd set. 1275# 1276# @fd: The file descriptor value. 1277# 1278# @opaque: A free-form string that can be used to describe the fd. 1279# 1280# Since: 1.2.0 1281## 1282{ 'struct': 'FdsetFdInfo', 1283 'data': {'fd': 'int', '*opaque': 'str'} } 1284 1285## 1286# @FdsetInfo: 1287# 1288# Information about an fd set. 1289# 1290# @fdset-id: The ID of the fd set. 1291# 1292# @fds: A list of file descriptors that belong to this fd set. 1293# 1294# Since: 1.2.0 1295## 1296{ 'struct': 'FdsetInfo', 1297 'data': {'fdset-id': 'int', 'fds': ['FdsetFdInfo']} } 1298 1299## 1300# @query-fdsets: 1301# 1302# Return information describing all fd sets. 1303# 1304# Returns: A list of @FdsetInfo 1305# 1306# Since: 1.2.0 1307# 1308# Note: The list of fd sets is shared by all monitor connections. 1309# 1310# Example: 1311# 1312# -> { "execute": "query-fdsets" } 1313# <- { "return": [ 1314# { 1315# "fds": [ 1316# { 1317# "fd": 30, 1318# "opaque": "rdonly:/path/to/file" 1319# }, 1320# { 1321# "fd": 24, 1322# "opaque": "rdwr:/path/to/file" 1323# } 1324# ], 1325# "fdset-id": 1 1326# }, 1327# { 1328# "fds": [ 1329# { 1330# "fd": 28 1331# }, 1332# { 1333# "fd": 29 1334# } 1335# ], 1336# "fdset-id": 0 1337# } 1338# ] 1339# } 1340# 1341## 1342{ 'command': 'query-fdsets', 'returns': ['FdsetInfo'] } 1343 1344## 1345# @AcpiTableOptions: 1346# 1347# Specify an ACPI table on the command line to load. 1348# 1349# At most one of @file and @data can be specified. The list of files specified 1350# by any one of them is loaded and concatenated in order. If both are omitted, 1351# @data is implied. 1352# 1353# Other fields / optargs can be used to override fields of the generic ACPI 1354# table header; refer to the ACPI specification 5.0, section 5.2.6 System 1355# Description Table Header. If a header field is not overridden, then the 1356# corresponding value from the concatenated blob is used (in case of @file), or 1357# it is filled in with a hard-coded value (in case of @data). 1358# 1359# String fields are copied into the matching ACPI member from lowest address 1360# upwards, and silently truncated / NUL-padded to length. 1361# 1362# @sig: table signature / identifier (4 bytes) 1363# 1364# @rev: table revision number (dependent on signature, 1 byte) 1365# 1366# @oem_id: OEM identifier (6 bytes) 1367# 1368# @oem_table_id: OEM table identifier (8 bytes) 1369# 1370# @oem_rev: OEM-supplied revision number (4 bytes) 1371# 1372# @asl_compiler_id: identifier of the utility that created the table 1373# (4 bytes) 1374# 1375# @asl_compiler_rev: revision number of the utility that created the 1376# table (4 bytes) 1377# 1378# @file: colon (:) separated list of pathnames to load and 1379# concatenate as table data. The resultant binary blob is expected to 1380# have an ACPI table header. At least one file is required. This field 1381# excludes @data. 1382# 1383# @data: colon (:) separated list of pathnames to load and 1384# concatenate as table data. The resultant binary blob must not have an 1385# ACPI table header. At least one file is required. This field excludes 1386# @file. 1387# 1388# Since: 1.5 1389## 1390{ 'struct': 'AcpiTableOptions', 1391 'data': { 1392 '*sig': 'str', 1393 '*rev': 'uint8', 1394 '*oem_id': 'str', 1395 '*oem_table_id': 'str', 1396 '*oem_rev': 'uint32', 1397 '*asl_compiler_id': 'str', 1398 '*asl_compiler_rev': 'uint32', 1399 '*file': 'str', 1400 '*data': 'str' }} 1401 1402## 1403# @CommandLineParameterType: 1404# 1405# Possible types for an option parameter. 1406# 1407# @string: accepts a character string 1408# 1409# @boolean: accepts "on" or "off" 1410# 1411# @number: accepts a number 1412# 1413# @size: accepts a number followed by an optional suffix (K)ilo, 1414# (M)ega, (G)iga, (T)era 1415# 1416# Since: 1.5 1417## 1418{ 'enum': 'CommandLineParameterType', 1419 'data': ['string', 'boolean', 'number', 'size'] } 1420 1421## 1422# @CommandLineParameterInfo: 1423# 1424# Details about a single parameter of a command line option. 1425# 1426# @name: parameter name 1427# 1428# @type: parameter @CommandLineParameterType 1429# 1430# @help: human readable text string, not suitable for parsing. 1431# 1432# @default: default value string (since 2.1) 1433# 1434# Since: 1.5 1435## 1436{ 'struct': 'CommandLineParameterInfo', 1437 'data': { 'name': 'str', 1438 'type': 'CommandLineParameterType', 1439 '*help': 'str', 1440 '*default': 'str' } } 1441 1442## 1443# @CommandLineOptionInfo: 1444# 1445# Details about a command line option, including its list of parameter details 1446# 1447# @option: option name 1448# 1449# @parameters: an array of @CommandLineParameterInfo 1450# 1451# Since: 1.5 1452## 1453{ 'struct': 'CommandLineOptionInfo', 1454 'data': { 'option': 'str', 'parameters': ['CommandLineParameterInfo'] } } 1455 1456## 1457# @query-command-line-options: 1458# 1459# Query command line option schema. 1460# 1461# @option: option name 1462# 1463# Returns: list of @CommandLineOptionInfo for all options (or for the given 1464# @option). Returns an error if the given @option doesn't exist. 1465# 1466# Since: 1.5 1467# 1468# Example: 1469# 1470# -> { "execute": "query-command-line-options", 1471# "arguments": { "option": "option-rom" } } 1472# <- { "return": [ 1473# { 1474# "parameters": [ 1475# { 1476# "name": "romfile", 1477# "type": "string" 1478# }, 1479# { 1480# "name": "bootindex", 1481# "type": "number" 1482# } 1483# ], 1484# "option": "option-rom" 1485# } 1486# ] 1487# } 1488# 1489## 1490{'command': 'query-command-line-options', 1491 'data': { '*option': 'str' }, 1492 'returns': ['CommandLineOptionInfo'], 1493 'allow-preconfig': true } 1494 1495## 1496# @PCDIMMDeviceInfo: 1497# 1498# PCDIMMDevice state information 1499# 1500# @id: device's ID 1501# 1502# @addr: physical address, where device is mapped 1503# 1504# @size: size of memory that the device provides 1505# 1506# @slot: slot number at which device is plugged in 1507# 1508# @node: NUMA node number where device is plugged in 1509# 1510# @memdev: memory backend linked with device 1511# 1512# @hotplugged: true if device was hotplugged 1513# 1514# @hotpluggable: true if device if could be added/removed while machine is running 1515# 1516# Since: 2.1 1517## 1518{ 'struct': 'PCDIMMDeviceInfo', 1519 'data': { '*id': 'str', 1520 'addr': 'int', 1521 'size': 'int', 1522 'slot': 'int', 1523 'node': 'int', 1524 'memdev': 'str', 1525 'hotplugged': 'bool', 1526 'hotpluggable': 'bool' 1527 } 1528} 1529 1530## 1531# @VirtioPMEMDeviceInfo: 1532# 1533# VirtioPMEM state information 1534# 1535# @id: device's ID 1536# 1537# @memaddr: physical address in memory, where device is mapped 1538# 1539# @size: size of memory that the device provides 1540# 1541# @memdev: memory backend linked with device 1542# 1543# Since: 4.1 1544## 1545{ 'struct': 'VirtioPMEMDeviceInfo', 1546 'data': { '*id': 'str', 1547 'memaddr': 'size', 1548 'size': 'size', 1549 'memdev': 'str' 1550 } 1551} 1552 1553## 1554# @MemoryDeviceInfo: 1555# 1556# Union containing information about a memory device 1557# 1558# nvdimm is included since 2.12. virtio-pmem is included since 4.1. 1559# 1560# Since: 2.1 1561## 1562{ 'union': 'MemoryDeviceInfo', 1563 'data': { 'dimm': 'PCDIMMDeviceInfo', 1564 'nvdimm': 'PCDIMMDeviceInfo', 1565 'virtio-pmem': 'VirtioPMEMDeviceInfo' 1566 } 1567} 1568 1569## 1570# @query-memory-devices: 1571# 1572# Lists available memory devices and their state 1573# 1574# Since: 2.1 1575# 1576# Example: 1577# 1578# -> { "execute": "query-memory-devices" } 1579# <- { "return": [ { "data": 1580# { "addr": 5368709120, 1581# "hotpluggable": true, 1582# "hotplugged": true, 1583# "id": "d1", 1584# "memdev": "/objects/memX", 1585# "node": 0, 1586# "size": 1073741824, 1587# "slot": 0}, 1588# "type": "dimm" 1589# } ] } 1590# 1591## 1592{ 'command': 'query-memory-devices', 'returns': ['MemoryDeviceInfo'] } 1593 1594## 1595# @MEM_UNPLUG_ERROR: 1596# 1597# Emitted when memory hot unplug error occurs. 1598# 1599# @device: device name 1600# 1601# @msg: Informative message 1602# 1603# Since: 2.4 1604# 1605# Example: 1606# 1607# <- { "event": "MEM_UNPLUG_ERROR" 1608# "data": { "device": "dimm1", 1609# "msg": "acpi: device unplug for unsupported device" 1610# }, 1611# "timestamp": { "seconds": 1265044230, "microseconds": 450486 } } 1612# 1613## 1614{ 'event': 'MEM_UNPLUG_ERROR', 1615 'data': { 'device': 'str', 'msg': 'str' } } 1616 1617## 1618# @ACPISlotType: 1619# 1620# @DIMM: memory slot 1621# @CPU: logical CPU slot (since 2.7) 1622## 1623{ 'enum': 'ACPISlotType', 'data': [ 'DIMM', 'CPU' ] } 1624 1625## 1626# @ACPIOSTInfo: 1627# 1628# OSPM Status Indication for a device 1629# For description of possible values of @source and @status fields 1630# see "_OST (OSPM Status Indication)" chapter of ACPI5.0 spec. 1631# 1632# @device: device ID associated with slot 1633# 1634# @slot: slot ID, unique per slot of a given @slot-type 1635# 1636# @slot-type: type of the slot 1637# 1638# @source: an integer containing the source event 1639# 1640# @status: an integer containing the status code 1641# 1642# Since: 2.1 1643## 1644{ 'struct': 'ACPIOSTInfo', 1645 'data' : { '*device': 'str', 1646 'slot': 'str', 1647 'slot-type': 'ACPISlotType', 1648 'source': 'int', 1649 'status': 'int' } } 1650 1651## 1652# @query-acpi-ospm-status: 1653# 1654# Return a list of ACPIOSTInfo for devices that support status 1655# reporting via ACPI _OST method. 1656# 1657# Since: 2.1 1658# 1659# Example: 1660# 1661# -> { "execute": "query-acpi-ospm-status" } 1662# <- { "return": [ { "device": "d1", "slot": "0", "slot-type": "DIMM", "source": 1, "status": 0}, 1663# { "slot": "1", "slot-type": "DIMM", "source": 0, "status": 0}, 1664# { "slot": "2", "slot-type": "DIMM", "source": 0, "status": 0}, 1665# { "slot": "3", "slot-type": "DIMM", "source": 0, "status": 0} 1666# ]} 1667# 1668## 1669{ 'command': 'query-acpi-ospm-status', 'returns': ['ACPIOSTInfo'] } 1670 1671## 1672# @ACPI_DEVICE_OST: 1673# 1674# Emitted when guest executes ACPI _OST method. 1675# 1676# @info: OSPM Status Indication 1677# 1678# Since: 2.1 1679# 1680# Example: 1681# 1682# <- { "event": "ACPI_DEVICE_OST", 1683# "data": { "device": "d1", "slot": "0", 1684# "slot-type": "DIMM", "source": 1, "status": 0 } } 1685# 1686## 1687{ 'event': 'ACPI_DEVICE_OST', 1688 'data': { 'info': 'ACPIOSTInfo' } } 1689 1690## 1691# @ReplayMode: 1692# 1693# Mode of the replay subsystem. 1694# 1695# @none: normal execution mode. Replay or record are not enabled. 1696# 1697# @record: record mode. All non-deterministic data is written into the 1698# replay log. 1699# 1700# @play: replay mode. Non-deterministic data required for system execution 1701# is read from the log. 1702# 1703# Since: 2.5 1704## 1705{ 'enum': 'ReplayMode', 1706 'data': [ 'none', 'record', 'play' ] } 1707 1708## 1709# @xen-load-devices-state: 1710# 1711# Load the state of all devices from file. The RAM and the block devices 1712# of the VM are not loaded by this command. 1713# 1714# @filename: the file to load the state of the devices from as binary 1715# data. See xen-save-devices-state.txt for a description of the binary 1716# format. 1717# 1718# Since: 2.7 1719# 1720# Example: 1721# 1722# -> { "execute": "xen-load-devices-state", 1723# "arguments": { "filename": "/tmp/resume" } } 1724# <- { "return": {} } 1725# 1726## 1727{ 'command': 'xen-load-devices-state', 'data': {'filename': 'str'} } 1728 1729## 1730# @GuidInfo: 1731# 1732# GUID information. 1733# 1734# @guid: the globally unique identifier 1735# 1736# Since: 2.9 1737## 1738{ 'struct': 'GuidInfo', 'data': {'guid': 'str'} } 1739 1740## 1741# @query-vm-generation-id: 1742# 1743# Show Virtual Machine Generation ID 1744# 1745# Since: 2.9 1746## 1747{ 'command': 'query-vm-generation-id', 'returns': 'GuidInfo' } 1748 1749