X-Git-Url: https://repo.jachan.dev/qemu.git/blobdiff_plain/eab9e9629c8f3c0ce87f7bcad82176f55029a640..3815d0de51124db3da50abaebbb4ec5f1d531f53:/qapi-schema.json diff --git a/qapi-schema.json b/qapi-schema.json index 8a7b527091..babac12e16 100644 --- a/qapi-schema.json +++ b/qapi-schema.json @@ -20,6 +20,10 @@ # QAPI introspection { 'include': 'qapi/introspect.json' } +## +# = QMP commands +## + ## # @qmp_capabilities: # @@ -65,7 +69,8 @@ { 'enum': 'LostTickPolicy', 'data': ['discard', 'delay', 'merge', 'slew' ] } -# @add_client +## +# @add_client: # # Allow client connections for VNC, Spice and socket based # character devices to be passed in to QEMU via SCM_RIGHTS. @@ -84,6 +89,13 @@ # Returns: nothing on success. # # Since: 0.14.0 +# +# Example: +# +# -> { "execute": "add_client", "arguments": { "protocol": "vnc", +# "fdname": "myclient" } } +# <- { "return": {} } +# ## { 'command': 'add_client', 'data': { 'protocol': 'str', 'fdname': 'str', '*skipauth': 'bool', @@ -96,7 +108,7 @@ # # @name: #optional The name of the guest # -# Since 0.14.0 +# Since: 0.14.0 ## { 'struct': 'NameInfo', 'data': {'*name': 'str'} } @@ -107,7 +119,13 @@ # # Returns: @NameInfo of the guest # -# Since 0.14.0 +# Since: 0.14.0 +# +# Example: +# +# -> { "execute": "query-name" } +# <- { "return": { "name": "qemu-name" } } +# ## { 'command': 'query-name', 'returns': 'NameInfo' } @@ -132,11 +150,17 @@ # Returns: @KvmInfo # # Since: 0.14.0 +# +# Example: +# +# -> { "execute": "query-kvm" } +# <- { "return": { "enabled": true, "present": true } } +# ## { 'command': 'query-kvm', 'returns': 'KvmInfo' } ## -# @RunState +# @RunState: # # An enumeration of VM run states. # @@ -176,8 +200,9 @@ # # @guest-panicked: guest has been panicked as a result of guest OS panic # -# @colo: guest is paused to save/restore VM state under colo checkpoint (since -# 2.8) +# @colo: guest is paused to save/restore VM state under colo checkpoint, +# VM can not get into this state unless colo capability is enabled +# for migration. (since 2.8) ## { 'enum': 'RunState', 'data': [ 'debug', 'inmigrate', 'internal-error', 'io-error', 'paused', @@ -211,13 +236,21 @@ # Returns: @StatusInfo reflecting all VCPUs # # Since: 0.14.0 +# +# Example: +# +# -> { "execute": "query-status" } +# <- { "return": { "running": true, +# "singlestep": false, +# "status": "running" } } +# ## { 'command': 'query-status', 'returns': 'StatusInfo' } ## # @UuidInfo: # -# Guest UUID information. +# Guest UUID information (Universally Unique Identifier). # # @UUID: the UUID of the guest # @@ -234,7 +267,13 @@ # # Returns: The @UuidInfo for the guest # -# Since 0.14.0 +# Since: 0.14.0 +# +# Example: +# +# -> { "execute": "query-uuid" } +# <- { "return": { "UUID": "550e8400-e29b-41d4-a716-446655440000" } } +# ## { 'command': 'query-uuid', 'returns': 'UuidInfo' } @@ -268,6 +307,30 @@ # Returns: a list of @ChardevInfo # # Since: 0.14.0 +# +# Example: +# +# -> { "execute": "query-chardev" } +# <- { +# "return": [ +# { +# "label": "charchannel0", +# "filename": "unix:/var/lib/libvirt/qemu/seabios.rhel6.agent,server", +# "frontend-open": false +# }, +# { +# "label": "charmonitor", +# "filename": "unix:/var/lib/libvirt/qemu/seabios.rhel6.monitor,server", +# "frontend-open": true +# }, +# { +# "label": "charserial0", +# "filename": "pty:/dev/pts/2", +# "frontend-open": true +# } +# ] +# } +# ## { 'command': 'query-chardev', 'returns': ['ChardevInfo'] } @@ -290,6 +353,27 @@ # Returns: a list of @ChardevBackendInfo # # Since: 2.0 +# +# Example: +# +# -> { "execute": "query-chardev-backends" } +# <- { +# "return":[ +# { +# "name":"udp" +# }, +# { +# "name":"tcp" +# }, +# { +# "name":"unix" +# }, +# { +# "name":"spiceport" +# } +# ] +# } +# ## { 'command': 'query-chardev-backends', 'returns': ['ChardevBackendInfo'] } @@ -326,6 +410,15 @@ # Returns: Nothing on success # # Since: 1.4 +# +# Example: +# +# -> { "execute": "ringbuf-write", +# "arguments": { "device": "foo", +# "data": "abcdefgh", +# "format": "utf8" } } +# <- { "return": {} } +# ## { 'command': 'ringbuf-write', 'data': {'device': 'str', 'data': 'str', @@ -353,6 +446,15 @@ # Returns: data read from the device # # Since: 1.4 +# +# Example: +# +# -> { "execute": "ringbuf-read", +# "arguments": { "device": "foo", +# "size": 1000, +# "format": "utf8" } } +# <- { "return": "abcdefgh" } +# ## { 'command': 'ringbuf-read', 'data': {'device': 'str', 'size': 'int', '*format': 'DataFormat'}, @@ -377,11 +479,28 @@ # Returns: A list of @EventInfo for all supported events # # Since: 1.2.0 +# +# Example: +# +# -> { "execute": "query-events" } +# <- { +# "return": [ +# { +# "name":"SHUTDOWN" +# }, +# { +# "name":"RESET" +# } +# ] +# } +# +# Note: This example has been shortened as the real response is too long. +# ## { 'command': 'query-events', 'returns': ['EventInfo'] } ## -# @MigrationStats +# @MigrationStats: # # Detailed migration status. # @@ -395,7 +514,7 @@ # # @skipped: number of skipped zero pages (since 1.5) # -# @normal : number of normal pages (since 1.2) +# @normal: number of normal pages (since 1.2) # # @normal-bytes: number of normal bytes sent (since 1.2) # @@ -419,7 +538,7 @@ 'postcopy-requests' : 'int' } } ## -# @XBZRLECacheStats +# @XBZRLECacheStats: # # Detailed XBZRLE migration cache statistics # @@ -442,6 +561,7 @@ 'cache-miss': 'int', 'cache-miss-rate': 'number', 'overflow': 'int' } } +## # @MigrationStatus: # # An enumeration of migration status. @@ -462,7 +582,8 @@ # # @failed: some error occurred during migration process. # -# @colo: VM is in the process of fault tolerance. (since 2.8) +# @colo: VM is in the process of fault tolerance, VM can not get into this +# state unless colo capability is enabled for migration. (since 2.8) # # Since: 2.3 # @@ -472,7 +593,7 @@ 'active', 'postcopy-active', 'completed', 'failed', 'colo' ] } ## -# @MigrationInfo +# @MigrationInfo: # # Information about current migration process. # @@ -532,18 +653,131 @@ '*error-desc': 'str'} } ## -# @query-migrate +# @query-migrate: # -# Returns information about current migration process. +# Returns information about current migration process. If migration +# is active there will be another json-object with RAM migration +# status and if block migration is active another one with block +# migration status. # # Returns: @MigrationInfo # # Since: 0.14.0 +# +# Example: +# +# 1. Before the first migration +# +# -> { "execute": "query-migrate" } +# <- { "return": {} } +# +# 2. Migration is done and has succeeded +# +# -> { "execute": "query-migrate" } +# <- { "return": { +# "status": "completed", +# "ram":{ +# "transferred":123, +# "remaining":123, +# "total":246, +# "total-time":12345, +# "setup-time":12345, +# "downtime":12345, +# "duplicate":123, +# "normal":123, +# "normal-bytes":123456, +# "dirty-sync-count":15 +# } +# } +# } +# +# 3. Migration is done and has failed +# +# -> { "execute": "query-migrate" } +# <- { "return": { "status": "failed" } } +# +# 4. Migration is being performed and is not a block migration: +# +# -> { "execute": "query-migrate" } +# <- { +# "return":{ +# "status":"active", +# "ram":{ +# "transferred":123, +# "remaining":123, +# "total":246, +# "total-time":12345, +# "setup-time":12345, +# "expected-downtime":12345, +# "duplicate":123, +# "normal":123, +# "normal-bytes":123456, +# "dirty-sync-count":15 +# } +# } +# } +# +# 5. Migration is being performed and is a block migration: +# +# -> { "execute": "query-migrate" } +# <- { +# "return":{ +# "status":"active", +# "ram":{ +# "total":1057024, +# "remaining":1053304, +# "transferred":3720, +# "total-time":12345, +# "setup-time":12345, +# "expected-downtime":12345, +# "duplicate":123, +# "normal":123, +# "normal-bytes":123456, +# "dirty-sync-count":15 +# }, +# "disk":{ +# "total":20971520, +# "remaining":20880384, +# "transferred":91136 +# } +# } +# } +# +# 6. Migration is being performed and XBZRLE is active: +# +# -> { "execute": "query-migrate" } +# <- { +# "return":{ +# "status":"active", +# "capabilities" : [ { "capability": "xbzrle", "state" : true } ], +# "ram":{ +# "total":1057024, +# "remaining":1053304, +# "transferred":3720, +# "total-time":12345, +# "setup-time":12345, +# "expected-downtime":12345, +# "duplicate":10, +# "normal":3333, +# "normal-bytes":3412992, +# "dirty-sync-count":15 +# }, +# "xbzrle-cache":{ +# "cache-size":67108864, +# "bytes":20971520, +# "pages":2444343, +# "cache-miss":2244, +# "cache-miss-rate":0.123, +# "overflow":34434 +# } +# } +# } +# ## { 'command': 'query-migrate', 'returns': 'MigrationInfo' } ## -# @MigrationCapability +# @MigrationCapability: # # Migration capabilities enumeration # @@ -591,7 +825,7 @@ 'compress', 'events', 'postcopy-ram', 'x-colo'] } ## -# @MigrationCapabilityStatus +# @MigrationCapabilityStatus: # # Migration capability information # @@ -605,29 +839,51 @@ 'data': { 'capability' : 'MigrationCapability', 'state' : 'bool' } } ## -# @migrate-set-capabilities +# @migrate-set-capabilities: # # Enable/Disable the following migration capabilities (like xbzrle) # # @capabilities: json array of capability modifications to make # # Since: 1.2 +# +# Example: +# +# -> { "execute": "migrate-set-capabilities" , "arguments": +# { "capabilities": [ { "capability": "xbzrle", "state": true } ] } } +# ## { 'command': 'migrate-set-capabilities', 'data': { 'capabilities': ['MigrationCapabilityStatus'] } } ## -# @query-migrate-capabilities +# @query-migrate-capabilities: # # Returns information about the current migration capabilities status # # Returns: @MigrationCapabilitiesStatus # # Since: 1.2 +# +# Example: +# +# -> { "execute": "query-migrate-capabilities" } +# <- { "return": [ +# {"state": false, "capability": "xbzrle"}, +# {"state": false, "capability": "rdma-pin-all"}, +# {"state": false, "capability": "auto-converge"}, +# {"state": false, "capability": "zero-blocks"}, +# {"state": false, "capability": "compress"}, +# {"state": true, "capability": "events"}, +# {"state": false, "capability": "postcopy-ram"}, +# {"state": false, "capability": "x-colo"} +# ]} +# ## { 'command': 'query-migrate-capabilities', 'returns': ['MigrationCapabilityStatus']} -# @MigrationParameter +## +# @MigrationParameter: # # Migration parameters enumeration # @@ -685,20 +941,24 @@ 'tls-creds', 'tls-hostname', 'max-bandwidth', 'downtime-limit', 'x-checkpoint-delay' ] } -# -# @migrate-set-parameters +## +# @migrate-set-parameters: # # Set various migration parameters. See MigrationParameters for details. # -# @x-checkpoint-delay: the delay time between two checkpoints. (Since 2.8) -# # Since: 2.4 +# +# Example: +# +# -> { "execute": "migrate-set-parameters" , +# "arguments": { "compress-level": 1 } } +# ## { 'command': 'migrate-set-parameters', 'boxed': true, 'data': 'MigrationParameters' } -# -# @MigrationParameters +## +# @MigrationParameters: # # Optional members can be omitted on input ('migrate-set-parameters') # but most members will always be present on output @@ -757,19 +1017,34 @@ '*x-checkpoint-delay': 'int'} } ## -# @query-migrate-parameters +# @query-migrate-parameters: # # Returns information about the current migration parameters # # Returns: @MigrationParameters # # Since: 2.4 +# +# Example: +# +# -> { "execute": "query-migrate-parameters" } +# <- { "return": { +# "decompress-threads": 2, +# "cpu-throttle-increment": 10, +# "compress-threads": 8, +# "compress-level": 1, +# "cpu-throttle-initial": 20, +# "max-bandwidth": 33554432, +# "downtime-limit": 300 +# } +# } +# ## { 'command': 'query-migrate-parameters', 'returns': 'MigrationParameters' } ## -# @client_migrate_info +# @client_migrate_info: # # Set migration information for remote display. This makes the server # ask the client to automatically reconnect using the new parameters @@ -782,23 +1057,39 @@ # @cert-subject: #optional server certificate subject # # Since: 0.14.0 +# +# Example: +# +# -> { "execute": "client_migrate_info", +# "arguments": { "protocol": "spice", +# "hostname": "virt42.lab.kraxel.org", +# "port": 1234 } } +# <- { "return": {} } +# ## { 'command': 'client_migrate_info', 'data': { 'protocol': 'str', 'hostname': 'str', '*port': 'int', '*tls-port': 'int', '*cert-subject': 'str' } } ## -# @migrate-start-postcopy +# @migrate-start-postcopy: # # Followup to a migration command to switch the migration to postcopy mode. # The postcopy-ram capability must be set before the original migration # command. # # Since: 2.5 +# +# Example: +# +# -> { "execute": "migrate-start-postcopy" } +# <- { "return": {} } +# +## { 'command': 'migrate-start-postcopy' } ## -# @COLOMessage +# @COLOMessage: # # The message transmission between Primary side and Secondary side. # @@ -824,7 +1115,7 @@ 'vmstate-loaded' ] } ## -# @COLOMode +# @COLOMode: # # The colo mode # @@ -840,7 +1131,7 @@ 'data': [ 'unknown', 'primary', 'secondary'] } ## -# @FailoverStatus +# @FailoverStatus: # # An enumeration of COLO failover status # @@ -858,7 +1149,7 @@ 'data': [ 'none', 'require', 'active', 'completed'] } ## -# @x-colo-lost-heartbeat +# @x-colo-lost-heartbeat: # # Tell qemu that heartbeat is lost, request it to do takeover procedures. # If this command is sent to the PVM, the Primary side will exit COLO mode. @@ -896,6 +1187,26 @@ # Returns: a list of @MouseInfo for each device # # Since: 0.14.0 +# +# Example: +# +# -> { "execute": "query-mice" } +# <- { "return": [ +# { +# "name":"QEMU Microsoft Mouse", +# "index":0, +# "current":false, +# "absolute":false +# }, +# { +# "name":"QEMU PS/2 Mouse", +# "index":1, +# "current":true, +# "absolute":true +# } +# ] +# } +# ## { 'command': 'query-mice', 'returns': ['MouseInfo'] } @@ -952,7 +1263,7 @@ # # @pc: the 64-bit instruction pointer # -# Since 2.6 +# Since: 2.6 ## { 'struct': 'CpuInfoX86', 'data': { 'pc': 'int' } } @@ -965,7 +1276,7 @@ # # @npc: the NPC component of the instruction pointer # -# Since 2.6 +# Since: 2.6 ## { 'struct': 'CpuInfoSPARC', 'data': { 'pc': 'int', 'npc': 'int' } } @@ -976,7 +1287,7 @@ # # @nip: the instruction pointer # -# Since 2.6 +# Since: 2.6 ## { 'struct': 'CpuInfoPPC', 'data': { 'nip': 'int' } } @@ -987,7 +1298,7 @@ # # @PC: the instruction pointer # -# Since 2.6 +# Since: 2.6 ## { 'struct': 'CpuInfoMIPS', 'data': { 'PC': 'int' } } @@ -998,7 +1309,7 @@ # # @PC: the instruction pointer # -# Since 2.6 +# Since: 2.6 ## { 'struct': 'CpuInfoTricore', 'data': { 'PC': 'int' } } @@ -1007,7 +1318,7 @@ # # No additional information is available about the virtual CPU # -# Since 2.6 +# Since: 2.6 # ## { 'struct': 'CpuInfoOther', 'data': { } } @@ -1020,6 +1331,32 @@ # Returns: a list of @CpuInfo for each virtual CPU # # Since: 0.14.0 +# +# Example: +# +# -> { "execute": "query-cpus" } +# <- { "return": [ +# { +# "CPU":0, +# "current":true, +# "halted":false, +# "qom_path":"/machine/unattached/device[0]", +# "arch":"x86", +# "pc":3227107138, +# "thread_id":3134 +# }, +# { +# "CPU":1, +# "current":false, +# "halted":true, +# "qom_path":"/machine/unattached/device[2]", +# "arch":"x86", +# "pc":7108165, +# "thread_id":3135 +# } +# ] +# } +# ## { 'command': 'query-cpus', 'returns': ['CpuInfo'] } @@ -1042,18 +1379,34 @@ # # Returns a list of information about each iothread. # -# Note this list excludes the QEMU main loop thread, which is not declared +# Note: this list excludes the QEMU main loop thread, which is not declared # using the -object iothread command-line option. It is always the main thread # of the process. # # Returns: a list of @IOThreadInfo for each iothread # # Since: 2.0 +# +# Example: +# +# -> { "execute": "query-iothreads" } +# <- { "return": [ +# { +# "id":"iothread0", +# "thread-id":3134 +# }, +# { +# "id":"iothread1", +# "thread-id":3135 +# } +# ] +# } +# ## { 'command': 'query-iothreads', 'returns': ['IOThreadInfo'] } ## -# @NetworkAddressFamily +# @NetworkAddressFamily: # # The network address family # @@ -1063,15 +1416,17 @@ # # @unix: unix socket # +# @vsock: vsock family (since 2.8) +# # @unknown: otherwise # # Since: 2.1 ## { 'enum': 'NetworkAddressFamily', - 'data': [ 'ipv4', 'ipv6', 'unix', 'unknown' ] } + 'data': [ 'ipv4', 'ipv6', 'unix', 'vsock', 'unknown' ] } ## -# @VncBasicInfo +# @VncBasicInfo: # # The basic information for vnc network connection # @@ -1094,7 +1449,7 @@ 'websocket': 'bool' } } ## -# @VncServerInfo +# @VncServerInfo: # # The network connection information for server # @@ -1165,7 +1520,7 @@ '*service': 'str', '*auth': 'str', '*clients': ['VncClientInfo']} } ## -# @VncPriAuth: +# @VncPrimaryAuth: # # vnc primary authentication method. # @@ -1229,6 +1584,26 @@ # Returns: @VncInfo # # Since: 0.14.0 +# +# Example: +# +# -> { "execute": "query-vnc" } +# <- { "return": { +# "enabled":true, +# "host":"0.0.0.0", +# "service":"50402", +# "auth":"vnc", +# "family":"ipv4", +# "clients":[ +# { +# "host":"127.0.0.1", +# "service":"50401", +# "family":"ipv4" +# } +# ] +# } +# } +# ## { 'command': 'query-vnc', 'returns': 'VncInfo' } @@ -1244,7 +1619,7 @@ { 'command': 'query-vnc-servers', 'returns': ['VncInfo2'] } ## -# @SpiceBasicInfo +# @SpiceBasicInfo: # # The basic information for SPICE network connection # @@ -1262,7 +1637,7 @@ 'family': 'NetworkAddressFamily' } } ## -# @SpiceServerInfo +# @SpiceServerInfo: # # Information about a SPICE server # @@ -1275,7 +1650,7 @@ 'data': { '*auth': 'str' } } ## -# @SpiceChannel +# @SpiceChannel: # # Information about a SPICE client channel. # @@ -1300,7 +1675,7 @@ 'tls': 'bool'} } ## -# @SpiceQueryMouseMode +# @SpiceQueryMouseMode: # # An enumeration of Spice mouse states. # @@ -1319,14 +1694,14 @@ 'data': [ 'client', 'server', 'unknown' ] } ## -# @SpiceInfo +# @SpiceInfo: # # Information about the SPICE session. # # @enabled: true if the SPICE server is enabled, false otherwise # # @migrated: true if the last guest migration completed and spice -# migration had completed as well. false otherwise. +# migration had completed as well. false otherwise. (since 1.4) # # @host: #optional The hostname the SPICE server is bound to. This depends on # the name resolution on the host and may be an IP address. @@ -1344,9 +1719,7 @@ # # @mouse-mode: The mode in which the mouse cursor is displayed currently. Can # be determined by the client or the server, or unknown if spice -# server doesn't provide this information. -# -# Since: 1.1 +# server doesn't provide this information. (since: 1.1) # # @channels: a list of @SpiceChannel for each active spice channel # @@ -1358,13 +1731,47 @@ 'mouse-mode': 'SpiceQueryMouseMode', '*channels': ['SpiceChannel']} } ## -# @query-spice +# @query-spice: # # Returns information about the current SPICE server # # Returns: @SpiceInfo # # Since: 0.14.0 +# +# Example: +# +# -> { "execute": "query-spice" } +# <- { "return": { +# "enabled": true, +# "auth": "spice", +# "port": 5920, +# "tls-port": 5921, +# "host": "0.0.0.0", +# "channels": [ +# { +# "port": "54924", +# "family": "ipv4", +# "channel-type": 1, +# "connection-id": 1804289383, +# "host": "127.0.0.1", +# "channel-id": 0, +# "tls": true +# }, +# { +# "port": "36710", +# "family": "ipv4", +# "channel-type": 4, +# "connection-id": 1804289383, +# "host": "127.0.0.1", +# "channel-id": 0, +# "tls": false +# }, +# [ ... more channels follow ... ] +# ] +# } +# } +# ## { 'command': 'query-spice', 'returns': 'SpiceInfo' } @@ -1386,11 +1793,22 @@ # Return information about the balloon device. # # Returns: @BalloonInfo on success +# # If the balloon driver is enabled but not functional because the KVM # kernel module cannot support it, KvmMissingCap +# # If no balloon device is present, DeviceNotActive # # Since: 0.14.0 +# +# Example: +# +# -> { "execute": "query-balloon" } +# <- { "return": { +# "actual": 1073741824, +# } +# } +# ## { 'command': 'query-balloon', 'returns': 'BalloonInfo' } @@ -1408,7 +1826,7 @@ { 'struct': 'PciMemoryRange', 'data': {'base': 'int', 'limit': 'int'} } ## -# @PciMemoryRegion +# @PciMemoryRegion: # # Information about a PCI device I/O region. # @@ -1417,6 +1835,8 @@ # @type: 'io' if the region is a PIO region # 'memory' if the region is a MMIO region # +# @size: memory size +# # @prefetch: #optional if @type is 'memory', true if the memory is prefetchable # # @mem_type_64: #optional if @type is 'memory', true if the BAR is 64-bit @@ -1550,9 +1970,144 @@ # # Return information about the PCI bus topology of the guest. # -# Returns: a list of @PciInfo for each PCI bus +# Returns: a list of @PciInfo for each PCI bus. Each bus is +# represented by a json-object, which has a key with a json-array of +# all PCI devices attached to it. Each device is represented by a +# json-object. # # Since: 0.14.0 +# +# Example: +# +# -> { "execute": "query-pci" } +# <- { "return": [ +# { +# "bus": 0, +# "devices": [ +# { +# "bus": 0, +# "qdev_id": "", +# "slot": 0, +# "class_info": { +# "class": 1536, +# "desc": "Host bridge" +# }, +# "id": { +# "device": 32902, +# "vendor": 4663 +# }, +# "function": 0, +# "regions": [ +# ] +# }, +# { +# "bus": 0, +# "qdev_id": "", +# "slot": 1, +# "class_info": { +# "class": 1537, +# "desc": "ISA bridge" +# }, +# "id": { +# "device": 32902, +# "vendor": 28672 +# }, +# "function": 0, +# "regions": [ +# ] +# }, +# { +# "bus": 0, +# "qdev_id": "", +# "slot": 1, +# "class_info": { +# "class": 257, +# "desc": "IDE controller" +# }, +# "id": { +# "device": 32902, +# "vendor": 28688 +# }, +# "function": 1, +# "regions": [ +# { +# "bar": 4, +# "size": 16, +# "address": 49152, +# "type": "io" +# } +# ] +# }, +# { +# "bus": 0, +# "qdev_id": "", +# "slot": 2, +# "class_info": { +# "class": 768, +# "desc": "VGA controller" +# }, +# "id": { +# "device": 4115, +# "vendor": 184 +# }, +# "function": 0, +# "regions": [ +# { +# "prefetch": true, +# "mem_type_64": false, +# "bar": 0, +# "size": 33554432, +# "address": 4026531840, +# "type": "memory" +# }, +# { +# "prefetch": false, +# "mem_type_64": false, +# "bar": 1, +# "size": 4096, +# "address": 4060086272, +# "type": "memory" +# }, +# { +# "prefetch": false, +# "mem_type_64": false, +# "bar": 6, +# "size": 65536, +# "address": -1, +# "type": "memory" +# } +# ] +# }, +# { +# "bus": 0, +# "qdev_id": "", +# "irq": 11, +# "slot": 4, +# "class_info": { +# "class": 1280, +# "desc": "RAM controller" +# }, +# "id": { +# "device": 6900, +# "vendor": 4098 +# }, +# "function": 0, +# "regions": [ +# { +# "bar": 0, +# "size": 32, +# "address": 49280, +# "type": "io" +# } +# ] +# } +# ] +# } +# ] +# } +# +# Note: This example has been shortened as the real response is too long. +# ## { 'command': 'query-pci', 'returns': ['PciInfo'] } @@ -1565,6 +2120,11 @@ # unexpected. # # Since: 0.14.0 +# +# Example: +# +# -> { "execute": "quit" } +# <- { "return": {} } ## { 'command': 'quit' } @@ -1579,6 +2139,12 @@ # state. In "inmigrate" state, it will ensure that the guest # remains paused once migration finishes, as if the -S option was # passed on the command line. +# +# Example: +# +# -> { "execute": "stop" } +# <- { "return": {} } +# ## { 'command': 'stop' } @@ -1588,6 +2154,12 @@ # Performs a hard reset of a guest. # # Since: 0.14.0 +# +# Example: +# +# -> { "execute": "system_reset" } +# <- { "return": {} } +# ## { 'command': 'system_reset' } @@ -1602,6 +2174,11 @@ # returning does not indicate that a guest has accepted the request or # that it has shut down. Many guests will respond to this command by # prompting the user in some way. +# Example: +# +# -> { "execute": "system_powerdown" } +# <- { "return": {} } +# ## { 'command': 'system_powerdown' } @@ -1617,7 +2194,7 @@ { 'command': 'cpu', 'data': {'index': 'int'} } ## -# @cpu-add +# @cpu-add: # # Adds CPU with specified ID # @@ -1625,7 +2202,13 @@ # # Returns: Nothing on success # -# Since 1.5 +# Since: 1.5 +# +# Example: +# +# -> { "execute": "cpu-add", "arguments": { "id": 2 } } +# <- { "return": {} } +# ## { 'command': 'cpu-add', 'data': {'id': 'int'} } @@ -1648,6 +2231,15 @@ # Since: 0.14.0 # # Notes: Errors were not reliably returned until 1.1 +# +# Example: +# +# -> { "execute": "memsave", +# "arguments": { "val": 10, +# "size": 100, +# "filename": "/tmp/virtual-mem-dump" } } +# <- { "return": {} } +# ## { 'command': 'memsave', 'data': {'val': 'int', 'size': 'int', 'filename': 'str', '*cpu-index': 'int'} } @@ -1668,6 +2260,15 @@ # Since: 0.14.0 # # Notes: Errors were not reliably returned until 1.1 +# +# Example: +# +# -> { "execute": "pmemsave", +# "arguments": { "val": 10, +# "size": 100, +# "filename": "/tmp/physical-mem-dump" } } +# <- { "return": {} } +# ## { 'command': 'pmemsave', 'data': {'val': 'int', 'size': 'int', 'filename': 'str'} } @@ -1688,6 +2289,12 @@ # this case, the effect of the command is to make sure the guest # starts once migration finishes, removing the effect of the -S # command line option if it was passed. +# +# Example: +# +# -> { "execute": "cont" } +# <- { "return": {} } +# ## { 'command': 'cont' } @@ -1756,17 +2363,17 @@ { 'command': 'balloon', 'data': {'value': 'int'} } ## -# @Abort +# @Abort: # # This action can be used to test transaction failure. # # Since: 1.6 -### +## { 'struct': 'Abort', 'data': { } } ## -# @ActionCompletionMode +# @ActionCompletionMode: # # An enumeration of Transactional completion modes. # @@ -1786,35 +2393,36 @@ 'data': [ 'individual', 'grouped' ] } ## -# @TransactionAction +# @TransactionAction: # # A discriminated record of operations that can be performed with -# @transaction. +# @transaction. Action @type can be: # -# Since 1.1 +# - @abort: since 1.6 +# - @block-dirty-bitmap-add: since 2.5 +# - @block-dirty-bitmap-clear: since 2.5 +# - @blockdev-backup: since 2.3 +# - @blockdev-snapshot: since 2.5 +# - @blockdev-snapshot-internal-sync: since 1.7 +# - @blockdev-snapshot-sync: since 1.1 +# - @drive-backup: since 1.6 # -# drive-backup since 1.6 -# abort since 1.6 -# blockdev-snapshot-internal-sync since 1.7 -# blockdev-backup since 2.3 -# blockdev-snapshot since 2.5 -# block-dirty-bitmap-add since 2.5 -# block-dirty-bitmap-clear since 2.5 +# Since: 1.1 ## { 'union': 'TransactionAction', 'data': { - 'blockdev-snapshot': 'BlockdevSnapshot', - 'blockdev-snapshot-sync': 'BlockdevSnapshotSync', - 'drive-backup': 'DriveBackup', - 'blockdev-backup': 'BlockdevBackup', 'abort': 'Abort', - 'blockdev-snapshot-internal-sync': 'BlockdevSnapshotInternal', 'block-dirty-bitmap-add': 'BlockDirtyBitmapAdd', - 'block-dirty-bitmap-clear': 'BlockDirtyBitmap' + 'block-dirty-bitmap-clear': 'BlockDirtyBitmap', + 'blockdev-backup': 'BlockdevBackup', + 'blockdev-snapshot': 'BlockdevSnapshot', + 'blockdev-snapshot-internal-sync': 'BlockdevSnapshotInternal', + 'blockdev-snapshot-sync': 'BlockdevSnapshotSync', + 'drive-backup': 'DriveBackup' } } ## -# @TransactionProperties +# @TransactionProperties: # # Optional arguments to modify the behavior of a Transaction. # @@ -1831,7 +2439,7 @@ } ## -# @transaction +# @transaction: # # Executes a number of transactionable QMP commands atomically. If any # operation fails, then the entire set of actions will be abandoned and the @@ -1851,7 +2459,7 @@ # information on only one failed operation returned in an error condition, and # subsequent actions will not have been attempted. # -# Since 1.1 +# Since: 1.1 ## { 'command': 'transaction', 'data': { 'actions': [ 'TransactionAction' ], @@ -1877,18 +2485,18 @@ # # Known limitations: # -# o This command is stateless, this means that commands that depend +# * This command is stateless, this means that commands that depend # on state information (such as getfd) might not work # -# o Commands that prompt the user for data (eg. 'cont' when the block -# device is encrypted) don't currently work +# * Commands that prompt the user for data (eg. 'cont' when the block +# device is encrypted) don't currently work ## { 'command': 'human-monitor-command', 'data': {'command-line': 'str', '*cpu-index': 'int'}, 'returns': 'str' } ## -# @migrate_cancel +# @migrate_cancel: # # Cancel the current executing migration process. # @@ -1901,7 +2509,7 @@ { 'command': 'migrate_cancel' } ## -# @migrate_set_downtime +# @migrate_set_downtime: # # Set maximum tolerated downtime for migration. # @@ -1916,7 +2524,7 @@ { 'command': 'migrate_set_downtime', 'data': {'value': 'number'} } ## -# @migrate_set_speed +# @migrate_set_speed: # # Set maximum speed for migration. # @@ -1931,7 +2539,7 @@ { 'command': 'migrate_set_speed', 'data': {'value': 'int'} } ## -# @migrate-set-cache-size +# @migrate-set-cache-size: # # Set XBZRLE cache size # @@ -1947,7 +2555,7 @@ { 'command': 'migrate-set-cache-size', 'data': {'value': 'int'} } ## -# @query-migrate-cache-size +# @query-migrate-cache-size: # # query XBZRLE cache size # @@ -2212,7 +2820,7 @@ 'returns': [ 'DevicePropertyInfo' ] } ## -# @migrate +# @migrate: # # Migrates the current running guest to another Virtual Machine. # @@ -2233,7 +2841,7 @@ 'data': {'uri': 'str', '*blk': 'bool', '*inc': 'bool', '*detach': 'bool' } } ## -# @migrate-incoming +# @migrate-incoming: # # Start an incoming migration, the qemu must have been started # with -incoming defer @@ -2250,6 +2858,7 @@ ## { 'command': 'migrate-incoming', 'data': {'uri': 'str' } } +## # @xen-save-devices-state: # # Save the state of all devices to file. The RAM and the block devices @@ -2266,7 +2875,7 @@ { 'command': 'xen-save-devices-state', 'data': {'filename': 'str'} } ## -# @xen-set-global-dirty-log +# @xen-set-global-dirty-log: # # Enable or disable the global dirty log mode. # @@ -2285,7 +2894,7 @@ # # @bus: #optional the device's parent bus (device tree path) # -# @id: the device's ID, must be unique +# @id: #optional the device's ID, must be unique # # Additional arguments depend on the type. # @@ -2307,7 +2916,7 @@ # "mac": "52:54:00:12:34:56" } } # <- { "return": {} } # -# TODO This command effectively bypasses QAPI completely due to its +# TODO: This command effectively bypasses QAPI completely due to its # "additional arguments" business. It shouldn't have been added to # the schema in this form. It should be qapified properly, or # replaced by a properly qapified command. @@ -2315,7 +2924,7 @@ # Since: 0.13 ## { 'command': 'device_add', - 'data': {'driver': 'str', 'id': 'str'}, + 'data': {'driver': 'str', '*bus': 'str', '*id': 'str'}, 'gen': false } # so we can get the additional arguments ## @@ -2358,7 +2967,7 @@ 'data': [ 'elf', 'kdump-zlib', 'kdump-lzo', 'kdump-snappy' ] } ## -# @dump-guest-memory +# @dump-guest-memory: # # Dump guest's memory to vmcore. It is a synchronous operation that can take # very long depending on the amount of guest memory. @@ -2412,7 +3021,7 @@ '*format': 'DumpGuestMemoryFormat'} } ## -# @DumpStatus +# @DumpStatus: # # Describe the status of a long-running background guest memory dump. # @@ -2424,13 +3033,13 @@ # # @failed: the last dump has failed. # -# Since 2.6 +# Since: 2.6 ## { 'enum': 'DumpStatus', 'data': [ 'none', 'active', 'completed', 'failed' ] } ## -# @DumpQueryResult +# @DumpQueryResult: # # The result format for 'query-dump'. # @@ -2440,7 +3049,7 @@ # # @total: total bytes to be written in latest dump (uncompressed) # -# Since 2.6 +# Since: 2.6 ## { 'struct': 'DumpQueryResult', 'data': { 'status': 'DumpStatus', @@ -2448,7 +3057,7 @@ 'total': 'int' } } ## -# @query-dump +# @query-dump: # # Query latest dump status. # @@ -2483,7 +3092,7 @@ 'returns': 'DumpGuestMemoryCapability' } ## -# @dump-skeys +# @dump-skeys: # # Dump guest's storage keys # @@ -2508,7 +3117,7 @@ # # Additional arguments depend on the type. # -# TODO This command effectively bypasses QAPI completely due to its +# TODO: This command effectively bypasses QAPI completely due to its # "additional arguments" business. It shouldn't have been added to # the schema in this form. It should be qapified properly, or # replaced by a properly qapified command. @@ -2570,17 +3179,17 @@ { 'command': 'object-del', 'data': {'id': 'str'} } ## -# @NetdevNoneOptions +# @NetdevNoneOptions: # # Use it alone to have zero network devices. # -# Since 1.2 +# Since: 1.2 ## { 'struct': 'NetdevNoneOptions', 'data': { } } ## -# @NetLegacyNicOptions +# @NetLegacyNicOptions: # # Create a new Network Interface Card. # @@ -2594,7 +3203,7 @@ # # @vectors: #optional number of MSI-x vectors, 0 to disable MSI-X # -# Since 1.2 +# Since: 1.2 ## { 'struct': 'NetLegacyNicOptions', 'data': { @@ -2605,18 +3214,18 @@ '*vectors': 'uint32' } } ## -# @String +# @String: # # A fat type wrapping 'str', to be embedded in lists. # -# Since 1.2 +# Since: 1.2 ## { 'struct': 'String', 'data': { 'str': 'str' } } ## -# @NetdevUserOptions +# @NetdevUserOptions: # # Use the user mode network stack which requires no administrator privilege to # run. @@ -2673,7 +3282,7 @@ # # @guestfwd: #optional forward guest TCP connections # -# Since 1.2 +# Since: 1.2 ## { 'struct': 'NetdevUserOptions', 'data': { @@ -2699,7 +3308,7 @@ '*guestfwd': ['String'] } } ## -# @NetdevTapOptions +# @NetdevTapOptions: # # Connect the host TAP network interface name to the VLAN. # @@ -2736,7 +3345,7 @@ # @poll-us: #optional maximum number of microseconds that could # be spent on busy polling for tap (since 2.7) # -# Since 1.2 +# Since: 1.2 ## { 'struct': 'NetdevTapOptions', 'data': { @@ -2757,7 +3366,7 @@ '*poll-us': 'uint32'} } ## -# @NetdevSocketOptions +# @NetdevSocketOptions: # # Connect the VLAN to a remote VLAN in another QEMU virtual machine using a TCP # socket connection. @@ -2774,7 +3383,7 @@ # # @udp: #optional UDP unicast address and port number # -# Since 1.2 +# Since: 1.2 ## { 'struct': 'NetdevSocketOptions', 'data': { @@ -2786,7 +3395,7 @@ '*udp': 'str' } } ## -# @NetdevL2TPv3Options +# @NetdevL2TPv3Options: # # Connect the VLAN to Ethernet over L2TPv3 Static tunnel # @@ -2822,7 +3431,7 @@ # @offset: #optional additional offset - allows the insertion of # additional application-specific data before the packet payload # -# Since 2.1 +# Since: 2.1 ## { 'struct': 'NetdevL2TPv3Options', 'data': { @@ -2842,7 +3451,7 @@ '*offset': 'uint32' } } ## -# @NetdevVdeOptions +# @NetdevVdeOptions: # # Connect the VLAN to a vde switch running on the host. # @@ -2854,7 +3463,7 @@ # # @mode: #optional permissions for socket # -# Since 1.2 +# Since: 1.2 ## { 'struct': 'NetdevVdeOptions', 'data': { @@ -2864,7 +3473,7 @@ '*mode': 'uint16' } } ## -# @NetdevDumpOptions +# @NetdevDumpOptions: # # Dump VLAN network traffic to a file. # @@ -2873,7 +3482,7 @@ # # @file: #optional dump file path (default is qemu-vlan0.pcap) # -# Since 1.2 +# Since: 1.2 ## { 'struct': 'NetdevDumpOptions', 'data': { @@ -2881,7 +3490,7 @@ '*file': 'str' } } ## -# @NetdevBridgeOptions +# @NetdevBridgeOptions: # # Connect a host TAP network interface to a host bridge device. # @@ -2889,7 +3498,7 @@ # # @helper: #optional command to execute to configure bridge # -# Since 1.2 +# Since: 1.2 ## { 'struct': 'NetdevBridgeOptions', 'data': { @@ -2897,20 +3506,20 @@ '*helper': 'str' } } ## -# @NetdevHubPortOptions +# @NetdevHubPortOptions: # # Connect two or more net clients through a software hub. # # @hubid: hub identifier number # -# Since 1.2 +# Since: 1.2 ## { 'struct': 'NetdevHubPortOptions', 'data': { 'hubid': 'int32' } } ## -# @NetdevNetmapOptions +# @NetdevNetmapOptions: # # Connect a client to a netmap-enabled NIC or to a VALE switch port # @@ -2923,7 +3532,7 @@ # # @devname: #optional path of the netmap device (default: '/dev/netmap'). # -# Since 2.0 +# Since: 2.0 ## { 'struct': 'NetdevNetmapOptions', 'data': { @@ -2931,7 +3540,7 @@ '*devname': 'str' } } ## -# @NetdevVhostUserOptions +# @NetdevVhostUserOptions: # # Vhost-user network backend # @@ -2942,7 +3551,7 @@ # @queues: #optional number of queues to be created for multiqueue vhost-user # (default: 1) (Since 2.5) # -# Since 2.1 +# Since: 2.1 ## { 'struct': 'NetdevVhostUserOptions', 'data': { @@ -2951,18 +3560,18 @@ '*queues': 'int' } } ## -# @NetClientDriver +# @NetClientDriver: # # Available netdev drivers. # -# Since 2.7 +# Since: 2.7 ## { 'enum': 'NetClientDriver', 'data': [ 'none', 'nic', 'user', 'tap', 'l2tpv3', 'socket', 'vde', 'dump', 'bridge', 'hubport', 'netmap', 'vhost-user' ] } ## -# @Netdev +# @Netdev: # # Captures the configuration of a network device. # @@ -2970,7 +3579,7 @@ # # @type: Specify the driver used for interpreting remaining arguments. # -# Since 1.2 +# Since: 1.2 # # 'l2tpv3' - since 2.1 ## @@ -2992,7 +3601,7 @@ 'vhost-user': 'NetdevVhostUserOptions' } } ## -# @NetLegacy +# @NetLegacy: # # Captures the configuration of a network device; legacy. # @@ -3004,7 +3613,7 @@ # # @opts: device type specific properties (legacy) # -# Since 1.2 +# Since: 1.2 ## { 'struct': 'NetLegacy', 'data': { @@ -3014,11 +3623,11 @@ 'opts': 'NetLegacyOptions' } } ## -# @NetLegacyOptions +# @NetLegacyOptions: # # Like Netdev, but for use only by the legacy command line options # -# Since 1.2 +# Since: 1.2 ## { 'union': 'NetLegacyOptions', 'data': { @@ -3035,7 +3644,7 @@ 'vhost-user': 'NetdevVhostUserOptions' } } ## -# @NetFilterDirection +# @NetFilterDirection: # # Indicates whether a netfilter is attached to a netdev's transmit queue or # receive queue or both. @@ -3049,13 +3658,13 @@ # @tx: the filter is attached to the transmit queue of the netdev, # where it will receive packets sent by the netdev. # -# Since 2.5 +# Since: 2.5 ## { 'enum': 'NetFilterDirection', 'data': [ 'all', 'rx', 'tx' ] } ## -# @InetSocketAddress +# @InetSocketAddress: # # Captures a socket address or address range in the Internet namespace. # @@ -3071,7 +3680,7 @@ # @ipv6: whether to accept IPv6 addresses, default try both IPv4 and IPv6 # #optional # -# Since 1.3 +# Since: 1.3 ## { 'struct': 'InetSocketAddress', 'data': { @@ -3082,29 +3691,48 @@ '*ipv6': 'bool' } } ## -# @UnixSocketAddress +# @UnixSocketAddress: # # Captures a socket address in the local ("Unix socket") namespace. # # @path: filesystem path to use # -# Since 1.3 +# Since: 1.3 ## { 'struct': 'UnixSocketAddress', 'data': { 'path': 'str' } } ## -# @SocketAddress +# @VsockSocketAddress: +# +# Captures a socket address in the vsock namespace. +# +# @cid: unique host identifier +# @port: port +# +# Note: string types are used to allow for possible future hostname or +# service resolution support. +# +# Since: 2.8 +## +{ 'struct': 'VsockSocketAddress', + 'data': { + 'cid': 'str', + 'port': 'str' } } + +## +# @SocketAddress: # # Captures the address of a socket, which could also be a named file descriptor # -# Since 1.3 +# Since: 1.3 ## { 'union': 'SocketAddress', 'data': { 'inet': 'InetSocketAddress', 'unix': 'UnixSocketAddress', + 'vsock': 'VsockSocketAddress', 'fd': 'String' } } ## @@ -3148,7 +3776,7 @@ # # @alias: #optional an alias for the machine name # -# @default: #optional whether the machine is default +# @is-default: #optional whether the machine is default # # @cpu-max: maximum number of CPUs supported by the machine type # (since 1.5.0) @@ -3195,6 +3823,9 @@ # @unavailable-features: #optional List of properties that prevent # the CPU model from running in the current # host. (since 2.8) +# @typename: Type name that can be used as argument to @device-list-properties, +# to introspect properties configurable using -cpu or -global. +# (since 2.9) # # @unavailable-features is a list of QOM property names that # represent CPU model attributes that prevent the CPU from running. @@ -3216,7 +3847,7 @@ ## { 'struct': 'CpuDefinitionInfo', 'data': { 'name': 'str', '*migration-safe': 'bool', 'static': 'bool', - '*unavailable-features': [ 'str' ] } } + '*unavailable-features': [ 'str' ], 'typename': 'str' } } ## # @query-cpu-definitions: @@ -3249,7 +3880,7 @@ '*props': 'any' } } ## -# @CpuModelExpansionType +# @CpuModelExpansionType: # # An enumeration of CPU model expansion types. # @@ -3272,7 +3903,7 @@ ## -# @CpuModelExpansionInfo +# @CpuModelExpansionInfo: # # The result of a cpu model expansion. # @@ -3346,7 +3977,7 @@ 'data': [ 'incompatible', 'identical', 'superset', 'subset' ] } ## -# @CpuModelCompareInfo +# @CpuModelCompareInfo: # # The result of a CPU model comparison. # @@ -3410,7 +4041,7 @@ 'returns': 'CpuModelCompareInfo' } ## -# @CpuModelBaselineInfo +# @CpuModelBaselineInfo: # # The result of a CPU model baseline. # @@ -3461,6 +4092,7 @@ 'modelb': 'CpuModelInfo' }, 'returns': 'CpuModelBaselineInfo' } +## # @AddfdInfo: # # Information about a file descriptor that was added to an fd set. @@ -3587,13 +4219,20 @@ # # An enumeration of key name. # -# This is used by the send-key command. +# This is used by the @send-key command. +# +# @unmapped: since 2.0 +# @pause: since 2.0 +# @ro: since 2.4 +# @kp_comma: since 2.4 +# @kp_equals: since 2.6 +# @power: since 2.6 +# @hiragana: since 2.9 +# @henkan: since 2.9 +# @yen: since 2.9 # # Since: 1.3.0 # -# 'unmapped' and 'pause' since 2.0 -# 'ro' and 'kp_comma' since 2.4 -# 'kp_equals' and 'power' since 2.6 ## { 'enum': 'QKeyCode', 'data': [ 'unmapped', @@ -3611,11 +4250,12 @@ 'kp_9', 'less', 'f11', 'f12', 'print', 'home', 'pgup', 'pgdn', 'end', 'left', 'up', 'down', 'right', 'insert', 'delete', 'stop', 'again', 'props', 'undo', 'front', 'copy', 'open', 'paste', 'find', 'cut', - 'lf', 'help', 'meta_l', 'meta_r', 'compose', 'pause', 'ro', + 'lf', 'help', 'meta_l', 'meta_r', 'compose', 'pause', + 'ro', 'hiragana', 'henkan', 'yen', 'kp_comma', 'kp_equals', 'power' ] } ## -# @KeyValue +# @KeyValue: # # Represents a keyboard key. # @@ -3700,7 +4340,6 @@ # # @device: The name of the special file for the device, # i.e. /dev/ttyS0 on Unix or COM1: on Windows -# @type: What kind of device this is. # # Since: 1.4 ## @@ -3965,7 +4604,7 @@ # # A union referencing different TPM backend types' configuration options # -# @passthrough: The configuration options for the TPM passthrough type +# @type: 'passthrough' The configuration options for the TPM passthrough type # # Since: 1.5 ## @@ -3973,7 +4612,7 @@ 'data': { 'passthrough' : 'TPMPassthroughOptions' } } ## -# @TpmInfo: +# @TPMInfo: # # Information about the TPM # @@ -4002,7 +4641,7 @@ { 'command': 'query-tpm', 'returns': ['TPMInfo'] } ## -# @AcpiTableOptions +# @AcpiTableOptions: # # Specify an ACPI table on the command line to load. # @@ -4045,7 +4684,7 @@ # ACPI table header. At least one file is required. This field excludes # @file. # -# Since 1.5 +# Since: 1.5 ## { 'struct': 'AcpiTableOptions', 'data': { @@ -4073,7 +4712,7 @@ # @size: accepts a number followed by an optional suffix (K)ilo, # (M)ega, (G)iga, (T)era # -# Since 1.5 +# Since: 1.5 ## { 'enum': 'CommandLineParameterType', 'data': ['string', 'boolean', 'number', 'size'] } @@ -4091,7 +4730,7 @@ # # @default: #optional default value string (since 2.1) # -# Since 1.5 +# Since: 1.5 ## { 'struct': 'CommandLineParameterInfo', 'data': { 'name': 'str', @@ -4108,7 +4747,7 @@ # # @parameters: an array of @CommandLineParameterInfo # -# Since 1.5 +# Since: 1.5 ## { 'struct': 'CommandLineOptionInfo', 'data': { 'option': 'str', 'parameters': ['CommandLineParameterInfo'] } } @@ -4123,13 +4762,13 @@ # Returns: list of @CommandLineOptionInfo for all options (or for the given # @option). Returns an error if the given @option doesn't exist. # -# Since 1.5 +# Since: 1.5 ## {'command': 'query-command-line-options', 'data': { '*option': 'str' }, 'returns': ['CommandLineOptionInfo'] } ## -# @X86CPURegister32 +# @X86CPURegister32: # # A X86 32-bit register # @@ -4139,7 +4778,7 @@ 'data': [ 'EAX', 'EBX', 'ECX', 'EDX', 'ESP', 'EBP', 'ESI', 'EDI' ] } ## -# @X86CPUFeatureWordInfo +# @X86CPUFeatureWordInfo: # # Information about a X86 CPU feature word # @@ -4161,11 +4800,11 @@ 'features': 'int' } } ## -# @DummyForceArrays +# @DummyForceArrays: # # Not used by QMP; hack to let us use X86CPUFeatureWordInfoList internally # -# Since 2.5 +# Since: 2.5 ## { 'struct': 'DummyForceArrays', 'data': { 'unused': ['X86CPUFeatureWordInfo'] } } @@ -4215,7 +4854,7 @@ # # @multicast-table: a list of multicast macaddr string # -# Since 1.6 +# Since: 1.6 ## { 'struct': 'RxFilterInfo', 'data': { @@ -4250,7 +4889,7 @@ 'returns': ['RxFilterInfo'] } ## -# @InputButton +# @InputButton: # # Button of a pointer input device (mouse, tablet). # @@ -4260,7 +4899,7 @@ 'data' : [ 'left', 'middle', 'right', 'wheel-up', 'wheel-down' ] } ## -# @InputAxis +# @InputAxis: # # Position axis of a pointer input device (mouse, tablet). # @@ -4270,7 +4909,7 @@ 'data' : [ 'x', 'y' ] } ## -# @InputKeyEvent +# @InputKeyEvent: # # Keyboard input event. # @@ -4284,7 +4923,7 @@ 'down' : 'bool' } } ## -# @InputBtnEvent +# @InputBtnEvent: # # Pointer button input event. # @@ -4298,7 +4937,7 @@ 'down' : 'bool' } } ## -# @InputMoveEvent +# @InputMoveEvent: # # Pointer motion input event. # @@ -4313,14 +4952,15 @@ 'value' : 'int' } } ## -# @InputEvent +# @InputEvent: # # Input event union. # -# @key: Input event of Keyboard -# @btn: Input event of pointer buttons -# @rel: Input event of relative pointer motion -# @abs: Input event of absolute pointer motion +# @type: the input type, one of: +# - 'key': Input event of Keyboard +# - 'btn': Input event of pointer buttons +# - 'rel': Input event of relative pointer motion +# - 'abs': Input event of absolute pointer motion # # Since: 2.0 ## @@ -4331,7 +4971,7 @@ 'abs' : 'InputMoveEvent' } } ## -# @input-send-event +# @input-send-event: # # Send input event(s) to guest. # @@ -4361,18 +5001,18 @@ 'events' : [ 'InputEvent' ] } } ## -# @NumaOptions +# @NumaOptions: # # A discriminated record of NUMA options. (for OptsVisitor) # -# Since 2.1 +# Since: 2.1 ## { 'union': 'NumaOptions', 'data': { 'node': 'NumaNodeOptions' }} ## -# @NumaNodeOptions +# @NumaNodeOptions: # # Create a guest NUMA node. (for OptsVisitor) # @@ -4398,7 +5038,7 @@ '*memdev': 'str' }} ## -# @HostMemPolicy +# @HostMemPolicy: # # Host memory policy types # @@ -4412,7 +5052,7 @@ # @interleave: memory allocations are interleaved across the set # of host nodes specified # -# Since 2.1 +# Since: 2.1 ## { 'enum': 'HostMemPolicy', 'data': [ 'default', 'preferred', 'bind', 'interleave' ] } @@ -4422,6 +5062,8 @@ # # Information about memory backend # +# @id: #optional backend's ID if backend has 'id' property (since 2.9) +# # @size: memory backend size # # @merge: enables or disables memory merge support @@ -4438,6 +5080,7 @@ ## { 'struct': 'Memdev', 'data': { + '*id': 'str', 'size': 'size', 'merge': 'bool', 'dump': 'bool', @@ -4501,7 +5144,7 @@ { 'union': 'MemoryDeviceInfo', 'data': {'dimm': 'PCDIMMDeviceInfo'} } ## -# @query-memory-devices +# @query-memory-devices: # # Lists available memory devices and their state # @@ -4509,14 +5152,16 @@ ## { 'command': 'query-memory-devices', 'returns': ['MemoryDeviceInfo'] } -## @ACPISlotType +## +# @ACPISlotType: # # @DIMM: memory slot # @CPU: logical CPU slot (since 2.7) -# +## { 'enum': 'ACPISlotType', 'data': [ 'DIMM', 'CPU' ] } -## @ACPIOSTInfo +## +# @ACPIOSTInfo: # # OSPM Status Indication for a device # For description of possible values of @source and @status fields @@ -4542,7 +5187,7 @@ 'status': 'int' } } ## -# @query-acpi-ospm-status +# @query-acpi-ospm-status: # # Lists ACPI OSPM status of ACPI device objects, # which might be reported via _OST method @@ -4552,7 +5197,7 @@ { 'command': 'query-acpi-ospm-status', 'returns': ['ACPIOSTInfo'] } ## -# @WatchdogExpirationAction +# @WatchdogExpirationAction: # # An enumeration of the actions taken when the watchdog device's timer is # expired @@ -4580,7 +5225,7 @@ 'inject-nmi' ] } ## -# @IoOperationType +# @IoOperationType: # # An enumeration of the I/O operation types # @@ -4594,19 +5239,19 @@ 'data': [ 'read', 'write' ] } ## -# @GuestPanicAction +# @GuestPanicAction: # # An enumeration of the actions taken when guest OS panic is detected # # @pause: system pauses # -# Since: 2.1 +# Since: 2.1 (poweroff since 2.8) ## { 'enum': 'GuestPanicAction', - 'data': [ 'pause' ] } + 'data': [ 'pause', 'poweroff' ] } ## -# @rtc-reset-reinjection +# @rtc-reset-reinjection: # # This command will reset the RTC interrupt reinjection backlog. # Can be used if another mechanism to synchronize guest time @@ -4621,7 +5266,7 @@ { 'include': 'qapi/rocker.json' } ## -# ReplayMode: +# @ReplayMode: # # Mode of the replay subsystem. # @@ -4689,23 +5334,23 @@ { 'command': 'query-gic-capabilities', 'returns': ['GICCapability'] } ## -# CpuInstanceProperties +# @CpuInstanceProperties: # # List of properties to be used for hotplugging a CPU instance, # it should be passed by management with device_add command when # a CPU is being hotplugged. # +# @node-id: #optional NUMA node ID the CPU belongs to +# @socket-id: #optional socket number within node/board the CPU belongs to +# @core-id: #optional core number within socket the CPU belongs to +# @thread-id: #optional thread number within core the CPU belongs to +# # Note: currently there are 4 properties that could be present # but management should be prepared to pass through other # properties with device_add command to allow for future # interface extension. This also requires the filed names to be kept in # sync with the properties passed to -device/device_add. # -# @node-id: #optional NUMA node ID the CPU belongs to -# @socket-id: #optional socket number within node/board the CPU belongs to -# @core-id: #optional core number within socket the CPU belongs to -# @thread-id: #optional thread number within core the CPU belongs to -# # Since: 2.7 ## { 'struct': 'CpuInstanceProperties', @@ -4717,7 +5362,7 @@ } ## -# @HotpluggableCPU +# @HotpluggableCPU: # # @type: CPU object type for usage with device_add command # @props: list of properties to be used for hotplugging CPU @@ -4736,7 +5381,7 @@ } ## -# @query-hotpluggable-cpus +# @query-hotpluggable-cpus: # # Returns: a list of HotpluggableCPU objects. #