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