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# @merge: merge the missed tick(s) into one tick and inject. Guest time 176# may be delayed, depending on how the OS reacts to the merging 177# of ticks 178# 179# @slew: deliver ticks at a higher rate to catch up with the missed tick. The 180# guest time should not be delayed once catchup is complete. 181# 182# Since: 2.0 183## 184{ 'enum': 'LostTickPolicy', 185 'data': ['discard', 'delay', 'merge', 'slew' ] } 186 187## 188# @add_client: 189# 190# Allow client connections for VNC, Spice and socket based 191# character devices to be passed in to QEMU via SCM_RIGHTS. 192# 193# @protocol: protocol name. Valid names are "vnc", "spice" or the 194# name of a character device (eg. from -chardev id=XXXX) 195# 196# @fdname: file descriptor name previously passed via 'getfd' command 197# 198# @skipauth: whether to skip authentication. Only applies 199# to "vnc" and "spice" protocols 200# 201# @tls: whether to perform TLS. Only applies to the "spice" 202# protocol 203# 204# Returns: nothing on success. 205# 206# Since: 0.14.0 207# 208# Example: 209# 210# -> { "execute": "add_client", "arguments": { "protocol": "vnc", 211# "fdname": "myclient" } } 212# <- { "return": {} } 213# 214## 215{ 'command': 'add_client', 216 'data': { 'protocol': 'str', 'fdname': 'str', '*skipauth': 'bool', 217 '*tls': 'bool' } } 218 219## 220# @NameInfo: 221# 222# Guest name information. 223# 224# @name: The name of the guest 225# 226# Since: 0.14.0 227## 228{ 'struct': 'NameInfo', 'data': {'*name': 'str'} } 229 230## 231# @query-name: 232# 233# Return the name information of a guest. 234# 235# Returns: @NameInfo of the guest 236# 237# Since: 0.14.0 238# 239# Example: 240# 241# -> { "execute": "query-name" } 242# <- { "return": { "name": "qemu-name" } } 243# 244## 245{ 'command': 'query-name', 'returns': 'NameInfo', 'allow-preconfig': true } 246 247## 248# @KvmInfo: 249# 250# Information about support for KVM acceleration 251# 252# @enabled: true if KVM acceleration is active 253# 254# @present: true if KVM acceleration is built into this executable 255# 256# Since: 0.14.0 257## 258{ 'struct': 'KvmInfo', 'data': {'enabled': 'bool', 'present': 'bool'} } 259 260## 261# @query-kvm: 262# 263# Returns information about KVM acceleration 264# 265# Returns: @KvmInfo 266# 267# Since: 0.14.0 268# 269# Example: 270# 271# -> { "execute": "query-kvm" } 272# <- { "return": { "enabled": true, "present": true } } 273# 274## 275{ 'command': 'query-kvm', 'returns': 'KvmInfo' } 276 277## 278# @UuidInfo: 279# 280# Guest UUID information (Universally Unique Identifier). 281# 282# @UUID: the UUID of the guest 283# 284# Since: 0.14.0 285# 286# Notes: If no UUID was specified for the guest, a null UUID is returned. 287## 288{ 'struct': 'UuidInfo', 'data': {'UUID': 'str'} } 289 290## 291# @query-uuid: 292# 293# Query the guest UUID information. 294# 295# Returns: The @UuidInfo for the guest 296# 297# Since: 0.14.0 298# 299# Example: 300# 301# -> { "execute": "query-uuid" } 302# <- { "return": { "UUID": "550e8400-e29b-41d4-a716-446655440000" } } 303# 304## 305{ 'command': 'query-uuid', 'returns': 'UuidInfo', 'allow-preconfig': true } 306 307## 308# @EventInfo: 309# 310# Information about a QMP event 311# 312# @name: The event name 313# 314# Since: 1.2.0 315## 316{ 'struct': 'EventInfo', 'data': {'name': 'str'} } 317 318## 319# @query-events: 320# 321# Return a list of supported QMP events by this server 322# 323# Returns: A list of @EventInfo for all supported events 324# 325# Since: 1.2.0 326# 327# Example: 328# 329# -> { "execute": "query-events" } 330# <- { 331# "return": [ 332# { 333# "name":"SHUTDOWN" 334# }, 335# { 336# "name":"RESET" 337# } 338# ] 339# } 340# 341# Note: This example has been shortened as the real response is too long. 342# 343## 344{ 'command': 'query-events', 'returns': ['EventInfo'] } 345 346## 347# @CpuInfoArch: 348# 349# An enumeration of cpu types that enable additional information during 350# @query-cpus and @query-cpus-fast. 351# 352# @s390: since 2.12 353# 354# @riscv: since 2.12 355# 356# Since: 2.6 357## 358{ 'enum': 'CpuInfoArch', 359 'data': ['x86', 'sparc', 'ppc', 'mips', 'tricore', 's390', 'riscv', 'other' ] } 360 361## 362# @CpuInfo: 363# 364# Information about a virtual CPU 365# 366# @CPU: the index of the virtual CPU 367# 368# @current: this only exists for backwards compatibility and should be ignored 369# 370# @halted: true if the virtual CPU is in the halt state. Halt usually refers 371# to a processor specific low power mode. 372# 373# @qom_path: path to the CPU object in the QOM tree (since 2.4) 374# 375# @thread_id: ID of the underlying host thread 376# 377# @props: properties describing to which node/socket/core/thread 378# virtual CPU belongs to, provided if supported by board (since 2.10) 379# 380# @arch: architecture of the cpu, which determines which additional fields 381# will be listed (since 2.6) 382# 383# Since: 0.14.0 384# 385# Notes: @halted is a transient state that changes frequently. By the time the 386# data is sent to the client, the guest may no longer be halted. 387## 388{ 'union': 'CpuInfo', 389 'base': {'CPU': 'int', 'current': 'bool', 'halted': 'bool', 390 'qom_path': 'str', 'thread_id': 'int', 391 '*props': 'CpuInstanceProperties', 'arch': 'CpuInfoArch' }, 392 'discriminator': 'arch', 393 'data': { 'x86': 'CpuInfoX86', 394 'sparc': 'CpuInfoSPARC', 395 'ppc': 'CpuInfoPPC', 396 'mips': 'CpuInfoMIPS', 397 'tricore': 'CpuInfoTricore', 398 's390': 'CpuInfoS390', 399 'riscv': 'CpuInfoRISCV' } } 400 401## 402# @CpuInfoX86: 403# 404# Additional information about a virtual i386 or x86_64 CPU 405# 406# @pc: the 64-bit instruction pointer 407# 408# Since: 2.6 409## 410{ 'struct': 'CpuInfoX86', 'data': { 'pc': 'int' } } 411 412## 413# @CpuInfoSPARC: 414# 415# Additional information about a virtual SPARC CPU 416# 417# @pc: the PC component of the instruction pointer 418# 419# @npc: the NPC component of the instruction pointer 420# 421# Since: 2.6 422## 423{ 'struct': 'CpuInfoSPARC', 'data': { 'pc': 'int', 'npc': 'int' } } 424 425## 426# @CpuInfoPPC: 427# 428# Additional information about a virtual PPC CPU 429# 430# @nip: the instruction pointer 431# 432# Since: 2.6 433## 434{ 'struct': 'CpuInfoPPC', 'data': { 'nip': 'int' } } 435 436## 437# @CpuInfoMIPS: 438# 439# Additional information about a virtual MIPS CPU 440# 441# @PC: the instruction pointer 442# 443# Since: 2.6 444## 445{ 'struct': 'CpuInfoMIPS', 'data': { 'PC': 'int' } } 446 447## 448# @CpuInfoTricore: 449# 450# Additional information about a virtual Tricore CPU 451# 452# @PC: the instruction pointer 453# 454# Since: 2.6 455## 456{ 'struct': 'CpuInfoTricore', 'data': { 'PC': 'int' } } 457 458## 459# @CpuInfoRISCV: 460# 461# Additional information about a virtual RISCV CPU 462# 463# @pc: the instruction pointer 464# 465# Since 2.12 466## 467{ 'struct': 'CpuInfoRISCV', 'data': { 'pc': 'int' } } 468 469## 470# @CpuS390State: 471# 472# An enumeration of cpu states that can be assumed by a virtual 473# S390 CPU 474# 475# Since: 2.12 476## 477{ 'enum': 'CpuS390State', 478 'prefix': 'S390_CPU_STATE', 479 'data': [ 'uninitialized', 'stopped', 'check-stop', 'operating', 'load' ] } 480 481## 482# @CpuInfoS390: 483# 484# Additional information about a virtual S390 CPU 485# 486# @cpu-state: the virtual CPU's state 487# 488# Since: 2.12 489## 490{ 'struct': 'CpuInfoS390', 'data': { 'cpu-state': 'CpuS390State' } } 491 492## 493# @query-cpus: 494# 495# Returns a list of information about each virtual CPU. 496# 497# This command causes vCPU threads to exit to userspace, which causes 498# a small interruption to guest CPU execution. This will have a negative 499# impact on realtime guests and other latency sensitive guest workloads. 500# It is recommended to use @query-cpus-fast instead of this command to 501# avoid the vCPU interruption. 502# 503# Returns: a list of @CpuInfo for each virtual CPU 504# 505# Since: 0.14.0 506# 507# Example: 508# 509# -> { "execute": "query-cpus" } 510# <- { "return": [ 511# { 512# "CPU":0, 513# "current":true, 514# "halted":false, 515# "qom_path":"/machine/unattached/device[0]", 516# "arch":"x86", 517# "pc":3227107138, 518# "thread_id":3134 519# }, 520# { 521# "CPU":1, 522# "current":false, 523# "halted":true, 524# "qom_path":"/machine/unattached/device[2]", 525# "arch":"x86", 526# "pc":7108165, 527# "thread_id":3135 528# } 529# ] 530# } 531# 532# Notes: This interface is deprecated (since 2.12.0), and it is strongly 533# recommended that you avoid using it. Use @query-cpus-fast to 534# obtain information about virtual CPUs. 535# 536## 537{ 'command': 'query-cpus', 'returns': ['CpuInfo'] } 538 539## 540# @CpuInfoFast: 541# 542# Information about a virtual CPU 543# 544# @cpu-index: index of the virtual CPU 545# 546# @qom-path: path to the CPU object in the QOM tree 547# 548# @thread-id: ID of the underlying host thread 549# 550# @props: properties describing to which node/socket/core/thread 551# virtual CPU belongs to, provided if supported by board 552# 553# @arch: base architecture of the cpu; deprecated since 3.0.0 in favor 554# of @target 555# 556# @target: the QEMU system emulation target, which determines which 557# additional fields will be listed (since 3.0) 558# 559# Since: 2.12 560# 561## 562{ 'union' : 'CpuInfoFast', 563 'base' : { 'cpu-index' : 'int', 564 'qom-path' : 'str', 565 'thread-id' : 'int', 566 '*props' : 'CpuInstanceProperties', 567 'arch' : 'CpuInfoArch', 568 'target' : 'SysEmuTarget' }, 569 'discriminator' : 'target', 570 'data' : { 's390x' : 'CpuInfoS390' } } 571 572## 573# @query-cpus-fast: 574# 575# Returns information about all virtual CPUs. This command does not 576# incur a performance penalty and should be used in production 577# instead of query-cpus. 578# 579# Returns: list of @CpuInfoFast 580# 581# Since: 2.12 582# 583# Example: 584# 585# -> { "execute": "query-cpus-fast" } 586# <- { "return": [ 587# { 588# "thread-id": 25627, 589# "props": { 590# "core-id": 0, 591# "thread-id": 0, 592# "socket-id": 0 593# }, 594# "qom-path": "/machine/unattached/device[0]", 595# "arch":"x86", 596# "target":"x86_64", 597# "cpu-index": 0 598# }, 599# { 600# "thread-id": 25628, 601# "props": { 602# "core-id": 0, 603# "thread-id": 0, 604# "socket-id": 1 605# }, 606# "qom-path": "/machine/unattached/device[2]", 607# "arch":"x86", 608# "target":"x86_64", 609# "cpu-index": 1 610# } 611# ] 612# } 613## 614{ 'command': 'query-cpus-fast', 'returns': [ 'CpuInfoFast' ] } 615 616## 617# @IOThreadInfo: 618# 619# Information about an iothread 620# 621# @id: the identifier of the iothread 622# 623# @thread-id: ID of the underlying host thread 624# 625# @poll-max-ns: maximum polling time in ns, 0 means polling is disabled 626# (since 2.9) 627# 628# @poll-grow: how many ns will be added to polling time, 0 means that it's not 629# configured (since 2.9) 630# 631# @poll-shrink: how many ns will be removed from polling time, 0 means that 632# it's not configured (since 2.9) 633# 634# Since: 2.0 635## 636{ 'struct': 'IOThreadInfo', 637 'data': {'id': 'str', 638 'thread-id': 'int', 639 'poll-max-ns': 'int', 640 'poll-grow': 'int', 641 'poll-shrink': 'int' } } 642 643## 644# @query-iothreads: 645# 646# Returns a list of information about each iothread. 647# 648# Note: this list excludes the QEMU main loop thread, which is not declared 649# using the -object iothread command-line option. It is always the main thread 650# of the process. 651# 652# Returns: a list of @IOThreadInfo for each iothread 653# 654# Since: 2.0 655# 656# Example: 657# 658# -> { "execute": "query-iothreads" } 659# <- { "return": [ 660# { 661# "id":"iothread0", 662# "thread-id":3134 663# }, 664# { 665# "id":"iothread1", 666# "thread-id":3135 667# } 668# ] 669# } 670# 671## 672{ 'command': 'query-iothreads', 'returns': ['IOThreadInfo'], 673 'allow-preconfig': true } 674 675## 676# @BalloonInfo: 677# 678# Information about the guest balloon device. 679# 680# @actual: the number of bytes the balloon currently contains 681# 682# Since: 0.14.0 683# 684## 685{ 'struct': 'BalloonInfo', 'data': {'actual': 'int' } } 686 687## 688# @query-balloon: 689# 690# Return information about the balloon device. 691# 692# Returns: @BalloonInfo on success 693# 694# If the balloon driver is enabled but not functional because the KVM 695# kernel module cannot support it, KvmMissingCap 696# 697# If no balloon device is present, DeviceNotActive 698# 699# Since: 0.14.0 700# 701# Example: 702# 703# -> { "execute": "query-balloon" } 704# <- { "return": { 705# "actual": 1073741824, 706# } 707# } 708# 709## 710{ 'command': 'query-balloon', 'returns': 'BalloonInfo' } 711 712## 713# @BALLOON_CHANGE: 714# 715# Emitted when the guest changes the actual BALLOON level. This value is 716# equivalent to the @actual field return by the 'query-balloon' command 717# 718# @actual: actual level of the guest memory balloon in bytes 719# 720# Note: this event is rate-limited. 721# 722# Since: 1.2 723# 724# Example: 725# 726# <- { "event": "BALLOON_CHANGE", 727# "data": { "actual": 944766976 }, 728# "timestamp": { "seconds": 1267020223, "microseconds": 435656 } } 729# 730## 731{ 'event': 'BALLOON_CHANGE', 732 'data': { 'actual': 'int' } } 733 734## 735# @PciMemoryRange: 736# 737# A PCI device memory region 738# 739# @base: the starting address (guest physical) 740# 741# @limit: the ending address (guest physical) 742# 743# Since: 0.14.0 744## 745{ 'struct': 'PciMemoryRange', 'data': {'base': 'int', 'limit': 'int'} } 746 747## 748# @PciMemoryRegion: 749# 750# Information about a PCI device I/O region. 751# 752# @bar: the index of the Base Address Register for this region 753# 754# @type: 'io' if the region is a PIO region 755# 'memory' if the region is a MMIO region 756# 757# @size: memory size 758# 759# @prefetch: if @type is 'memory', true if the memory is prefetchable 760# 761# @mem_type_64: if @type is 'memory', true if the BAR is 64-bit 762# 763# Since: 0.14.0 764## 765{ 'struct': 'PciMemoryRegion', 766 'data': {'bar': 'int', 'type': 'str', 'address': 'int', 'size': 'int', 767 '*prefetch': 'bool', '*mem_type_64': 'bool' } } 768 769## 770# @PciBusInfo: 771# 772# Information about a bus of a PCI Bridge device 773# 774# @number: primary bus interface number. This should be the number of the 775# bus the device resides on. 776# 777# @secondary: secondary bus interface number. This is the number of the 778# main bus for the bridge 779# 780# @subordinate: This is the highest number bus that resides below the 781# bridge. 782# 783# @io_range: The PIO range for all devices on this bridge 784# 785# @memory_range: The MMIO range for all devices on this bridge 786# 787# @prefetchable_range: The range of prefetchable MMIO for all devices on 788# this bridge 789# 790# Since: 2.4 791## 792{ 'struct': 'PciBusInfo', 793 'data': {'number': 'int', 'secondary': 'int', 'subordinate': 'int', 794 'io_range': 'PciMemoryRange', 795 'memory_range': 'PciMemoryRange', 796 'prefetchable_range': 'PciMemoryRange' } } 797 798## 799# @PciBridgeInfo: 800# 801# Information about a PCI Bridge device 802# 803# @bus: information about the bus the device resides on 804# 805# @devices: a list of @PciDeviceInfo for each device on this bridge 806# 807# Since: 0.14.0 808## 809{ 'struct': 'PciBridgeInfo', 810 'data': {'bus': 'PciBusInfo', '*devices': ['PciDeviceInfo']} } 811 812## 813# @PciDeviceClass: 814# 815# Information about the Class of a PCI device 816# 817# @desc: a string description of the device's class 818# 819# @class: the class code of the device 820# 821# Since: 2.4 822## 823{ 'struct': 'PciDeviceClass', 824 'data': {'*desc': 'str', 'class': 'int'} } 825 826## 827# @PciDeviceId: 828# 829# Information about the Id of a PCI device 830# 831# @device: the PCI device id 832# 833# @vendor: the PCI vendor id 834# 835# @subsystem: the PCI subsystem id (since 3.1) 836# 837# @subsystem-vendor: the PCI subsystem vendor id (since 3.1) 838# 839# Since: 2.4 840## 841{ 'struct': 'PciDeviceId', 842 'data': {'device': 'int', 'vendor': 'int', '*subsystem': 'int', 843 '*subsystem-vendor': 'int'} } 844 845## 846# @PciDeviceInfo: 847# 848# Information about a PCI device 849# 850# @bus: the bus number of the device 851# 852# @slot: the slot the device is located in 853# 854# @function: the function of the slot used by the device 855# 856# @class_info: the class of the device 857# 858# @id: the PCI device id 859# 860# @irq: if an IRQ is assigned to the device, the IRQ number 861# 862# @qdev_id: the device name of the PCI device 863# 864# @pci_bridge: if the device is a PCI bridge, the bridge information 865# 866# @regions: a list of the PCI I/O regions associated with the device 867# 868# Notes: the contents of @class_info.desc are not stable and should only be 869# treated as informational. 870# 871# Since: 0.14.0 872## 873{ 'struct': 'PciDeviceInfo', 874 'data': {'bus': 'int', 'slot': 'int', 'function': 'int', 875 'class_info': 'PciDeviceClass', 'id': 'PciDeviceId', 876 '*irq': 'int', 'qdev_id': 'str', '*pci_bridge': 'PciBridgeInfo', 877 'regions': ['PciMemoryRegion']} } 878 879## 880# @PciInfo: 881# 882# Information about a PCI bus 883# 884# @bus: the bus index 885# 886# @devices: a list of devices on this bus 887# 888# Since: 0.14.0 889## 890{ 'struct': 'PciInfo', 'data': {'bus': 'int', 'devices': ['PciDeviceInfo']} } 891 892## 893# @query-pci: 894# 895# Return information about the PCI bus topology of the guest. 896# 897# Returns: a list of @PciInfo for each PCI bus. Each bus is 898# represented by a json-object, which has a key with a json-array of 899# all PCI devices attached to it. Each device is represented by a 900# json-object. 901# 902# Since: 0.14.0 903# 904# Example: 905# 906# -> { "execute": "query-pci" } 907# <- { "return": [ 908# { 909# "bus": 0, 910# "devices": [ 911# { 912# "bus": 0, 913# "qdev_id": "", 914# "slot": 0, 915# "class_info": { 916# "class": 1536, 917# "desc": "Host bridge" 918# }, 919# "id": { 920# "device": 32902, 921# "vendor": 4663 922# }, 923# "function": 0, 924# "regions": [ 925# ] 926# }, 927# { 928# "bus": 0, 929# "qdev_id": "", 930# "slot": 1, 931# "class_info": { 932# "class": 1537, 933# "desc": "ISA bridge" 934# }, 935# "id": { 936# "device": 32902, 937# "vendor": 28672 938# }, 939# "function": 0, 940# "regions": [ 941# ] 942# }, 943# { 944# "bus": 0, 945# "qdev_id": "", 946# "slot": 1, 947# "class_info": { 948# "class": 257, 949# "desc": "IDE controller" 950# }, 951# "id": { 952# "device": 32902, 953# "vendor": 28688 954# }, 955# "function": 1, 956# "regions": [ 957# { 958# "bar": 4, 959# "size": 16, 960# "address": 49152, 961# "type": "io" 962# } 963# ] 964# }, 965# { 966# "bus": 0, 967# "qdev_id": "", 968# "slot": 2, 969# "class_info": { 970# "class": 768, 971# "desc": "VGA controller" 972# }, 973# "id": { 974# "device": 4115, 975# "vendor": 184 976# }, 977# "function": 0, 978# "regions": [ 979# { 980# "prefetch": true, 981# "mem_type_64": false, 982# "bar": 0, 983# "size": 33554432, 984# "address": 4026531840, 985# "type": "memory" 986# }, 987# { 988# "prefetch": false, 989# "mem_type_64": false, 990# "bar": 1, 991# "size": 4096, 992# "address": 4060086272, 993# "type": "memory" 994# }, 995# { 996# "prefetch": false, 997# "mem_type_64": false, 998# "bar": 6, 999# "size": 65536, 1000# "address": -1, 1001# "type": "memory" 1002# } 1003# ] 1004# }, 1005# { 1006# "bus": 0, 1007# "qdev_id": "", 1008# "irq": 11, 1009# "slot": 4, 1010# "class_info": { 1011# "class": 1280, 1012# "desc": "RAM controller" 1013# }, 1014# "id": { 1015# "device": 6900, 1016# "vendor": 4098 1017# }, 1018# "function": 0, 1019# "regions": [ 1020# { 1021# "bar": 0, 1022# "size": 32, 1023# "address": 49280, 1024# "type": "io" 1025# } 1026# ] 1027# } 1028# ] 1029# } 1030# ] 1031# } 1032# 1033# Note: This example has been shortened as the real response is too long. 1034# 1035## 1036{ 'command': 'query-pci', 'returns': ['PciInfo'] } 1037 1038## 1039# @quit: 1040# 1041# This command will cause the QEMU process to exit gracefully. While every 1042# attempt is made to send the QMP response before terminating, this is not 1043# guaranteed. When using this interface, a premature EOF would not be 1044# unexpected. 1045# 1046# Since: 0.14.0 1047# 1048# Example: 1049# 1050# -> { "execute": "quit" } 1051# <- { "return": {} } 1052## 1053{ 'command': 'quit' } 1054 1055## 1056# @stop: 1057# 1058# Stop all guest VCPU execution. 1059# 1060# Since: 0.14.0 1061# 1062# Notes: This function will succeed even if the guest is already in the stopped 1063# state. In "inmigrate" state, it will ensure that the guest 1064# remains paused once migration finishes, as if the -S option was 1065# passed on the command line. 1066# 1067# Example: 1068# 1069# -> { "execute": "stop" } 1070# <- { "return": {} } 1071# 1072## 1073{ 'command': 'stop' } 1074 1075## 1076# @system_reset: 1077# 1078# Performs a hard reset of a guest. 1079# 1080# Since: 0.14.0 1081# 1082# Example: 1083# 1084# -> { "execute": "system_reset" } 1085# <- { "return": {} } 1086# 1087## 1088{ 'command': 'system_reset' } 1089 1090## 1091# @system_powerdown: 1092# 1093# Requests that a guest perform a powerdown operation. 1094# 1095# Since: 0.14.0 1096# 1097# Notes: A guest may or may not respond to this command. This command 1098# returning does not indicate that a guest has accepted the request or 1099# that it has shut down. Many guests will respond to this command by 1100# prompting the user in some way. 1101# Example: 1102# 1103# -> { "execute": "system_powerdown" } 1104# <- { "return": {} } 1105# 1106## 1107{ 'command': 'system_powerdown' } 1108 1109## 1110# @cpu-add: 1111# 1112# Adds CPU with specified ID. 1113# 1114# @id: ID of CPU to be created, valid values [0..max_cpus) 1115# 1116# Returns: Nothing on success 1117# 1118# Since: 1.5 1119# 1120# Note: This command is deprecated. The `device_add` command should be 1121# used instead. See the `query-hotpluggable-cpus` command for 1122# details. 1123# 1124# Example: 1125# 1126# -> { "execute": "cpu-add", "arguments": { "id": 2 } } 1127# <- { "return": {} } 1128# 1129## 1130{ 'command': 'cpu-add', 'data': {'id': 'int'} } 1131 1132## 1133# @memsave: 1134# 1135# Save a portion of guest memory to a file. 1136# 1137# @val: the virtual address of the guest to start from 1138# 1139# @size: the size of memory region to save 1140# 1141# @filename: the file to save the memory to as binary data 1142# 1143# @cpu-index: the index of the virtual CPU to use for translating the 1144# virtual address (defaults to CPU 0) 1145# 1146# Returns: Nothing on success 1147# 1148# Since: 0.14.0 1149# 1150# Notes: Errors were not reliably returned until 1.1 1151# 1152# Example: 1153# 1154# -> { "execute": "memsave", 1155# "arguments": { "val": 10, 1156# "size": 100, 1157# "filename": "/tmp/virtual-mem-dump" } } 1158# <- { "return": {} } 1159# 1160## 1161{ 'command': 'memsave', 1162 'data': {'val': 'int', 'size': 'int', 'filename': 'str', '*cpu-index': 'int'} } 1163 1164## 1165# @pmemsave: 1166# 1167# Save a portion of guest physical memory to a file. 1168# 1169# @val: the physical address of the guest to start from 1170# 1171# @size: the size of memory region to save 1172# 1173# @filename: the file to save the memory to as binary data 1174# 1175# Returns: Nothing on success 1176# 1177# Since: 0.14.0 1178# 1179# Notes: Errors were not reliably returned until 1.1 1180# 1181# Example: 1182# 1183# -> { "execute": "pmemsave", 1184# "arguments": { "val": 10, 1185# "size": 100, 1186# "filename": "/tmp/physical-mem-dump" } } 1187# <- { "return": {} } 1188# 1189## 1190{ 'command': 'pmemsave', 1191 'data': {'val': 'int', 'size': 'int', 'filename': 'str'} } 1192 1193## 1194# @cont: 1195# 1196# Resume guest VCPU execution. 1197# 1198# Since: 0.14.0 1199# 1200# Returns: If successful, nothing 1201# 1202# Notes: This command will succeed if the guest is currently running. It 1203# will also succeed if the guest is in the "inmigrate" state; in 1204# this case, the effect of the command is to make sure the guest 1205# starts once migration finishes, removing the effect of the -S 1206# command line option if it was passed. 1207# 1208# Example: 1209# 1210# -> { "execute": "cont" } 1211# <- { "return": {} } 1212# 1213## 1214{ 'command': 'cont' } 1215 1216## 1217# @x-exit-preconfig: 1218# 1219# Exit from "preconfig" state 1220# 1221# This command makes QEMU exit the preconfig state and proceed with 1222# VM initialization using configuration data provided on the command line 1223# and via the QMP monitor during the preconfig state. The command is only 1224# available during the preconfig state (i.e. when the --preconfig command 1225# line option was in use). 1226# 1227# Since 3.0 1228# 1229# Returns: nothing 1230# 1231# Example: 1232# 1233# -> { "execute": "x-exit-preconfig" } 1234# <- { "return": {} } 1235# 1236## 1237{ 'command': 'x-exit-preconfig', 'allow-preconfig': true } 1238 1239## 1240# @system_wakeup: 1241# 1242# Wake up guest from suspend. If the guest has wake-up from suspend 1243# support enabled (wakeup-suspend-support flag from 1244# query-current-machine), wake-up guest from suspend if the guest is 1245# in SUSPENDED state. Return an error otherwise. 1246# 1247# Since: 1.1 1248# 1249# Returns: nothing. 1250# 1251# Note: prior to 4.0, this command does nothing in case the guest 1252# isn't suspended. 1253# 1254# Example: 1255# 1256# -> { "execute": "system_wakeup" } 1257# <- { "return": {} } 1258# 1259## 1260{ 'command': 'system_wakeup' } 1261 1262## 1263# @inject-nmi: 1264# 1265# Injects a Non-Maskable Interrupt into the default CPU (x86/s390) or all CPUs (ppc64). 1266# The command fails when the guest doesn't support injecting. 1267# 1268# Returns: If successful, nothing 1269# 1270# Since: 0.14.0 1271# 1272# Note: prior to 2.1, this command was only supported for x86 and s390 VMs 1273# 1274# Example: 1275# 1276# -> { "execute": "inject-nmi" } 1277# <- { "return": {} } 1278# 1279## 1280{ 'command': 'inject-nmi' } 1281 1282## 1283# @balloon: 1284# 1285# Request the balloon driver to change its balloon size. 1286# 1287# @value: the target size of the balloon in bytes 1288# 1289# Returns: Nothing on success 1290# If the balloon driver is enabled but not functional because the KVM 1291# kernel module cannot support it, KvmMissingCap 1292# If no balloon device is present, DeviceNotActive 1293# 1294# Notes: This command just issues a request to the guest. When it returns, 1295# the balloon size may not have changed. A guest can change the balloon 1296# size independent of this command. 1297# 1298# Since: 0.14.0 1299# 1300# Example: 1301# 1302# -> { "execute": "balloon", "arguments": { "value": 536870912 } } 1303# <- { "return": {} } 1304# 1305## 1306{ 'command': 'balloon', 'data': {'value': 'int'} } 1307 1308## 1309# @human-monitor-command: 1310# 1311# Execute a command on the human monitor and return the output. 1312# 1313# @command-line: the command to execute in the human monitor 1314# 1315# @cpu-index: The CPU to use for commands that require an implicit CPU 1316# 1317# Returns: the output of the command as a string 1318# 1319# Since: 0.14.0 1320# 1321# Notes: This command only exists as a stop-gap. Its use is highly 1322# discouraged. The semantics of this command are not 1323# guaranteed: this means that command names, arguments and 1324# responses can change or be removed at ANY time. Applications 1325# that rely on long term stability guarantees should NOT 1326# use this command. 1327# 1328# Known limitations: 1329# 1330# * This command is stateless, this means that commands that depend 1331# on state information (such as getfd) might not work 1332# 1333# * Commands that prompt the user for data don't currently work 1334# 1335# Example: 1336# 1337# -> { "execute": "human-monitor-command", 1338# "arguments": { "command-line": "info kvm" } } 1339# <- { "return": "kvm support: enabled\r\n" } 1340# 1341## 1342{ 'command': 'human-monitor-command', 1343 'data': {'command-line': 'str', '*cpu-index': 'int'}, 1344 'returns': 'str' } 1345 1346## 1347# @ObjectPropertyInfo: 1348# 1349# @name: the name of the property 1350# 1351# @type: the type of the property. This will typically come in one of four 1352# forms: 1353# 1354# 1) A primitive type such as 'u8', 'u16', 'bool', 'str', or 'double'. 1355# These types are mapped to the appropriate JSON type. 1356# 1357# 2) A child type in the form 'child<subtype>' where subtype is a qdev 1358# device type name. Child properties create the composition tree. 1359# 1360# 3) A link type in the form 'link<subtype>' where subtype is a qdev 1361# device type name. Link properties form the device model graph. 1362# 1363# @description: if specified, the description of the property. 1364# 1365# Since: 1.2 1366## 1367{ 'struct': 'ObjectPropertyInfo', 1368 'data': { 'name': 'str', 'type': 'str', '*description': 'str' } } 1369 1370## 1371# @qom-list: 1372# 1373# This command will list any properties of a object given a path in the object 1374# model. 1375# 1376# @path: the path within the object model. See @qom-get for a description of 1377# this parameter. 1378# 1379# Returns: a list of @ObjectPropertyInfo that describe the properties of the 1380# object. 1381# 1382# Since: 1.2 1383# 1384# Example: 1385# 1386# -> { "execute": "qom-list", 1387# "arguments": { "path": "/chardevs" } } 1388# <- { "return": [ { "name": "type", "type": "string" }, 1389# { "name": "parallel0", "type": "child<chardev-vc>" }, 1390# { "name": "serial0", "type": "child<chardev-vc>" }, 1391# { "name": "mon0", "type": "child<chardev-stdio>" } ] } 1392# 1393## 1394{ 'command': 'qom-list', 1395 'data': { 'path': 'str' }, 1396 'returns': [ 'ObjectPropertyInfo' ], 1397 'allow-preconfig': true } 1398 1399## 1400# @qom-get: 1401# 1402# This command will get a property from a object model path and return the 1403# value. 1404# 1405# @path: The path within the object model. There are two forms of supported 1406# paths--absolute and partial paths. 1407# 1408# Absolute paths are derived from the root object and can follow child<> 1409# or link<> properties. Since they can follow link<> properties, they 1410# can be arbitrarily long. Absolute paths look like absolute filenames 1411# and are prefixed with a leading slash. 1412# 1413# Partial paths look like relative filenames. They do not begin 1414# with a prefix. The matching rules for partial paths are subtle but 1415# designed to make specifying objects easy. At each level of the 1416# composition tree, the partial path is matched as an absolute path. 1417# The first match is not returned. At least two matches are searched 1418# for. A successful result is only returned if only one match is 1419# found. If more than one match is found, a flag is return to 1420# indicate that the match was ambiguous. 1421# 1422# @property: The property name to read 1423# 1424# Returns: The property value. The type depends on the property 1425# type. child<> and link<> properties are returned as #str 1426# pathnames. All integer property types (u8, u16, etc) are 1427# returned as #int. 1428# 1429# Since: 1.2 1430# 1431# Example: 1432# 1433# 1. Use absolute path 1434# 1435# -> { "execute": "qom-get", 1436# "arguments": { "path": "/machine/unattached/device[0]", 1437# "property": "hotplugged" } } 1438# <- { "return": false } 1439# 1440# 2. Use partial path 1441# 1442# -> { "execute": "qom-get", 1443# "arguments": { "path": "unattached/sysbus", 1444# "property": "type" } } 1445# <- { "return": "System" } 1446# 1447## 1448{ 'command': 'qom-get', 1449 'data': { 'path': 'str', 'property': 'str' }, 1450 'returns': 'any', 1451 'allow-preconfig': true } 1452 1453## 1454# @qom-set: 1455# 1456# This command will set a property from a object model path. 1457# 1458# @path: see @qom-get for a description of this parameter 1459# 1460# @property: the property name to set 1461# 1462# @value: a value who's type is appropriate for the property type. See @qom-get 1463# for a description of type mapping. 1464# 1465# Since: 1.2 1466# 1467# Example: 1468# 1469# -> { "execute": "qom-set", 1470# "arguments": { "path": "/machine", 1471# "property": "graphics", 1472# "value": false } } 1473# <- { "return": {} } 1474# 1475## 1476{ 'command': 'qom-set', 1477 'data': { 'path': 'str', 'property': 'str', 'value': 'any' }, 1478 'allow-preconfig': true } 1479 1480## 1481# @change: 1482# 1483# This command is multiple commands multiplexed together. 1484# 1485# @device: This is normally the name of a block device but it may also be 'vnc'. 1486# when it's 'vnc', then sub command depends on @target 1487# 1488# @target: If @device is a block device, then this is the new filename. 1489# If @device is 'vnc', then if the value 'password' selects the vnc 1490# change password command. Otherwise, this specifies a new server URI 1491# address to listen to for VNC connections. 1492# 1493# @arg: If @device is a block device, then this is an optional format to open 1494# the device with. 1495# If @device is 'vnc' and @target is 'password', this is the new VNC 1496# password to set. See change-vnc-password for additional notes. 1497# 1498# Returns: Nothing on success. 1499# If @device is not a valid block device, DeviceNotFound 1500# 1501# Notes: This interface is deprecated, and it is strongly recommended that you 1502# avoid using it. For changing block devices, use 1503# blockdev-change-medium; for changing VNC parameters, use 1504# change-vnc-password. 1505# 1506# Since: 0.14.0 1507# 1508# Example: 1509# 1510# 1. Change a removable medium 1511# 1512# -> { "execute": "change", 1513# "arguments": { "device": "ide1-cd0", 1514# "target": "/srv/images/Fedora-12-x86_64-DVD.iso" } } 1515# <- { "return": {} } 1516# 1517# 2. Change VNC password 1518# 1519# -> { "execute": "change", 1520# "arguments": { "device": "vnc", "target": "password", 1521# "arg": "foobar1" } } 1522# <- { "return": {} } 1523# 1524## 1525{ 'command': 'change', 1526 'data': {'device': 'str', 'target': 'str', '*arg': 'str'} } 1527 1528## 1529# @ObjectTypeInfo: 1530# 1531# This structure describes a search result from @qom-list-types 1532# 1533# @name: the type name found in the search 1534# 1535# @abstract: the type is abstract and can't be directly instantiated. 1536# Omitted if false. (since 2.10) 1537# 1538# @parent: Name of parent type, if any (since 2.10) 1539# 1540# Since: 1.1 1541## 1542{ 'struct': 'ObjectTypeInfo', 1543 'data': { 'name': 'str', '*abstract': 'bool', '*parent': 'str' } } 1544 1545## 1546# @qom-list-types: 1547# 1548# This command will return a list of types given search parameters 1549# 1550# @implements: if specified, only return types that implement this type name 1551# 1552# @abstract: if true, include abstract types in the results 1553# 1554# Returns: a list of @ObjectTypeInfo or an empty list if no results are found 1555# 1556# Since: 1.1 1557## 1558{ 'command': 'qom-list-types', 1559 'data': { '*implements': 'str', '*abstract': 'bool' }, 1560 'returns': [ 'ObjectTypeInfo' ], 1561 'allow-preconfig': true } 1562 1563## 1564# @device-list-properties: 1565# 1566# List properties associated with a device. 1567# 1568# @typename: the type name of a device 1569# 1570# Returns: a list of ObjectPropertyInfo describing a devices properties 1571# 1572# Note: objects can create properties at runtime, for example to describe 1573# links between different devices and/or objects. These properties 1574# are not included in the output of this command. 1575# 1576# Since: 1.2 1577## 1578{ 'command': 'device-list-properties', 1579 'data': { 'typename': 'str'}, 1580 'returns': [ 'ObjectPropertyInfo' ] } 1581 1582## 1583# @qom-list-properties: 1584# 1585# List properties associated with a QOM object. 1586# 1587# @typename: the type name of an object 1588# 1589# Note: objects can create properties at runtime, for example to describe 1590# links between different devices and/or objects. These properties 1591# are not included in the output of this command. 1592# 1593# Returns: a list of ObjectPropertyInfo describing object properties 1594# 1595# Since: 2.12 1596## 1597{ 'command': 'qom-list-properties', 1598 'data': { 'typename': 'str'}, 1599 'returns': [ 'ObjectPropertyInfo' ], 1600 'allow-preconfig': true } 1601 1602## 1603# @xen-set-global-dirty-log: 1604# 1605# Enable or disable the global dirty log mode. 1606# 1607# @enable: true to enable, false to disable. 1608# 1609# Returns: nothing 1610# 1611# Since: 1.3 1612# 1613# Example: 1614# 1615# -> { "execute": "xen-set-global-dirty-log", 1616# "arguments": { "enable": true } } 1617# <- { "return": {} } 1618# 1619## 1620{ 'command': 'xen-set-global-dirty-log', 'data': { 'enable': 'bool' } } 1621 1622## 1623# @device_add: 1624# 1625# @driver: the name of the new device's driver 1626# 1627# @bus: the device's parent bus (device tree path) 1628# 1629# @id: the device's ID, must be unique 1630# 1631# Additional arguments depend on the type. 1632# 1633# Add a device. 1634# 1635# Notes: 1636# 1. For detailed information about this command, please refer to the 1637# 'docs/qdev-device-use.txt' file. 1638# 1639# 2. It's possible to list device properties by running QEMU with the 1640# "-device DEVICE,help" command-line argument, where DEVICE is the 1641# device's name 1642# 1643# Example: 1644# 1645# -> { "execute": "device_add", 1646# "arguments": { "driver": "e1000", "id": "net1", 1647# "bus": "pci.0", 1648# "mac": "52:54:00:12:34:56" } } 1649# <- { "return": {} } 1650# 1651# TODO: This command effectively bypasses QAPI completely due to its 1652# "additional arguments" business. It shouldn't have been added to 1653# the schema in this form. It should be qapified properly, or 1654# replaced by a properly qapified command. 1655# 1656# Since: 0.13 1657## 1658{ 'command': 'device_add', 1659 'data': {'driver': 'str', '*bus': 'str', '*id': 'str'}, 1660 'gen': false } # so we can get the additional arguments 1661 1662## 1663# @device_del: 1664# 1665# Remove a device from a guest 1666# 1667# @id: the device's ID or QOM path 1668# 1669# Returns: Nothing on success 1670# If @id is not a valid device, DeviceNotFound 1671# 1672# Notes: When this command completes, the device may not be removed from the 1673# guest. Hot removal is an operation that requires guest cooperation. 1674# This command merely requests that the guest begin the hot removal 1675# process. Completion of the device removal process is signaled with a 1676# DEVICE_DELETED event. Guest reset will automatically complete removal 1677# for all devices. 1678# 1679# Since: 0.14.0 1680# 1681# Example: 1682# 1683# -> { "execute": "device_del", 1684# "arguments": { "id": "net1" } } 1685# <- { "return": {} } 1686# 1687# -> { "execute": "device_del", 1688# "arguments": { "id": "/machine/peripheral-anon/device[0]" } } 1689# <- { "return": {} } 1690# 1691## 1692{ 'command': 'device_del', 'data': {'id': 'str'} } 1693 1694## 1695# @DEVICE_DELETED: 1696# 1697# Emitted whenever the device removal completion is acknowledged by the guest. 1698# At this point, it's safe to reuse the specified device ID. Device removal can 1699# be initiated by the guest or by HMP/QMP commands. 1700# 1701# @device: device name 1702# 1703# @path: device path 1704# 1705# Since: 1.5 1706# 1707# Example: 1708# 1709# <- { "event": "DEVICE_DELETED", 1710# "data": { "device": "virtio-net-pci-0", 1711# "path": "/machine/peripheral/virtio-net-pci-0" }, 1712# "timestamp": { "seconds": 1265044230, "microseconds": 450486 } } 1713# 1714## 1715{ 'event': 'DEVICE_DELETED', 1716 'data': { '*device': 'str', 'path': 'str' } } 1717 1718## 1719# @DumpGuestMemoryFormat: 1720# 1721# An enumeration of guest-memory-dump's format. 1722# 1723# @elf: elf format 1724# 1725# @kdump-zlib: kdump-compressed format with zlib-compressed 1726# 1727# @kdump-lzo: kdump-compressed format with lzo-compressed 1728# 1729# @kdump-snappy: kdump-compressed format with snappy-compressed 1730# 1731# @win-dmp: Windows full crashdump format, 1732# can be used instead of ELF converting (since 2.13) 1733# 1734# Since: 2.0 1735## 1736{ 'enum': 'DumpGuestMemoryFormat', 1737 'data': [ 'elf', 'kdump-zlib', 'kdump-lzo', 'kdump-snappy', 'win-dmp' ] } 1738 1739## 1740# @dump-guest-memory: 1741# 1742# Dump guest's memory to vmcore. It is a synchronous operation that can take 1743# very long depending on the amount of guest memory. 1744# 1745# @paging: if true, do paging to get guest's memory mapping. This allows 1746# using gdb to process the core file. 1747# 1748# IMPORTANT: this option can make QEMU allocate several gigabytes 1749# of RAM. This can happen for a large guest, or a 1750# malicious guest pretending to be large. 1751# 1752# Also, paging=true has the following limitations: 1753# 1754# 1. The guest may be in a catastrophic state or can have corrupted 1755# memory, which cannot be trusted 1756# 2. The guest can be in real-mode even if paging is enabled. For 1757# example, the guest uses ACPI to sleep, and ACPI sleep state 1758# goes in real-mode 1759# 3. Currently only supported on i386 and x86_64. 1760# 1761# @protocol: the filename or file descriptor of the vmcore. The supported 1762# protocols are: 1763# 1764# 1. file: the protocol starts with "file:", and the following 1765# string is the file's path. 1766# 2. fd: the protocol starts with "fd:", and the following string 1767# is the fd's name. 1768# 1769# @detach: if true, QMP will return immediately rather than 1770# waiting for the dump to finish. The user can track progress 1771# using "query-dump". (since 2.6). 1772# 1773# @begin: if specified, the starting physical address. 1774# 1775# @length: if specified, the memory size, in bytes. If you don't 1776# want to dump all guest's memory, please specify the start @begin 1777# and @length 1778# 1779# @format: if specified, the format of guest memory dump. But non-elf 1780# format is conflict with paging and filter, ie. @paging, @begin and 1781# @length is not allowed to be specified with non-elf @format at the 1782# same time (since 2.0) 1783# 1784# Note: All boolean arguments default to false 1785# 1786# Returns: nothing on success 1787# 1788# Since: 1.2 1789# 1790# Example: 1791# 1792# -> { "execute": "dump-guest-memory", 1793# "arguments": { "protocol": "fd:dump" } } 1794# <- { "return": {} } 1795# 1796## 1797{ 'command': 'dump-guest-memory', 1798 'data': { 'paging': 'bool', 'protocol': 'str', '*detach': 'bool', 1799 '*begin': 'int', '*length': 'int', 1800 '*format': 'DumpGuestMemoryFormat'} } 1801 1802## 1803# @DumpStatus: 1804# 1805# Describe the status of a long-running background guest memory dump. 1806# 1807# @none: no dump-guest-memory has started yet. 1808# 1809# @active: there is one dump running in background. 1810# 1811# @completed: the last dump has finished successfully. 1812# 1813# @failed: the last dump has failed. 1814# 1815# Since: 2.6 1816## 1817{ 'enum': 'DumpStatus', 1818 'data': [ 'none', 'active', 'completed', 'failed' ] } 1819 1820## 1821# @DumpQueryResult: 1822# 1823# The result format for 'query-dump'. 1824# 1825# @status: enum of @DumpStatus, which shows current dump status 1826# 1827# @completed: bytes written in latest dump (uncompressed) 1828# 1829# @total: total bytes to be written in latest dump (uncompressed) 1830# 1831# Since: 2.6 1832## 1833{ 'struct': 'DumpQueryResult', 1834 'data': { 'status': 'DumpStatus', 1835 'completed': 'int', 1836 'total': 'int' } } 1837 1838## 1839# @query-dump: 1840# 1841# Query latest dump status. 1842# 1843# Returns: A @DumpStatus object showing the dump status. 1844# 1845# Since: 2.6 1846# 1847# Example: 1848# 1849# -> { "execute": "query-dump" } 1850# <- { "return": { "status": "active", "completed": 1024000, 1851# "total": 2048000 } } 1852# 1853## 1854{ 'command': 'query-dump', 'returns': 'DumpQueryResult' } 1855 1856## 1857# @DUMP_COMPLETED: 1858# 1859# Emitted when background dump has completed 1860# 1861# @result: final dump status 1862# 1863# @error: human-readable error string that provides 1864# hint on why dump failed. Only presents on failure. The 1865# user should not try to interpret the error string. 1866# 1867# Since: 2.6 1868# 1869# Example: 1870# 1871# { "event": "DUMP_COMPLETED", 1872# "data": {"result": {"total": 1090650112, "status": "completed", 1873# "completed": 1090650112} } } 1874# 1875## 1876{ 'event': 'DUMP_COMPLETED' , 1877 'data': { 'result': 'DumpQueryResult', '*error': 'str' } } 1878 1879## 1880# @DumpGuestMemoryCapability: 1881# 1882# A list of the available formats for dump-guest-memory 1883# 1884# Since: 2.0 1885## 1886{ 'struct': 'DumpGuestMemoryCapability', 1887 'data': { 1888 'formats': ['DumpGuestMemoryFormat'] } } 1889 1890## 1891# @query-dump-guest-memory-capability: 1892# 1893# Returns the available formats for dump-guest-memory 1894# 1895# Returns: A @DumpGuestMemoryCapability object listing available formats for 1896# dump-guest-memory 1897# 1898# Since: 2.0 1899# 1900# Example: 1901# 1902# -> { "execute": "query-dump-guest-memory-capability" } 1903# <- { "return": { "formats": 1904# ["elf", "kdump-zlib", "kdump-lzo", "kdump-snappy"] } 1905# 1906## 1907{ 'command': 'query-dump-guest-memory-capability', 1908 'returns': 'DumpGuestMemoryCapability' } 1909 1910## 1911# @object-add: 1912# 1913# Create a QOM object. 1914# 1915# @qom-type: the class name for the object to be created 1916# 1917# @id: the name of the new object 1918# 1919# @props: a dictionary of properties to be passed to the backend 1920# 1921# Returns: Nothing on success 1922# Error if @qom-type is not a valid class name 1923# 1924# Since: 2.0 1925# 1926# Example: 1927# 1928# -> { "execute": "object-add", 1929# "arguments": { "qom-type": "rng-random", "id": "rng1", 1930# "props": { "filename": "/dev/hwrng" } } } 1931# <- { "return": {} } 1932# 1933## 1934{ 'command': 'object-add', 1935 'data': {'qom-type': 'str', 'id': 'str', '*props': 'any'} } 1936 1937## 1938# @object-del: 1939# 1940# Remove a QOM object. 1941# 1942# @id: the name of the QOM object to remove 1943# 1944# Returns: Nothing on success 1945# Error if @id is not a valid id for a QOM object 1946# 1947# Since: 2.0 1948# 1949# Example: 1950# 1951# -> { "execute": "object-del", "arguments": { "id": "rng1" } } 1952# <- { "return": {} } 1953# 1954## 1955{ 'command': 'object-del', 'data': {'id': 'str'} } 1956 1957## 1958# @getfd: 1959# 1960# Receive a file descriptor via SCM rights and assign it a name 1961# 1962# @fdname: file descriptor name 1963# 1964# Returns: Nothing on success 1965# 1966# Since: 0.14.0 1967# 1968# Notes: If @fdname already exists, the file descriptor assigned to 1969# it will be closed and replaced by the received file 1970# descriptor. 1971# 1972# The 'closefd' command can be used to explicitly close the 1973# file descriptor when it is no longer needed. 1974# 1975# Example: 1976# 1977# -> { "execute": "getfd", "arguments": { "fdname": "fd1" } } 1978# <- { "return": {} } 1979# 1980## 1981{ 'command': 'getfd', 'data': {'fdname': 'str'} } 1982 1983## 1984# @closefd: 1985# 1986# Close a file descriptor previously passed via SCM rights 1987# 1988# @fdname: file descriptor name 1989# 1990# Returns: Nothing on success 1991# 1992# Since: 0.14.0 1993# 1994# Example: 1995# 1996# -> { "execute": "closefd", "arguments": { "fdname": "fd1" } } 1997# <- { "return": {} } 1998# 1999## 2000{ 'command': 'closefd', 'data': {'fdname': 'str'} } 2001 2002## 2003# @MachineInfo: 2004# 2005# Information describing a machine. 2006# 2007# @name: the name of the machine 2008# 2009# @alias: an alias for the machine name 2010# 2011# @is-default: whether the machine is default 2012# 2013# @cpu-max: maximum number of CPUs supported by the machine type 2014# (since 1.5.0) 2015# 2016# @hotpluggable-cpus: cpu hotplug via -device is supported (since 2.7.0) 2017# 2018# Since: 1.2.0 2019## 2020{ 'struct': 'MachineInfo', 2021 'data': { 'name': 'str', '*alias': 'str', 2022 '*is-default': 'bool', 'cpu-max': 'int', 2023 'hotpluggable-cpus': 'bool'} } 2024 2025## 2026# @query-machines: 2027# 2028# Return a list of supported machines 2029# 2030# Returns: a list of MachineInfo 2031# 2032# Since: 1.2.0 2033## 2034{ 'command': 'query-machines', 'returns': ['MachineInfo'] } 2035 2036## 2037# @CurrentMachineParams: 2038# 2039# Information describing the running machine parameters. 2040# 2041# @wakeup-suspend-support: true if the machine supports wake up from 2042# suspend 2043# 2044# Since: 4.0 2045## 2046{ 'struct': 'CurrentMachineParams', 2047 'data': { 'wakeup-suspend-support': 'bool'} } 2048 2049## 2050# @query-current-machine: 2051# 2052# Return information on the current virtual machine. 2053# 2054# Returns: CurrentMachineParams 2055# 2056# Since: 4.0 2057## 2058{ 'command': 'query-current-machine', 'returns': 'CurrentMachineParams' } 2059 2060## 2061# @MemoryInfo: 2062# 2063# Actual memory information in bytes. 2064# 2065# @base-memory: size of "base" memory specified with command line 2066# option -m. 2067# 2068# @plugged-memory: size of memory that can be hot-unplugged. This field 2069# is omitted if target doesn't support memory hotplug 2070# (i.e. CONFIG_MEM_DEVICE not defined at build time). 2071# 2072# Since: 2.11.0 2073## 2074{ 'struct': 'MemoryInfo', 2075 'data' : { 'base-memory': 'size', '*plugged-memory': 'size' } } 2076 2077## 2078# @query-memory-size-summary: 2079# 2080# Return the amount of initially allocated and present hotpluggable (if 2081# enabled) memory in bytes. 2082# 2083# Example: 2084# 2085# -> { "execute": "query-memory-size-summary" } 2086# <- { "return": { "base-memory": 4294967296, "plugged-memory": 0 } } 2087# 2088# Since: 2.11.0 2089## 2090{ 'command': 'query-memory-size-summary', 'returns': 'MemoryInfo' } 2091 2092 2093## 2094# @CpuModelInfo: 2095# 2096# Virtual CPU model. 2097# 2098# A CPU model consists of the name of a CPU definition, to which 2099# delta changes are applied (e.g. features added/removed). Most magic values 2100# that an architecture might require should be hidden behind the name. 2101# However, if required, architectures can expose relevant properties. 2102# 2103# @name: the name of the CPU definition the model is based on 2104# @props: a dictionary of QOM properties to be applied 2105# 2106# Since: 2.8.0 2107## 2108{ 'struct': 'CpuModelInfo', 2109 'data': { 'name': 'str', 2110 '*props': 'any' } } 2111 2112## 2113# @CpuModelExpansionType: 2114# 2115# An enumeration of CPU model expansion types. 2116# 2117# @static: Expand to a static CPU model, a combination of a static base 2118# model name and property delta changes. As the static base model will 2119# never change, the expanded CPU model will be the same, independent of 2120# QEMU version, machine type, machine options, and accelerator options. 2121# Therefore, the resulting model can be used by tooling without having 2122# to specify a compatibility machine - e.g. when displaying the "host" 2123# model. The @static CPU models are migration-safe. 2124 2125# @full: Expand all properties. The produced model is not guaranteed to be 2126# migration-safe, but allows tooling to get an insight and work with 2127# model details. 2128# 2129# Note: When a non-migration-safe CPU model is expanded in static mode, some 2130# features enabled by the CPU model may be omitted, because they can't be 2131# implemented by a static CPU model definition (e.g. cache info passthrough and 2132# PMU passthrough in x86). If you need an accurate representation of the 2133# features enabled by a non-migration-safe CPU model, use @full. If you need a 2134# static representation that will keep ABI compatibility even when changing QEMU 2135# version or machine-type, use @static (but keep in mind that some features may 2136# be omitted). 2137# 2138# Since: 2.8.0 2139## 2140{ 'enum': 'CpuModelExpansionType', 2141 'data': [ 'static', 'full' ] } 2142 2143 2144## 2145# @CpuModelCompareResult: 2146# 2147# An enumeration of CPU model comparison results. The result is usually 2148# calculated using e.g. CPU features or CPU generations. 2149# 2150# @incompatible: If model A is incompatible to model B, model A is not 2151# guaranteed to run where model B runs and the other way around. 2152# 2153# @identical: If model A is identical to model B, model A is guaranteed to run 2154# where model B runs and the other way around. 2155# 2156# @superset: If model A is a superset of model B, model B is guaranteed to run 2157# where model A runs. There are no guarantees about the other way. 2158# 2159# @subset: If model A is a subset of model B, model A is guaranteed to run 2160# where model B runs. There are no guarantees about the other way. 2161# 2162# Since: 2.8.0 2163## 2164{ 'enum': 'CpuModelCompareResult', 2165 'data': [ 'incompatible', 'identical', 'superset', 'subset' ] } 2166 2167## 2168# @AddfdInfo: 2169# 2170# Information about a file descriptor that was added to an fd set. 2171# 2172# @fdset-id: The ID of the fd set that @fd was added to. 2173# 2174# @fd: The file descriptor that was received via SCM rights and 2175# added to the fd set. 2176# 2177# Since: 1.2.0 2178## 2179{ 'struct': 'AddfdInfo', 'data': {'fdset-id': 'int', 'fd': 'int'} } 2180 2181## 2182# @add-fd: 2183# 2184# Add a file descriptor, that was passed via SCM rights, to an fd set. 2185# 2186# @fdset-id: The ID of the fd set to add the file descriptor to. 2187# 2188# @opaque: A free-form string that can be used to describe the fd. 2189# 2190# Returns: @AddfdInfo on success 2191# 2192# If file descriptor was not received, FdNotSupplied 2193# 2194# If @fdset-id is a negative value, InvalidParameterValue 2195# 2196# Notes: The list of fd sets is shared by all monitor connections. 2197# 2198# If @fdset-id is not specified, a new fd set will be created. 2199# 2200# Since: 1.2.0 2201# 2202# Example: 2203# 2204# -> { "execute": "add-fd", "arguments": { "fdset-id": 1 } } 2205# <- { "return": { "fdset-id": 1, "fd": 3 } } 2206# 2207## 2208{ 'command': 'add-fd', 2209 'data': { '*fdset-id': 'int', 2210 '*opaque': 'str' }, 2211 'returns': 'AddfdInfo' } 2212 2213## 2214# @remove-fd: 2215# 2216# Remove a file descriptor from an fd set. 2217# 2218# @fdset-id: The ID of the fd set that the file descriptor belongs to. 2219# 2220# @fd: The file descriptor that is to be removed. 2221# 2222# Returns: Nothing on success 2223# If @fdset-id or @fd is not found, FdNotFound 2224# 2225# Since: 1.2.0 2226# 2227# Notes: The list of fd sets is shared by all monitor connections. 2228# 2229# If @fd is not specified, all file descriptors in @fdset-id 2230# will be removed. 2231# 2232# Example: 2233# 2234# -> { "execute": "remove-fd", "arguments": { "fdset-id": 1, "fd": 3 } } 2235# <- { "return": {} } 2236# 2237## 2238{ 'command': 'remove-fd', 'data': {'fdset-id': 'int', '*fd': 'int'} } 2239 2240## 2241# @FdsetFdInfo: 2242# 2243# Information about a file descriptor that belongs to an fd set. 2244# 2245# @fd: The file descriptor value. 2246# 2247# @opaque: A free-form string that can be used to describe the fd. 2248# 2249# Since: 1.2.0 2250## 2251{ 'struct': 'FdsetFdInfo', 2252 'data': {'fd': 'int', '*opaque': 'str'} } 2253 2254## 2255# @FdsetInfo: 2256# 2257# Information about an fd set. 2258# 2259# @fdset-id: The ID of the fd set. 2260# 2261# @fds: A list of file descriptors that belong to this fd set. 2262# 2263# Since: 1.2.0 2264## 2265{ 'struct': 'FdsetInfo', 2266 'data': {'fdset-id': 'int', 'fds': ['FdsetFdInfo']} } 2267 2268## 2269# @query-fdsets: 2270# 2271# Return information describing all fd sets. 2272# 2273# Returns: A list of @FdsetInfo 2274# 2275# Since: 1.2.0 2276# 2277# Note: The list of fd sets is shared by all monitor connections. 2278# 2279# Example: 2280# 2281# -> { "execute": "query-fdsets" } 2282# <- { "return": [ 2283# { 2284# "fds": [ 2285# { 2286# "fd": 30, 2287# "opaque": "rdonly:/path/to/file" 2288# }, 2289# { 2290# "fd": 24, 2291# "opaque": "rdwr:/path/to/file" 2292# } 2293# ], 2294# "fdset-id": 1 2295# }, 2296# { 2297# "fds": [ 2298# { 2299# "fd": 28 2300# }, 2301# { 2302# "fd": 29 2303# } 2304# ], 2305# "fdset-id": 0 2306# } 2307# ] 2308# } 2309# 2310## 2311{ 'command': 'query-fdsets', 'returns': ['FdsetInfo'] } 2312 2313## 2314# @TargetInfo: 2315# 2316# Information describing the QEMU target. 2317# 2318# @arch: the target architecture 2319# 2320# Since: 1.2.0 2321## 2322{ 'struct': 'TargetInfo', 2323 'data': { 'arch': 'SysEmuTarget' } } 2324 2325## 2326# @query-target: 2327# 2328# Return information about the target for this QEMU 2329# 2330# Returns: TargetInfo 2331# 2332# Since: 1.2.0 2333## 2334{ 'command': 'query-target', 'returns': 'TargetInfo' } 2335 2336## 2337# @AcpiTableOptions: 2338# 2339# Specify an ACPI table on the command line to load. 2340# 2341# At most one of @file and @data can be specified. The list of files specified 2342# by any one of them is loaded and concatenated in order. If both are omitted, 2343# @data is implied. 2344# 2345# Other fields / optargs can be used to override fields of the generic ACPI 2346# table header; refer to the ACPI specification 5.0, section 5.2.6 System 2347# Description Table Header. If a header field is not overridden, then the 2348# corresponding value from the concatenated blob is used (in case of @file), or 2349# it is filled in with a hard-coded value (in case of @data). 2350# 2351# String fields are copied into the matching ACPI member from lowest address 2352# upwards, and silently truncated / NUL-padded to length. 2353# 2354# @sig: table signature / identifier (4 bytes) 2355# 2356# @rev: table revision number (dependent on signature, 1 byte) 2357# 2358# @oem_id: OEM identifier (6 bytes) 2359# 2360# @oem_table_id: OEM table identifier (8 bytes) 2361# 2362# @oem_rev: OEM-supplied revision number (4 bytes) 2363# 2364# @asl_compiler_id: identifier of the utility that created the table 2365# (4 bytes) 2366# 2367# @asl_compiler_rev: revision number of the utility that created the 2368# table (4 bytes) 2369# 2370# @file: colon (:) separated list of pathnames to load and 2371# concatenate as table data. The resultant binary blob is expected to 2372# have an ACPI table header. At least one file is required. This field 2373# excludes @data. 2374# 2375# @data: colon (:) separated list of pathnames to load and 2376# concatenate as table data. The resultant binary blob must not have an 2377# ACPI table header. At least one file is required. This field excludes 2378# @file. 2379# 2380# Since: 1.5 2381## 2382{ 'struct': 'AcpiTableOptions', 2383 'data': { 2384 '*sig': 'str', 2385 '*rev': 'uint8', 2386 '*oem_id': 'str', 2387 '*oem_table_id': 'str', 2388 '*oem_rev': 'uint32', 2389 '*asl_compiler_id': 'str', 2390 '*asl_compiler_rev': 'uint32', 2391 '*file': 'str', 2392 '*data': 'str' }} 2393 2394## 2395# @CommandLineParameterType: 2396# 2397# Possible types for an option parameter. 2398# 2399# @string: accepts a character string 2400# 2401# @boolean: accepts "on" or "off" 2402# 2403# @number: accepts a number 2404# 2405# @size: accepts a number followed by an optional suffix (K)ilo, 2406# (M)ega, (G)iga, (T)era 2407# 2408# Since: 1.5 2409## 2410{ 'enum': 'CommandLineParameterType', 2411 'data': ['string', 'boolean', 'number', 'size'] } 2412 2413## 2414# @CommandLineParameterInfo: 2415# 2416# Details about a single parameter of a command line option. 2417# 2418# @name: parameter name 2419# 2420# @type: parameter @CommandLineParameterType 2421# 2422# @help: human readable text string, not suitable for parsing. 2423# 2424# @default: default value string (since 2.1) 2425# 2426# Since: 1.5 2427## 2428{ 'struct': 'CommandLineParameterInfo', 2429 'data': { 'name': 'str', 2430 'type': 'CommandLineParameterType', 2431 '*help': 'str', 2432 '*default': 'str' } } 2433 2434## 2435# @CommandLineOptionInfo: 2436# 2437# Details about a command line option, including its list of parameter details 2438# 2439# @option: option name 2440# 2441# @parameters: an array of @CommandLineParameterInfo 2442# 2443# Since: 1.5 2444## 2445{ 'struct': 'CommandLineOptionInfo', 2446 'data': { 'option': 'str', 'parameters': ['CommandLineParameterInfo'] } } 2447 2448## 2449# @query-command-line-options: 2450# 2451# Query command line option schema. 2452# 2453# @option: option name 2454# 2455# Returns: list of @CommandLineOptionInfo for all options (or for the given 2456# @option). Returns an error if the given @option doesn't exist. 2457# 2458# Since: 1.5 2459# 2460# Example: 2461# 2462# -> { "execute": "query-command-line-options", 2463# "arguments": { "option": "option-rom" } } 2464# <- { "return": [ 2465# { 2466# "parameters": [ 2467# { 2468# "name": "romfile", 2469# "type": "string" 2470# }, 2471# { 2472# "name": "bootindex", 2473# "type": "number" 2474# } 2475# ], 2476# "option": "option-rom" 2477# } 2478# ] 2479# } 2480# 2481## 2482{'command': 'query-command-line-options', 2483 'data': { '*option': 'str' }, 2484 'returns': ['CommandLineOptionInfo'], 2485 'allow-preconfig': true } 2486 2487## 2488# @X86CPURegister32: 2489# 2490# A X86 32-bit register 2491# 2492# Since: 1.5 2493## 2494{ 'enum': 'X86CPURegister32', 2495 'data': [ 'EAX', 'EBX', 'ECX', 'EDX', 'ESP', 'EBP', 'ESI', 'EDI' ] } 2496 2497## 2498# @X86CPUFeatureWordInfo: 2499# 2500# Information about a X86 CPU feature word 2501# 2502# @cpuid-input-eax: Input EAX value for CPUID instruction for that feature word 2503# 2504# @cpuid-input-ecx: Input ECX value for CPUID instruction for that 2505# feature word 2506# 2507# @cpuid-register: Output register containing the feature bits 2508# 2509# @features: value of output register, containing the feature bits 2510# 2511# Since: 1.5 2512## 2513{ 'struct': 'X86CPUFeatureWordInfo', 2514 'data': { 'cpuid-input-eax': 'int', 2515 '*cpuid-input-ecx': 'int', 2516 'cpuid-register': 'X86CPURegister32', 2517 'features': 'int' } } 2518 2519## 2520# @DummyForceArrays: 2521# 2522# Not used by QMP; hack to let us use X86CPUFeatureWordInfoList internally 2523# 2524# Since: 2.5 2525## 2526{ 'struct': 'DummyForceArrays', 2527 'data': { 'unused': ['X86CPUFeatureWordInfo'] } } 2528 2529 2530## 2531# @NumaOptionsType: 2532# 2533# @node: NUMA nodes configuration 2534# 2535# @dist: NUMA distance configuration (since 2.10) 2536# 2537# @cpu: property based CPU(s) to node mapping (Since: 2.10) 2538# 2539# Since: 2.1 2540## 2541{ 'enum': 'NumaOptionsType', 2542 'data': [ 'node', 'dist', 'cpu' ] } 2543 2544## 2545# @NumaOptions: 2546# 2547# A discriminated record of NUMA options. (for OptsVisitor) 2548# 2549# Since: 2.1 2550## 2551{ 'union': 'NumaOptions', 2552 'base': { 'type': 'NumaOptionsType' }, 2553 'discriminator': 'type', 2554 'data': { 2555 'node': 'NumaNodeOptions', 2556 'dist': 'NumaDistOptions', 2557 'cpu': 'NumaCpuOptions' }} 2558 2559## 2560# @NumaNodeOptions: 2561# 2562# Create a guest NUMA node. (for OptsVisitor) 2563# 2564# @nodeid: NUMA node ID (increase by 1 from 0 if omitted) 2565# 2566# @cpus: VCPUs belonging to this node (assign VCPUS round-robin 2567# if omitted) 2568# 2569# @mem: memory size of this node; mutually exclusive with @memdev. 2570# Equally divide total memory among nodes if both @mem and @memdev are 2571# omitted. 2572# 2573# @memdev: memory backend object. If specified for one node, 2574# it must be specified for all nodes. 2575# 2576# Since: 2.1 2577## 2578{ 'struct': 'NumaNodeOptions', 2579 'data': { 2580 '*nodeid': 'uint16', 2581 '*cpus': ['uint16'], 2582 '*mem': 'size', 2583 '*memdev': 'str' }} 2584 2585## 2586# @NumaDistOptions: 2587# 2588# Set the distance between 2 NUMA nodes. 2589# 2590# @src: source NUMA node. 2591# 2592# @dst: destination NUMA node. 2593# 2594# @val: NUMA distance from source node to destination node. 2595# When a node is unreachable from another node, set the distance 2596# between them to 255. 2597# 2598# Since: 2.10 2599## 2600{ 'struct': 'NumaDistOptions', 2601 'data': { 2602 'src': 'uint16', 2603 'dst': 'uint16', 2604 'val': 'uint8' }} 2605 2606## 2607# @NumaCpuOptions: 2608# 2609# Option "-numa cpu" overrides default cpu to node mapping. 2610# It accepts the same set of cpu properties as returned by 2611# query-hotpluggable-cpus[].props, where node-id could be used to 2612# override default node mapping. 2613# 2614# Since: 2.10 2615## 2616{ 'struct': 'NumaCpuOptions', 2617 'base': 'CpuInstanceProperties', 2618 'data' : {} } 2619 2620## 2621# @HostMemPolicy: 2622# 2623# Host memory policy types 2624# 2625# @default: restore default policy, remove any nondefault policy 2626# 2627# @preferred: set the preferred host nodes for allocation 2628# 2629# @bind: a strict policy that restricts memory allocation to the 2630# host nodes specified 2631# 2632# @interleave: memory allocations are interleaved across the set 2633# of host nodes specified 2634# 2635# Since: 2.1 2636## 2637{ 'enum': 'HostMemPolicy', 2638 'data': [ 'default', 'preferred', 'bind', 'interleave' ] } 2639 2640## 2641# @Memdev: 2642# 2643# Information about memory backend 2644# 2645# @id: backend's ID if backend has 'id' property (since 2.9) 2646# 2647# @size: memory backend size 2648# 2649# @merge: enables or disables memory merge support 2650# 2651# @dump: includes memory backend's memory in a core dump or not 2652# 2653# @prealloc: enables or disables memory preallocation 2654# 2655# @host-nodes: host nodes for its memory policy 2656# 2657# @policy: memory policy of memory backend 2658# 2659# Since: 2.1 2660## 2661{ 'struct': 'Memdev', 2662 'data': { 2663 '*id': 'str', 2664 'size': 'size', 2665 'merge': 'bool', 2666 'dump': 'bool', 2667 'prealloc': 'bool', 2668 'host-nodes': ['uint16'], 2669 'policy': 'HostMemPolicy' }} 2670 2671## 2672# @query-memdev: 2673# 2674# Returns information for all memory backends. 2675# 2676# Returns: a list of @Memdev. 2677# 2678# Since: 2.1 2679# 2680# Example: 2681# 2682# -> { "execute": "query-memdev" } 2683# <- { "return": [ 2684# { 2685# "id": "mem1", 2686# "size": 536870912, 2687# "merge": false, 2688# "dump": true, 2689# "prealloc": false, 2690# "host-nodes": [0, 1], 2691# "policy": "bind" 2692# }, 2693# { 2694# "size": 536870912, 2695# "merge": false, 2696# "dump": true, 2697# "prealloc": true, 2698# "host-nodes": [2, 3], 2699# "policy": "preferred" 2700# } 2701# ] 2702# } 2703# 2704## 2705{ 'command': 'query-memdev', 'returns': ['Memdev'], 'allow-preconfig': true } 2706 2707## 2708# @PCDIMMDeviceInfo: 2709# 2710# PCDIMMDevice state information 2711# 2712# @id: device's ID 2713# 2714# @addr: physical address, where device is mapped 2715# 2716# @size: size of memory that the device provides 2717# 2718# @slot: slot number at which device is plugged in 2719# 2720# @node: NUMA node number where device is plugged in 2721# 2722# @memdev: memory backend linked with device 2723# 2724# @hotplugged: true if device was hotplugged 2725# 2726# @hotpluggable: true if device if could be added/removed while machine is running 2727# 2728# Since: 2.1 2729## 2730{ 'struct': 'PCDIMMDeviceInfo', 2731 'data': { '*id': 'str', 2732 'addr': 'int', 2733 'size': 'int', 2734 'slot': 'int', 2735 'node': 'int', 2736 'memdev': 'str', 2737 'hotplugged': 'bool', 2738 'hotpluggable': 'bool' 2739 } 2740} 2741 2742## 2743# @MemoryDeviceInfo: 2744# 2745# Union containing information about a memory device 2746# 2747# Since: 2.1 2748## 2749{ 'union': 'MemoryDeviceInfo', 2750 'data': { 'dimm': 'PCDIMMDeviceInfo', 2751 'nvdimm': 'PCDIMMDeviceInfo' 2752 } 2753} 2754 2755## 2756# @query-memory-devices: 2757# 2758# Lists available memory devices and their state 2759# 2760# Since: 2.1 2761# 2762# Example: 2763# 2764# -> { "execute": "query-memory-devices" } 2765# <- { "return": [ { "data": 2766# { "addr": 5368709120, 2767# "hotpluggable": true, 2768# "hotplugged": true, 2769# "id": "d1", 2770# "memdev": "/objects/memX", 2771# "node": 0, 2772# "size": 1073741824, 2773# "slot": 0}, 2774# "type": "dimm" 2775# } ] } 2776# 2777## 2778{ 'command': 'query-memory-devices', 'returns': ['MemoryDeviceInfo'] } 2779 2780## 2781# @MEM_UNPLUG_ERROR: 2782# 2783# Emitted when memory hot unplug error occurs. 2784# 2785# @device: device name 2786# 2787# @msg: Informative message 2788# 2789# Since: 2.4 2790# 2791# Example: 2792# 2793# <- { "event": "MEM_UNPLUG_ERROR" 2794# "data": { "device": "dimm1", 2795# "msg": "acpi: device unplug for unsupported device" 2796# }, 2797# "timestamp": { "seconds": 1265044230, "microseconds": 450486 } } 2798# 2799## 2800{ 'event': 'MEM_UNPLUG_ERROR', 2801 'data': { 'device': 'str', 'msg': 'str' } } 2802 2803## 2804# @ACPISlotType: 2805# 2806# @DIMM: memory slot 2807# @CPU: logical CPU slot (since 2.7) 2808## 2809{ 'enum': 'ACPISlotType', 'data': [ 'DIMM', 'CPU' ] } 2810 2811## 2812# @ACPIOSTInfo: 2813# 2814# OSPM Status Indication for a device 2815# For description of possible values of @source and @status fields 2816# see "_OST (OSPM Status Indication)" chapter of ACPI5.0 spec. 2817# 2818# @device: device ID associated with slot 2819# 2820# @slot: slot ID, unique per slot of a given @slot-type 2821# 2822# @slot-type: type of the slot 2823# 2824# @source: an integer containing the source event 2825# 2826# @status: an integer containing the status code 2827# 2828# Since: 2.1 2829## 2830{ 'struct': 'ACPIOSTInfo', 2831 'data' : { '*device': 'str', 2832 'slot': 'str', 2833 'slot-type': 'ACPISlotType', 2834 'source': 'int', 2835 'status': 'int' } } 2836 2837## 2838# @query-acpi-ospm-status: 2839# 2840# Return a list of ACPIOSTInfo for devices that support status 2841# reporting via ACPI _OST method. 2842# 2843# Since: 2.1 2844# 2845# Example: 2846# 2847# -> { "execute": "query-acpi-ospm-status" } 2848# <- { "return": [ { "device": "d1", "slot": "0", "slot-type": "DIMM", "source": 1, "status": 0}, 2849# { "slot": "1", "slot-type": "DIMM", "source": 0, "status": 0}, 2850# { "slot": "2", "slot-type": "DIMM", "source": 0, "status": 0}, 2851# { "slot": "3", "slot-type": "DIMM", "source": 0, "status": 0} 2852# ]} 2853# 2854## 2855{ 'command': 'query-acpi-ospm-status', 'returns': ['ACPIOSTInfo'] } 2856 2857## 2858# @ACPI_DEVICE_OST: 2859# 2860# Emitted when guest executes ACPI _OST method. 2861# 2862# @info: OSPM Status Indication 2863# 2864# Since: 2.1 2865# 2866# Example: 2867# 2868# <- { "event": "ACPI_DEVICE_OST", 2869# "data": { "device": "d1", "slot": "0", 2870# "slot-type": "DIMM", "source": 1, "status": 0 } } 2871# 2872## 2873{ 'event': 'ACPI_DEVICE_OST', 2874 'data': { 'info': 'ACPIOSTInfo' } } 2875 2876## 2877# @RTC_CHANGE: 2878# 2879# Emitted when the guest changes the RTC time. 2880# 2881# @offset: offset between base RTC clock (as specified by -rtc base), and 2882# new RTC clock value. Note that value will be different depending 2883# on clock chosen to drive RTC (specified by -rtc clock). 2884# 2885# Note: This event is rate-limited. 2886# 2887# Since: 0.13.0 2888# 2889# Example: 2890# 2891# <- { "event": "RTC_CHANGE", 2892# "data": { "offset": 78 }, 2893# "timestamp": { "seconds": 1267020223, "microseconds": 435656 } } 2894# 2895## 2896{ 'event': 'RTC_CHANGE', 2897 'data': { 'offset': 'int' } } 2898 2899## 2900# @ReplayMode: 2901# 2902# Mode of the replay subsystem. 2903# 2904# @none: normal execution mode. Replay or record are not enabled. 2905# 2906# @record: record mode. All non-deterministic data is written into the 2907# replay log. 2908# 2909# @play: replay mode. Non-deterministic data required for system execution 2910# is read from the log. 2911# 2912# Since: 2.5 2913## 2914{ 'enum': 'ReplayMode', 2915 'data': [ 'none', 'record', 'play' ] } 2916 2917## 2918# @xen-load-devices-state: 2919# 2920# Load the state of all devices from file. The RAM and the block devices 2921# of the VM are not loaded by this command. 2922# 2923# @filename: the file to load the state of the devices from as binary 2924# data. See xen-save-devices-state.txt for a description of the binary 2925# format. 2926# 2927# Since: 2.7 2928# 2929# Example: 2930# 2931# -> { "execute": "xen-load-devices-state", 2932# "arguments": { "filename": "/tmp/resume" } } 2933# <- { "return": {} } 2934# 2935## 2936{ 'command': 'xen-load-devices-state', 'data': {'filename': 'str'} } 2937 2938## 2939# @CpuInstanceProperties: 2940# 2941# List of properties to be used for hotplugging a CPU instance, 2942# it should be passed by management with device_add command when 2943# a CPU is being hotplugged. 2944# 2945# @node-id: NUMA node ID the CPU belongs to 2946# @socket-id: socket number within node/board the CPU belongs to 2947# @core-id: core number within socket the CPU belongs to 2948# @thread-id: thread number within core the CPU belongs to 2949# 2950# Note: currently there are 4 properties that could be present 2951# but management should be prepared to pass through other 2952# properties with device_add command to allow for future 2953# interface extension. This also requires the filed names to be kept in 2954# sync with the properties passed to -device/device_add. 2955# 2956# Since: 2.7 2957## 2958{ 'struct': 'CpuInstanceProperties', 2959 'data': { '*node-id': 'int', 2960 '*socket-id': 'int', 2961 '*core-id': 'int', 2962 '*thread-id': 'int' 2963 } 2964} 2965 2966## 2967# @HotpluggableCPU: 2968# 2969# @type: CPU object type for usage with device_add command 2970# @props: list of properties to be used for hotplugging CPU 2971# @vcpus-count: number of logical VCPU threads @HotpluggableCPU provides 2972# @qom-path: link to existing CPU object if CPU is present or 2973# omitted if CPU is not present. 2974# 2975# Since: 2.7 2976## 2977{ 'struct': 'HotpluggableCPU', 2978 'data': { 'type': 'str', 2979 'vcpus-count': 'int', 2980 'props': 'CpuInstanceProperties', 2981 '*qom-path': 'str' 2982 } 2983} 2984 2985## 2986# @query-hotpluggable-cpus: 2987# 2988# TODO: Better documentation; currently there is none. 2989# 2990# Returns: a list of HotpluggableCPU objects. 2991# 2992# Since: 2.7 2993# 2994# Example: 2995# 2996# For pseries machine type started with -smp 2,cores=2,maxcpus=4 -cpu POWER8: 2997# 2998# -> { "execute": "query-hotpluggable-cpus" } 2999# <- {"return": [ 3000# { "props": { "core": 8 }, "type": "POWER8-spapr-cpu-core", 3001# "vcpus-count": 1 }, 3002# { "props": { "core": 0 }, "type": "POWER8-spapr-cpu-core", 3003# "vcpus-count": 1, "qom-path": "/machine/unattached/device[0]"} 3004# ]}' 3005# 3006# For pc machine type started with -smp 1,maxcpus=2: 3007# 3008# -> { "execute": "query-hotpluggable-cpus" } 3009# <- {"return": [ 3010# { 3011# "type": "qemu64-x86_64-cpu", "vcpus-count": 1, 3012# "props": {"core-id": 0, "socket-id": 1, "thread-id": 0} 3013# }, 3014# { 3015# "qom-path": "/machine/unattached/device[0]", 3016# "type": "qemu64-x86_64-cpu", "vcpus-count": 1, 3017# "props": {"core-id": 0, "socket-id": 0, "thread-id": 0} 3018# } 3019# ]} 3020# 3021# For s390x-virtio-ccw machine type started with -smp 1,maxcpus=2 -cpu qemu 3022# (Since: 2.11): 3023# 3024# -> { "execute": "query-hotpluggable-cpus" } 3025# <- {"return": [ 3026# { 3027# "type": "qemu-s390x-cpu", "vcpus-count": 1, 3028# "props": { "core-id": 1 } 3029# }, 3030# { 3031# "qom-path": "/machine/unattached/device[0]", 3032# "type": "qemu-s390x-cpu", "vcpus-count": 1, 3033# "props": { "core-id": 0 } 3034# } 3035# ]} 3036# 3037## 3038{ 'command': 'query-hotpluggable-cpus', 'returns': ['HotpluggableCPU'], 3039 'allow-preconfig': true } 3040 3041## 3042# @GuidInfo: 3043# 3044# GUID information. 3045# 3046# @guid: the globally unique identifier 3047# 3048# Since: 2.9 3049## 3050{ 'struct': 'GuidInfo', 'data': {'guid': 'str'} } 3051 3052## 3053# @query-vm-generation-id: 3054# 3055# Show Virtual Machine Generation ID 3056# 3057# Since: 2.9 3058## 3059{ 'command': 'query-vm-generation-id', 'returns': 'GuidInfo' } 3060 3061## 3062# @set-numa-node: 3063# 3064# Runtime equivalent of '-numa' CLI option, available at 3065# preconfigure stage to configure numa mapping before initializing 3066# machine. 3067# 3068# Since 3.0 3069## 3070{ 'command': 'set-numa-node', 'boxed': true, 3071 'data': 'NumaOptions', 3072 'allow-preconfig': true 3073} 3074