# QAPI introspection
{ 'include': 'qapi/introspect.json' }
+##
+# = QMP commands
+##
+
##
# @qmp_capabilities:
#
{ '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.
# 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',
#
# @name: #optional The name of the guest
#
-# Since 0.14.0
+# Since: 0.14.0
##
{ 'struct': 'NameInfo', 'data': {'*name': 'str'} }
#
# 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' }
# 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.
#
#
# @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',
# 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
#
#
# 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' }
# 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'] }
# 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'] }
# 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',
# 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'},
# 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.
#
#
# @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)
#
'postcopy-requests' : 'int' } }
##
-# @XBZRLECacheStats
+# @XBZRLECacheStats:
#
# Detailed XBZRLE migration cache statistics
#
'cache-miss': 'int', 'cache-miss-rate': 'number',
'overflow': 'int' } }
+##
# @MigrationStatus:
#
# An enumeration of migration status.
#
# @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
#
'active', 'postcopy-active', 'completed', 'failed', 'colo' ] }
##
-# @MigrationInfo
+# @MigrationInfo:
#
# Information about current migration process.
#
'*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
#
'compress', 'events', 'postcopy-ram', 'x-colo'] }
##
-# @MigrationCapabilityStatus
+# @MigrationCapabilityStatus:
#
# Migration capability information
#
'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
#
'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
'*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
# @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.
#
'vmstate-loaded' ] }
##
-# @COLOMode
+# @COLOMode:
#
# The colo mode
#
'data': [ 'unknown', 'primary', 'secondary'] }
##
-# @FailoverStatus
+# @FailoverStatus:
#
# An enumeration of COLO failover status
#
'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.
# 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'] }
#
# @pc: the 64-bit instruction pointer
#
-# Since 2.6
+# Since: 2.6
##
{ 'struct': 'CpuInfoX86', 'data': { 'pc': 'int' } }
#
# @npc: the NPC component of the instruction pointer
#
-# Since 2.6
+# Since: 2.6
##
{ 'struct': 'CpuInfoSPARC', 'data': { 'pc': 'int', 'npc': 'int' } }
#
# @nip: the instruction pointer
#
-# Since 2.6
+# Since: 2.6
##
{ 'struct': 'CpuInfoPPC', 'data': { 'nip': 'int' } }
#
# @PC: the instruction pointer
#
-# Since 2.6
+# Since: 2.6
##
{ 'struct': 'CpuInfoMIPS', 'data': { 'PC': 'int' } }
#
# @PC: the instruction pointer
#
-# Since 2.6
+# Since: 2.6
##
{ 'struct': 'CpuInfoTricore', 'data': { 'PC': 'int' } }
#
# No additional information is available about the virtual CPU
#
-# Since 2.6
+# Since: 2.6
#
##
{ 'struct': 'CpuInfoOther', 'data': { } }
# 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'] }
#
# 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
#
#
# @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
#
'websocket': 'bool' } }
##
-# @VncServerInfo
+# @VncServerInfo:
#
# The network connection information for server
#
'*service': 'str', '*auth': 'str', '*clients': ['VncClientInfo']} }
##
-# @VncPriAuth:
+# @VncPrimaryAuth:
#
# vnc primary authentication method.
#
# 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' }
{ 'command': 'query-vnc-servers', 'returns': ['VncInfo2'] }
##
-# @SpiceBasicInfo
+# @SpiceBasicInfo:
#
# The basic information for SPICE network connection
#
'family': 'NetworkAddressFamily' } }
##
-# @SpiceServerInfo
+# @SpiceServerInfo:
#
# Information about a SPICE server
#
'data': { '*auth': 'str' } }
##
-# @SpiceChannel
+# @SpiceChannel:
#
# Information about a SPICE client channel.
#
'tls': 'bool'} }
##
-# @SpiceQueryMouseMode
+# @SpiceQueryMouseMode:
#
# An enumeration of Spice mouse states.
#
'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.
#
# @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
#
'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' }
# 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' }
{ 'struct': 'PciMemoryRange', 'data': {'base': 'int', 'limit': 'int'} }
##
-# @PciMemoryRegion
+# @PciMemoryRegion:
#
# Information about a PCI device I/O region.
#
# @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
#
# 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'] }
# unexpected.
#
# Since: 0.14.0
+#
+# Example:
+#
+# -> { "execute": "quit" }
+# <- { "return": {} }
##
{ 'command': 'quit' }
# 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' }
# Performs a hard reset of a guest.
#
# Since: 0.14.0
+#
+# Example:
+#
+# -> { "execute": "system_reset" }
+# <- { "return": {} }
+#
##
{ 'command': 'system_reset' }
# 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' }
{ 'command': 'cpu', 'data': {'index': 'int'} }
##
-# @cpu-add
+# @cpu-add:
#
# Adds CPU with specified ID
#
#
# Returns: Nothing on success
#
-# Since 1.5
+# Since: 1.5
+#
+# Example:
+#
+# -> { "execute": "cpu-add", "arguments": { "id": 2 } }
+# <- { "return": {} }
+#
##
{ 'command': 'cpu-add', 'data': {'id': 'int'} }
# 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'} }
# 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'} }
# 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' }
# Since: 1.1
#
# Returns: nothing.
+#
+# Example:
+#
+# -> { "execute": "system_wakeup" }
+# <- { "return": {} }
+#
##
{ 'command': 'system_wakeup' }
# @inject-nmi:
#
# Injects a Non-Maskable Interrupt into the default CPU (x86/s390) or all CPUs (ppc64).
+# The command fails when the guest doesn't support injecting.
#
# Returns: If successful, nothing
#
# Since: 0.14.0
#
# Note: prior to 2.1, this command was only supported for x86 and s390 VMs
+#
+# Example:
+#
+# -> { "execute": "inject-nmi" }
+# <- { "return": {} }
+#
##
{ 'command': 'inject-nmi' }
{ '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.
#
'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.
#
}
##
-# @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
# 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' ],
#
# 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.
#
{ 'command': 'migrate_cancel' }
##
-# @migrate_set_downtime
+# @migrate_set_downtime:
#
# Set maximum tolerated downtime for migration.
#
{ 'command': 'migrate_set_downtime', 'data': {'value': 'number'} }
##
-# @migrate_set_speed
+# @migrate_set_speed:
#
# Set maximum speed for migration.
#
{ 'command': 'migrate_set_speed', 'data': {'value': 'int'} }
##
-# @migrate-set-cache-size
+# @migrate-set-cache-size:
#
# Set XBZRLE cache size
#
{ 'command': 'migrate-set-cache-size', 'data': {'value': 'int'} }
##
-# @query-migrate-cache-size
+# @query-migrate-cache-size:
#
# query XBZRLE cache size
#
'returns': [ 'DevicePropertyInfo' ] }
##
-# @migrate
+# @migrate:
#
# Migrates the current running guest to another Virtual Machine.
#
'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
##
{ 'command': 'migrate-incoming', 'data': {'uri': 'str' } }
+##
# @xen-save-devices-state:
#
# Save the state of all devices to file. The RAM and the block devices
{ '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.
#
#
# @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.
#
# "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.
# 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
##
'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.
'*format': 'DumpGuestMemoryFormat'} }
##
-# @DumpStatus
+# @DumpStatus:
#
# Describe the status of a long-running background guest memory dump.
#
#
# @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'.
#
#
# @total: total bytes to be written in latest dump (uncompressed)
#
-# Since 2.6
+# Since: 2.6
##
{ 'struct': 'DumpQueryResult',
'data': { 'status': 'DumpStatus',
'total': 'int' } }
##
-# @query-dump
+# @query-dump:
#
# Query latest dump status.
#
'returns': 'DumpGuestMemoryCapability' }
##
-# @dump-skeys
+# @dump-skeys:
#
# Dump guest's storage keys
#
#
# 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.
{ '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.
#
#
# @vectors: #optional number of MSI-x vectors, 0 to disable MSI-X
#
-# Since 1.2
+# Since: 1.2
##
{ 'struct': 'NetLegacyNicOptions',
'data': {
'*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.
#
# @guestfwd: #optional forward guest TCP connections
#
-# Since 1.2
+# Since: 1.2
##
{ 'struct': 'NetdevUserOptions',
'data': {
'*guestfwd': ['String'] } }
##
-# @NetdevTapOptions
+# @NetdevTapOptions:
#
# Connect the host TAP network interface name to the VLAN.
#
# @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': {
'*poll-us': 'uint32'} }
##
-# @NetdevSocketOptions
+# @NetdevSocketOptions:
#
# Connect the VLAN to a remote VLAN in another QEMU virtual machine using a TCP
# socket connection.
#
# @udp: #optional UDP unicast address and port number
#
-# Since 1.2
+# Since: 1.2
##
{ 'struct': 'NetdevSocketOptions',
'data': {
'*udp': 'str' } }
##
-# @NetdevL2TPv3Options
+# @NetdevL2TPv3Options:
#
# Connect the VLAN to Ethernet over L2TPv3 Static tunnel
#
# @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': {
'*offset': 'uint32' } }
##
-# @NetdevVdeOptions
+# @NetdevVdeOptions:
#
# Connect the VLAN to a vde switch running on the host.
#
#
# @mode: #optional permissions for socket
#
-# Since 1.2
+# Since: 1.2
##
{ 'struct': 'NetdevVdeOptions',
'data': {
'*mode': 'uint16' } }
##
-# @NetdevDumpOptions
+# @NetdevDumpOptions:
#
# Dump VLAN network traffic to a file.
#
#
# @file: #optional dump file path (default is qemu-vlan0.pcap)
#
-# Since 1.2
+# Since: 1.2
##
{ 'struct': 'NetdevDumpOptions',
'data': {
'*file': 'str' } }
##
-# @NetdevBridgeOptions
+# @NetdevBridgeOptions:
#
# Connect a host TAP network interface to a host bridge device.
#
#
# @helper: #optional command to execute to configure bridge
#
-# Since 1.2
+# Since: 1.2
##
{ 'struct': 'NetdevBridgeOptions',
'data': {
'*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
#
#
# @devname: #optional path of the netmap device (default: '/dev/netmap').
#
-# Since 2.0
+# Since: 2.0
##
{ 'struct': 'NetdevNetmapOptions',
'data': {
'*devname': 'str' } }
##
-# @NetdevVhostUserOptions
+# @NetdevVhostUserOptions:
#
# Vhost-user network backend
#
# @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': {
'*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.
#
#
# @type: Specify the driver used for interpreting remaining arguments.
#
-# Since 1.2
+# Since: 1.2
#
# 'l2tpv3' - since 2.1
##
'vhost-user': 'NetdevVhostUserOptions' } }
##
-# @NetLegacy
+# @NetLegacy:
#
# Captures the configuration of a network device; legacy.
#
#
# @opts: device type specific properties (legacy)
#
-# Since 1.2
+# Since: 1.2
##
{ 'struct': 'NetLegacy',
'data': {
'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': {
'vhost-user': 'NetdevVhostUserOptions' } }
##
-# @NetFilterDirection
+# @NetFilterDirection:
#
# Indicates whether a netfilter is attached to a netdev's transmit queue or
# receive queue or both.
# @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.
#
# @ipv6: whether to accept IPv6 addresses, default try both IPv4 and IPv6
# #optional
#
-# Since 1.3
+# Since: 1.3
##
{ 'struct': 'InetSocketAddress',
'data': {
'*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' } }
##
#
# @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)
# @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.
##
{ 'struct': 'CpuDefinitionInfo',
'data': { 'name': 'str', '*migration-safe': 'bool', 'static': 'bool',
- '*unavailable-features': [ 'str' ] } }
+ '*unavailable-features': [ 'str' ], 'typename': 'str' } }
##
# @query-cpu-definitions:
'*props': 'any' } }
##
-# @CpuModelExpansionType
+# @CpuModelExpansionType:
#
# An enumeration of CPU model expansion types.
#
##
-# @CpuModelExpansionInfo
+# @CpuModelExpansionInfo:
#
# The result of a cpu model expansion.
#
'data': [ 'incompatible', 'identical', 'superset', 'subset' ] }
##
-# @CpuModelCompareInfo
+# @CpuModelCompareInfo:
#
# The result of a CPU model comparison.
#
'returns': 'CpuModelCompareInfo' }
##
-# @CpuModelBaselineInfo
+# @CpuModelBaselineInfo:
#
# The result of a CPU model baseline.
#
'modelb': 'CpuModelInfo' },
'returns': 'CpuModelBaselineInfo' }
+##
# @AddfdInfo:
#
# Information about a file descriptor that was added to an fd set.
#
# 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',
'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.
#
#
# @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
##
#
# 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
##
'data': { 'passthrough' : 'TPMPassthroughOptions' } }
##
-# @TpmInfo:
+# @TPMInfo:
#
# Information about the TPM
#
{ 'command': 'query-tpm', 'returns': ['TPMInfo'] }
##
-# @AcpiTableOptions
+# @AcpiTableOptions:
#
# Specify an ACPI table on the command line to load.
#
# ACPI table header. At least one file is required. This field excludes
# @file.
#
-# Since 1.5
+# Since: 1.5
##
{ 'struct': 'AcpiTableOptions',
'data': {
# @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'] }
#
# @default: #optional default value string (since 2.1)
#
-# Since 1.5
+# Since: 1.5
##
{ 'struct': 'CommandLineParameterInfo',
'data': { 'name': 'str',
#
# @parameters: an array of @CommandLineParameterInfo
#
-# Since 1.5
+# Since: 1.5
##
{ 'struct': 'CommandLineOptionInfo',
'data': { 'option': 'str', 'parameters': ['CommandLineParameterInfo'] } }
# 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
#
'data': [ 'EAX', 'EBX', 'ECX', 'EDX', 'ESP', 'EBP', 'ESI', 'EDI' ] }
##
-# @X86CPUFeatureWordInfo
+# @X86CPUFeatureWordInfo:
#
# Information about a X86 CPU feature word
#
'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'] } }
#
# @multicast-table: a list of multicast macaddr string
#
-# Since 1.6
+# Since: 1.6
##
{ 'struct': 'RxFilterInfo',
'data': {
'returns': ['RxFilterInfo'] }
##
-# @InputButton
+# @InputButton:
#
# Button of a pointer input device (mouse, tablet).
#
'data' : [ 'left', 'middle', 'right', 'wheel-up', 'wheel-down' ] }
##
-# @InputAxis
+# @InputAxis:
#
# Position axis of a pointer input device (mouse, tablet).
#
'data' : [ 'x', 'y' ] }
##
-# @InputKeyEvent
+# @InputKeyEvent:
#
# Keyboard input event.
#
'down' : 'bool' } }
##
-# @InputBtnEvent
+# @InputBtnEvent:
#
# Pointer button input event.
#
'down' : 'bool' } }
##
-# @InputMoveEvent
+# @InputMoveEvent:
#
# Pointer motion input event.
#
'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
##
'abs' : 'InputMoveEvent' } }
##
-# @input-send-event
+# @input-send-event:
#
# Send input event(s) to guest.
#
'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)
#
'*memdev': 'str' }}
##
-# @HostMemPolicy
+# @HostMemPolicy:
#
# Host memory policy types
#
# @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' ] }
#
# 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
##
{ 'struct': 'Memdev',
'data': {
+ '*id': 'str',
'size': 'size',
'merge': 'bool',
'dump': 'bool',
{ 'union': 'MemoryDeviceInfo', 'data': {'dimm': 'PCDIMMDeviceInfo'} }
##
-# @query-memory-devices
+# @query-memory-devices:
#
# Lists available memory devices and their state
#
##
{ '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
'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
{ 'command': 'query-acpi-ospm-status', 'returns': ['ACPIOSTInfo'] }
##
-# @WatchdogExpirationAction
+# @WatchdogExpirationAction:
#
# An enumeration of the actions taken when the watchdog device's timer is
# expired
'inject-nmi' ] }
##
-# @IoOperationType
+# @IoOperationType:
#
# An enumeration of the I/O operation types
#
'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
{ 'include': 'qapi/rocker.json' }
##
-# ReplayMode:
+# @ReplayMode:
#
# Mode of the replay subsystem.
#
{ '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',
}
##
-# @HotpluggableCPU
+# @HotpluggableCPU:
#
# @type: CPU object type for usage with device_add command
# @props: list of properties to be used for hotplugging CPU
}
##
-# @query-hotpluggable-cpus
+# @query-hotpluggable-cpus:
#
# Returns: a list of HotpluggableCPU objects.
#