1# -*- Mode: Python -*- 2# 3# QAPI Schema 4 5# QAPI common definitions 6{ 'include': 'qapi/common.json' } 7 8# QAPI crypto definitions 9{ 'include': 'qapi/crypto.json' } 10 11# QAPI block definitions 12{ 'include': 'qapi/block.json' } 13 14# QAPI event definitions 15{ 'include': 'qapi/event.json' } 16 17# Tracing commands 18{ 'include': 'qapi/trace.json' } 19 20# QAPI introspection 21{ 'include': 'qapi/introspect.json' } 22 23## 24# @LostTickPolicy: 25# 26# Policy for handling lost ticks in timer devices. 27# 28# @discard: throw away the missed tick(s) and continue with future injection 29# normally. Guest time may be delayed, unless the OS has explicit 30# handling of lost ticks 31# 32# @delay: continue to deliver ticks at the normal rate. Guest time will be 33# delayed due to the late tick 34# 35# @merge: merge the missed tick(s) into one tick and inject. Guest time 36# may be delayed, depending on how the OS reacts to the merging 37# of ticks 38# 39# @slew: deliver ticks at a higher rate to catch up with the missed tick. The 40# guest time should not be delayed once catchup is complete. 41# 42# Since: 2.0 43## 44{ 'enum': 'LostTickPolicy', 45 'data': ['discard', 'delay', 'merge', 'slew' ] } 46 47# @add_client 48# 49# Allow client connections for VNC, Spice and socket based 50# character devices to be passed in to QEMU via SCM_RIGHTS. 51# 52# @protocol: protocol name. Valid names are "vnc", "spice" or the 53# name of a character device (eg. from -chardev id=XXXX) 54# 55# @fdname: file descriptor name previously passed via 'getfd' command 56# 57# @skipauth: #optional whether to skip authentication. Only applies 58# to "vnc" and "spice" protocols 59# 60# @tls: #optional whether to perform TLS. Only applies to the "spice" 61# protocol 62# 63# Returns: nothing on success. 64# 65# Since: 0.14.0 66## 67{ 'command': 'add_client', 68 'data': { 'protocol': 'str', 'fdname': 'str', '*skipauth': 'bool', 69 '*tls': 'bool' } } 70 71## 72# @NameInfo: 73# 74# Guest name information. 75# 76# @name: #optional The name of the guest 77# 78# Since 0.14.0 79## 80{ 'struct': 'NameInfo', 'data': {'*name': 'str'} } 81 82## 83# @query-name: 84# 85# Return the name information of a guest. 86# 87# Returns: @NameInfo of the guest 88# 89# Since 0.14.0 90## 91{ 'command': 'query-name', 'returns': 'NameInfo' } 92 93## 94# @KvmInfo: 95# 96# Information about support for KVM acceleration 97# 98# @enabled: true if KVM acceleration is active 99# 100# @present: true if KVM acceleration is built into this executable 101# 102# Since: 0.14.0 103## 104{ 'struct': 'KvmInfo', 'data': {'enabled': 'bool', 'present': 'bool'} } 105 106## 107# @query-kvm: 108# 109# Returns information about KVM acceleration 110# 111# Returns: @KvmInfo 112# 113# Since: 0.14.0 114## 115{ 'command': 'query-kvm', 'returns': 'KvmInfo' } 116 117## 118# @RunState 119# 120# An enumeration of VM run states. 121# 122# @debug: QEMU is running on a debugger 123# 124# @finish-migrate: guest is paused to finish the migration process 125# 126# @inmigrate: guest is paused waiting for an incoming migration. Note 127# that this state does not tell whether the machine will start at the 128# end of the migration. This depends on the command-line -S option and 129# any invocation of 'stop' or 'cont' that has happened since QEMU was 130# started. 131# 132# @internal-error: An internal error that prevents further guest execution 133# has occurred 134# 135# @io-error: the last IOP has failed and the device is configured to pause 136# on I/O errors 137# 138# @paused: guest has been paused via the 'stop' command 139# 140# @postmigrate: guest is paused following a successful 'migrate' 141# 142# @prelaunch: QEMU was started with -S and guest has not started 143# 144# @restore-vm: guest is paused to restore VM state 145# 146# @running: guest is actively running 147# 148# @save-vm: guest is paused to save the VM state 149# 150# @shutdown: guest is shut down (and -no-shutdown is in use) 151# 152# @suspended: guest is suspended (ACPI S3) 153# 154# @watchdog: the watchdog action is configured to pause and has been triggered 155# 156# @guest-panicked: guest has been panicked as a result of guest OS panic 157## 158{ 'enum': 'RunState', 159 'data': [ 'debug', 'inmigrate', 'internal-error', 'io-error', 'paused', 160 'postmigrate', 'prelaunch', 'finish-migrate', 'restore-vm', 161 'running', 'save-vm', 'shutdown', 'suspended', 'watchdog', 162 'guest-panicked' ] } 163 164## 165# @StatusInfo: 166# 167# Information about VCPU run state 168# 169# @running: true if all VCPUs are runnable, false if not runnable 170# 171# @singlestep: true if VCPUs are in single-step mode 172# 173# @status: the virtual machine @RunState 174# 175# Since: 0.14.0 176# 177# Notes: @singlestep is enabled through the GDB stub 178## 179{ 'struct': 'StatusInfo', 180 'data': {'running': 'bool', 'singlestep': 'bool', 'status': 'RunState'} } 181 182## 183# @query-status: 184# 185# Query the run status of all VCPUs 186# 187# Returns: @StatusInfo reflecting all VCPUs 188# 189# Since: 0.14.0 190## 191{ 'command': 'query-status', 'returns': 'StatusInfo' } 192 193## 194# @UuidInfo: 195# 196# Guest UUID information. 197# 198# @UUID: the UUID of the guest 199# 200# Since: 0.14.0 201# 202# Notes: If no UUID was specified for the guest, a null UUID is returned. 203## 204{ 'struct': 'UuidInfo', 'data': {'UUID': 'str'} } 205 206## 207# @query-uuid: 208# 209# Query the guest UUID information. 210# 211# Returns: The @UuidInfo for the guest 212# 213# Since 0.14.0 214## 215{ 'command': 'query-uuid', 'returns': 'UuidInfo' } 216 217## 218# @ChardevInfo: 219# 220# Information about a character device. 221# 222# @label: the label of the character device 223# 224# @filename: the filename of the character device 225# 226# @frontend-open: shows whether the frontend device attached to this backend 227# (eg. with the chardev=... option) is in open or closed state 228# (since 2.1) 229# 230# Notes: @filename is encoded using the QEMU command line character device 231# encoding. See the QEMU man page for details. 232# 233# Since: 0.14.0 234## 235{ 'struct': 'ChardevInfo', 'data': {'label': 'str', 236 'filename': 'str', 237 'frontend-open': 'bool'} } 238 239## 240# @query-chardev: 241# 242# Returns information about current character devices. 243# 244# Returns: a list of @ChardevInfo 245# 246# Since: 0.14.0 247## 248{ 'command': 'query-chardev', 'returns': ['ChardevInfo'] } 249 250## 251# @ChardevBackendInfo: 252# 253# Information about a character device backend 254# 255# @name: The backend name 256# 257# Since: 2.0 258## 259{ 'struct': 'ChardevBackendInfo', 'data': {'name': 'str'} } 260 261## 262# @query-chardev-backends: 263# 264# Returns information about character device backends. 265# 266# Returns: a list of @ChardevBackendInfo 267# 268# Since: 2.0 269## 270{ 'command': 'query-chardev-backends', 'returns': ['ChardevBackendInfo'] } 271 272## 273# @DataFormat: 274# 275# An enumeration of data format. 276# 277# @utf8: Data is a UTF-8 string (RFC 3629) 278# 279# @base64: Data is Base64 encoded binary (RFC 3548) 280# 281# Since: 1.4 282## 283{ 'enum': 'DataFormat', 284 'data': [ 'utf8', 'base64' ] } 285 286## 287# @ringbuf-write: 288# 289# Write to a ring buffer character device. 290# 291# @device: the ring buffer character device name 292# 293# @data: data to write 294# 295# @format: #optional data encoding (default 'utf8'). 296# - base64: data must be base64 encoded text. Its binary 297# decoding gets written. 298# - utf8: data's UTF-8 encoding is written 299# - data itself is always Unicode regardless of format, like 300# any other string. 301# 302# Returns: Nothing on success 303# 304# Since: 1.4 305## 306{ 'command': 'ringbuf-write', 307 'data': {'device': 'str', 'data': 'str', 308 '*format': 'DataFormat'} } 309 310## 311# @ringbuf-read: 312# 313# Read from a ring buffer character device. 314# 315# @device: the ring buffer character device name 316# 317# @size: how many bytes to read at most 318# 319# @format: #optional data encoding (default 'utf8'). 320# - base64: the data read is returned in base64 encoding. 321# - utf8: the data read is interpreted as UTF-8. 322# Bug: can screw up when the buffer contains invalid UTF-8 323# sequences, NUL characters, after the ring buffer lost 324# data, and when reading stops because the size limit is 325# reached. 326# - The return value is always Unicode regardless of format, 327# like any other string. 328# 329# Returns: data read from the device 330# 331# Since: 1.4 332## 333{ 'command': 'ringbuf-read', 334 'data': {'device': 'str', 'size': 'int', '*format': 'DataFormat'}, 335 'returns': 'str' } 336 337## 338# @EventInfo: 339# 340# Information about a QMP event 341# 342# @name: The event name 343# 344# Since: 1.2.0 345## 346{ 'struct': 'EventInfo', 'data': {'name': 'str'} } 347 348## 349# @query-events: 350# 351# Return a list of supported QMP events by this server 352# 353# Returns: A list of @EventInfo for all supported events 354# 355# Since: 1.2.0 356## 357{ 'command': 'query-events', 'returns': ['EventInfo'] } 358 359## 360# @MigrationStats 361# 362# Detailed migration status. 363# 364# @transferred: amount of bytes already transferred to the target VM 365# 366# @remaining: amount of bytes remaining to be transferred to the target VM 367# 368# @total: total amount of bytes involved in the migration process 369# 370# @duplicate: number of duplicate (zero) pages (since 1.2) 371# 372# @skipped: number of skipped zero pages (since 1.5) 373# 374# @normal : number of normal pages (since 1.2) 375# 376# @normal-bytes: number of normal bytes sent (since 1.2) 377# 378# @dirty-pages-rate: number of pages dirtied by second by the 379# guest (since 1.3) 380# 381# @mbps: throughput in megabits/sec. (since 1.6) 382# 383# @dirty-sync-count: number of times that dirty ram was synchronized (since 2.1) 384# 385# Since: 0.14.0 386## 387{ 'struct': 'MigrationStats', 388 'data': {'transferred': 'int', 'remaining': 'int', 'total': 'int' , 389 'duplicate': 'int', 'skipped': 'int', 'normal': 'int', 390 'normal-bytes': 'int', 'dirty-pages-rate' : 'int', 391 'mbps' : 'number', 'dirty-sync-count' : 'int' } } 392 393## 394# @XBZRLECacheStats 395# 396# Detailed XBZRLE migration cache statistics 397# 398# @cache-size: XBZRLE cache size 399# 400# @bytes: amount of bytes already transferred to the target VM 401# 402# @pages: amount of pages transferred to the target VM 403# 404# @cache-miss: number of cache miss 405# 406# @cache-miss-rate: rate of cache miss (since 2.1) 407# 408# @overflow: number of overflows 409# 410# Since: 1.2 411## 412{ 'struct': 'XBZRLECacheStats', 413 'data': {'cache-size': 'int', 'bytes': 'int', 'pages': 'int', 414 'cache-miss': 'int', 'cache-miss-rate': 'number', 415 'overflow': 'int' } } 416 417# @MigrationStatus: 418# 419# An enumeration of migration status. 420# 421# @none: no migration has ever happened. 422# 423# @setup: migration process has been initiated. 424# 425# @cancelling: in the process of cancelling migration. 426# 427# @cancelled: cancelling migration is finished. 428# 429# @active: in the process of doing migration. 430# 431# @postcopy-active: like active, but now in postcopy mode. (since 2.5) 432# 433# @completed: migration is finished. 434# 435# @failed: some error occurred during migration process. 436# 437# Since: 2.3 438# 439## 440{ 'enum': 'MigrationStatus', 441 'data': [ 'none', 'setup', 'cancelling', 'cancelled', 442 'active', 'postcopy-active', 'completed', 'failed' ] } 443 444## 445# @MigrationInfo 446# 447# Information about current migration process. 448# 449# @status: #optional @MigrationStatus describing the current migration status. 450# If this field is not returned, no migration process 451# has been initiated 452# 453# @ram: #optional @MigrationStats containing detailed migration 454# status, only returned if status is 'active' or 455# 'completed'(since 1.2) 456# 457# @disk: #optional @MigrationStats containing detailed disk migration 458# status, only returned if status is 'active' and it is a block 459# migration 460# 461# @xbzrle-cache: #optional @XBZRLECacheStats containing detailed XBZRLE 462# migration statistics, only returned if XBZRLE feature is on and 463# status is 'active' or 'completed' (since 1.2) 464# 465# @total-time: #optional total amount of milliseconds since migration started. 466# If migration has ended, it returns the total migration 467# time. (since 1.2) 468# 469# @downtime: #optional only present when migration finishes correctly 470# total downtime in milliseconds for the guest. 471# (since 1.3) 472# 473# @expected-downtime: #optional only present while migration is active 474# expected downtime in milliseconds for the guest in last walk 475# of the dirty bitmap. (since 1.3) 476# 477# @setup-time: #optional amount of setup time in milliseconds _before_ the 478# iterations begin but _after_ the QMP command is issued. This is designed 479# to provide an accounting of any activities (such as RDMA pinning) which 480# may be expensive, but do not actually occur during the iterative 481# migration rounds themselves. (since 1.6) 482# 483# @x-cpu-throttle-percentage: #optional percentage of time guest cpus are being 484# throttled during auto-converge. This is only present when auto-converge 485# has started throttling guest cpus. (Since 2.5) 486# 487# Since: 0.14.0 488## 489{ 'struct': 'MigrationInfo', 490 'data': {'*status': 'MigrationStatus', '*ram': 'MigrationStats', 491 '*disk': 'MigrationStats', 492 '*xbzrle-cache': 'XBZRLECacheStats', 493 '*total-time': 'int', 494 '*expected-downtime': 'int', 495 '*downtime': 'int', 496 '*setup-time': 'int', 497 '*x-cpu-throttle-percentage': 'int'} } 498 499## 500# @query-migrate 501# 502# Returns information about current migration process. 503# 504# Returns: @MigrationInfo 505# 506# Since: 0.14.0 507## 508{ 'command': 'query-migrate', 'returns': 'MigrationInfo' } 509 510## 511# @MigrationCapability 512# 513# Migration capabilities enumeration 514# 515# @xbzrle: Migration supports xbzrle (Xor Based Zero Run Length Encoding). 516# This feature allows us to minimize migration traffic for certain work 517# loads, by sending compressed difference of the pages 518# 519# @rdma-pin-all: Controls whether or not the entire VM memory footprint is 520# mlock()'d on demand or all at once. Refer to docs/rdma.txt for usage. 521# Disabled by default. (since 2.0) 522# 523# @zero-blocks: During storage migration encode blocks of zeroes efficiently. This 524# essentially saves 1MB of zeroes per block on the wire. Enabling requires 525# source and target VM to support this feature. To enable it is sufficient 526# to enable the capability on the source VM. The feature is disabled by 527# default. (since 1.6) 528# 529# @compress: Use multiple compression threads to accelerate live migration. 530# This feature can help to reduce the migration traffic, by sending 531# compressed pages. Please note that if compress and xbzrle are both 532# on, compress only takes effect in the ram bulk stage, after that, 533# it will be disabled and only xbzrle takes effect, this can help to 534# minimize migration traffic. The feature is disabled by default. 535# (since 2.4 ) 536# 537# @events: generate events for each migration state change 538# (since 2.4 ) 539# 540# @auto-converge: If enabled, QEMU will automatically throttle down the guest 541# to speed up convergence of RAM migration. (since 1.6) 542# 543# @postcopy-ram: Start executing on the migration target before all of RAM has 544# been migrated, pulling the remaining pages along as needed. NOTE: If 545# the migration fails during postcopy the VM will fail. (since 2.6) 546# 547# Since: 1.2 548## 549{ 'enum': 'MigrationCapability', 550 'data': ['xbzrle', 'rdma-pin-all', 'auto-converge', 'zero-blocks', 551 'compress', 'events', 'postcopy-ram'] } 552 553## 554# @MigrationCapabilityStatus 555# 556# Migration capability information 557# 558# @capability: capability enum 559# 560# @state: capability state bool 561# 562# Since: 1.2 563## 564{ 'struct': 'MigrationCapabilityStatus', 565 'data': { 'capability' : 'MigrationCapability', 'state' : 'bool' } } 566 567## 568# @migrate-set-capabilities 569# 570# Enable/Disable the following migration capabilities (like xbzrle) 571# 572# @capabilities: json array of capability modifications to make 573# 574# Since: 1.2 575## 576{ 'command': 'migrate-set-capabilities', 577 'data': { 'capabilities': ['MigrationCapabilityStatus'] } } 578 579## 580# @query-migrate-capabilities 581# 582# Returns information about the current migration capabilities status 583# 584# Returns: @MigrationCapabilitiesStatus 585# 586# Since: 1.2 587## 588{ 'command': 'query-migrate-capabilities', 'returns': ['MigrationCapabilityStatus']} 589 590# @MigrationParameter 591# 592# Migration parameters enumeration 593# 594# @compress-level: Set the compression level to be used in live migration, 595# the compression level is an integer between 0 and 9, where 0 means 596# no compression, 1 means the best compression speed, and 9 means best 597# compression ratio which will consume more CPU. 598# 599# @compress-threads: Set compression thread count to be used in live migration, 600# the compression thread count is an integer between 1 and 255. 601# 602# @decompress-threads: Set decompression thread count to be used in live 603# migration, the decompression thread count is an integer between 1 604# and 255. Usually, decompression is at least 4 times as fast as 605# compression, so set the decompress-threads to the number about 1/4 606# of compress-threads is adequate. 607# 608# @x-cpu-throttle-initial: Initial percentage of time guest cpus are throttled 609# when migration auto-converge is activated. The 610# default value is 20. (Since 2.5) 611# 612# @x-cpu-throttle-increment: throttle percentage increase each time 613# auto-converge detects that migration is not making 614# progress. The default value is 10. (Since 2.5) 615# Since: 2.4 616## 617{ 'enum': 'MigrationParameter', 618 'data': ['compress-level', 'compress-threads', 'decompress-threads', 619 'x-cpu-throttle-initial', 'x-cpu-throttle-increment'] } 620 621# 622# @migrate-set-parameters 623# 624# Set the following migration parameters 625# 626# @compress-level: compression level 627# 628# @compress-threads: compression thread count 629# 630# @decompress-threads: decompression thread count 631# 632# @x-cpu-throttle-initial: Initial percentage of time guest cpus are throttled 633# when migration auto-converge is activated. The 634# default value is 20. (Since 2.5) 635# 636# @x-cpu-throttle-increment: throttle percentage increase each time 637# auto-converge detects that migration is not making 638# progress. The default value is 10. (Since 2.5) 639# Since: 2.4 640## 641{ 'command': 'migrate-set-parameters', 642 'data': { '*compress-level': 'int', 643 '*compress-threads': 'int', 644 '*decompress-threads': 'int', 645 '*x-cpu-throttle-initial': 'int', 646 '*x-cpu-throttle-increment': 'int'} } 647 648# 649# @MigrationParameters 650# 651# @compress-level: compression level 652# 653# @compress-threads: compression thread count 654# 655# @decompress-threads: decompression thread count 656# 657# @x-cpu-throttle-initial: Initial percentage of time guest cpus are throttled 658# when migration auto-converge is activated. The 659# default value is 20. (Since 2.5) 660# 661# @x-cpu-throttle-increment: throttle percentage increase each time 662# auto-converge detects that migration is not making 663# progress. The default value is 10. (Since 2.5) 664# 665# Since: 2.4 666## 667{ 'struct': 'MigrationParameters', 668 'data': { 'compress-level': 'int', 669 'compress-threads': 'int', 670 'decompress-threads': 'int', 671 'x-cpu-throttle-initial': 'int', 672 'x-cpu-throttle-increment': 'int'} } 673## 674# @query-migrate-parameters 675# 676# Returns information about the current migration parameters 677# 678# Returns: @MigrationParameters 679# 680# Since: 2.4 681## 682{ 'command': 'query-migrate-parameters', 683 'returns': 'MigrationParameters' } 684 685## 686# @client_migrate_info 687# 688# Set migration information for remote display. This makes the server 689# ask the client to automatically reconnect using the new parameters 690# once migration finished successfully. Only implemented for SPICE. 691# 692# @protocol: must be "spice" 693# @hostname: migration target hostname 694# @port: #optional spice tcp port for plaintext channels 695# @tls-port: #optional spice tcp port for tls-secured channels 696# @cert-subject: #optional server certificate subject 697# 698# Since: 0.14.0 699## 700{ 'command': 'client_migrate_info', 701 'data': { 'protocol': 'str', 'hostname': 'str', '*port': 'int', 702 '*tls-port': 'int', '*cert-subject': 'str' } } 703 704## 705# @migrate-start-postcopy 706# 707# Followup to a migration command to switch the migration to postcopy mode. 708# The postcopy-ram capability must be set before the original migration 709# command. 710# 711# Since: 2.5 712{ 'command': 'migrate-start-postcopy' } 713 714## 715# @MouseInfo: 716# 717# Information about a mouse device. 718# 719# @name: the name of the mouse device 720# 721# @index: the index of the mouse device 722# 723# @current: true if this device is currently receiving mouse events 724# 725# @absolute: true if this device supports absolute coordinates as input 726# 727# Since: 0.14.0 728## 729{ 'struct': 'MouseInfo', 730 'data': {'name': 'str', 'index': 'int', 'current': 'bool', 731 'absolute': 'bool'} } 732 733## 734# @query-mice: 735# 736# Returns information about each active mouse device 737# 738# Returns: a list of @MouseInfo for each device 739# 740# Since: 0.14.0 741## 742{ 'command': 'query-mice', 'returns': ['MouseInfo'] } 743 744## 745# @CpuInfoArch: 746# 747# An enumeration of cpu types that enable additional information during 748# @query-cpus. 749# 750# Since: 2.6 751## 752{ 'enum': 'CpuInfoArch', 753 'data': ['x86', 'sparc', 'ppc', 'mips', 'tricore', 'other' ] } 754 755## 756# @CpuInfo: 757# 758# Information about a virtual CPU 759# 760# @CPU: the index of the virtual CPU 761# 762# @current: this only exists for backwards compatibility and should be ignored 763# 764# @halted: true if the virtual CPU is in the halt state. Halt usually refers 765# to a processor specific low power mode. 766# 767# @qom_path: path to the CPU object in the QOM tree (since 2.4) 768# 769# @thread_id: ID of the underlying host thread 770# 771# @arch: architecture of the cpu, which determines which additional fields 772# will be listed (since 2.6) 773# 774# Since: 0.14.0 775# 776# Notes: @halted is a transient state that changes frequently. By the time the 777# data is sent to the client, the guest may no longer be halted. 778## 779{ 'union': 'CpuInfo', 780 'base': {'CPU': 'int', 'current': 'bool', 'halted': 'bool', 781 'qom_path': 'str', 'thread_id': 'int', 'arch': 'CpuInfoArch' }, 782 'discriminator': 'arch', 783 'data': { 'x86': 'CpuInfoX86', 784 'sparc': 'CpuInfoSPARC', 785 'ppc': 'CpuInfoPPC', 786 'mips': 'CpuInfoMIPS', 787 'tricore': 'CpuInfoTricore', 788 'other': 'CpuInfoOther' } } 789 790## 791# @CpuInfoX86: 792# 793# Additional information about a virtual i386 or x86_64 CPU 794# 795# @pc: the 64-bit instruction pointer 796# 797# Since 2.6 798## 799{ 'struct': 'CpuInfoX86', 'data': { 'pc': 'int' } } 800 801## 802# @CpuInfoSPARC: 803# 804# Additional information about a virtual SPARC CPU 805# 806# @pc: the PC component of the instruction pointer 807# 808# @npc: the NPC component of the instruction pointer 809# 810# Since 2.6 811## 812{ 'struct': 'CpuInfoSPARC', 'data': { 'pc': 'int', 'npc': 'int' } } 813 814## 815# @CpuInfoPPC: 816# 817# Additional information about a virtual PPC CPU 818# 819# @nip: the instruction pointer 820# 821# Since 2.6 822## 823{ 'struct': 'CpuInfoPPC', 'data': { 'nip': 'int' } } 824 825## 826# @CpuInfoMIPS: 827# 828# Additional information about a virtual MIPS CPU 829# 830# @PC: the instruction pointer 831# 832# Since 2.6 833## 834{ 'struct': 'CpuInfoMIPS', 'data': { 'PC': 'int' } } 835 836## 837# @CpuInfoTricore: 838# 839# Additional information about a virtual Tricore CPU 840# 841# @PC: the instruction pointer 842# 843# Since 2.6 844## 845{ 'struct': 'CpuInfoTricore', 'data': { 'PC': 'int' } } 846 847## 848# @CpuInfoOther: 849# 850# No additional information is available about the virtual CPU 851# 852# Since 2.6 853# 854## 855{ 'struct': 'CpuInfoOther', 'data': { } } 856 857## 858# @query-cpus: 859# 860# Returns a list of information about each virtual CPU. 861# 862# Returns: a list of @CpuInfo for each virtual CPU 863# 864# Since: 0.14.0 865## 866{ 'command': 'query-cpus', 'returns': ['CpuInfo'] } 867 868## 869# @IOThreadInfo: 870# 871# Information about an iothread 872# 873# @id: the identifier of the iothread 874# 875# @thread-id: ID of the underlying host thread 876# 877# Since: 2.0 878## 879{ 'struct': 'IOThreadInfo', 880 'data': {'id': 'str', 'thread-id': 'int'} } 881 882## 883# @query-iothreads: 884# 885# Returns a list of information about each iothread. 886# 887# Note this list excludes the QEMU main loop thread, which is not declared 888# using the -object iothread command-line option. It is always the main thread 889# of the process. 890# 891# Returns: a list of @IOThreadInfo for each iothread 892# 893# Since: 2.0 894## 895{ 'command': 'query-iothreads', 'returns': ['IOThreadInfo'] } 896 897## 898# @NetworkAddressFamily 899# 900# The network address family 901# 902# @ipv4: IPV4 family 903# 904# @ipv6: IPV6 family 905# 906# @unix: unix socket 907# 908# @unknown: otherwise 909# 910# Since: 2.1 911## 912{ 'enum': 'NetworkAddressFamily', 913 'data': [ 'ipv4', 'ipv6', 'unix', 'unknown' ] } 914 915## 916# @VncBasicInfo 917# 918# The basic information for vnc network connection 919# 920# @host: IP address 921# 922# @service: The service name of the vnc port. This may depend on the host 923# system's service database so symbolic names should not be relied 924# on. 925# 926# @family: address family 927# 928# @websocket: true in case the socket is a websocket (since 2.3). 929# 930# Since: 2.1 931## 932{ 'struct': 'VncBasicInfo', 933 'data': { 'host': 'str', 934 'service': 'str', 935 'family': 'NetworkAddressFamily', 936 'websocket': 'bool' } } 937 938## 939# @VncServerInfo 940# 941# The network connection information for server 942# 943# @auth: #optional, authentication method 944# 945# Since: 2.1 946## 947{ 'struct': 'VncServerInfo', 948 'base': 'VncBasicInfo', 949 'data': { '*auth': 'str' } } 950 951## 952# @VncClientInfo: 953# 954# Information about a connected VNC client. 955# 956# @x509_dname: #optional If x509 authentication is in use, the Distinguished 957# Name of the client. 958# 959# @sasl_username: #optional If SASL authentication is in use, the SASL username 960# used for authentication. 961# 962# Since: 0.14.0 963## 964{ 'struct': 'VncClientInfo', 965 'base': 'VncBasicInfo', 966 'data': { '*x509_dname': 'str', '*sasl_username': 'str' } } 967 968## 969# @VncInfo: 970# 971# Information about the VNC session. 972# 973# @enabled: true if the VNC server is enabled, false otherwise 974# 975# @host: #optional The hostname the VNC server is bound to. This depends on 976# the name resolution on the host and may be an IP address. 977# 978# @family: #optional 'ipv6' if the host is listening for IPv6 connections 979# 'ipv4' if the host is listening for IPv4 connections 980# 'unix' if the host is listening on a unix domain socket 981# 'unknown' otherwise 982# 983# @service: #optional The service name of the server's port. This may depends 984# on the host system's service database so symbolic names should not 985# be relied on. 986# 987# @auth: #optional the current authentication type used by the server 988# 'none' if no authentication is being used 989# 'vnc' if VNC authentication is being used 990# 'vencrypt+plain' if VEncrypt is used with plain text authentication 991# 'vencrypt+tls+none' if VEncrypt is used with TLS and no authentication 992# 'vencrypt+tls+vnc' if VEncrypt is used with TLS and VNC authentication 993# 'vencrypt+tls+plain' if VEncrypt is used with TLS and plain text auth 994# 'vencrypt+x509+none' if VEncrypt is used with x509 and no auth 995# 'vencrypt+x509+vnc' if VEncrypt is used with x509 and VNC auth 996# 'vencrypt+x509+plain' if VEncrypt is used with x509 and plain text auth 997# 'vencrypt+tls+sasl' if VEncrypt is used with TLS and SASL auth 998# 'vencrypt+x509+sasl' if VEncrypt is used with x509 and SASL auth 999# 1000# @clients: a list of @VncClientInfo of all currently connected clients
1001# 1002# Since: 0.14.0 1003## 1004{ 'struct': 'VncInfo', 1005 'data': {'enabled': 'bool', '*host': 'str', 1006 '*family': 'NetworkAddressFamily', 1007 '*service': 'str', '*auth': 'str', '*clients': ['VncClientInfo']} } 1008 1009## 1010# @VncPriAuth: 1011# 1012# vnc primary authentication method. 1013# 1014# Since: 2.3 1015## 1016{ 'enum': 'VncPrimaryAuth', 1017 'data': [ 'none', 'vnc', 'ra2', 'ra2ne', 'tight', 'ultra', 1018 'tls', 'vencrypt', 'sasl' ] } 1019 1020## 1021# @VncVencryptSubAuth: 1022# 1023# vnc sub authentication method with vencrypt. 1024# 1025# Since: 2.3 1026## 1027{ 'enum': 'VncVencryptSubAuth', 1028 'data': [ 'plain', 1029 'tls-none', 'x509-none', 1030 'tls-vnc', 'x509-vnc', 1031 'tls-plain', 'x509-plain', 1032 'tls-sasl', 'x509-sasl' ] } 1033 1034## 1035# @VncInfo2: 1036# 1037# Information about a vnc server 1038# 1039# @id: vnc server name. 1040# 1041# @server: A list of @VncBasincInfo describing all listening sockets. 1042# The list can be empty (in case the vnc server is disabled). 1043# It also may have multiple entries: normal + websocket, 1044# possibly also ipv4 + ipv6 in the future. 1045# 1046# @clients: A list of @VncClientInfo of all currently connected clients. 1047# The list can be empty, for obvious reasons. 1048# 1049# @auth: The current authentication type used by the server 1050# 1051# @vencrypt: #optional The vencrypt sub authentication type used by the server, 1052# only specified in case auth == vencrypt. 1053# 1054# @display: #optional The display device the vnc server is linked to. 1055# 1056# Since: 2.3 1057## 1058{ 'struct': 'VncInfo2', 1059 'data': { 'id' : 'str', 1060 'server' : ['VncBasicInfo'], 1061 'clients' : ['VncClientInfo'], 1062 'auth' : 'VncPrimaryAuth', 1063 '*vencrypt' : 'VncVencryptSubAuth', 1064 '*display' : 'str' } } 1065 1066## 1067# @query-vnc: 1068# 1069# Returns information about the current VNC server 1070# 1071# Returns: @VncInfo 1072# 1073# Since: 0.14.0 1074## 1075{ 'command': 'query-vnc', 'returns': 'VncInfo' } 1076 1077## 1078# @query-vnc-servers: 1079# 1080# Returns a list of vnc servers. The list can be empty. 1081# 1082# Returns: a list of @VncInfo2 1083# 1084# Since: 2.3 1085## 1086{ 'command': 'query-vnc-servers', 'returns': ['VncInfo2'] } 1087 1088## 1089# @SpiceBasicInfo 1090# 1091# The basic information for SPICE network connection 1092# 1093# @host: IP address 1094# 1095# @port: port number 1096# 1097# @family: address family 1098# 1099# Since: 2.1 1100## 1101{ 'struct': 'SpiceBasicInfo', 1102 'data': { 'host': 'str', 1103 'port': 'str', 1104 'family': 'NetworkAddressFamily' } } 1105 1106## 1107# @SpiceServerInfo 1108# 1109# Information about a SPICE server 1110# 1111# @auth: #optional, authentication method 1112# 1113# Since: 2.1 1114## 1115{ 'struct': 'SpiceServerInfo', 1116 'base': 'SpiceBasicInfo', 1117 'data': { '*auth': 'str' } } 1118 1119## 1120# @SpiceChannel 1121# 1122# Information about a SPICE client channel. 1123# 1124# @connection-id: SPICE connection id number. All channels with the same id 1125# belong to the same SPICE session. 1126# 1127# @channel-type: SPICE channel type number. "1" is the main control 1128# channel, filter for this one if you want to track spice 1129# sessions only 1130# 1131# @channel-id: SPICE channel ID number. Usually "0", might be different when 1132# multiple channels of the same type exist, such as multiple 1133# display channels in a multihead setup 1134# 1135# @tls: true if the channel is encrypted, false otherwise. 1136# 1137# Since: 0.14.0 1138## 1139{ 'struct': 'SpiceChannel', 1140 'base': 'SpiceBasicInfo', 1141 'data': {'connection-id': 'int', 'channel-type': 'int', 'channel-id': 'int', 1142 'tls': 'bool'} } 1143 1144## 1145# @SpiceQueryMouseMode 1146# 1147# An enumeration of Spice mouse states. 1148# 1149# @client: Mouse cursor position is determined by the client. 1150# 1151# @server: Mouse cursor position is determined by the server. 1152# 1153# @unknown: No information is available about mouse mode used by 1154# the spice server. 1155# 1156# Note: spice/enums.h has a SpiceMouseMode already, hence the name. 1157# 1158# Since: 1.1 1159## 1160{ 'enum': 'SpiceQueryMouseMode', 1161 'data': [ 'client', 'server', 'unknown' ] } 1162 1163## 1164# @SpiceInfo 1165# 1166# Information about the SPICE session. 1167# 1168# @enabled: true if the SPICE server is enabled, false otherwise 1169# 1170# @migrated: true if the last guest migration completed and spice 1171# migration had completed as well. false otherwise. 1172# 1173# @host: #optional The hostname the SPICE server is bound to. This depends on 1174# the name resolution on the host and may be an IP address. 1175# 1176# @port: #optional The SPICE server's port number. 1177# 1178# @compiled-version: #optional SPICE server version. 1179# 1180# @tls-port: #optional The SPICE server's TLS port number. 1181# 1182# @auth: #optional the current authentication type used by the server 1183# 'none' if no authentication is being used 1184# 'spice' uses SASL or direct TLS authentication, depending on command 1185# line options 1186# 1187# @mouse-mode: The mode in which the mouse cursor is displayed currently. Can 1188# be determined by the client or the server, or unknown if spice 1189# server doesn't provide this information. 1190# 1191# Since: 1.1 1192# 1193# @channels: a list of @SpiceChannel for each active spice channel 1194# 1195# Since: 0.14.0 1196## 1197{ 'struct': 'SpiceInfo', 1198 'data': {'enabled': 'bool', 'migrated': 'bool', '*host': 'str', '*port': 'int', 1199 '*tls-port': 'int', '*auth': 'str', '*compiled-version': 'str', 1200 'mouse-mode': 'SpiceQueryMouseMode', '*channels': ['SpiceChannel']} } 1201 1202## 1203# @query-spice 1204# 1205# Returns information about the current SPICE server 1206# 1207# Returns: @SpiceInfo 1208# 1209# Since: 0.14.0 1210## 1211{ 'command': 'query-spice', 'returns': 'SpiceInfo' } 1212 1213## 1214# @BalloonInfo: 1215# 1216# Information about the guest balloon device. 1217# 1218# @actual: the number of bytes the balloon currently contains 1219# 1220# Since: 0.14.0 1221# 1222## 1223{ 'struct': 'BalloonInfo', 'data': {'actual': 'int' } } 1224 1225## 1226# @query-balloon: 1227# 1228# Return information about the balloon device. 1229# 1230# Returns: @BalloonInfo on success 1231# If the balloon driver is enabled but not functional because the KVM 1232# kernel module cannot support it, KvmMissingCap 1233# If no balloon device is present, DeviceNotActive 1234# 1235# Since: 0.14.0 1236## 1237{ 'command': 'query-balloon', 'returns': 'BalloonInfo' } 1238 1239## 1240# @PciMemoryRange: 1241# 1242# A PCI device memory region 1243# 1244# @base: the starting address (guest physical) 1245# 1246# @limit: the ending address (guest physical) 1247# 1248# Since: 0.14.0 1249## 1250{ 'struct': 'PciMemoryRange', 'data': {'base': 'int', 'limit': 'int'} } 1251 1252## 1253# @PciMemoryRegion 1254# 1255# Information about a PCI device I/O region. 1256# 1257# @bar: the index of the Base Address Register for this region 1258# 1259# @type: 'io' if the region is a PIO region 1260# 'memory' if the region is a MMIO region 1261# 1262# @prefetch: #optional if @type is 'memory', true if the memory is prefetchable 1263# 1264# @mem_type_64: #optional if @type is 'memory', true if the BAR is 64-bit 1265# 1266# Since: 0.14.0 1267## 1268{ 'struct': 'PciMemoryRegion', 1269 'data': {'bar': 'int', 'type': 'str', 'address': 'int', 'size': 'int', 1270 '*prefetch': 'bool', '*mem_type_64': 'bool' } } 1271 1272## 1273# @PciBusInfo: 1274# 1275# Information about a bus of a PCI Bridge device 1276# 1277# @number: primary bus interface number. This should be the number of the 1278# bus the device resides on. 1279# 1280# @secondary: secondary bus interface number. This is the number of the 1281# main bus for the bridge 1282# 1283# @subordinate: This is the highest number bus that resides below the 1284# bridge. 1285# 1286# @io_range: The PIO range for all devices on this bridge 1287# 1288# @memory_range: The MMIO range for all devices on this bridge 1289# 1290# @prefetchable_range: The range of prefetchable MMIO for all devices on 1291# this bridge 1292# 1293# Since: 2.4 1294## 1295{ 'struct': 'PciBusInfo', 1296 'data': {'number': 'int', 'secondary': 'int', 'subordinate': 'int', 1297 'io_range': 'PciMemoryRange', 1298 'memory_range': 'PciMemoryRange', 1299 'prefetchable_range': 'PciMemoryRange' } } 1300 1301## 1302# @PciBridgeInfo: 1303# 1304# Information about a PCI Bridge device 1305# 1306# @bus: information about the bus the device resides on 1307# 1308# @devices: a list of @PciDeviceInfo for each device on this bridge 1309# 1310# Since: 0.14.0 1311## 1312{ 'struct': 'PciBridgeInfo', 1313 'data': {'bus': 'PciBusInfo', '*devices': ['PciDeviceInfo']} } 1314 1315## 1316# @PciDeviceClass: 1317# 1318# Information about the Class of a PCI device 1319# 1320# @desc: #optional a string description of the device's class 1321# 1322# @class: the class code of the device 1323# 1324# Since: 2.4 1325## 1326{ 'struct': 'PciDeviceClass', 1327 'data': {'*desc': 'str', 'class': 'int'} } 1328 1329## 1330# @PciDeviceId: 1331# 1332# Information about the Id of a PCI device 1333# 1334# @device: the PCI device id 1335# 1336# @vendor: the PCI vendor id 1337# 1338# Since: 2.4 1339## 1340{ 'struct': 'PciDeviceId', 1341 'data': {'device': 'int', 'vendor': 'int'} } 1342 1343## 1344# @PciDeviceInfo: 1345# 1346# Information about a PCI device 1347# 1348# @bus: the bus number of the device 1349# 1350# @slot: the slot the device is located in 1351# 1352# @function: the function of the slot used by the device 1353# 1354# @class_info: the class of the device 1355# 1356# @id: the PCI device id 1357# 1358# @irq: #optional if an IRQ is assigned to the device, the IRQ number 1359# 1360# @qdev_id: the device name of the PCI device 1361# 1362# @pci_bridge: if the device is a PCI bridge, the bridge information 1363# 1364# @regions: a list of the PCI I/O regions associated with the device 1365# 1366# Notes: the contents of @class_info.desc are not stable and should only be 1367# treated as informational. 1368# 1369# Since: 0.14.0 1370## 1371{ 'struct': 'PciDeviceInfo', 1372 'data': {'bus': 'int', 'slot': 'int', 'function': 'int', 1373 'class_info': 'PciDeviceClass', 'id': 'PciDeviceId', 1374 '*irq': 'int', 'qdev_id': 'str', '*pci_bridge': 'PciBridgeInfo', 1375 'regions': ['PciMemoryRegion']} } 1376 1377## 1378# @PciInfo: 1379# 1380# Information about a PCI bus 1381# 1382# @bus: the bus index 1383# 1384# @devices: a list of devices on this bus 1385# 1386# Since: 0.14.0 1387## 1388{ 'struct': 'PciInfo', 'data': {'bus': 'int', 'devices': ['PciDeviceInfo']} } 1389 1390## 1391# @query-pci: 1392# 1393# Return information about the PCI bus topology of the guest. 1394# 1395# Returns: a list of @PciInfo for each PCI bus 1396# 1397# Since: 0.14.0 1398## 1399{ 'command': 'query-pci', 'returns': ['PciInfo'] } 1400 1401## 1402# @quit: 1403# 1404# This command will cause the QEMU process to exit gracefully. While every 1405# attempt is made to send the QMP response before terminating, this is not 1406# guaranteed. When using this interface, a premature EOF would not be 1407# unexpected. 1408# 1409# Since: 0.14.0 1410## 1411{ 'command': 'quit' } 1412 1413## 1414# @stop: 1415# 1416# Stop all guest VCPU execution. 1417# 1418# Since: 0.14.0 1419# 1420# Notes: This function will succeed even if the guest is already in the stopped 1421# state. In "inmigrate" state, it will ensure that the guest 1422# remains paused once migration finishes, as if the -S option was 1423# passed on the command line. 1424## 1425{ 'command': 'stop' } 1426 1427## 1428# @system_reset: 1429# 1430# Performs a hard reset of a guest. 1431# 1432# Since: 0.14.0 1433## 1434{ 'command': 'system_reset' } 1435 1436## 1437# @system_powerdown: 1438# 1439# Requests that a guest perform a powerdown operation. 1440# 1441# Since: 0.14.0 1442# 1443# Notes: A guest may or may not respond to this command. This command 1444# returning does not indicate that a guest has accepted the request or 1445# that it has shut down. Many guests will respond to this command by 1446# prompting the user in some way. 1447## 1448{ 'command': 'system_powerdown' } 1449 1450## 1451# @cpu: 1452# 1453# This command is a nop that is only provided for the purposes of compatibility. 1454# 1455# Since: 0.14.0 1456# 1457# Notes: Do not use this command. 1458## 1459{ 'command': 'cpu', 'data': {'index': 'int'} } 1460 1461## 1462# @cpu-add 1463# 1464# Adds CPU with specified ID 1465# 1466# @id: ID of CPU to be created, valid values [0..max_cpus) 1467# 1468# Returns: Nothing on success 1469# 1470# Since 1.5 1471## 1472{ 'command': 'cpu-add', 'data': {'id': 'int'} } 1473 1474## 1475# @memsave: 1476# 1477# Save a portion of guest memory to a file. 1478# 1479# @val: the virtual address of the guest to start from 1480# 1481# @size: the size of memory region to save 1482# 1483# @filename: the file to save the memory to as binary data 1484# 1485# @cpu-index: #optional the index of the virtual CPU to use for translating the 1486# virtual address (defaults to CPU 0) 1487# 1488# Returns: Nothing on success 1489# 1490# Since: 0.14.0 1491# 1492# Notes: Errors were not reliably returned until 1.1 1493## 1494{ 'command': 'memsave', 1495 'data': {'val': 'int', 'size': 'int', 'filename': 'str', '*cpu-index': 'int'} } 1496 1497## 1498# @pmemsave: 1499# 1500# Save a portion of guest physical memory to a file. 1501# 1502# @val: the physical address of the guest to start from 1503# 1504# @size: the size of memory region to save 1505# 1506# @filename: the file to save the memory to as binary data 1507# 1508# Returns: Nothing on success 1509# 1510# Since: 0.14.0 1511# 1512# Notes: Errors were not reliably returned until 1.1 1513## 1514{ 'command': 'pmemsave', 1515 'data': {'val': 'int', 'size': 'int', 'filename': 'str'} } 1516 1517## 1518# @cont: 1519# 1520# Resume guest VCPU execution. 1521# 1522# Since: 0.14.0 1523# 1524# Returns: If successful, nothing 1525# If QEMU was started with an encrypted block device and a key has 1526# not yet been set, DeviceEncrypted. 1527# 1528# Notes: This command will succeed if the guest is currently running. It 1529# will also succeed if the guest is in the "inmigrate" state; in 1530# this case, the effect of the command is to make sure the guest 1531# starts once migration finishes, removing the effect of the -S 1532# command line option if it was passed. 1533## 1534{ 'command': 'cont' } 1535 1536## 1537# @system_wakeup: 1538# 1539# Wakeup guest from suspend. Does nothing in case the guest isn't suspended. 1540# 1541# Since: 1.1 1542# 1543# Returns: nothing. 1544## 1545{ 'command': 'system_wakeup' } 1546 1547## 1548# @inject-nmi: 1549# 1550# Injects a Non-Maskable Interrupt into the default CPU (x86/s390) or all CPUs (ppc64). 1551# 1552# Returns: If successful, nothing 1553# 1554# Since: 0.14.0 1555# 1556# Note: prior to 2.1, this command was only supported for x86 and s390 VMs 1557## 1558{ 'command': 'inject-nmi' } 1559 1560## 1561# @set_link: 1562# 1563# Sets the link status of a virtual network adapter. 1564# 1565# @name: the device name of the virtual network adapter 1566# 1567# @up: true to set the link status to be up 1568# 1569# Returns: Nothing on success 1570# If @name is not a valid network device, DeviceNotFound 1571# 1572# Since: 0.14.0 1573# 1574# Notes: Not all network adapters support setting link status. This command 1575# will succeed even if the network adapter does not support link status 1576# notification. 1577## 1578{ 'command': 'set_link', 'data': {'name': 'str', 'up': 'bool'} } 1579 1580## 1581# @balloon: 1582# 1583# Request the balloon driver to change its balloon size. 1584# 1585# @value: the target size of the balloon in bytes 1586# 1587# Returns: Nothing on success 1588# If the balloon driver is enabled but not functional because the KVM 1589# kernel module cannot support it, KvmMissingCap 1590# If no balloon device is present, DeviceNotActive 1591# 1592# Notes: This command just issues a request to the guest. When it returns, 1593# the balloon size may not have changed. A guest can change the balloon 1594# size independent of this command. 1595# 1596# Since: 0.14.0 1597## 1598{ 'command': 'balloon', 'data': {'value': 'int'} } 1599 1600## 1601# @Abort 1602# 1603# This action can be used to test transaction failure. 1604# 1605# Since: 1.6 1606### 1607{ 'struct': 'Abort', 1608 'data': { } } 1609 1610## 1611# @ActionCompletionMode 1612# 1613# An enumeration of Transactional completion modes. 1614# 1615# @individual: Do not attempt to cancel any other Actions if any Actions fail 1616# after the Transaction request succeeds. All Actions that 1617# can complete successfully will do so without waiting on others. 1618# This is the default. 1619# 1620# @grouped: If any Action fails after the Transaction succeeds, cancel all 1621# Actions. Actions do not complete until all Actions are ready to 1622# complete. May be rejected by Actions that do not support this 1623# completion mode. 1624# 1625# Since: 2.5 1626## 1627{ 'enum': 'ActionCompletionMode', 1628 'data': [ 'individual', 'grouped' ] } 1629 1630## 1631# @TransactionAction 1632# 1633# A discriminated record of operations that can be performed with 1634# @transaction. 1635# 1636# Since 1.1 1637# 1638# drive-backup since 1.6 1639# abort since 1.6 1640# blockdev-snapshot-internal-sync since 1.7 1641# blockdev-backup since 2.3 1642# blockdev-snapshot since 2.5 1643# block-dirty-bitmap-add since 2.5 1644# block-dirty-bitmap-clear since 2.5 1645## 1646{ 'union': 'TransactionAction', 1647 'data': { 1648 'blockdev-snapshot': 'BlockdevSnapshot', 1649 'blockdev-snapshot-sync': 'BlockdevSnapshotSync', 1650 'drive-backup': 'DriveBackup', 1651 'blockdev-backup': 'BlockdevBackup', 1652 'abort': 'Abort', 1653 'blockdev-snapshot-internal-sync': 'BlockdevSnapshotInternal', 1654 'block-dirty-bitmap-add': 'BlockDirtyBitmapAdd', 1655 'block-dirty-bitmap-clear': 'BlockDirtyBitmap' 1656 } } 1657 1658## 1659# @TransactionProperties 1660# 1661# Optional arguments to modify the behavior of a Transaction. 1662# 1663# @completion-mode: #optional Controls how jobs launched asynchronously by 1664# Actions will complete or fail as a group. 1665# See @ActionCompletionMode for details. 1666# 1667# Since: 2.5 1668## 1669{ 'struct': 'TransactionProperties', 1670 'data': { 1671 '*completion-mode': 'ActionCompletionMode' 1672 } 1673} 1674 1675## 1676# @transaction 1677# 1678# Executes a number of transactionable QMP commands atomically. If any 1679# operation fails, then the entire set of actions will be abandoned and the 1680# appropriate error returned. 1681# 1682# @actions: List of @TransactionAction; 1683# information needed for the respective operations. 1684# 1685# @properties: #optional structure of additional options to control the 1686# execution of the transaction. See @TransactionProperties 1687# for additional detail. 1688# 1689# Returns: nothing on success 1690# Errors depend on the operations of the transaction 1691# 1692# Note: The transaction aborts on the first failure. Therefore, there will be 1693# information on only one failed operation returned in an error condition, and 1694# subsequent actions will not have been attempted. 1695# 1696# Since 1.1 1697## 1698{ 'command': 'transaction', 1699 'data': { 'actions': [ 'TransactionAction' ], 1700 '*properties': 'TransactionProperties' 1701 } 1702} 1703 1704## 1705# @human-monitor-command: 1706# 1707# Execute a command on the human monitor and return the output. 1708# 1709# @command-line: the command to execute in the human monitor 1710# 1711# @cpu-index: #optional The CPU to use for commands that require an implicit CPU 1712# 1713# Returns: the output of the command as a string 1714# 1715# Since: 0.14.0 1716# 1717# Notes: This command only exists as a stop-gap. Its use is highly 1718# discouraged. The semantics of this command are not guaranteed. 1719# 1720# Known limitations: 1721# 1722# o This command is stateless, this means that commands that depend 1723# on state information (such as getfd) might not work 1724# 1725# o Commands that prompt the user for data (eg. 'cont' when the block 1726# device is encrypted) don't currently work 1727## 1728{ 'command': 'human-monitor-command', 1729 'data': {'command-line': 'str', '*cpu-index': 'int'}, 1730 'returns': 'str' } 1731 1732## 1733# @migrate_cancel 1734# 1735# Cancel the current executing migration process. 1736# 1737# Returns: nothing on success 1738# 1739# Notes: This command succeeds even if there is no migration process running. 1740# 1741# Since: 0.14.0 1742## 1743{ 'command': 'migrate_cancel' } 1744 1745## 1746# @migrate_set_downtime 1747# 1748# Set maximum tolerated downtime for migration. 1749# 1750# @value: maximum downtime in seconds 1751# 1752# Returns: nothing on success 1753# 1754# Since: 0.14.0 1755## 1756{ 'command': 'migrate_set_downtime', 'data': {'value': 'number'} } 1757 1758## 1759# @migrate_set_speed 1760# 1761# Set maximum speed for migration. 1762# 1763# @value: maximum speed in bytes. 1764# 1765# Returns: nothing on success 1766# 1767# Notes: A value lesser than zero will be automatically round up to zero. 1768# 1769# Since: 0.14.0 1770## 1771{ 'command': 'migrate_set_speed', 'data': {'value': 'int'} } 1772 1773## 1774# @migrate-set-cache-size 1775# 1776# Set XBZRLE cache size 1777# 1778# @value: cache size in bytes 1779# 1780# The size will be rounded down to the nearest power of 2. 1781# The cache size can be modified before and during ongoing migration 1782# 1783# Returns: nothing on success 1784# 1785# Since: 1.2 1786## 1787{ 'command': 'migrate-set-cache-size', 'data': {'value': 'int'} } 1788 1789## 1790# @query-migrate-cache-size 1791# 1792# query XBZRLE cache size 1793# 1794# Returns: XBZRLE cache size in bytes 1795# 1796# Since: 1.2 1797## 1798{ 'command': 'query-migrate-cache-size', 'returns': 'int' } 1799 1800## 1801# @ObjectPropertyInfo: 1802# 1803# @name: the name of the property 1804# 1805# @type: the type of the property. This will typically come in one of four 1806# forms: 1807# 1808# 1) A primitive type such as 'u8', 'u16', 'bool', 'str', or 'double'. 1809# These types are mapped to the appropriate JSON type. 1810# 1811# 2) A child type in the form 'child<subtype>' where subtype is a qdev 1812# device type name. Child properties create the composition tree. 1813# 1814# 3) A link type in the form 'link<subtype>' where subtype is a qdev 1815# device type name. Link properties form the device model graph. 1816# 1817# Since: 1.2 1818## 1819{ 'struct': 'ObjectPropertyInfo', 1820 'data': { 'name': 'str', 'type': 'str' } } 1821 1822## 1823# @qom-list: 1824# 1825# This command will list any properties of a object given a path in the object 1826# model. 1827# 1828# @path: the path within the object model. See @qom-get for a description of 1829# this parameter. 1830# 1831# Returns: a list of @ObjectPropertyInfo that describe the properties of the 1832# object. 1833# 1834# Since: 1.2 1835## 1836{ 'command': 'qom-list', 1837 'data': { 'path': 'str' }, 1838 'returns': [ 'ObjectPropertyInfo' ] } 1839 1840## 1841# @qom-get: 1842# 1843# This command will get a property from a object model path and return the 1844# value. 1845# 1846# @path: The path within the object model. There are two forms of supported 1847# paths--absolute and partial paths. 1848# 1849# Absolute paths are derived from the root object and can follow child<> 1850# or link<> properties. Since they can follow link<> properties, they 1851# can be arbitrarily long. Absolute paths look like absolute filenames 1852# and are prefixed with a leading slash. 1853# 1854# Partial paths look like relative filenames. They do not begin 1855# with a prefix. The matching rules for partial paths are subtle but 1856# designed to make specifying objects easy. At each level of the 1857# composition tree, the partial path is matched as an absolute path. 1858# The first match is not returned. At least two matches are searched 1859# for. A successful result is only returned if only one match is 1860# found. If more than one match is found, a flag is return to 1861# indicate that the match was ambiguous. 1862# 1863# @property: The property name to read 1864# 1865# Returns: The property value. The type depends on the property 1866# type. child<> and link<> properties are returned as #str 1867# pathnames. All integer property types (u8, u16, etc) are 1868# returned as #int. 1869# 1870# Since: 1.2 1871## 1872{ 'command': 'qom-get', 1873 'data': { 'path': 'str', 'property': 'str' }, 1874 'returns': 'any' } 1875 1876## 1877# @qom-set: 1878# 1879# This command will set a property from a object model path. 1880# 1881# @path: see @qom-get for a description of this parameter 1882# 1883# @property: the property name to set 1884# 1885# @value: a value who's type is appropriate for the property type. See @qom-get 1886# for a description of type mapping. 1887# 1888# Since: 1.2 1889## 1890{ 'command': 'qom-set', 1891 'data': { 'path': 'str', 'property': 'str', 'value': 'any' } } 1892 1893## 1894# @set_password: 1895# 1896# Sets the password of a remote display session. 1897# 1898# @protocol: `vnc' to modify the VNC server password 1899# `spice' to modify the Spice server password 1900# 1901# @password: the new password 1902# 1903# @connected: #optional how to handle existing clients when changing the 1904# password. If nothing is specified, defaults to `keep' 1905# `fail' to fail the command if clients are connected 1906# `disconnect' to disconnect existing clients 1907# `keep' to maintain existing clients 1908# 1909# Returns: Nothing on success 1910# If Spice is not enabled, DeviceNotFound 1911# 1912# Since: 0.14.0 1913## 1914{ 'command': 'set_password', 1915 'data': {'protocol': 'str', 'password': 'str', '*connected': 'str'} } 1916 1917## 1918# @expire_password: 1919# 1920# Expire the password of a remote display server. 1921# 1922# @protocol: the name of the remote display protocol `vnc' or `spice' 1923# 1924# @time: when to expire the password. 1925# `now' to expire the password immediately 1926# `never' to cancel password expiration 1927# `+INT' where INT is the number of seconds from now (integer) 1928# `INT' where INT is the absolute time in seconds 1929# 1930# Returns: Nothing on success 1931# If @protocol is `spice' and Spice is not active, DeviceNotFound 1932# 1933# Since: 0.14.0 1934# 1935# Notes: Time is relative to the server and currently there is no way to 1936# coordinate server time with client time. It is not recommended to 1937# use the absolute time version of the @time parameter unless you're 1938# sure you are on the same machine as the QEMU instance. 1939## 1940{ 'command': 'expire_password', 'data': {'protocol': 'str', 'time': 'str'} } 1941 1942## 1943# @change-vnc-password: 1944# 1945# Change the VNC server password. 1946# 1947# @password: the new password to use with VNC authentication 1948# 1949# Since: 1.1 1950# 1951# Notes: An empty password in this command will set the password to the empty 1952# string. Existing clients are unaffected by executing this command. 1953## 1954{ 'command': 'change-vnc-password', 'data': {'password': 'str'} } 1955 1956## 1957# @change: 1958# 1959# This command is multiple commands multiplexed together. 1960# 1961# @device: This is normally the name of a block device but it may also be 'vnc'. 1962# when it's 'vnc', then sub command depends on @target 1963# 1964# @target: If @device is a block device, then this is the new filename. 1965# If @device is 'vnc', then if the value 'password' selects the vnc 1966# change password command. Otherwise, this specifies a new server URI 1967# address to listen to for VNC connections. 1968# 1969# @arg: If @device is a block device, then this is an optional format to open 1970# the device with. 1971# If @device is 'vnc' and @target is 'password', this is the new VNC 1972# password to set. If this argument is an empty string, then no future 1973# logins will be allowed. 1974# 1975# Returns: Nothing on success. 1976# If @device is not a valid block device, DeviceNotFound 1977# If the new block device is encrypted, DeviceEncrypted. Note that 1978# if this error is returned, the device has been opened successfully 1979# and an additional call to @block_passwd is required to set the 1980# device's password. The behavior of reads and writes to the block 1981# device between when these calls are executed is undefined. 1982# 1983# Notes: This interface is deprecated, and it is strongly recommended that you 1984# avoid using it. For changing block devices, use 1985# blockdev-change-medium; for changing VNC parameters, use 1986# change-vnc-password. 1987# 1988# Since: 0.14.0 1989## 1990{ 'command': 'change', 1991 'data': {'device': 'str', 'target': 'str', '*arg': 'str'} } 1992 1993## 1994# @ObjectTypeInfo: 1995# 1996# This structure describes a search result from @qom-list-types 1997# 1998# @name: the type name found in the search 1999# 2000# Since: 1.1
2001# 2002# Notes: This command is experimental and may change syntax in future releases. 2003## 2004{ 'struct': 'ObjectTypeInfo', 2005 'data': { 'name': 'str' } } 2006 2007## 2008# @qom-list-types: 2009# 2010# This command will return a list of types given search parameters 2011# 2012# @implements: if specified, only return types that implement this type name 2013# 2014# @abstract: if true, include abstract types in the results 2015# 2016# Returns: a list of @ObjectTypeInfo or an empty list if no results are found 2017# 2018# Since: 1.1 2019## 2020{ 'command': 'qom-list-types', 2021 'data': { '*implements': 'str', '*abstract': 'bool' }, 2022 'returns': [ 'ObjectTypeInfo' ] } 2023 2024## 2025# @DevicePropertyInfo: 2026# 2027# Information about device properties. 2028# 2029# @name: the name of the property 2030# @type: the typename of the property 2031# @description: #optional if specified, the description of the property. 2032# (since 2.2) 2033# 2034# Since: 1.2 2035## 2036{ 'struct': 'DevicePropertyInfo', 2037 'data': { 'name': 'str', 'type': 'str', '*description': 'str' } } 2038 2039## 2040# @device-list-properties: 2041# 2042# List properties associated with a device. 2043# 2044# @typename: the type name of a device 2045# 2046# Returns: a list of DevicePropertyInfo describing a devices properties 2047# 2048# Since: 1.2 2049## 2050{ 'command': 'device-list-properties', 2051 'data': { 'typename': 'str'}, 2052 'returns': [ 'DevicePropertyInfo' ] } 2053 2054## 2055# @migrate 2056# 2057# Migrates the current running guest to another Virtual Machine. 2058# 2059# @uri: the Uniform Resource Identifier of the destination VM 2060# 2061# @blk: #optional do block migration (full disk copy) 2062# 2063# @inc: #optional incremental disk copy migration 2064# 2065# @detach: this argument exists only for compatibility reasons and 2066# is ignored by QEMU 2067# 2068# Returns: nothing on success 2069# 2070# Since: 0.14.0 2071## 2072{ 'command': 'migrate', 2073 'data': {'uri': 'str', '*blk': 'bool', '*inc': 'bool', '*detach': 'bool' } } 2074 2075## 2076# @migrate-incoming 2077# 2078# Start an incoming migration, the qemu must have been started 2079# with -incoming defer 2080# 2081# @uri: The Uniform Resource Identifier identifying the source or 2082# address to listen on 2083# 2084# Returns: nothing on success 2085# 2086# Since: 2.3 2087# Note: It's a bad idea to use a string for the uri, but it needs to stay 2088# compatible with -incoming and the format of the uri is already exposed 2089# above libvirt 2090## 2091{ 'command': 'migrate-incoming', 'data': {'uri': 'str' } } 2092 2093# @xen-save-devices-state: 2094# 2095# Save the state of all devices to file. The RAM and the block devices 2096# of the VM are not saved by this command. 2097# 2098# @filename: the file to save the state of the devices to as binary 2099# data. See xen-save-devices-state.txt for a description of the binary 2100# format. 2101# 2102# Returns: Nothing on success 2103# 2104# Since: 1.1 2105## 2106{ 'command': 'xen-save-devices-state', 'data': {'filename': 'str'} } 2107 2108## 2109# @xen-set-global-dirty-log 2110# 2111# Enable or disable the global dirty log mode. 2112# 2113# @enable: true to enable, false to disable. 2114# 2115# Returns: nothing 2116# 2117# Since: 1.3 2118## 2119{ 'command': 'xen-set-global-dirty-log', 'data': { 'enable': 'bool' } } 2120 2121## 2122# @device_del: 2123# 2124# Remove a device from a guest 2125# 2126# @id: the name or QOM path of the device 2127# 2128# Returns: Nothing on success 2129# If @id is not a valid device, DeviceNotFound 2130# 2131# Notes: When this command completes, the device may not be removed from the 2132# guest. Hot removal is an operation that requires guest cooperation. 2133# This command merely requests that the guest begin the hot removal 2134# process. Completion of the device removal process is signaled with a 2135# DEVICE_DELETED event. Guest reset will automatically complete removal 2136# for all devices. 2137# 2138# Since: 0.14.0 2139## 2140{ 'command': 'device_del', 'data': {'id': 'str'} } 2141 2142## 2143# @DumpGuestMemoryFormat: 2144# 2145# An enumeration of guest-memory-dump's format. 2146# 2147# @elf: elf format 2148# 2149# @kdump-zlib: kdump-compressed format with zlib-compressed 2150# 2151# @kdump-lzo: kdump-compressed format with lzo-compressed 2152# 2153# @kdump-snappy: kdump-compressed format with snappy-compressed 2154# 2155# Since: 2.0 2156## 2157{ 'enum': 'DumpGuestMemoryFormat', 2158 'data': [ 'elf', 'kdump-zlib', 'kdump-lzo', 'kdump-snappy' ] } 2159 2160## 2161# @dump-guest-memory 2162# 2163# Dump guest's memory to vmcore. It is a synchronous operation that can take 2164# very long depending on the amount of guest memory. 2165# 2166# @paging: if true, do paging to get guest's memory mapping. This allows 2167# using gdb to process the core file. 2168# 2169# IMPORTANT: this option can make QEMU allocate several gigabytes 2170# of RAM. This can happen for a large guest, or a 2171# malicious guest pretending to be large. 2172# 2173# Also, paging=true has the following limitations: 2174# 2175# 1. The guest may be in a catastrophic state or can have corrupted 2176# memory, which cannot be trusted 2177# 2. The guest can be in real-mode even if paging is enabled. For 2178# example, the guest uses ACPI to sleep, and ACPI sleep state 2179# goes in real-mode 2180# 3. Currently only supported on i386 and x86_64. 2181# 2182# @protocol: the filename or file descriptor of the vmcore. The supported 2183# protocols are: 2184# 2185# 1. file: the protocol starts with "file:", and the following 2186# string is the file's path. 2187# 2. fd: the protocol starts with "fd:", and the following string 2188# is the fd's name. 2189# 2190# @detach: #optional if true, QMP will return immediately rather than 2191# waiting for the dump to finish. The user can track progress 2192# using "query-dump". (since 2.6). 2193# 2194# @begin: #optional if specified, the starting physical address. 2195# 2196# @length: #optional if specified, the memory size, in bytes. If you don't 2197# want to dump all guest's memory, please specify the start @begin 2198# and @length 2199# 2200# @format: #optional if specified, the format of guest memory dump. But non-elf 2201# format is conflict with paging and filter, ie. @paging, @begin and 2202# @length is not allowed to be specified with non-elf @format at the 2203# same time (since 2.0) 2204# 2205# Returns: nothing on success 2206# 2207# Since: 1.2 2208## 2209{ 'command': 'dump-guest-memory', 2210 'data': { 'paging': 'bool', 'protocol': 'str', '*detach': 'bool', 2211 '*begin': 'int', '*length': 'int', 2212 '*format': 'DumpGuestMemoryFormat'} } 2213 2214## 2215# @DumpStatus 2216# 2217# Describe the status of a long-running background guest memory dump. 2218# 2219# @none: no dump-guest-memory has started yet. 2220# 2221# @active: there is one dump running in background. 2222# 2223# @completed: the last dump has finished successfully. 2224# 2225# @failed: the last dump has failed. 2226# 2227# Since 2.6 2228## 2229{ 'enum': 'DumpStatus', 2230 'data': [ 'none', 'active', 'completed', 'failed' ] } 2231 2232## 2233# @DumpQueryResult 2234# 2235# The result format for 'query-dump'. 2236# 2237# @status: enum of @DumpStatus, which shows current dump status 2238# 2239# @completed: bytes written in latest dump (uncompressed) 2240# 2241# @total: total bytes to be written in latest dump (uncompressed) 2242# 2243# Since 2.6 2244## 2245{ 'struct': 'DumpQueryResult', 2246 'data': { 'status': 'DumpStatus', 2247 'completed': 'int', 2248 'total': 'int' } } 2249 2250## 2251# @query-dump 2252# 2253# Query latest dump status. 2254# 2255# Returns: A @DumpStatus object showing the dump status. 2256# 2257# Since: 2.6 2258## 2259{ 'command': 'query-dump', 'returns': 'DumpQueryResult' } 2260 2261## 2262# @DumpGuestMemoryCapability: 2263# 2264# A list of the available formats for dump-guest-memory 2265# 2266# Since: 2.0 2267## 2268{ 'struct': 'DumpGuestMemoryCapability', 2269 'data': { 2270 'formats': ['DumpGuestMemoryFormat'] } } 2271 2272## 2273# @query-dump-guest-memory-capability: 2274# 2275# Returns the available formats for dump-guest-memory 2276# 2277# Returns: A @DumpGuestMemoryCapability object listing available formats for 2278# dump-guest-memory 2279# 2280# Since: 2.0 2281## 2282{ 'command': 'query-dump-guest-memory-capability', 2283 'returns': 'DumpGuestMemoryCapability' } 2284 2285## 2286# @dump-skeys 2287# 2288# Dump guest's storage keys 2289# 2290# @filename: the path to the file to dump to 2291# 2292# This command is only supported on s390 architecture. 2293# 2294# Since: 2.5 2295## 2296{ 'command': 'dump-skeys', 2297 'data': { 'filename': 'str' } } 2298 2299## 2300# @netdev_add: 2301# 2302# Add a network backend. 2303# 2304# @type: the type of network backend. Current valid values are 'user', 'tap', 2305# 'vde', 'socket', 'dump' and 'bridge' 2306# 2307# @id: the name of the new network backend 2308# 2309# Additional arguments depend on the type. 2310# 2311# TODO This command effectively bypasses QAPI completely due to its 2312# "additional arguments" business. It shouldn't have been added to 2313# the schema in this form. It should be qapified properly, or 2314# replaced by a properly qapified command. 2315# 2316# Since: 0.14.0 2317# 2318# Returns: Nothing on success 2319# If @type is not a valid network backend, DeviceNotFound 2320## 2321{ 'command': 'netdev_add', 2322 'data': {'type': 'str', 'id': 'str'}, 2323 'gen': false } # so we can get the additional arguments 2324 2325## 2326# @netdev_del: 2327# 2328# Remove a network backend. 2329# 2330# @id: the name of the network backend to remove 2331# 2332# Returns: Nothing on success 2333# If @id is not a valid network backend, DeviceNotFound 2334# 2335# Since: 0.14.0 2336## 2337{ 'command': 'netdev_del', 'data': {'id': 'str'} } 2338 2339## 2340# @object-add: 2341# 2342# Create a QOM object. 2343# 2344# @qom-type: the class name for the object to be created 2345# 2346# @id: the name of the new object 2347# 2348# @props: #optional a dictionary of properties to be passed to the backend 2349# 2350# Returns: Nothing on success 2351# Error if @qom-type is not a valid class name 2352# 2353# Since: 2.0 2354## 2355{ 'command': 'object-add', 2356 'data': {'qom-type': 'str', 'id': 'str', '*props': 'any'} } 2357 2358## 2359# @object-del: 2360# 2361# Remove a QOM object. 2362# 2363# @id: the name of the QOM object to remove 2364# 2365# Returns: Nothing on success 2366# Error if @id is not a valid id for a QOM object 2367# 2368# Since: 2.0 2369## 2370{ 'command': 'object-del', 'data': {'id': 'str'} } 2371 2372## 2373# @NetdevNoneOptions 2374# 2375# Use it alone to have zero network devices. 2376# 2377# Since 1.2 2378## 2379{ 'struct': 'NetdevNoneOptions', 2380 'data': { } } 2381 2382## 2383# @NetLegacyNicOptions 2384# 2385# Create a new Network Interface Card. 2386# 2387# @netdev: #optional id of -netdev to connect to 2388# 2389# @macaddr: #optional MAC address 2390# 2391# @model: #optional device model (e1000, rtl8139, virtio etc.) 2392# 2393# @addr: #optional PCI device address 2394# 2395# @vectors: #optional number of MSI-x vectors, 0 to disable MSI-X 2396# 2397# Since 1.2 2398## 2399{ 'struct': 'NetLegacyNicOptions', 2400 'data': { 2401 '*netdev': 'str', 2402 '*macaddr': 'str', 2403 '*model': 'str', 2404 '*addr': 'str', 2405 '*vectors': 'uint32' } } 2406 2407## 2408# @String 2409# 2410# A fat type wrapping 'str', to be embedded in lists. 2411# 2412# Since 1.2 2413## 2414{ 'struct': 'String', 2415 'data': { 2416 'str': 'str' } } 2417 2418## 2419# @NetdevUserOptions 2420# 2421# Use the user mode network stack which requires no administrator privilege to 2422# run. 2423# 2424# @hostname: #optional client hostname reported by the builtin DHCP server 2425# 2426# @restrict: #optional isolate the guest from the host 2427# 2428# @ipv4: #optional whether to support IPv4, default true for enabled 2429# (since 2.6) 2430# 2431# @ipv6: #optional whether to support IPv6, default true for enabled 2432# (since 2.6) 2433# 2434# @ip: #optional legacy parameter, use net= instead 2435# 2436# @net: #optional IP network address that the guest will see, in the 2437# form addr[/netmask] The netmask is optional, and can be 2438# either in the form a.b.c.d or as a number of valid top-most 2439# bits. Default is 10.0.2.0/24. 2440# 2441# @host: #optional guest-visible address of the host 2442# 2443# @tftp: #optional root directory of the built-in TFTP server 2444# 2445# @bootfile: #optional BOOTP filename, for use with tftp= 2446# 2447# @dhcpstart: #optional the first of the 16 IPs the built-in DHCP server can 2448# assign 2449# 2450# @dns: #optional guest-visible address of the virtual nameserver 2451# 2452# @dnssearch: #optional list of DNS suffixes to search, passed as DHCP option 2453# to the guest 2454# 2455# @ipv6-prefix: #optional IPv6 network prefix (default is fec0::) (since 2456# 2.6). The network prefix is given in the usual 2457# hexadecimal IPv6 address notation. 2458# 2459# @ipv6-prefixlen: #optional IPv6 network prefix length (default is 64) 2460# (since 2.6) 2461# 2462# @ipv6-host: #optional guest-visible IPv6 address of the host (since 2.6) 2463# 2464# @ipv6-dns: #optional guest-visible IPv6 address of the virtual 2465# nameserver (since 2.6) 2466# 2467# @smb: #optional root directory of the built-in SMB server 2468# 2469# @smbserver: #optional IP address of the built-in SMB server 2470# 2471# @hostfwd: #optional redirect incoming TCP or UDP host connections to guest 2472# endpoints 2473# 2474# @guestfwd: #optional forward guest TCP connections 2475# 2476# Since 1.2 2477## 2478{ 'struct': 'NetdevUserOptions', 2479 'data': { 2480 '*hostname': 'str', 2481 '*restrict': 'bool', 2482 '*ipv4': 'bool', 2483 '*ipv6': 'bool', 2484 '*ip': 'str', 2485 '*net': 'str', 2486 '*host': 'str', 2487 '*tftp': 'str', 2488 '*bootfile': 'str', 2489 '*dhcpstart': 'str', 2490 '*dns': 'str', 2491 '*dnssearch': ['String'], 2492 '*ipv6-prefix': 'str', 2493 '*ipv6-prefixlen': 'int', 2494 '*ipv6-host': 'str', 2495 '*ipv6-dns': 'str', 2496 '*smb': 'str', 2497 '*smbserver': 'str', 2498 '*hostfwd': ['String'], 2499 '*guestfwd': ['String'] } } 2500 2501## 2502# @NetdevTapOptions 2503# 2504# Connect the host TAP network interface name to the VLAN. 2505# 2506# @ifname: #optional interface name 2507# 2508# @fd: #optional file descriptor of an already opened tap 2509# 2510# @fds: #optional multiple file descriptors of already opened multiqueue capable 2511# tap 2512# 2513# @script: #optional script to initialize the interface 2514# 2515# @downscript: #optional script to shut down the interface 2516# 2517# @helper: #optional command to execute to configure bridge 2518# 2519# @sndbuf: #optional send buffer limit. Understands [TGMKkb] suffixes. 2520# 2521# @vnet_hdr: #optional enable the IFF_VNET_HDR flag on the tap interface 2522# 2523# @vhost: #optional enable vhost-net network accelerator 2524# 2525# @vhostfd: #optional file descriptor of an already opened vhost net device 2526# 2527# @vhostfds: #optional file descriptors of multiple already opened vhost net 2528# devices 2529# 2530# @vhostforce: #optional vhost on for non-MSIX virtio guests 2531# 2532# @queues: #optional number of queues to be created for multiqueue capable tap 2533# 2534# Since 1.2 2535## 2536{ 'struct': 'NetdevTapOptions', 2537 'data': { 2538 '*ifname': 'str', 2539 '*fd': 'str', 2540 '*fds': 'str', 2541 '*script': 'str', 2542 '*downscript': 'str', 2543 '*helper': 'str', 2544 '*sndbuf': 'size', 2545 '*vnet_hdr': 'bool', 2546 '*vhost': 'bool', 2547 '*vhostfd': 'str', 2548 '*vhostfds': 'str', 2549 '*vhostforce': 'bool', 2550 '*queues': 'uint32'} } 2551 2552## 2553# @NetdevSocketOptions 2554# 2555# Connect the VLAN to a remote VLAN in another QEMU virtual machine using a TCP 2556# socket connection. 2557# 2558# @fd: #optional file descriptor of an already opened socket 2559# 2560# @listen: #optional port number, and optional hostname, to listen on 2561# 2562# @connect: #optional port number, and optional hostname, to connect to 2563# 2564# @mcast: #optional UDP multicast address and port number 2565# 2566# @localaddr: #optional source address and port for multicast and udp packets 2567# 2568# @udp: #optional UDP unicast address and port number 2569# 2570# Since 1.2 2571## 2572{ 'struct': 'NetdevSocketOptions', 2573 'data': { 2574 '*fd': 'str', 2575 '*listen': 'str', 2576 '*connect': 'str', 2577 '*mcast': 'str', 2578 '*localaddr': 'str', 2579 '*udp': 'str' } } 2580 2581## 2582# @NetdevL2TPv3Options 2583# 2584# Connect the VLAN to Ethernet over L2TPv3 Static tunnel 2585# 2586# @src: source address 2587# 2588# @dst: destination address 2589# 2590# @srcport: #optional source port - mandatory for udp, optional for ip 2591# 2592# @dstport: #optional destination port - mandatory for udp, optional for ip 2593# 2594# @ipv6: #optional - force the use of ipv6 2595# 2596# @udp: #optional - use the udp version of l2tpv3 encapsulation 2597# 2598# @cookie64: #optional - use 64 bit coookies 2599# 2600# @counter: #optional have sequence counter 2601# 2602# @pincounter: #optional pin sequence counter to zero - 2603# workaround for buggy implementations or 2604# networks with packet reorder 2605# 2606# @txcookie: #optional 32 or 64 bit transmit cookie 2607# 2608# @rxcookie: #optional 32 or 64 bit receive cookie 2609# 2610# @txsession: 32 bit transmit session 2611# 2612# @rxsession: #optional 32 bit receive session - if not specified 2613# set to the same value as transmit 2614# 2615# @offset: #optional additional offset - allows the insertion of 2616# additional application-specific data before the packet payload 2617# 2618# Since 2.1 2619## 2620{ 'struct': 'NetdevL2TPv3Options', 2621 'data': { 2622 'src': 'str', 2623 'dst': 'str', 2624 '*srcport': 'str', 2625 '*dstport': 'str', 2626 '*ipv6': 'bool', 2627 '*udp': 'bool', 2628 '*cookie64': 'bool', 2629 '*counter': 'bool', 2630 '*pincounter': 'bool', 2631 '*txcookie': 'uint64', 2632 '*rxcookie': 'uint64', 2633 'txsession': 'uint32', 2634 '*rxsession': 'uint32', 2635 '*offset': 'uint32' } } 2636 2637## 2638# @NetdevVdeOptions 2639# 2640# Connect the VLAN to a vde switch running on the host. 2641# 2642# @sock: #optional socket path 2643# 2644# @port: #optional port number 2645# 2646# @group: #optional group owner of socket 2647# 2648# @mode: #optional permissions for socket 2649# 2650# Since 1.2 2651## 2652{ 'struct': 'NetdevVdeOptions', 2653 'data': { 2654 '*sock': 'str', 2655 '*port': 'uint16', 2656 '*group': 'str', 2657 '*mode': 'uint16' } } 2658 2659## 2660# @NetdevDumpOptions 2661# 2662# Dump VLAN network traffic to a file. 2663# 2664# @len: #optional per-packet size limit (64k default). Understands [TGMKkb] 2665# suffixes. 2666# 2667# @file: #optional dump file path (default is qemu-vlan0.pcap) 2668# 2669# Since 1.2 2670## 2671{ 'struct': 'NetdevDumpOptions', 2672 'data': { 2673 '*len': 'size', 2674 '*file': 'str' } } 2675 2676## 2677# @NetdevBridgeOptions 2678# 2679# Connect a host TAP network interface to a host bridge device. 2680# 2681# @br: #optional bridge name 2682# 2683# @helper: #optional command to execute to configure bridge 2684# 2685# Since 1.2 2686## 2687{ 'struct': 'NetdevBridgeOptions', 2688 'data': { 2689 '*br': 'str', 2690 '*helper': 'str' } } 2691 2692## 2693# @NetdevHubPortOptions 2694# 2695# Connect two or more net clients through a software hub. 2696# 2697# @hubid: hub identifier number 2698# 2699# Since 1.2 2700## 2701{ 'struct': 'NetdevHubPortOptions', 2702 'data': { 2703 'hubid': 'int32' } } 2704 2705## 2706# @NetdevNetmapOptions 2707# 2708# Connect a client to a netmap-enabled NIC or to a VALE switch port 2709# 2710# @ifname: Either the name of an existing network interface supported by 2711# netmap, or the name of a VALE port (created on the fly). 2712# A VALE port name is in the form 'valeXXX:YYY', where XXX and 2713# YYY are non-negative integers. XXX identifies a switch and 2714# YYY identifies a port of the switch. VALE ports having the 2715# same XXX are therefore connected to the same switch. 2716# 2717# @devname: #optional path of the netmap device (default: '/dev/netmap'). 2718# 2719# Since 2.0 2720## 2721{ 'struct': 'NetdevNetmapOptions', 2722 'data': { 2723 'ifname': 'str', 2724 '*devname': 'str' } } 2725 2726## 2727# @NetdevVhostUserOptions 2728# 2729# Vhost-user network backend 2730# 2731# @chardev: name of a unix socket chardev 2732# 2733# @vhostforce: #optional vhost on for non-MSIX virtio guests (default: false). 2734# 2735# @queues: #optional number of queues to be created for multiqueue vhost-user 2736# (default: 1) (Since 2.5) 2737# 2738# Since 2.1 2739## 2740{ 'struct': 'NetdevVhostUserOptions', 2741 'data': { 2742 'chardev': 'str', 2743 '*vhostforce': 'bool', 2744 '*queues': 'int' } } 2745 2746## 2747# @NetClientOptions 2748# 2749# A discriminated record of network device traits. 2750# 2751# Since 1.2 2752# 2753# 'l2tpv3' - since 2.1 2754# 2755## 2756{ 'union': 'NetClientOptions', 2757 'data': { 2758 'none': 'NetdevNoneOptions', 2759 'nic': 'NetLegacyNicOptions', 2760 'user': 'NetdevUserOptions', 2761 'tap': 'NetdevTapOptions', 2762 'l2tpv3': 'NetdevL2TPv3Options', 2763 'socket': 'NetdevSocketOptions', 2764 'vde': 'NetdevVdeOptions', 2765 'dump': 'NetdevDumpOptions', 2766 'bridge': 'NetdevBridgeOptions', 2767 'hubport': 'NetdevHubPortOptions', 2768 'netmap': 'NetdevNetmapOptions', 2769 'vhost-user': 'NetdevVhostUserOptions' } } 2770 2771## 2772# @NetLegacy 2773# 2774# Captures the configuration of a network device; legacy. 2775# 2776# @vlan: #optional vlan number 2777# 2778# @id: #optional identifier for monitor commands 2779# 2780# @name: #optional identifier for monitor commands, ignored if @id is present 2781# 2782# @opts: device type specific properties (legacy) 2783# 2784# Since 1.2 2785## 2786{ 'struct': 'NetLegacy', 2787 'data': { 2788 '*vlan': 'int32', 2789 '*id': 'str', 2790 '*name': 'str', 2791 'opts': 'NetClientOptions' } } 2792 2793## 2794# @Netdev 2795# 2796# Captures the configuration of a network device. 2797# 2798# @id: identifier for monitor commands. 2799# 2800# @opts: device type specific properties 2801# 2802# Since 1.2 2803## 2804{ 'struct': 'Netdev', 2805 'data': { 2806 'id': 'str', 2807 'opts': 'NetClientOptions' } } 2808 2809## 2810# @NetFilterDirection 2811# 2812# Indicates whether a netfilter is attached to a netdev's transmit queue or 2813# receive queue or both. 2814# 2815# @all: the filter is attached both to the receive and the transmit 2816# queue of the netdev (default). 2817# 2818# @rx: the filter is attached to the receive queue of the netdev, 2819# where it will receive packets sent to the netdev. 2820# 2821# @tx: the filter is attached to the transmit queue of the netdev, 2822# where it will receive packets sent by the netdev. 2823# 2824# Since 2.5 2825## 2826{ 'enum': 'NetFilterDirection', 2827 'data': [ 'all', 'rx', 'tx' ] } 2828 2829## 2830# @InetSocketAddress 2831# 2832# Captures a socket address or address range in the Internet namespace. 2833# 2834# @host: host part of the address 2835# 2836# @port: port part of the address, or lowest port if @to is present 2837# 2838# @to: highest port to try 2839# 2840# @ipv4: whether to accept IPv4 addresses, default try both IPv4 and IPv6 2841# #optional 2842# 2843# @ipv6: whether to accept IPv6 addresses, default try both IPv4 and IPv6 2844# #optional 2845# 2846# Since 1.3 2847## 2848{ 'struct': 'InetSocketAddress', 2849 'data': { 2850 'host': 'str', 2851 'port': 'str', 2852 '*to': 'uint16', 2853 '*ipv4': 'bool', 2854 '*ipv6': 'bool' } } 2855 2856## 2857# @UnixSocketAddress 2858# 2859# Captures a socket address in the local ("Unix socket") namespace. 2860# 2861# @path: filesystem path to use 2862# 2863# Since 1.3 2864## 2865{ 'struct': 'UnixSocketAddress', 2866 'data': { 2867 'path': 'str' } } 2868 2869## 2870# @SocketAddress 2871# 2872# Captures the address of a socket, which could also be a named file descriptor 2873# 2874# Since 1.3 2875## 2876{ 'union': 'SocketAddress', 2877 'data': { 2878 'inet': 'InetSocketAddress', 2879 'unix': 'UnixSocketAddress', 2880 'fd': 'String' } } 2881 2882## 2883# @getfd: 2884# 2885# Receive a file descriptor via SCM rights and assign it a name 2886# 2887# @fdname: file descriptor name 2888# 2889# Returns: Nothing on success 2890# 2891# Since: 0.14.0 2892# 2893# Notes: If @fdname already exists, the file descriptor assigned to 2894# it will be closed and replaced by the received file 2895# descriptor. 2896# The 'closefd' command can be used to explicitly close the 2897# file descriptor when it is no longer needed. 2898## 2899{ 'command': 'getfd', 'data': {'fdname': 'str'} } 2900 2901## 2902# @closefd: 2903# 2904# Close a file descriptor previously passed via SCM rights 2905# 2906# @fdname: file descriptor name 2907# 2908# Returns: Nothing on success 2909# 2910# Since: 0.14.0 2911## 2912{ 'command': 'closefd', 'data': {'fdname': 'str'} } 2913 2914## 2915# @MachineInfo: 2916# 2917# Information describing a machine. 2918# 2919# @name: the name of the machine 2920# 2921# @alias: #optional an alias for the machine name 2922# 2923# @default: #optional whether the machine is default 2924# 2925# @cpu-max: maximum number of CPUs supported by the machine type 2926# (since 1.5.0) 2927# 2928# Since: 1.2.0 2929## 2930{ 'struct': 'MachineInfo', 2931 'data': { 'name': 'str', '*alias': 'str', 2932 '*is-default': 'bool', 'cpu-max': 'int' } } 2933 2934## 2935# @query-machines: 2936# 2937# Return a list of supported machines 2938# 2939# Returns: a list of MachineInfo 2940# 2941# Since: 1.2.0 2942## 2943{ 'command': 'query-machines', 'returns': ['MachineInfo'] } 2944 2945## 2946# @CpuDefinitionInfo: 2947# 2948# Virtual CPU definition. 2949# 2950# @name: the name of the CPU definition 2951# 2952# Since: 1.2.0 2953## 2954{ 'struct': 'CpuDefinitionInfo', 2955 'data': { 'name': 'str' } } 2956 2957## 2958# @query-cpu-definitions: 2959# 2960# Return a list of supported virtual CPU definitions 2961# 2962# Returns: a list of CpuDefInfo 2963# 2964# Since: 1.2.0 2965## 2966{ 'command': 'query-cpu-definitions', 'returns': ['CpuDefinitionInfo'] } 2967 2968# @AddfdInfo: 2969# 2970# Information about a file descriptor that was added to an fd set. 2971# 2972# @fdset-id: The ID of the fd set that @fd was added to. 2973# 2974# @fd: The file descriptor that was received via SCM rights and 2975# added to the fd set. 2976# 2977# Since: 1.2.0 2978## 2979{ 'struct': 'AddfdInfo', 'data': {'fdset-id': 'int', 'fd': 'int'} } 2980 2981## 2982# @add-fd: 2983# 2984# Add a file descriptor, that was passed via SCM rights, to an fd set. 2985# 2986# @fdset-id: #optional The ID of the fd set to add the file descriptor to. 2987# 2988# @opaque: #optional A free-form string that can be used to describe the fd. 2989# 2990# Returns: @AddfdInfo on success 2991# If file descriptor was not received, FdNotSupplied 2992# If @fdset-id is a negative value, InvalidParameterValue 2993# 2994# Notes: The list of fd sets is shared by all monitor connections. 2995# 2996# If @fdset-id is not specified, a new fd set will be created. 2997# 2998# Since: 1.2.0 2999## 3000{ 'command': 'add-fd', 'data': {'*fdset-id': 'int', '*opaque': 'str'},
3001 'returns': 'AddfdInfo' } 3002 3003## 3004# @remove-fd: 3005# 3006# Remove a file descriptor from an fd set. 3007# 3008# @fdset-id: The ID of the fd set that the file descriptor belongs to. 3009# 3010# @fd: #optional The file descriptor that is to be removed. 3011# 3012# Returns: Nothing on success 3013# If @fdset-id or @fd is not found, FdNotFound 3014# 3015# Since: 1.2.0 3016# 3017# Notes: The list of fd sets is shared by all monitor connections. 3018# 3019# If @fd is not specified, all file descriptors in @fdset-id 3020# will be removed. 3021## 3022{ 'command': 'remove-fd', 'data': {'fdset-id': 'int', '*fd': 'int'} } 3023 3024## 3025# @FdsetFdInfo: 3026# 3027# Information about a file descriptor that belongs to an fd set. 3028# 3029# @fd: The file descriptor value. 3030# 3031# @opaque: #optional A free-form string that can be used to describe the fd. 3032# 3033# Since: 1.2.0 3034## 3035{ 'struct': 'FdsetFdInfo', 3036 'data': {'fd': 'int', '*opaque': 'str'} } 3037 3038## 3039# @FdsetInfo: 3040# 3041# Information about an fd set. 3042# 3043# @fdset-id: The ID of the fd set. 3044# 3045# @fds: A list of file descriptors that belong to this fd set. 3046# 3047# Since: 1.2.0 3048## 3049{ 'struct': 'FdsetInfo', 3050 'data': {'fdset-id': 'int', 'fds': ['FdsetFdInfo']} } 3051 3052## 3053# @query-fdsets: 3054# 3055# Return information describing all fd sets. 3056# 3057# Returns: A list of @FdsetInfo 3058# 3059# Since: 1.2.0 3060# 3061# Note: The list of fd sets is shared by all monitor connections. 3062# 3063## 3064{ 'command': 'query-fdsets', 'returns': ['FdsetInfo'] } 3065 3066## 3067# @TargetInfo: 3068# 3069# Information describing the QEMU target. 3070# 3071# @arch: the target architecture (eg "x86_64", "i386", etc) 3072# 3073# Since: 1.2.0 3074## 3075{ 'struct': 'TargetInfo', 3076 'data': { 'arch': 'str' } } 3077 3078## 3079# @query-target: 3080# 3081# Return information about the target for this QEMU 3082# 3083# Returns: TargetInfo 3084# 3085# Since: 1.2.0 3086## 3087{ 'command': 'query-target', 'returns': 'TargetInfo' } 3088 3089## 3090# @QKeyCode: 3091# 3092# An enumeration of key name. 3093# 3094# This is used by the send-key command. 3095# 3096# Since: 1.3.0 3097# 3098# 'unmapped' and 'pause' since 2.0 3099# 'ro' and 'kp_comma' since 2.4 3100# 'kp_equals' and 'power' since 2.6 3101## 3102{ 'enum': 'QKeyCode', 3103 'data': [ 'unmapped', 3104 'shift', 'shift_r', 'alt', 'alt_r', 'altgr', 'altgr_r', 'ctrl', 3105 'ctrl_r', 'menu', 'esc', '1', '2', '3', '4', '5', '6', '7', '8', 3106 '9', '0', 'minus', 'equal', 'backspace', 'tab', 'q', 'w', 'e', 3107 'r', 't', 'y', 'u', 'i', 'o', 'p', 'bracket_left', 'bracket_right', 3108 'ret', 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'semicolon', 3109 'apostrophe', 'grave_accent', 'backslash', 'z', 'x', 'c', 'v', 'b', 3110 'n', 'm', 'comma', 'dot', 'slash', 'asterisk', 'spc', 'caps_lock', 3111 'f1', 'f2', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9', 'f10', 3112 'num_lock', 'scroll_lock', 'kp_divide', 'kp_multiply', 3113 'kp_subtract', 'kp_add', 'kp_enter', 'kp_decimal', 'sysrq', 'kp_0', 3114 'kp_1', 'kp_2', 'kp_3', 'kp_4', 'kp_5', 'kp_6', 'kp_7', 'kp_8', 3115 'kp_9', 'less', 'f11', 'f12', 'print', 'home', 'pgup', 'pgdn', 'end', 3116 'left', 'up', 'down', 'right', 'insert', 'delete', 'stop', 'again', 3117 'props', 'undo', 'front', 'copy', 'open', 'paste', 'find', 'cut', 3118 'lf', 'help', 'meta_l', 'meta_r', 'compose', 'pause', 'ro', 3119 'kp_comma', 'kp_equals', 'power' ] } 3120 3121## 3122# @KeyValue 3123# 3124# Represents a keyboard key. 3125# 3126# Since: 1.3.0 3127## 3128{ 'union': 'KeyValue', 3129 'data': { 3130 'number': 'int', 3131 'qcode': 'QKeyCode' } } 3132 3133## 3134# @send-key: 3135# 3136# Send keys to guest. 3137# 3138# @keys: An array of @KeyValue elements. All @KeyValues in this array are 3139# simultaneously sent to the guest. A @KeyValue.number value is sent 3140# directly to the guest, while @KeyValue.qcode must be a valid 3141# @QKeyCode value 3142# 3143# @hold-time: #optional time to delay key up events, milliseconds. Defaults 3144# to 100 3145# 3146# Returns: Nothing on success 3147# If key is unknown or redundant, InvalidParameter 3148# 3149# Since: 1.3.0 3150# 3151## 3152{ 'command': 'send-key', 3153 'data': { 'keys': ['KeyValue'], '*hold-time': 'int' } } 3154 3155## 3156# @screendump: 3157# 3158# Write a PPM of the VGA screen to a file. 3159# 3160# @filename: the path of a new PPM file to store the image 3161# 3162# Returns: Nothing on success 3163# 3164# Since: 0.14.0 3165## 3166{ 'command': 'screendump', 'data': {'filename': 'str'} } 3167 3168 3169## 3170# @ChardevCommon: 3171# 3172# Configuration shared across all chardev backends 3173# 3174# @logfile: #optional The name of a logfile to save output 3175# @logappend: #optional true to append instead of truncate 3176# (default to false to truncate) 3177# 3178# Since: 2.6 3179## 3180{ 'struct': 'ChardevCommon', 'data': { '*logfile': 'str', 3181 '*logappend': 'bool' } } 3182 3183## 3184# @ChardevFile: 3185# 3186# Configuration info for file chardevs. 3187# 3188# @in: #optional The name of the input file 3189# @out: The name of the output file 3190# @append: #optional Open the file in append mode (default false to 3191# truncate) (Since 2.6) 3192# 3193# Since: 1.4 3194## 3195{ 'struct': 'ChardevFile', 'data': { '*in' : 'str', 3196 'out' : 'str', 3197 '*append': 'bool' }, 3198 'base': 'ChardevCommon' } 3199 3200## 3201# @ChardevHostdev: 3202# 3203# Configuration info for device and pipe chardevs. 3204# 3205# @device: The name of the special file for the device, 3206# i.e. /dev/ttyS0 on Unix or COM1: on Windows 3207# @type: What kind of device this is. 3208# 3209# Since: 1.4 3210## 3211{ 'struct': 'ChardevHostdev', 'data': { 'device' : 'str' }, 3212 'base': 'ChardevCommon' } 3213 3214## 3215# @ChardevSocket: 3216# 3217# Configuration info for (stream) socket chardevs. 3218# 3219# @addr: socket address to listen on (server=true) 3220# or connect to (server=false) 3221# @tls-creds: #optional the ID of the TLS credentials object (since 2.6) 3222# @server: #optional create server socket (default: true) 3223# @wait: #optional wait for incoming connection on server 3224# sockets (default: false). 3225# @nodelay: #optional set TCP_NODELAY socket option (default: false) 3226# @telnet: #optional enable telnet protocol on server 3227# sockets (default: false) 3228# @reconnect: #optional For a client socket, if a socket is disconnected, 3229# then attempt a reconnect after the given number of seconds. 3230# Setting this to zero disables this function. (default: 0) 3231# (Since: 2.2) 3232# 3233# Since: 1.4 3234## 3235{ 'struct': 'ChardevSocket', 'data': { 'addr' : 'SocketAddress', 3236 '*tls-creds' : 'str', 3237 '*server' : 'bool', 3238 '*wait' : 'bool', 3239 '*nodelay' : 'bool', 3240 '*telnet' : 'bool', 3241 '*reconnect' : 'int' }, 3242 'base': 'ChardevCommon' } 3243 3244## 3245# @ChardevUdp: 3246# 3247# Configuration info for datagram socket chardevs. 3248# 3249# @remote: remote address 3250# @local: #optional local address 3251# 3252# Since: 1.5 3253## 3254{ 'struct': 'ChardevUdp', 'data': { 'remote' : 'SocketAddress', 3255 '*local' : 'SocketAddress' }, 3256 'base': 'ChardevCommon' } 3257 3258## 3259# @ChardevMux: 3260# 3261# Configuration info for mux chardevs. 3262# 3263# @chardev: name of the base chardev. 3264# 3265# Since: 1.5 3266## 3267{ 'struct': 'ChardevMux', 'data': { 'chardev' : 'str' }, 3268 'base': 'ChardevCommon' } 3269 3270## 3271# @ChardevStdio: 3272# 3273# Configuration info for stdio chardevs. 3274# 3275# @signal: #optional Allow signals (such as SIGINT triggered by ^C) 3276# be delivered to qemu. Default: true in -nographic mode, 3277# false otherwise. 3278# 3279# Since: 1.5 3280## 3281{ 'struct': 'ChardevStdio', 'data': { '*signal' : 'bool' }, 3282 'base': 'ChardevCommon' } 3283 3284 3285## 3286# @ChardevSpiceChannel: 3287# 3288# Configuration info for spice vm channel chardevs. 3289# 3290# @type: kind of channel (for example vdagent). 3291# 3292# Since: 1.5 3293## 3294{ 'struct': 'ChardevSpiceChannel', 'data': { 'type' : 'str' }, 3295 'base': 'ChardevCommon' } 3296 3297## 3298# @ChardevSpicePort: 3299# 3300# Configuration info for spice port chardevs. 3301# 3302# @fqdn: name of the channel (see docs/spice-port-fqdn.txt) 3303# 3304# Since: 1.5 3305## 3306{ 'struct': 'ChardevSpicePort', 'data': { 'fqdn' : 'str' }, 3307 'base': 'ChardevCommon' } 3308 3309## 3310# @ChardevVC: 3311# 3312# Configuration info for virtual console chardevs. 3313# 3314# @width: console width, in pixels 3315# @height: console height, in pixels 3316# @cols: console width, in chars 3317# @rows: console height, in chars 3318# 3319# Since: 1.5 3320## 3321{ 'struct': 'ChardevVC', 'data': { '*width' : 'int', 3322 '*height' : 'int', 3323 '*cols' : 'int', 3324 '*rows' : 'int' }, 3325 'base': 'ChardevCommon' } 3326 3327## 3328# @ChardevRingbuf: 3329# 3330# Configuration info for ring buffer chardevs. 3331# 3332# @size: #optional ring buffer size, must be power of two, default is 65536 3333# 3334# Since: 1.5 3335## 3336{ 'struct': 'ChardevRingbuf', 'data': { '*size' : 'int' }, 3337 'base': 'ChardevCommon' } 3338 3339## 3340# @ChardevBackend: 3341# 3342# Configuration info for the new chardev backend. 3343# 3344# Since: 1.4 (testdev since 2.2) 3345## 3346{ 'union': 'ChardevBackend', 'data': { 'file' : 'ChardevFile', 3347 'serial' : 'ChardevHostdev', 3348 'parallel': 'ChardevHostdev', 3349 'pipe' : 'ChardevHostdev', 3350 'socket' : 'ChardevSocket', 3351 'udp' : 'ChardevUdp', 3352 'pty' : 'ChardevCommon', 3353 'null' : 'ChardevCommon', 3354 'mux' : 'ChardevMux', 3355 'msmouse': 'ChardevCommon', 3356 'braille': 'ChardevCommon', 3357 'testdev': 'ChardevCommon', 3358 'stdio' : 'ChardevStdio', 3359 'console': 'ChardevCommon', 3360 'spicevmc' : 'ChardevSpiceChannel', 3361 'spiceport' : 'ChardevSpicePort', 3362 'vc' : 'ChardevVC', 3363 'ringbuf': 'ChardevRingbuf', 3364 # next one is just for compatibility 3365 'memory' : 'ChardevRingbuf' } } 3366 3367## 3368# @ChardevReturn: 3369# 3370# Return info about the chardev backend just created. 3371# 3372# @pty: #optional name of the slave pseudoterminal device, present if 3373# and only if a chardev of type 'pty' was created 3374# 3375# Since: 1.4 3376## 3377{ 'struct' : 'ChardevReturn', 'data': { '*pty' : 'str' } } 3378 3379## 3380# @chardev-add: 3381# 3382# Add a character device backend 3383# 3384# @id: the chardev's ID, must be unique 3385# @backend: backend type and parameters 3386# 3387# Returns: ChardevReturn. 3388# 3389# Since: 1.4 3390## 3391{ 'command': 'chardev-add', 'data': {'id' : 'str', 3392 'backend' : 'ChardevBackend' }, 3393 'returns': 'ChardevReturn' } 3394 3395## 3396# @chardev-remove: 3397# 3398# Remove a character device backend 3399# 3400# @id: the chardev's ID, must exist and not be in use 3401# 3402# Returns: Nothing on success 3403# 3404# Since: 1.4 3405## 3406{ 'command': 'chardev-remove', 'data': {'id': 'str'} } 3407 3408## 3409# @TpmModel: 3410# 3411# An enumeration of TPM models 3412# 3413# @tpm-tis: TPM TIS model 3414# 3415# Since: 1.5 3416## 3417{ 'enum': 'TpmModel', 'data': [ 'tpm-tis' ] } 3418 3419## 3420# @query-tpm-models: 3421# 3422# Return a list of supported TPM models 3423# 3424# Returns: a list of TpmModel 3425# 3426# Since: 1.5 3427## 3428{ 'command': 'query-tpm-models', 'returns': ['TpmModel'] } 3429 3430## 3431# @TpmType: 3432# 3433# An enumeration of TPM types 3434# 3435# @passthrough: TPM passthrough type 3436# 3437# Since: 1.5 3438## 3439{ 'enum': 'TpmType', 'data': [ 'passthrough' ] } 3440 3441## 3442# @query-tpm-types: 3443# 3444# Return a list of supported TPM types 3445# 3446# Returns: a list of TpmType 3447# 3448# Since: 1.5 3449## 3450{ 'command': 'query-tpm-types', 'returns': ['TpmType'] } 3451 3452## 3453# @TPMPassthroughOptions: 3454# 3455# Information about the TPM passthrough type 3456# 3457# @path: #optional string describing the path used for accessing the TPM device 3458# 3459# @cancel-path: #optional string showing the TPM's sysfs cancel file 3460# for cancellation of TPM commands while they are executing 3461# 3462# Since: 1.5 3463## 3464{ 'struct': 'TPMPassthroughOptions', 'data': { '*path' : 'str', 3465 '*cancel-path' : 'str'} } 3466 3467## 3468# @TpmTypeOptions: 3469# 3470# A union referencing different TPM backend types' configuration options 3471# 3472# @passthrough: The configuration options for the TPM passthrough type 3473# 3474# Since: 1.5 3475## 3476{ 'union': 'TpmTypeOptions', 3477 'data': { 'passthrough' : 'TPMPassthroughOptions' } } 3478 3479## 3480# @TpmInfo: 3481# 3482# Information about the TPM 3483# 3484# @id: The Id of the TPM 3485# 3486# @model: The TPM frontend model 3487# 3488# @options: The TPM (backend) type configuration options 3489# 3490# Since: 1.5 3491## 3492{ 'struct': 'TPMInfo', 3493 'data': {'id': 'str', 3494 'model': 'TpmModel', 3495 'options': 'TpmTypeOptions' } } 3496 3497## 3498# @query-tpm: 3499# 3500# Return information about the TPM device 3501# 3502# Returns: @TPMInfo on success 3503# 3504# Since: 1.5 3505## 3506{ 'command': 'query-tpm', 'returns': ['TPMInfo'] } 3507 3508## 3509# @AcpiTableOptions 3510# 3511# Specify an ACPI table on the command line to load. 3512# 3513# At most one of @file and @data can be specified. The list of files specified 3514# by any one of them is loaded and concatenated in order. If both are omitted, 3515# @data is implied. 3516# 3517# Other fields / optargs can be used to override fields of the generic ACPI 3518# table header; refer to the ACPI specification 5.0, section 5.2.6 System 3519# Description Table Header. If a header field is not overridden, then the 3520# corresponding value from the concatenated blob is used (in case of @file), or 3521# it is filled in with a hard-coded value (in case of @data). 3522# 3523# String fields are copied into the matching ACPI member from lowest address 3524# upwards, and silently truncated / NUL-padded to length. 3525# 3526# @sig: #optional table signature / identifier (4 bytes) 3527# 3528# @rev: #optional table revision number (dependent on signature, 1 byte) 3529# 3530# @oem_id: #optional OEM identifier (6 bytes) 3531# 3532# @oem_table_id: #optional OEM table identifier (8 bytes) 3533# 3534# @oem_rev: #optional OEM-supplied revision number (4 bytes) 3535# 3536# @asl_compiler_id: #optional identifier of the utility that created the table 3537# (4 bytes) 3538# 3539# @asl_compiler_rev: #optional revision number of the utility that created the 3540# table (4 bytes) 3541# 3542# @file: #optional colon (:) separated list of pathnames to load and 3543# concatenate as table data. The resultant binary blob is expected to 3544# have an ACPI table header. At least one file is required. This field 3545# excludes @data. 3546# 3547# @data: #optional colon (:) separated list of pathnames to load and 3548# concatenate as table data. The resultant binary blob must not have an 3549# ACPI table header. At least one file is required. This field excludes 3550# @file. 3551# 3552# Since 1.5 3553## 3554{ 'struct': 'AcpiTableOptions', 3555 'data': { 3556 '*sig': 'str', 3557 '*rev': 'uint8', 3558 '*oem_id': 'str', 3559 '*oem_table_id': 'str', 3560 '*oem_rev': 'uint32', 3561 '*asl_compiler_id': 'str', 3562 '*asl_compiler_rev': 'uint32', 3563 '*file': 'str', 3564 '*data': 'str' }} 3565 3566## 3567# @CommandLineParameterType: 3568# 3569# Possible types for an option parameter. 3570# 3571# @string: accepts a character string 3572# 3573# @boolean: accepts "on" or "off" 3574# 3575# @number: accepts a number 3576# 3577# @size: accepts a number followed by an optional suffix (K)ilo, 3578# (M)ega, (G)iga, (T)era 3579# 3580# Since 1.5 3581## 3582{ 'enum': 'CommandLineParameterType', 3583 'data': ['string', 'boolean', 'number', 'size'] } 3584 3585## 3586# @CommandLineParameterInfo: 3587# 3588# Details about a single parameter of a command line option. 3589# 3590# @name: parameter name 3591# 3592# @type: parameter @CommandLineParameterType 3593# 3594# @help: #optional human readable text string, not suitable for parsing. 3595# 3596# @default: #optional default value string (since 2.1) 3597# 3598# Since 1.5 3599## 3600{ 'struct': 'CommandLineParameterInfo', 3601 'data': { 'name': 'str', 3602 'type': 'CommandLineParameterType', 3603 '*help': 'str', 3604 '*default': 'str' } } 3605 3606## 3607# @CommandLineOptionInfo: 3608# 3609# Details about a command line option, including its list of parameter details 3610# 3611# @option: option name 3612# 3613# @parameters: an array of @CommandLineParameterInfo 3614# 3615# Since 1.5 3616## 3617{ 'struct': 'CommandLineOptionInfo', 3618 'data': { 'option': 'str', 'parameters': ['CommandLineParameterInfo'] } } 3619 3620## 3621# @query-command-line-options: 3622# 3623# Query command line option schema. 3624# 3625# @option: #optional option name 3626# 3627# Returns: list of @CommandLineOptionInfo for all options (or for the given 3628# @option). Returns an error if the given @option doesn't exist. 3629# 3630# Since 1.5 3631## 3632{'command': 'query-command-line-options', 'data': { '*option': 'str' }, 3633 'returns': ['CommandLineOptionInfo'] } 3634 3635## 3636# @X86CPURegister32 3637# 3638# A X86 32-bit register 3639# 3640# Since: 1.5 3641## 3642{ 'enum': 'X86CPURegister32', 3643 'data': [ 'EAX', 'EBX', 'ECX', 'EDX', 'ESP', 'EBP', 'ESI', 'EDI' ] } 3644 3645## 3646# @X86CPUFeatureWordInfo 3647# 3648# Information about a X86 CPU feature word 3649# 3650# @cpuid-input-eax: Input EAX value for CPUID instruction for that feature word 3651# 3652# @cpuid-input-ecx: #optional Input ECX value for CPUID instruction for that 3653# feature word 3654# 3655# @cpuid-register: Output register containing the feature bits 3656# 3657# @features: value of output register, containing the feature bits 3658# 3659# Since: 1.5 3660## 3661{ 'struct': 'X86CPUFeatureWordInfo', 3662 'data': { 'cpuid-input-eax': 'int', 3663 '*cpuid-input-ecx': 'int', 3664 'cpuid-register': 'X86CPURegister32', 3665 'features': 'int' } } 3666 3667## 3668# @DummyForceArrays 3669# 3670# Not used by QMP; hack to let us use X86CPUFeatureWordInfoList internally 3671# 3672# Since 2.5 3673## 3674{ 'struct': 'DummyForceArrays', 3675 'data': { 'unused': ['X86CPUFeatureWordInfo'] } } 3676 3677 3678## 3679# @RxState: 3680# 3681# Packets receiving state 3682# 3683# @normal: filter assigned packets according to the mac-table 3684# 3685# @none: don't receive any assigned packet 3686# 3687# @all: receive all assigned packets 3688# 3689# Since: 1.6 3690## 3691{ 'enum': 'RxState', 'data': [ 'normal', 'none', 'all' ] } 3692 3693## 3694# @RxFilterInfo: 3695# 3696# Rx-filter information for a NIC. 3697# 3698# @name: net client name 3699# 3700# @promiscuous: whether promiscuous mode is enabled 3701# 3702# @multicast: multicast receive state 3703# 3704# @unicast: unicast receive state 3705# 3706# @vlan: vlan receive state (Since 2.0) 3707# 3708# @broadcast-allowed: whether to receive broadcast 3709# 3710# @multicast-overflow: multicast table is overflowed or not 3711# 3712# @unicast-overflow: unicast table is overflowed or not 3713# 3714# @main-mac: the main macaddr string 3715# 3716# @vlan-table: a list of active vlan id 3717# 3718# @unicast-table: a list of unicast macaddr string 3719# 3720# @multicast-table: a list of multicast macaddr string 3721# 3722# Since 1.6 3723## 3724 3725{ 'struct': 'RxFilterInfo', 3726 'data': { 3727 'name': 'str', 3728 'promiscuous': 'bool', 3729 'multicast': 'RxState', 3730 'unicast': 'RxState', 3731 'vlan': 'RxState', 3732 'broadcast-allowed': 'bool', 3733 'multicast-overflow': 'bool', 3734 'unicast-overflow': 'bool', 3735 'main-mac': 'str', 3736 'vlan-table': ['int'], 3737 'unicast-table': ['str'], 3738 'multicast-table': ['str'] }} 3739 3740## 3741# @query-rx-filter: 3742# 3743# Return rx-filter information for all NICs (or for the given NIC). 3744# 3745# @name: #optional net client name 3746# 3747# Returns: list of @RxFilterInfo for all NICs (or for the given NIC). 3748# Returns an error if the given @name doesn't exist, or given 3749# NIC doesn't support rx-filter querying, or given net client 3750# isn't a NIC. 3751# 3752# Since: 1.6 3753## 3754{ 'command': 'query-rx-filter', 'data': { '*name': 'str' }, 3755 'returns': ['RxFilterInfo'] } 3756 3757## 3758# @InputButton 3759# 3760# Button of a pointer input device (mouse, tablet). 3761# 3762# Since: 2.0 3763## 3764{ 'enum' : 'InputButton', 3765 'data' : [ 'left', 'middle', 'right', 'wheel-up', 'wheel-down' ] } 3766 3767## 3768# @InputAxis 3769# 3770# Position axis of a pointer input device (mouse, tablet). 3771# 3772# Since: 2.0 3773## 3774{ 'enum' : 'InputAxis', 3775 'data' : [ 'x', 'y' ] } 3776 3777## 3778# @InputKeyEvent 3779# 3780# Keyboard input event. 3781# 3782# @key: Which key this event is for. 3783# @down: True for key-down and false for key-up events. 3784# 3785# Since: 2.0 3786## 3787{ 'struct' : 'InputKeyEvent', 3788 'data' : { 'key' : 'KeyValue', 3789 'down' : 'bool' } } 3790 3791## 3792# @InputBtnEvent 3793# 3794# Pointer button input event. 3795# 3796# @button: Which button this event is for. 3797# @down: True for key-down and false for key-up events. 3798# 3799# Since: 2.0 3800## 3801{ 'struct' : 'InputBtnEvent', 3802 'data' : { 'button' : 'InputButton', 3803 'down' : 'bool' } } 3804 3805## 3806# @InputMoveEvent 3807# 3808# Pointer motion input event. 3809# 3810# @axis: Which axis is referenced by @value. 3811# @value: Pointer position. For absolute coordinates the 3812# valid range is 0 -> 0x7ffff 3813# 3814# Since: 2.0 3815## 3816{ 'struct' : 'InputMoveEvent', 3817 'data' : { 'axis' : 'InputAxis', 3818 'value' : 'int' } } 3819 3820## 3821# @InputEvent 3822# 3823# Input event union. 3824# 3825# @key: Input event of Keyboard 3826# @btn: Input event of pointer buttons 3827# @rel: Input event of relative pointer motion 3828# @abs: Input event of absolute pointer motion 3829# 3830# Since: 2.0 3831## 3832{ 'union' : 'InputEvent', 3833 'data' : { 'key' : 'InputKeyEvent', 3834 'btn' : 'InputBtnEvent', 3835 'rel' : 'InputMoveEvent', 3836 'abs' : 'InputMoveEvent' } } 3837 3838## 3839# @input-send-event 3840# 3841# Send input event(s) to guest. 3842# 3843# @device: #optional display device to send event(s) to. 3844# @head: #optional head to send event(s) to, in case the 3845# display device supports multiple scanouts. 3846# @events: List of InputEvent union. 3847# 3848# Returns: Nothing on success. 3849# 3850# The @display and @head parameters can be used to send the input 3851# event to specific input devices in case (a) multiple input devices 3852# of the same kind are added to the virtual machine and (b) you have 3853# configured input routing (see docs/multiseat.txt) for those input 3854# devices. The parameters work exactly like the device and head 3855# properties of input devices. If @device is missing, only devices 3856# that have no input routing config are admissible. If @device is 3857# specified, both input devices with and without input routing config 3858# are admissible, but devices with input routing config take 3859# precedence. 3860# 3861# Since: 2.6 3862## 3863{ 'command': 'input-send-event', 3864 'data': { '*device': 'str', 3865 '*head' : 'int', 3866 'events' : [ 'InputEvent' ] } } 3867 3868## 3869# @NumaOptions 3870# 3871# A discriminated record of NUMA options. (for OptsVisitor) 3872# 3873# Since 2.1 3874## 3875{ 'union': 'NumaOptions', 3876 'data': { 3877 'node': 'NumaNodeOptions' }} 3878 3879## 3880# @NumaNodeOptions 3881# 3882# Create a guest NUMA node. (for OptsVisitor) 3883# 3884# @nodeid: #optional NUMA node ID (increase by 1 from 0 if omitted) 3885# 3886# @cpus: #optional VCPUs belonging to this node (assign VCPUS round-robin 3887# if omitted) 3888# 3889# @mem: #optional memory size of this node; mutually exclusive with @memdev. 3890# Equally divide total memory among nodes if both @mem and @memdev are 3891# omitted. 3892# 3893# @memdev: #optional memory backend object. If specified for one node, 3894# it must be specified for all nodes. 3895# 3896# Since: 2.1 3897## 3898{ 'struct': 'NumaNodeOptions', 3899 'data': { 3900 '*nodeid': 'uint16', 3901 '*cpus': ['uint16'], 3902 '*mem': 'size', 3903 '*memdev': 'str' }} 3904 3905## 3906# @HostMemPolicy 3907# 3908# Host memory policy types 3909# 3910# @default: restore default policy, remove any nondefault policy 3911# 3912# @preferred: set the preferred host nodes for allocation 3913# 3914# @bind: a strict policy that restricts memory allocation to the 3915# host nodes specified 3916# 3917# @interleave: memory allocations are interleaved across the set 3918# of host nodes specified 3919# 3920# Since 2.1 3921## 3922{ 'enum': 'HostMemPolicy', 3923 'data': [ 'default', 'preferred', 'bind', 'interleave' ] } 3924 3925## 3926# @Memdev: 3927# 3928# Information about memory backend 3929# 3930# @size: memory backend size 3931# 3932# @merge: enables or disables memory merge support 3933# 3934# @dump: includes memory backend's memory in a core dump or not 3935# 3936# @prealloc: enables or disables memory preallocation 3937# 3938# @host-nodes: host nodes for its memory policy 3939# 3940# @policy: memory policy of memory backend 3941# 3942# Since: 2.1 3943## 3944 3945{ 'struct': 'Memdev', 3946 'data': { 3947 'size': 'size', 3948 'merge': 'bool', 3949 'dump': 'bool', 3950 'prealloc': 'bool', 3951 'host-nodes': ['uint16'], 3952 'policy': 'HostMemPolicy' }} 3953 3954## 3955# @query-memdev: 3956# 3957# Returns information for all memory backends. 3958# 3959# Returns: a list of @Memdev. 3960# 3961# Since: 2.1 3962## 3963{ 'command': 'query-memdev', 'returns': ['Memdev'] } 3964 3965## 3966# @PCDIMMDeviceInfo: 3967# 3968# PCDIMMDevice state information 3969# 3970# @id: #optional device's ID 3971# 3972# @addr: physical address, where device is mapped 3973# 3974# @size: size of memory that the device provides 3975# 3976# @slot: slot number at which device is plugged in 3977# 3978# @node: NUMA node number where device is plugged in 3979# 3980# @memdev: memory backend linked with device 3981# 3982# @hotplugged: true if device was hotplugged 3983# 3984# @hotpluggable: true if device if could be added/removed while machine is running 3985# 3986# Since: 2.1 3987## 3988{ 'struct': 'PCDIMMDeviceInfo', 3989 'data': { '*id': 'str', 3990 'addr': 'int', 3991 'size': 'int', 3992 'slot': 'int', 3993 'node': 'int', 3994 'memdev': 'str', 3995 'hotplugged': 'bool', 3996 'hotpluggable': 'bool' 3997 } 3998} 3999 4000##
4001# @MemoryDeviceInfo: 4002# 4003# Union containing information about a memory device 4004# 4005# Since: 2.1 4006## 4007{ 'union': 'MemoryDeviceInfo', 'data': {'dimm': 'PCDIMMDeviceInfo'} } 4008 4009## 4010# @query-memory-devices 4011# 4012# Lists available memory devices and their state 4013# 4014# Since: 2.1 4015## 4016{ 'command': 'query-memory-devices', 'returns': ['MemoryDeviceInfo'] } 4017 4018## @ACPISlotType 4019# 4020# @DIMM: memory slot 4021# 4022{ 'enum': 'ACPISlotType', 'data': [ 'DIMM' ] } 4023 4024## @ACPIOSTInfo 4025# 4026# OSPM Status Indication for a device 4027# For description of possible values of @source and @status fields 4028# see "_OST (OSPM Status Indication)" chapter of ACPI5.0 spec. 4029# 4030# @device: #optional device ID associated with slot 4031# 4032# @slot: slot ID, unique per slot of a given @slot-type 4033# 4034# @slot-type: type of the slot 4035# 4036# @source: an integer containing the source event 4037# 4038# @status: an integer containing the status code 4039# 4040# Since: 2.1 4041## 4042{ 'struct': 'ACPIOSTInfo', 4043 'data' : { '*device': 'str', 4044 'slot': 'str', 4045 'slot-type': 'ACPISlotType', 4046 'source': 'int', 4047 'status': 'int' } } 4048 4049## 4050# @query-acpi-ospm-status 4051# 4052# Lists ACPI OSPM status of ACPI device objects, 4053# which might be reported via _OST method 4054# 4055# Since: 2.1 4056## 4057{ 'command': 'query-acpi-ospm-status', 'returns': ['ACPIOSTInfo'] } 4058 4059## 4060# @WatchdogExpirationAction 4061# 4062# An enumeration of the actions taken when the watchdog device's timer is 4063# expired 4064# 4065# @reset: system resets 4066# 4067# @shutdown: system shutdown, note that it is similar to @powerdown, which 4068# tries to set to system status and notify guest 4069# 4070# @poweroff: system poweroff, the emulator program exits 4071# 4072# @pause: system pauses, similar to @stop 4073# 4074# @debug: system enters debug state 4075# 4076# @none: nothing is done 4077# 4078# @inject-nmi: a non-maskable interrupt is injected into the first VCPU (all 4079# VCPUS on x86) (since 2.4) 4080# 4081# Since: 2.1 4082## 4083{ 'enum': 'WatchdogExpirationAction', 4084 'data': [ 'reset', 'shutdown', 'poweroff', 'pause', 'debug', 'none', 4085 'inject-nmi' ] } 4086 4087## 4088# @IoOperationType 4089# 4090# An enumeration of the I/O operation types 4091# 4092# @read: read operation 4093# 4094# @write: write operation 4095# 4096# Since: 2.1 4097## 4098{ 'enum': 'IoOperationType', 4099 'data': [ 'read', 'write' ] } 4100 4101## 4102# @GuestPanicAction 4103# 4104# An enumeration of the actions taken when guest OS panic is detected 4105# 4106# @pause: system pauses 4107# 4108# Since: 2.1 4109## 4110{ 'enum': 'GuestPanicAction', 4111 'data': [ 'pause' ] } 4112 4113## 4114# @rtc-reset-reinjection 4115# 4116# This command will reset the RTC interrupt reinjection backlog. 4117# Can be used if another mechanism to synchronize guest time 4118# is in effect, for example QEMU guest agent's guest-set-time 4119# command. 4120# 4121# Since: 2.1 4122## 4123{ 'command': 'rtc-reset-reinjection' } 4124 4125# Rocker ethernet network switch 4126{ 'include': 'qapi/rocker.json' } 4127 4128## 4129# ReplayMode: 4130# 4131# Mode of the replay subsystem. 4132# 4133# @none: normal execution mode. Replay or record are not enabled. 4134# 4135# @record: record mode. All non-deterministic data is written into the 4136# replay log. 4137# 4138# @play: replay mode. Non-deterministic data required for system execution 4139# is read from the log. 4140# 4141# Since: 2.5 4142## 4143{ 'enum': 'ReplayMode', 4144 'data': [ 'none', 'record', 'play' ] } 4145 4146## 4147# @GICCapability: 4148# 4149# The struct describes capability for a specific GIC (Generic 4150# Interrupt Controller) version. These bits are not only decided by 4151# QEMU/KVM software version, but also decided by the hardware that 4152# the program is running upon. 4153# 4154# @version: version of GIC to be described. Currently, only 2 and 3 4155# are supported. 4156# 4157# @emulated: whether current QEMU/hardware supports emulated GIC 4158# device in user space. 4159# 4160# @kernel: whether current QEMU/hardware supports hardware 4161# accelerated GIC device in kernel. 4162# 4163# Since: 2.6 4164## 4165{ 'struct': 'GICCapability', 4166 'data': { 'version': 'int', 4167 'emulated': 'bool', 4168 'kernel': 'bool' } } 4169 4170## 4171# @query-gic-capabilities: 4172# 4173# This command is ARM-only. It will return a list of GICCapability 4174# objects that describe its capability bits. 4175# 4176# Returns: a list of GICCapability objects. 4177# 4178# Since: 2.6 4179## 4180{ 'command': 'query-gic-capabilities', 'returns': ['GICCapability'] } 4181