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