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