18ac25c84SMarkus Armbruster# -*- Mode: Python -*- 2f7160f32SAndrea Bolognani# vim: filetype=python 38ac25c84SMarkus Armbruster# 48ac25c84SMarkus Armbruster# This work is licensed under the terms of the GNU GPL, version 2 or later. 58ac25c84SMarkus Armbruster# See the COPYING file in the top-level directory. 68ac25c84SMarkus Armbruster 78ac25c84SMarkus Armbruster## 88ac25c84SMarkus Armbruster# = Machines 98ac25c84SMarkus Armbruster## 108ac25c84SMarkus Armbruster 11913d9063SKevin Wolf{ 'include': 'common.json' } 12913d9063SKevin Wolf 13ffaee83bSMarkus Armbruster## 14ffaee83bSMarkus Armbruster# @SysEmuTarget: 15ffaee83bSMarkus Armbruster# 16ffaee83bSMarkus Armbruster# The comprehensive enumeration of QEMU system emulation ("softmmu") 17ffaee83bSMarkus Armbruster# targets. Run "./configure --help" in the project root directory, and 1844e12af7SPeter Maydell# look for the \*-softmmu targets near the "--target-list" option. The 19ffaee83bSMarkus Armbruster# individual target constants are not documented here, for the time 20ffaee83bSMarkus Armbruster# being. 21ffaee83bSMarkus Armbruster# 22c8c35e5fSYoshinori Sato# @rx: since 5.0 2342f3ff00SMichael Rolnik# @avr: since 5.1 24c8c35e5fSYoshinori Sato# 25ffaee83bSMarkus Armbruster# Notes: The resulting QMP strings can be appended to the "qemu-system-" 26ffaee83bSMarkus Armbruster# prefix to produce the corresponding QEMU executable name. This 27ffaee83bSMarkus Armbruster# is true even for "qemu-system-x86_64". 28ffaee83bSMarkus Armbruster# 29ffaee83bSMarkus Armbruster# Since: 3.0 30ffaee83bSMarkus Armbruster## 31ffaee83bSMarkus Armbruster{ 'enum' : 'SysEmuTarget', 329d49bcf6SMarkus Armbruster 'data' : [ 'aarch64', 'alpha', 'arm', 'avr', 'cris', 'hppa', 'i386', 33ffaee83bSMarkus Armbruster 'm68k', 'microblaze', 'microblazeel', 'mips', 'mips64', 34875bb7e3SThomas Huth 'mips64el', 'mipsel', 'nios2', 'or1k', 'ppc', 35c8c35e5fSYoshinori Sato 'ppc64', 'riscv32', 'riscv64', 'rx', 's390x', 'sh4', 36*43692239SMarkus Armbruster 'sh4eb', 'sparc', 'sparc64', 'tricore', 37ffaee83bSMarkus Armbruster 'x86_64', 'xtensa', 'xtensaeb' ] } 388ac25c84SMarkus Armbruster 398ac25c84SMarkus Armbruster## 408ac25c84SMarkus Armbruster# @CpuS390State: 418ac25c84SMarkus Armbruster# 428ac25c84SMarkus Armbruster# An enumeration of cpu states that can be assumed by a virtual 438ac25c84SMarkus Armbruster# S390 CPU 448ac25c84SMarkus Armbruster# 458ac25c84SMarkus Armbruster# Since: 2.12 468ac25c84SMarkus Armbruster## 478ac25c84SMarkus Armbruster{ 'enum': 'CpuS390State', 488ac25c84SMarkus Armbruster 'prefix': 'S390_CPU_STATE', 498ac25c84SMarkus Armbruster 'data': [ 'uninitialized', 'stopped', 'check-stop', 'operating', 'load' ] } 508ac25c84SMarkus Armbruster 518ac25c84SMarkus Armbruster## 528ac25c84SMarkus Armbruster# @CpuInfoS390: 538ac25c84SMarkus Armbruster# 548ac25c84SMarkus Armbruster# Additional information about a virtual S390 CPU 558ac25c84SMarkus Armbruster# 568ac25c84SMarkus Armbruster# @cpu-state: the virtual CPU's state 578ac25c84SMarkus Armbruster# 588ac25c84SMarkus Armbruster# Since: 2.12 598ac25c84SMarkus Armbruster## 608ac25c84SMarkus Armbruster{ 'struct': 'CpuInfoS390', 'data': { 'cpu-state': 'CpuS390State' } } 618ac25c84SMarkus Armbruster 628ac25c84SMarkus Armbruster## 638ac25c84SMarkus Armbruster# @CpuInfoFast: 648ac25c84SMarkus Armbruster# 658ac25c84SMarkus Armbruster# Information about a virtual CPU 668ac25c84SMarkus Armbruster# 678ac25c84SMarkus Armbruster# @cpu-index: index of the virtual CPU 688ac25c84SMarkus Armbruster# 698ac25c84SMarkus Armbruster# @qom-path: path to the CPU object in the QOM tree 708ac25c84SMarkus Armbruster# 718ac25c84SMarkus Armbruster# @thread-id: ID of the underlying host thread 728ac25c84SMarkus Armbruster# 738ac25c84SMarkus Armbruster# @props: properties describing to which node/socket/core/thread 748ac25c84SMarkus Armbruster# virtual CPU belongs to, provided if supported by board 758ac25c84SMarkus Armbruster# 768ac25c84SMarkus Armbruster# @target: the QEMU system emulation target, which determines which 778ac25c84SMarkus Armbruster# additional fields will be listed (since 3.0) 788ac25c84SMarkus Armbruster# 798ac25c84SMarkus Armbruster# Since: 2.12 808ac25c84SMarkus Armbruster# 818ac25c84SMarkus Armbruster## 828ac25c84SMarkus Armbruster{ 'union' : 'CpuInfoFast', 838ac25c84SMarkus Armbruster 'base' : { 'cpu-index' : 'int', 848ac25c84SMarkus Armbruster 'qom-path' : 'str', 858ac25c84SMarkus Armbruster 'thread-id' : 'int', 868ac25c84SMarkus Armbruster '*props' : 'CpuInstanceProperties', 878ac25c84SMarkus Armbruster 'target' : 'SysEmuTarget' }, 888ac25c84SMarkus Armbruster 'discriminator' : 'target', 898ac25c84SMarkus Armbruster 'data' : { 's390x' : 'CpuInfoS390' } } 908ac25c84SMarkus Armbruster 918ac25c84SMarkus Armbruster## 928ac25c84SMarkus Armbruster# @query-cpus-fast: 938ac25c84SMarkus Armbruster# 948af54b91SDaniel P. Berrangé# Returns information about all virtual CPUs. 958ac25c84SMarkus Armbruster# 968ac25c84SMarkus Armbruster# Returns: list of @CpuInfoFast 978ac25c84SMarkus Armbruster# 988ac25c84SMarkus Armbruster# Since: 2.12 998ac25c84SMarkus Armbruster# 1008ac25c84SMarkus Armbruster# Example: 1018ac25c84SMarkus Armbruster# 1028ac25c84SMarkus Armbruster# -> { "execute": "query-cpus-fast" } 1038ac25c84SMarkus Armbruster# <- { "return": [ 1048ac25c84SMarkus Armbruster# { 1058ac25c84SMarkus Armbruster# "thread-id": 25627, 1068ac25c84SMarkus Armbruster# "props": { 1078ac25c84SMarkus Armbruster# "core-id": 0, 1088ac25c84SMarkus Armbruster# "thread-id": 0, 1098ac25c84SMarkus Armbruster# "socket-id": 0 1108ac25c84SMarkus Armbruster# }, 1118ac25c84SMarkus Armbruster# "qom-path": "/machine/unattached/device[0]", 1128ac25c84SMarkus Armbruster# "arch":"x86", 1138ac25c84SMarkus Armbruster# "target":"x86_64", 1148ac25c84SMarkus Armbruster# "cpu-index": 0 1158ac25c84SMarkus Armbruster# }, 1168ac25c84SMarkus Armbruster# { 1178ac25c84SMarkus Armbruster# "thread-id": 25628, 1188ac25c84SMarkus Armbruster# "props": { 1198ac25c84SMarkus Armbruster# "core-id": 0, 1208ac25c84SMarkus Armbruster# "thread-id": 0, 1218ac25c84SMarkus Armbruster# "socket-id": 1 1228ac25c84SMarkus Armbruster# }, 1238ac25c84SMarkus Armbruster# "qom-path": "/machine/unattached/device[2]", 1248ac25c84SMarkus Armbruster# "arch":"x86", 1258ac25c84SMarkus Armbruster# "target":"x86_64", 1268ac25c84SMarkus Armbruster# "cpu-index": 1 1278ac25c84SMarkus Armbruster# } 1288ac25c84SMarkus Armbruster# ] 1298ac25c84SMarkus Armbruster# } 1308ac25c84SMarkus Armbruster## 1318ac25c84SMarkus Armbruster{ 'command': 'query-cpus-fast', 'returns': [ 'CpuInfoFast' ] } 1328ac25c84SMarkus Armbruster 1338ac25c84SMarkus Armbruster## 1348ac25c84SMarkus Armbruster# @MachineInfo: 1358ac25c84SMarkus Armbruster# 1368ac25c84SMarkus Armbruster# Information describing a machine. 1378ac25c84SMarkus Armbruster# 1388ac25c84SMarkus Armbruster# @name: the name of the machine 1398ac25c84SMarkus Armbruster# 1408ac25c84SMarkus Armbruster# @alias: an alias for the machine name 1418ac25c84SMarkus Armbruster# 1428ac25c84SMarkus Armbruster# @is-default: whether the machine is default 1438ac25c84SMarkus Armbruster# 1448ac25c84SMarkus Armbruster# @cpu-max: maximum number of CPUs supported by the machine type 1459bc6e893SMarkus Armbruster# (since 1.5) 1468ac25c84SMarkus Armbruster# 1479bc6e893SMarkus Armbruster# @hotpluggable-cpus: cpu hotplug via -device is supported (since 2.7) 1488ac25c84SMarkus Armbruster# 149cd5ff833SIgor Mammedov# @numa-mem-supported: true if '-numa node,mem' option is supported by 150cd5ff833SIgor Mammedov# the machine type and false otherwise (since 4.1) 151cd5ff833SIgor Mammedov# 15279974027SEduardo Habkost# @deprecated: if true, the machine type is deprecated and may be removed 15379974027SEduardo Habkost# in future versions of QEMU according to the QEMU deprecation 1549bc6e893SMarkus Armbruster# policy (since 4.1) 15579974027SEduardo Habkost# 15604109957SDaniel P. Berrangé# @default-cpu-type: default CPU model typename if none is requested via 15704109957SDaniel P. Berrangé# the -cpu argument. (since 4.2) 15804109957SDaniel P. Berrangé# 159c5566005SMichal Privoznik# @default-ram-id: the default ID of initial RAM memory backend (since 5.2) 160c5566005SMichal Privoznik# 1619bc6e893SMarkus Armbruster# Since: 1.2 1628ac25c84SMarkus Armbruster## 1638ac25c84SMarkus Armbruster{ 'struct': 'MachineInfo', 1648ac25c84SMarkus Armbruster 'data': { 'name': 'str', '*alias': 'str', 1658ac25c84SMarkus Armbruster '*is-default': 'bool', 'cpu-max': 'int', 16679974027SEduardo Habkost 'hotpluggable-cpus': 'bool', 'numa-mem-supported': 'bool', 167c5566005SMichal Privoznik 'deprecated': 'bool', '*default-cpu-type': 'str', 168c5566005SMichal Privoznik '*default-ram-id': 'str' } } 1698ac25c84SMarkus Armbruster 1708ac25c84SMarkus Armbruster## 1718ac25c84SMarkus Armbruster# @query-machines: 1728ac25c84SMarkus Armbruster# 1738ac25c84SMarkus Armbruster# Return a list of supported machines 1748ac25c84SMarkus Armbruster# 1758ac25c84SMarkus Armbruster# Returns: a list of MachineInfo 1768ac25c84SMarkus Armbruster# 1779bc6e893SMarkus Armbruster# Since: 1.2 1788ac25c84SMarkus Armbruster## 1798ac25c84SMarkus Armbruster{ 'command': 'query-machines', 'returns': ['MachineInfo'] } 1808ac25c84SMarkus Armbruster 1818ac25c84SMarkus Armbruster## 1828ac25c84SMarkus Armbruster# @CurrentMachineParams: 1838ac25c84SMarkus Armbruster# 1848ac25c84SMarkus Armbruster# Information describing the running machine parameters. 1858ac25c84SMarkus Armbruster# 1868ac25c84SMarkus Armbruster# @wakeup-suspend-support: true if the machine supports wake up from 1878ac25c84SMarkus Armbruster# suspend 1888ac25c84SMarkus Armbruster# 1898ac25c84SMarkus Armbruster# Since: 4.0 1908ac25c84SMarkus Armbruster## 1918ac25c84SMarkus Armbruster{ 'struct': 'CurrentMachineParams', 1928ac25c84SMarkus Armbruster 'data': { 'wakeup-suspend-support': 'bool'} } 1938ac25c84SMarkus Armbruster 1948ac25c84SMarkus Armbruster## 1958ac25c84SMarkus Armbruster# @query-current-machine: 1968ac25c84SMarkus Armbruster# 1978ac25c84SMarkus Armbruster# Return information on the current virtual machine. 1988ac25c84SMarkus Armbruster# 1998ac25c84SMarkus Armbruster# Returns: CurrentMachineParams 2008ac25c84SMarkus Armbruster# 2018ac25c84SMarkus Armbruster# Since: 4.0 2028ac25c84SMarkus Armbruster## 2038ac25c84SMarkus Armbruster{ 'command': 'query-current-machine', 'returns': 'CurrentMachineParams' } 2048ac25c84SMarkus Armbruster 2058ac25c84SMarkus Armbruster## 206ffaee83bSMarkus Armbruster# @TargetInfo: 207ffaee83bSMarkus Armbruster# 208ffaee83bSMarkus Armbruster# Information describing the QEMU target. 209ffaee83bSMarkus Armbruster# 210ffaee83bSMarkus Armbruster# @arch: the target architecture 211ffaee83bSMarkus Armbruster# 2129bc6e893SMarkus Armbruster# Since: 1.2 213ffaee83bSMarkus Armbruster## 214ffaee83bSMarkus Armbruster{ 'struct': 'TargetInfo', 215ffaee83bSMarkus Armbruster 'data': { 'arch': 'SysEmuTarget' } } 216ffaee83bSMarkus Armbruster 217ffaee83bSMarkus Armbruster## 218ffaee83bSMarkus Armbruster# @query-target: 219ffaee83bSMarkus Armbruster# 220ffaee83bSMarkus Armbruster# Return information about the target for this QEMU 221ffaee83bSMarkus Armbruster# 222ffaee83bSMarkus Armbruster# Returns: TargetInfo 223ffaee83bSMarkus Armbruster# 2249bc6e893SMarkus Armbruster# Since: 1.2 225ffaee83bSMarkus Armbruster## 226ffaee83bSMarkus Armbruster{ 'command': 'query-target', 'returns': 'TargetInfo' } 227ffaee83bSMarkus Armbruster 228ffaee83bSMarkus Armbruster## 229f68c0147SPhilippe Mathieu-Daudé# @UuidInfo: 230f68c0147SPhilippe Mathieu-Daudé# 231f68c0147SPhilippe Mathieu-Daudé# Guest UUID information (Universally Unique Identifier). 232f68c0147SPhilippe Mathieu-Daudé# 233f68c0147SPhilippe Mathieu-Daudé# @UUID: the UUID of the guest 234f68c0147SPhilippe Mathieu-Daudé# 2359bc6e893SMarkus Armbruster# Since: 0.14 236f68c0147SPhilippe Mathieu-Daudé# 237f68c0147SPhilippe Mathieu-Daudé# Notes: If no UUID was specified for the guest, a null UUID is returned. 238f68c0147SPhilippe Mathieu-Daudé## 239f68c0147SPhilippe Mathieu-Daudé{ 'struct': 'UuidInfo', 'data': {'UUID': 'str'} } 240f68c0147SPhilippe Mathieu-Daudé 241f68c0147SPhilippe Mathieu-Daudé## 242f68c0147SPhilippe Mathieu-Daudé# @query-uuid: 243f68c0147SPhilippe Mathieu-Daudé# 244f68c0147SPhilippe Mathieu-Daudé# Query the guest UUID information. 245f68c0147SPhilippe Mathieu-Daudé# 246f68c0147SPhilippe Mathieu-Daudé# Returns: The @UuidInfo for the guest 247f68c0147SPhilippe Mathieu-Daudé# 2489bc6e893SMarkus Armbruster# Since: 0.14 249f68c0147SPhilippe Mathieu-Daudé# 250f68c0147SPhilippe Mathieu-Daudé# Example: 251f68c0147SPhilippe Mathieu-Daudé# 252f68c0147SPhilippe Mathieu-Daudé# -> { "execute": "query-uuid" } 253f68c0147SPhilippe Mathieu-Daudé# <- { "return": { "UUID": "550e8400-e29b-41d4-a716-446655440000" } } 254f68c0147SPhilippe Mathieu-Daudé# 255f68c0147SPhilippe Mathieu-Daudé## 256f68c0147SPhilippe Mathieu-Daudé{ 'command': 'query-uuid', 'returns': 'UuidInfo', 'allow-preconfig': true } 257f68c0147SPhilippe Mathieu-Daudé 258f68c0147SPhilippe Mathieu-Daudé## 259db0f08dfSPhilippe Mathieu-Daudé# @GuidInfo: 260db0f08dfSPhilippe Mathieu-Daudé# 261db0f08dfSPhilippe Mathieu-Daudé# GUID information. 262db0f08dfSPhilippe Mathieu-Daudé# 263db0f08dfSPhilippe Mathieu-Daudé# @guid: the globally unique identifier 264db0f08dfSPhilippe Mathieu-Daudé# 265db0f08dfSPhilippe Mathieu-Daudé# Since: 2.9 266db0f08dfSPhilippe Mathieu-Daudé## 267db0f08dfSPhilippe Mathieu-Daudé{ 'struct': 'GuidInfo', 'data': {'guid': 'str'} } 268db0f08dfSPhilippe Mathieu-Daudé 269db0f08dfSPhilippe Mathieu-Daudé## 270db0f08dfSPhilippe Mathieu-Daudé# @query-vm-generation-id: 271db0f08dfSPhilippe Mathieu-Daudé# 272db0f08dfSPhilippe Mathieu-Daudé# Show Virtual Machine Generation ID 273db0f08dfSPhilippe Mathieu-Daudé# 274db0f08dfSPhilippe Mathieu-Daudé# Since: 2.9 275db0f08dfSPhilippe Mathieu-Daudé## 276db0f08dfSPhilippe Mathieu-Daudé{ 'command': 'query-vm-generation-id', 'returns': 'GuidInfo' } 277db0f08dfSPhilippe Mathieu-Daudé 278db0f08dfSPhilippe Mathieu-Daudé## 27990f8c0f9SPhilippe Mathieu-Daudé# @system_reset: 28090f8c0f9SPhilippe Mathieu-Daudé# 28190f8c0f9SPhilippe Mathieu-Daudé# Performs a hard reset of a guest. 28290f8c0f9SPhilippe Mathieu-Daudé# 2839bc6e893SMarkus Armbruster# Since: 0.14 28490f8c0f9SPhilippe Mathieu-Daudé# 28590f8c0f9SPhilippe Mathieu-Daudé# Example: 28690f8c0f9SPhilippe Mathieu-Daudé# 28790f8c0f9SPhilippe Mathieu-Daudé# -> { "execute": "system_reset" } 28890f8c0f9SPhilippe Mathieu-Daudé# <- { "return": {} } 28990f8c0f9SPhilippe Mathieu-Daudé# 29090f8c0f9SPhilippe Mathieu-Daudé## 29190f8c0f9SPhilippe Mathieu-Daudé{ 'command': 'system_reset' } 29290f8c0f9SPhilippe Mathieu-Daudé 29390f8c0f9SPhilippe Mathieu-Daudé## 29490f8c0f9SPhilippe Mathieu-Daudé# @system_powerdown: 29590f8c0f9SPhilippe Mathieu-Daudé# 29690f8c0f9SPhilippe Mathieu-Daudé# Requests that a guest perform a powerdown operation. 29790f8c0f9SPhilippe Mathieu-Daudé# 2989bc6e893SMarkus Armbruster# Since: 0.14 29990f8c0f9SPhilippe Mathieu-Daudé# 30090f8c0f9SPhilippe Mathieu-Daudé# Notes: A guest may or may not respond to this command. This command 30190f8c0f9SPhilippe Mathieu-Daudé# returning does not indicate that a guest has accepted the request or 30290f8c0f9SPhilippe Mathieu-Daudé# that it has shut down. Many guests will respond to this command by 30390f8c0f9SPhilippe Mathieu-Daudé# prompting the user in some way. 30490f8c0f9SPhilippe Mathieu-Daudé# Example: 30590f8c0f9SPhilippe Mathieu-Daudé# 30690f8c0f9SPhilippe Mathieu-Daudé# -> { "execute": "system_powerdown" } 30790f8c0f9SPhilippe Mathieu-Daudé# <- { "return": {} } 30890f8c0f9SPhilippe Mathieu-Daudé# 30990f8c0f9SPhilippe Mathieu-Daudé## 31090f8c0f9SPhilippe Mathieu-Daudé{ 'command': 'system_powerdown' } 31190f8c0f9SPhilippe Mathieu-Daudé 31290f8c0f9SPhilippe Mathieu-Daudé## 31390f8c0f9SPhilippe Mathieu-Daudé# @system_wakeup: 31490f8c0f9SPhilippe Mathieu-Daudé# 31590f8c0f9SPhilippe Mathieu-Daudé# Wake up guest from suspend. If the guest has wake-up from suspend 31690f8c0f9SPhilippe Mathieu-Daudé# support enabled (wakeup-suspend-support flag from 31790f8c0f9SPhilippe Mathieu-Daudé# query-current-machine), wake-up guest from suspend if the guest is 31890f8c0f9SPhilippe Mathieu-Daudé# in SUSPENDED state. Return an error otherwise. 31990f8c0f9SPhilippe Mathieu-Daudé# 32090f8c0f9SPhilippe Mathieu-Daudé# Since: 1.1 32190f8c0f9SPhilippe Mathieu-Daudé# 32290f8c0f9SPhilippe Mathieu-Daudé# Returns: nothing. 32390f8c0f9SPhilippe Mathieu-Daudé# 32490f8c0f9SPhilippe Mathieu-Daudé# Note: prior to 4.0, this command does nothing in case the guest 32590f8c0f9SPhilippe Mathieu-Daudé# isn't suspended. 32690f8c0f9SPhilippe Mathieu-Daudé# 32790f8c0f9SPhilippe Mathieu-Daudé# Example: 32890f8c0f9SPhilippe Mathieu-Daudé# 32990f8c0f9SPhilippe Mathieu-Daudé# -> { "execute": "system_wakeup" } 33090f8c0f9SPhilippe Mathieu-Daudé# <- { "return": {} } 33190f8c0f9SPhilippe Mathieu-Daudé# 33290f8c0f9SPhilippe Mathieu-Daudé## 33390f8c0f9SPhilippe Mathieu-Daudé{ 'command': 'system_wakeup' } 33490f8c0f9SPhilippe Mathieu-Daudé 33590f8c0f9SPhilippe Mathieu-Daudé## 3368dc007d3SPhilippe Mathieu-Daudé# @LostTickPolicy: 3378dc007d3SPhilippe Mathieu-Daudé# 3388dc007d3SPhilippe Mathieu-Daudé# Policy for handling lost ticks in timer devices. Ticks end up getting 3398dc007d3SPhilippe Mathieu-Daudé# lost when, for example, the guest is paused. 3408dc007d3SPhilippe Mathieu-Daudé# 3418dc007d3SPhilippe Mathieu-Daudé# @discard: throw away the missed ticks and continue with future injection 3428dc007d3SPhilippe Mathieu-Daudé# normally. The guest OS will see the timer jump ahead by a 3438dc007d3SPhilippe Mathieu-Daudé# potentially quite significant amount all at once, as if the 3448dc007d3SPhilippe Mathieu-Daudé# intervening chunk of time had simply not existed; needless to 3458dc007d3SPhilippe Mathieu-Daudé# say, such a sudden jump can easily confuse a guest OS which is 3468dc007d3SPhilippe Mathieu-Daudé# not specifically prepared to deal with it. Assuming the guest 3478dc007d3SPhilippe Mathieu-Daudé# OS can deal correctly with the time jump, the time in the guest 3488dc007d3SPhilippe Mathieu-Daudé# and in the host should now match. 3498dc007d3SPhilippe Mathieu-Daudé# 3508dc007d3SPhilippe Mathieu-Daudé# @delay: continue to deliver ticks at the normal rate. The guest OS will 3518dc007d3SPhilippe Mathieu-Daudé# not notice anything is amiss, as from its point of view time will 3528dc007d3SPhilippe Mathieu-Daudé# have continued to flow normally. The time in the guest should now 3538dc007d3SPhilippe Mathieu-Daudé# be behind the time in the host by exactly the amount of time during 3548dc007d3SPhilippe Mathieu-Daudé# which ticks have been missed. 3558dc007d3SPhilippe Mathieu-Daudé# 3568dc007d3SPhilippe Mathieu-Daudé# @slew: deliver ticks at a higher rate to catch up with the missed ticks. 3578dc007d3SPhilippe Mathieu-Daudé# The guest OS will not notice anything is amiss, as from its point 3588dc007d3SPhilippe Mathieu-Daudé# of view time will have continued to flow normally. Once the timer 3598dc007d3SPhilippe Mathieu-Daudé# has managed to catch up with all the missing ticks, the time in 3608dc007d3SPhilippe Mathieu-Daudé# the guest and in the host should match. 3618dc007d3SPhilippe Mathieu-Daudé# 3628dc007d3SPhilippe Mathieu-Daudé# Since: 2.0 3638dc007d3SPhilippe Mathieu-Daudé## 3648dc007d3SPhilippe Mathieu-Daudé{ 'enum': 'LostTickPolicy', 3658dc007d3SPhilippe Mathieu-Daudé 'data': ['discard', 'delay', 'slew' ] } 3668dc007d3SPhilippe Mathieu-Daudé 3678dc007d3SPhilippe Mathieu-Daudé## 368df7a1f48SPhilippe Mathieu-Daudé# @inject-nmi: 369df7a1f48SPhilippe Mathieu-Daudé# 370df7a1f48SPhilippe Mathieu-Daudé# Injects a Non-Maskable Interrupt into the default CPU (x86/s390) or all CPUs (ppc64). 371df7a1f48SPhilippe Mathieu-Daudé# The command fails when the guest doesn't support injecting. 372df7a1f48SPhilippe Mathieu-Daudé# 373df7a1f48SPhilippe Mathieu-Daudé# Returns: If successful, nothing 374df7a1f48SPhilippe Mathieu-Daudé# 3759bc6e893SMarkus Armbruster# Since: 0.14 376df7a1f48SPhilippe Mathieu-Daudé# 377df7a1f48SPhilippe Mathieu-Daudé# Note: prior to 2.1, this command was only supported for x86 and s390 VMs 378df7a1f48SPhilippe Mathieu-Daudé# 379df7a1f48SPhilippe Mathieu-Daudé# Example: 380df7a1f48SPhilippe Mathieu-Daudé# 381df7a1f48SPhilippe Mathieu-Daudé# -> { "execute": "inject-nmi" } 382df7a1f48SPhilippe Mathieu-Daudé# <- { "return": {} } 383df7a1f48SPhilippe Mathieu-Daudé# 384df7a1f48SPhilippe Mathieu-Daudé## 385df7a1f48SPhilippe Mathieu-Daudé{ 'command': 'inject-nmi' } 386df7a1f48SPhilippe Mathieu-Daudé 387df7a1f48SPhilippe Mathieu-Daudé## 38881dddc1bSPhilippe Mathieu-Daudé# @KvmInfo: 38981dddc1bSPhilippe Mathieu-Daudé# 39081dddc1bSPhilippe Mathieu-Daudé# Information about support for KVM acceleration 39181dddc1bSPhilippe Mathieu-Daudé# 39281dddc1bSPhilippe Mathieu-Daudé# @enabled: true if KVM acceleration is active 39381dddc1bSPhilippe Mathieu-Daudé# 39481dddc1bSPhilippe Mathieu-Daudé# @present: true if KVM acceleration is built into this executable 39581dddc1bSPhilippe Mathieu-Daudé# 3969bc6e893SMarkus Armbruster# Since: 0.14 39781dddc1bSPhilippe Mathieu-Daudé## 39881dddc1bSPhilippe Mathieu-Daudé{ 'struct': 'KvmInfo', 'data': {'enabled': 'bool', 'present': 'bool'} } 39981dddc1bSPhilippe Mathieu-Daudé 40081dddc1bSPhilippe Mathieu-Daudé## 40181dddc1bSPhilippe Mathieu-Daudé# @query-kvm: 40281dddc1bSPhilippe Mathieu-Daudé# 40381dddc1bSPhilippe Mathieu-Daudé# Returns information about KVM acceleration 40481dddc1bSPhilippe Mathieu-Daudé# 40581dddc1bSPhilippe Mathieu-Daudé# Returns: @KvmInfo 40681dddc1bSPhilippe Mathieu-Daudé# 4079bc6e893SMarkus Armbruster# Since: 0.14 40881dddc1bSPhilippe Mathieu-Daudé# 40981dddc1bSPhilippe Mathieu-Daudé# Example: 41081dddc1bSPhilippe Mathieu-Daudé# 41181dddc1bSPhilippe Mathieu-Daudé# -> { "execute": "query-kvm" } 41281dddc1bSPhilippe Mathieu-Daudé# <- { "return": { "enabled": true, "present": true } } 41381dddc1bSPhilippe Mathieu-Daudé# 41481dddc1bSPhilippe Mathieu-Daudé## 41581dddc1bSPhilippe Mathieu-Daudé{ 'command': 'query-kvm', 'returns': 'KvmInfo' } 41681dddc1bSPhilippe Mathieu-Daudé 41781dddc1bSPhilippe Mathieu-Daudé## 4188ac25c84SMarkus Armbruster# @NumaOptionsType: 4198ac25c84SMarkus Armbruster# 4208ac25c84SMarkus Armbruster# @node: NUMA nodes configuration 4218ac25c84SMarkus Armbruster# 4228ac25c84SMarkus Armbruster# @dist: NUMA distance configuration (since 2.10) 4238ac25c84SMarkus Armbruster# 4248ac25c84SMarkus Armbruster# @cpu: property based CPU(s) to node mapping (Since: 2.10) 4258ac25c84SMarkus Armbruster# 4269b12dfa0SLiu Jingqi# @hmat-lb: memory latency and bandwidth information (Since: 5.0) 4279b12dfa0SLiu Jingqi# 428c412a48dSLiu Jingqi# @hmat-cache: memory side cache information (Since: 5.0) 429c412a48dSLiu Jingqi# 4308ac25c84SMarkus Armbruster# Since: 2.1 4318ac25c84SMarkus Armbruster## 4328ac25c84SMarkus Armbruster{ 'enum': 'NumaOptionsType', 433c412a48dSLiu Jingqi 'data': [ 'node', 'dist', 'cpu', 'hmat-lb', 'hmat-cache' ] } 4348ac25c84SMarkus Armbruster 4358ac25c84SMarkus Armbruster## 4368ac25c84SMarkus Armbruster# @NumaOptions: 4378ac25c84SMarkus Armbruster# 4388ac25c84SMarkus Armbruster# A discriminated record of NUMA options. (for OptsVisitor) 4398ac25c84SMarkus Armbruster# 4408ac25c84SMarkus Armbruster# Since: 2.1 4418ac25c84SMarkus Armbruster## 4428ac25c84SMarkus Armbruster{ 'union': 'NumaOptions', 4438ac25c84SMarkus Armbruster 'base': { 'type': 'NumaOptionsType' }, 4448ac25c84SMarkus Armbruster 'discriminator': 'type', 4458ac25c84SMarkus Armbruster 'data': { 4468ac25c84SMarkus Armbruster 'node': 'NumaNodeOptions', 4478ac25c84SMarkus Armbruster 'dist': 'NumaDistOptions', 4489b12dfa0SLiu Jingqi 'cpu': 'NumaCpuOptions', 449c412a48dSLiu Jingqi 'hmat-lb': 'NumaHmatLBOptions', 450c412a48dSLiu Jingqi 'hmat-cache': 'NumaHmatCacheOptions' }} 4518ac25c84SMarkus Armbruster 4528ac25c84SMarkus Armbruster## 4538ac25c84SMarkus Armbruster# @NumaNodeOptions: 4548ac25c84SMarkus Armbruster# 4558ac25c84SMarkus Armbruster# Create a guest NUMA node. (for OptsVisitor) 4568ac25c84SMarkus Armbruster# 4578ac25c84SMarkus Armbruster# @nodeid: NUMA node ID (increase by 1 from 0 if omitted) 4588ac25c84SMarkus Armbruster# 4598ac25c84SMarkus Armbruster# @cpus: VCPUs belonging to this node (assign VCPUS round-robin 4608ac25c84SMarkus Armbruster# if omitted) 4618ac25c84SMarkus Armbruster# 4628ac25c84SMarkus Armbruster# @mem: memory size of this node; mutually exclusive with @memdev. 4638ac25c84SMarkus Armbruster# Equally divide total memory among nodes if both @mem and @memdev are 4648ac25c84SMarkus Armbruster# omitted. 4658ac25c84SMarkus Armbruster# 4668ac25c84SMarkus Armbruster# @memdev: memory backend object. If specified for one node, 4678ac25c84SMarkus Armbruster# it must be specified for all nodes. 4688ac25c84SMarkus Armbruster# 469244b3f44STao Xu# @initiator: defined in ACPI 6.3 Chapter 5.2.27.3 Table 5-145, 470244b3f44STao Xu# points to the nodeid which has the memory controller 471244b3f44STao Xu# responsible for this NUMA node. This field provides 472244b3f44STao Xu# additional information as to the initiator node that 473244b3f44STao Xu# is closest (as in directly attached) to this node, and 474244b3f44STao Xu# therefore has the best performance (since 5.0) 475244b3f44STao Xu# 4768ac25c84SMarkus Armbruster# Since: 2.1 4778ac25c84SMarkus Armbruster## 4788ac25c84SMarkus Armbruster{ 'struct': 'NumaNodeOptions', 4798ac25c84SMarkus Armbruster 'data': { 4808ac25c84SMarkus Armbruster '*nodeid': 'uint16', 4818ac25c84SMarkus Armbruster '*cpus': ['uint16'], 4828ac25c84SMarkus Armbruster '*mem': 'size', 483244b3f44STao Xu '*memdev': 'str', 484244b3f44STao Xu '*initiator': 'uint16' }} 4858ac25c84SMarkus Armbruster 4868ac25c84SMarkus Armbruster## 4878ac25c84SMarkus Armbruster# @NumaDistOptions: 4888ac25c84SMarkus Armbruster# 4898ac25c84SMarkus Armbruster# Set the distance between 2 NUMA nodes. 4908ac25c84SMarkus Armbruster# 4918ac25c84SMarkus Armbruster# @src: source NUMA node. 4928ac25c84SMarkus Armbruster# 4938ac25c84SMarkus Armbruster# @dst: destination NUMA node. 4948ac25c84SMarkus Armbruster# 4958ac25c84SMarkus Armbruster# @val: NUMA distance from source node to destination node. 4968ac25c84SMarkus Armbruster# When a node is unreachable from another node, set the distance 4978ac25c84SMarkus Armbruster# between them to 255. 4988ac25c84SMarkus Armbruster# 4998ac25c84SMarkus Armbruster# Since: 2.10 5008ac25c84SMarkus Armbruster## 5018ac25c84SMarkus Armbruster{ 'struct': 'NumaDistOptions', 5028ac25c84SMarkus Armbruster 'data': { 5038ac25c84SMarkus Armbruster 'src': 'uint16', 5048ac25c84SMarkus Armbruster 'dst': 'uint16', 5058ac25c84SMarkus Armbruster 'val': 'uint8' }} 5068ac25c84SMarkus Armbruster 5078ac25c84SMarkus Armbruster## 5088ac25c84SMarkus Armbruster# @X86CPURegister32: 5098ac25c84SMarkus Armbruster# 5108ac25c84SMarkus Armbruster# A X86 32-bit register 5118ac25c84SMarkus Armbruster# 5128ac25c84SMarkus Armbruster# Since: 1.5 5138ac25c84SMarkus Armbruster## 5148ac25c84SMarkus Armbruster{ 'enum': 'X86CPURegister32', 5158ac25c84SMarkus Armbruster 'data': [ 'EAX', 'EBX', 'ECX', 'EDX', 'ESP', 'EBP', 'ESI', 'EDI' ] } 5168ac25c84SMarkus Armbruster 5178ac25c84SMarkus Armbruster## 5188ac25c84SMarkus Armbruster# @X86CPUFeatureWordInfo: 5198ac25c84SMarkus Armbruster# 5208ac25c84SMarkus Armbruster# Information about a X86 CPU feature word 5218ac25c84SMarkus Armbruster# 5228ac25c84SMarkus Armbruster# @cpuid-input-eax: Input EAX value for CPUID instruction for that feature word 5238ac25c84SMarkus Armbruster# 5248ac25c84SMarkus Armbruster# @cpuid-input-ecx: Input ECX value for CPUID instruction for that 5258ac25c84SMarkus Armbruster# feature word 5268ac25c84SMarkus Armbruster# 5278ac25c84SMarkus Armbruster# @cpuid-register: Output register containing the feature bits 5288ac25c84SMarkus Armbruster# 5298ac25c84SMarkus Armbruster# @features: value of output register, containing the feature bits 5308ac25c84SMarkus Armbruster# 5318ac25c84SMarkus Armbruster# Since: 1.5 5328ac25c84SMarkus Armbruster## 5338ac25c84SMarkus Armbruster{ 'struct': 'X86CPUFeatureWordInfo', 5348ac25c84SMarkus Armbruster 'data': { 'cpuid-input-eax': 'int', 5358ac25c84SMarkus Armbruster '*cpuid-input-ecx': 'int', 5368ac25c84SMarkus Armbruster 'cpuid-register': 'X86CPURegister32', 5378ac25c84SMarkus Armbruster 'features': 'int' } } 5388ac25c84SMarkus Armbruster 5398ac25c84SMarkus Armbruster## 5408ac25c84SMarkus Armbruster# @DummyForceArrays: 5418ac25c84SMarkus Armbruster# 5428ac25c84SMarkus Armbruster# Not used by QMP; hack to let us use X86CPUFeatureWordInfoList internally 5438ac25c84SMarkus Armbruster# 5448ac25c84SMarkus Armbruster# Since: 2.5 5458ac25c84SMarkus Armbruster## 5468ac25c84SMarkus Armbruster{ 'struct': 'DummyForceArrays', 5478ac25c84SMarkus Armbruster 'data': { 'unused': ['X86CPUFeatureWordInfo'] } } 5488ac25c84SMarkus Armbruster 5498ac25c84SMarkus Armbruster## 5508ac25c84SMarkus Armbruster# @NumaCpuOptions: 5518ac25c84SMarkus Armbruster# 5528ac25c84SMarkus Armbruster# Option "-numa cpu" overrides default cpu to node mapping. 5538ac25c84SMarkus Armbruster# It accepts the same set of cpu properties as returned by 5548ac25c84SMarkus Armbruster# query-hotpluggable-cpus[].props, where node-id could be used to 5558ac25c84SMarkus Armbruster# override default node mapping. 5568ac25c84SMarkus Armbruster# 5578ac25c84SMarkus Armbruster# Since: 2.10 5588ac25c84SMarkus Armbruster## 5598ac25c84SMarkus Armbruster{ 'struct': 'NumaCpuOptions', 5608ac25c84SMarkus Armbruster 'base': 'CpuInstanceProperties', 5618ac25c84SMarkus Armbruster 'data' : {} } 5628ac25c84SMarkus Armbruster 5638ac25c84SMarkus Armbruster## 5649b12dfa0SLiu Jingqi# @HmatLBMemoryHierarchy: 5659b12dfa0SLiu Jingqi# 5669b12dfa0SLiu Jingqi# The memory hierarchy in the System Locality Latency and Bandwidth 5679b12dfa0SLiu Jingqi# Information Structure of HMAT (Heterogeneous Memory Attribute Table) 5689b12dfa0SLiu Jingqi# 5699b12dfa0SLiu Jingqi# For more information about @HmatLBMemoryHierarchy, see chapter 5709b12dfa0SLiu Jingqi# 5.2.27.4: Table 5-146: Field "Flags" of ACPI 6.3 spec. 5719b12dfa0SLiu Jingqi# 5729b12dfa0SLiu Jingqi# @memory: the structure represents the memory performance 5739b12dfa0SLiu Jingqi# 5749b12dfa0SLiu Jingqi# @first-level: first level of memory side cache 5759b12dfa0SLiu Jingqi# 5769b12dfa0SLiu Jingqi# @second-level: second level of memory side cache 5779b12dfa0SLiu Jingqi# 5789b12dfa0SLiu Jingqi# @third-level: third level of memory side cache 5799b12dfa0SLiu Jingqi# 5809b12dfa0SLiu Jingqi# Since: 5.0 5819b12dfa0SLiu Jingqi## 5829b12dfa0SLiu Jingqi{ 'enum': 'HmatLBMemoryHierarchy', 5839b12dfa0SLiu Jingqi 'data': [ 'memory', 'first-level', 'second-level', 'third-level' ] } 5849b12dfa0SLiu Jingqi 5859b12dfa0SLiu Jingqi## 5869b12dfa0SLiu Jingqi# @HmatLBDataType: 5879b12dfa0SLiu Jingqi# 5889b12dfa0SLiu Jingqi# Data type in the System Locality Latency and Bandwidth 5899b12dfa0SLiu Jingqi# Information Structure of HMAT (Heterogeneous Memory Attribute Table) 5909b12dfa0SLiu Jingqi# 5919b12dfa0SLiu Jingqi# For more information about @HmatLBDataType, see chapter 5929b12dfa0SLiu Jingqi# 5.2.27.4: Table 5-146: Field "Data Type" of ACPI 6.3 spec. 5939b12dfa0SLiu Jingqi# 5949b12dfa0SLiu Jingqi# @access-latency: access latency (nanoseconds) 5959b12dfa0SLiu Jingqi# 5969b12dfa0SLiu Jingqi# @read-latency: read latency (nanoseconds) 5979b12dfa0SLiu Jingqi# 5989b12dfa0SLiu Jingqi# @write-latency: write latency (nanoseconds) 5999b12dfa0SLiu Jingqi# 6009b12dfa0SLiu Jingqi# @access-bandwidth: access bandwidth (Bytes per second) 6019b12dfa0SLiu Jingqi# 6029b12dfa0SLiu Jingqi# @read-bandwidth: read bandwidth (Bytes per second) 6039b12dfa0SLiu Jingqi# 6049b12dfa0SLiu Jingqi# @write-bandwidth: write bandwidth (Bytes per second) 6059b12dfa0SLiu Jingqi# 6069b12dfa0SLiu Jingqi# Since: 5.0 6079b12dfa0SLiu Jingqi## 6089b12dfa0SLiu Jingqi{ 'enum': 'HmatLBDataType', 6099b12dfa0SLiu Jingqi 'data': [ 'access-latency', 'read-latency', 'write-latency', 6109b12dfa0SLiu Jingqi 'access-bandwidth', 'read-bandwidth', 'write-bandwidth' ] } 6119b12dfa0SLiu Jingqi 6129b12dfa0SLiu Jingqi## 6139b12dfa0SLiu Jingqi# @NumaHmatLBOptions: 6149b12dfa0SLiu Jingqi# 6159b12dfa0SLiu Jingqi# Set the system locality latency and bandwidth information 6169b12dfa0SLiu Jingqi# between Initiator and Target proximity Domains. 6179b12dfa0SLiu Jingqi# 6189b12dfa0SLiu Jingqi# For more information about @NumaHmatLBOptions, see chapter 6199b12dfa0SLiu Jingqi# 5.2.27.4: Table 5-146 of ACPI 6.3 spec. 6209b12dfa0SLiu Jingqi# 6219b12dfa0SLiu Jingqi# @initiator: the Initiator Proximity Domain. 6229b12dfa0SLiu Jingqi# 6239b12dfa0SLiu Jingqi# @target: the Target Proximity Domain. 6249b12dfa0SLiu Jingqi# 6259b12dfa0SLiu Jingqi# @hierarchy: the Memory Hierarchy. Indicates the performance 6269b12dfa0SLiu Jingqi# of memory or side cache. 6279b12dfa0SLiu Jingqi# 6289b12dfa0SLiu Jingqi# @data-type: presents the type of data, access/read/write 6299b12dfa0SLiu Jingqi# latency or hit latency. 6309b12dfa0SLiu Jingqi# 6319b12dfa0SLiu Jingqi# @latency: the value of latency from @initiator to @target 6329b12dfa0SLiu Jingqi# proximity domain, the latency unit is "ns(nanosecond)". 6339b12dfa0SLiu Jingqi# 6349b12dfa0SLiu Jingqi# @bandwidth: the value of bandwidth between @initiator and @target 6359b12dfa0SLiu Jingqi# proximity domain, the bandwidth unit is 6369b12dfa0SLiu Jingqi# "Bytes per second". 6379b12dfa0SLiu Jingqi# 6389b12dfa0SLiu Jingqi# Since: 5.0 6399b12dfa0SLiu Jingqi## 6409b12dfa0SLiu Jingqi{ 'struct': 'NumaHmatLBOptions', 6419b12dfa0SLiu Jingqi 'data': { 6429b12dfa0SLiu Jingqi 'initiator': 'uint16', 6439b12dfa0SLiu Jingqi 'target': 'uint16', 6449b12dfa0SLiu Jingqi 'hierarchy': 'HmatLBMemoryHierarchy', 6459b12dfa0SLiu Jingqi 'data-type': 'HmatLBDataType', 6469b12dfa0SLiu Jingqi '*latency': 'uint64', 6479b12dfa0SLiu Jingqi '*bandwidth': 'size' }} 6489b12dfa0SLiu Jingqi 6499b12dfa0SLiu Jingqi## 650c412a48dSLiu Jingqi# @HmatCacheAssociativity: 651c412a48dSLiu Jingqi# 652c412a48dSLiu Jingqi# Cache associativity in the Memory Side Cache Information Structure 653c412a48dSLiu Jingqi# of HMAT 654c412a48dSLiu Jingqi# 655c412a48dSLiu Jingqi# For more information of @HmatCacheAssociativity, see chapter 656c412a48dSLiu Jingqi# 5.2.27.5: Table 5-147 of ACPI 6.3 spec. 657c412a48dSLiu Jingqi# 658c412a48dSLiu Jingqi# @none: None (no memory side cache in this proximity domain, 659c412a48dSLiu Jingqi# or cache associativity unknown) 660c412a48dSLiu Jingqi# 661c412a48dSLiu Jingqi# @direct: Direct Mapped 662c412a48dSLiu Jingqi# 663c412a48dSLiu Jingqi# @complex: Complex Cache Indexing (implementation specific) 664c412a48dSLiu Jingqi# 665c412a48dSLiu Jingqi# Since: 5.0 666c412a48dSLiu Jingqi## 667c412a48dSLiu Jingqi{ 'enum': 'HmatCacheAssociativity', 668c412a48dSLiu Jingqi 'data': [ 'none', 'direct', 'complex' ] } 669c412a48dSLiu Jingqi 670c412a48dSLiu Jingqi## 671c412a48dSLiu Jingqi# @HmatCacheWritePolicy: 672c412a48dSLiu Jingqi# 673c412a48dSLiu Jingqi# Cache write policy in the Memory Side Cache Information Structure 674c412a48dSLiu Jingqi# of HMAT 675c412a48dSLiu Jingqi# 676c412a48dSLiu Jingqi# For more information of @HmatCacheWritePolicy, see chapter 677c412a48dSLiu Jingqi# 5.2.27.5: Table 5-147: Field "Cache Attributes" of ACPI 6.3 spec. 678c412a48dSLiu Jingqi# 679c412a48dSLiu Jingqi# @none: None (no memory side cache in this proximity domain, 680c412a48dSLiu Jingqi# or cache write policy unknown) 681c412a48dSLiu Jingqi# 682c412a48dSLiu Jingqi# @write-back: Write Back (WB) 683c412a48dSLiu Jingqi# 684c412a48dSLiu Jingqi# @write-through: Write Through (WT) 685c412a48dSLiu Jingqi# 686c412a48dSLiu Jingqi# Since: 5.0 687c412a48dSLiu Jingqi## 688c412a48dSLiu Jingqi{ 'enum': 'HmatCacheWritePolicy', 689c412a48dSLiu Jingqi 'data': [ 'none', 'write-back', 'write-through' ] } 690c412a48dSLiu Jingqi 691c412a48dSLiu Jingqi## 692c412a48dSLiu Jingqi# @NumaHmatCacheOptions: 693c412a48dSLiu Jingqi# 694c412a48dSLiu Jingqi# Set the memory side cache information for a given memory domain. 695c412a48dSLiu Jingqi# 696c412a48dSLiu Jingqi# For more information of @NumaHmatCacheOptions, see chapter 697c412a48dSLiu Jingqi# 5.2.27.5: Table 5-147: Field "Cache Attributes" of ACPI 6.3 spec. 698c412a48dSLiu Jingqi# 699c412a48dSLiu Jingqi# @node-id: the memory proximity domain to which the memory belongs. 700c412a48dSLiu Jingqi# 701c412a48dSLiu Jingqi# @size: the size of memory side cache in bytes. 702c412a48dSLiu Jingqi# 703c412a48dSLiu Jingqi# @level: the cache level described in this structure. 704c412a48dSLiu Jingqi# 705c412a48dSLiu Jingqi# @associativity: the cache associativity, 706c412a48dSLiu Jingqi# none/direct-mapped/complex(complex cache indexing). 707c412a48dSLiu Jingqi# 708c412a48dSLiu Jingqi# @policy: the write policy, none/write-back/write-through. 709c412a48dSLiu Jingqi# 710c412a48dSLiu Jingqi# @line: the cache Line size in bytes. 711c412a48dSLiu Jingqi# 712c412a48dSLiu Jingqi# Since: 5.0 713c412a48dSLiu Jingqi## 714c412a48dSLiu Jingqi{ 'struct': 'NumaHmatCacheOptions', 715c412a48dSLiu Jingqi 'data': { 716c412a48dSLiu Jingqi 'node-id': 'uint32', 717c412a48dSLiu Jingqi 'size': 'size', 718c412a48dSLiu Jingqi 'level': 'uint8', 719c412a48dSLiu Jingqi 'associativity': 'HmatCacheAssociativity', 720c412a48dSLiu Jingqi 'policy': 'HmatCacheWritePolicy', 721c412a48dSLiu Jingqi 'line': 'uint16' }} 722c412a48dSLiu Jingqi 723c412a48dSLiu Jingqi## 724d4130cbfSPhilippe Mathieu-Daudé# @memsave: 725d4130cbfSPhilippe Mathieu-Daudé# 726d4130cbfSPhilippe Mathieu-Daudé# Save a portion of guest memory to a file. 727d4130cbfSPhilippe Mathieu-Daudé# 728d4130cbfSPhilippe Mathieu-Daudé# @val: the virtual address of the guest to start from 729d4130cbfSPhilippe Mathieu-Daudé# 730d4130cbfSPhilippe Mathieu-Daudé# @size: the size of memory region to save 731d4130cbfSPhilippe Mathieu-Daudé# 732d4130cbfSPhilippe Mathieu-Daudé# @filename: the file to save the memory to as binary data 733d4130cbfSPhilippe Mathieu-Daudé# 734d4130cbfSPhilippe Mathieu-Daudé# @cpu-index: the index of the virtual CPU to use for translating the 735d4130cbfSPhilippe Mathieu-Daudé# virtual address (defaults to CPU 0) 736d4130cbfSPhilippe Mathieu-Daudé# 737d4130cbfSPhilippe Mathieu-Daudé# Returns: Nothing on success 738d4130cbfSPhilippe Mathieu-Daudé# 7399bc6e893SMarkus Armbruster# Since: 0.14 740d4130cbfSPhilippe Mathieu-Daudé# 741d4130cbfSPhilippe Mathieu-Daudé# Notes: Errors were not reliably returned until 1.1 742d4130cbfSPhilippe Mathieu-Daudé# 743d4130cbfSPhilippe Mathieu-Daudé# Example: 744d4130cbfSPhilippe Mathieu-Daudé# 745d4130cbfSPhilippe Mathieu-Daudé# -> { "execute": "memsave", 746d4130cbfSPhilippe Mathieu-Daudé# "arguments": { "val": 10, 747d4130cbfSPhilippe Mathieu-Daudé# "size": 100, 748d4130cbfSPhilippe Mathieu-Daudé# "filename": "/tmp/virtual-mem-dump" } } 749d4130cbfSPhilippe Mathieu-Daudé# <- { "return": {} } 750d4130cbfSPhilippe Mathieu-Daudé# 751d4130cbfSPhilippe Mathieu-Daudé## 752d4130cbfSPhilippe Mathieu-Daudé{ 'command': 'memsave', 753d4130cbfSPhilippe Mathieu-Daudé 'data': {'val': 'int', 'size': 'int', 'filename': 'str', '*cpu-index': 'int'} } 754d4130cbfSPhilippe Mathieu-Daudé 755d4130cbfSPhilippe Mathieu-Daudé## 756d4130cbfSPhilippe Mathieu-Daudé# @pmemsave: 757d4130cbfSPhilippe Mathieu-Daudé# 758d4130cbfSPhilippe Mathieu-Daudé# Save a portion of guest physical memory to a file. 759d4130cbfSPhilippe Mathieu-Daudé# 760d4130cbfSPhilippe Mathieu-Daudé# @val: the physical address of the guest to start from 761d4130cbfSPhilippe Mathieu-Daudé# 762d4130cbfSPhilippe Mathieu-Daudé# @size: the size of memory region to save 763d4130cbfSPhilippe Mathieu-Daudé# 764d4130cbfSPhilippe Mathieu-Daudé# @filename: the file to save the memory to as binary data 765d4130cbfSPhilippe Mathieu-Daudé# 766d4130cbfSPhilippe Mathieu-Daudé# Returns: Nothing on success 767d4130cbfSPhilippe Mathieu-Daudé# 7689bc6e893SMarkus Armbruster# Since: 0.14 769d4130cbfSPhilippe Mathieu-Daudé# 770d4130cbfSPhilippe Mathieu-Daudé# Notes: Errors were not reliably returned until 1.1 771d4130cbfSPhilippe Mathieu-Daudé# 772d4130cbfSPhilippe Mathieu-Daudé# Example: 773d4130cbfSPhilippe Mathieu-Daudé# 774d4130cbfSPhilippe Mathieu-Daudé# -> { "execute": "pmemsave", 775d4130cbfSPhilippe Mathieu-Daudé# "arguments": { "val": 10, 776d4130cbfSPhilippe Mathieu-Daudé# "size": 100, 777d4130cbfSPhilippe Mathieu-Daudé# "filename": "/tmp/physical-mem-dump" } } 778d4130cbfSPhilippe Mathieu-Daudé# <- { "return": {} } 779d4130cbfSPhilippe Mathieu-Daudé# 780d4130cbfSPhilippe Mathieu-Daudé## 781d4130cbfSPhilippe Mathieu-Daudé{ 'command': 'pmemsave', 782d4130cbfSPhilippe Mathieu-Daudé 'data': {'val': 'int', 'size': 'int', 'filename': 'str'} } 783d4130cbfSPhilippe Mathieu-Daudé 784d4130cbfSPhilippe Mathieu-Daudé## 7858ac25c84SMarkus Armbruster# @Memdev: 7868ac25c84SMarkus Armbruster# 7878ac25c84SMarkus Armbruster# Information about memory backend 7888ac25c84SMarkus Armbruster# 7898ac25c84SMarkus Armbruster# @id: backend's ID if backend has 'id' property (since 2.9) 7908ac25c84SMarkus Armbruster# 7918ac25c84SMarkus Armbruster# @size: memory backend size 7928ac25c84SMarkus Armbruster# 7938ac25c84SMarkus Armbruster# @merge: enables or disables memory merge support 7948ac25c84SMarkus Armbruster# 7958ac25c84SMarkus Armbruster# @dump: includes memory backend's memory in a core dump or not 7968ac25c84SMarkus Armbruster# 7978ac25c84SMarkus Armbruster# @prealloc: enables or disables memory preallocation 7988ac25c84SMarkus Armbruster# 7998ac25c84SMarkus Armbruster# @host-nodes: host nodes for its memory policy 8008ac25c84SMarkus Armbruster# 8018ac25c84SMarkus Armbruster# @policy: memory policy of memory backend 8028ac25c84SMarkus Armbruster# 8038ac25c84SMarkus Armbruster# Since: 2.1 8048ac25c84SMarkus Armbruster## 8058ac25c84SMarkus Armbruster{ 'struct': 'Memdev', 8068ac25c84SMarkus Armbruster 'data': { 8078ac25c84SMarkus Armbruster '*id': 'str', 8088ac25c84SMarkus Armbruster 'size': 'size', 8098ac25c84SMarkus Armbruster 'merge': 'bool', 8108ac25c84SMarkus Armbruster 'dump': 'bool', 8118ac25c84SMarkus Armbruster 'prealloc': 'bool', 8128ac25c84SMarkus Armbruster 'host-nodes': ['uint16'], 8138ac25c84SMarkus Armbruster 'policy': 'HostMemPolicy' }} 8148ac25c84SMarkus Armbruster 8158ac25c84SMarkus Armbruster## 8168ac25c84SMarkus Armbruster# @query-memdev: 8178ac25c84SMarkus Armbruster# 8188ac25c84SMarkus Armbruster# Returns information for all memory backends. 8198ac25c84SMarkus Armbruster# 8208ac25c84SMarkus Armbruster# Returns: a list of @Memdev. 8218ac25c84SMarkus Armbruster# 8228ac25c84SMarkus Armbruster# Since: 2.1 8238ac25c84SMarkus Armbruster# 8248ac25c84SMarkus Armbruster# Example: 8258ac25c84SMarkus Armbruster# 8268ac25c84SMarkus Armbruster# -> { "execute": "query-memdev" } 8278ac25c84SMarkus Armbruster# <- { "return": [ 8288ac25c84SMarkus Armbruster# { 8298ac25c84SMarkus Armbruster# "id": "mem1", 8308ac25c84SMarkus Armbruster# "size": 536870912, 8318ac25c84SMarkus Armbruster# "merge": false, 8328ac25c84SMarkus Armbruster# "dump": true, 8338ac25c84SMarkus Armbruster# "prealloc": false, 8348ac25c84SMarkus Armbruster# "host-nodes": [0, 1], 8358ac25c84SMarkus Armbruster# "policy": "bind" 8368ac25c84SMarkus Armbruster# }, 8378ac25c84SMarkus Armbruster# { 8388ac25c84SMarkus Armbruster# "size": 536870912, 8398ac25c84SMarkus Armbruster# "merge": false, 8408ac25c84SMarkus Armbruster# "dump": true, 8418ac25c84SMarkus Armbruster# "prealloc": true, 8428ac25c84SMarkus Armbruster# "host-nodes": [2, 3], 8438ac25c84SMarkus Armbruster# "policy": "preferred" 8448ac25c84SMarkus Armbruster# } 8458ac25c84SMarkus Armbruster# ] 8468ac25c84SMarkus Armbruster# } 8478ac25c84SMarkus Armbruster# 8488ac25c84SMarkus Armbruster## 8498ac25c84SMarkus Armbruster{ 'command': 'query-memdev', 'returns': ['Memdev'], 'allow-preconfig': true } 8508ac25c84SMarkus Armbruster 8518ac25c84SMarkus Armbruster## 8528ac25c84SMarkus Armbruster# @CpuInstanceProperties: 8538ac25c84SMarkus Armbruster# 8548ac25c84SMarkus Armbruster# List of properties to be used for hotplugging a CPU instance, 8558ac25c84SMarkus Armbruster# it should be passed by management with device_add command when 8568ac25c84SMarkus Armbruster# a CPU is being hotplugged. 8578ac25c84SMarkus Armbruster# 8588ac25c84SMarkus Armbruster# @node-id: NUMA node ID the CPU belongs to 8598ac25c84SMarkus Armbruster# @socket-id: socket number within node/board the CPU belongs to 860176d2cdaSLike Xu# @die-id: die number within node/board the CPU belongs to (Since 4.1) 8616ac3f1e7SPeter Maydell# @core-id: core number within die the CPU belongs to 8626ac3f1e7SPeter Maydell# @thread-id: thread number within core the CPU belongs to 8638ac25c84SMarkus Armbruster# 864176d2cdaSLike Xu# Note: currently there are 5 properties that could be present 8658ac25c84SMarkus Armbruster# but management should be prepared to pass through other 8668ac25c84SMarkus Armbruster# properties with device_add command to allow for future 8678ac25c84SMarkus Armbruster# interface extension. This also requires the filed names to be kept in 8688ac25c84SMarkus Armbruster# sync with the properties passed to -device/device_add. 8698ac25c84SMarkus Armbruster# 8708ac25c84SMarkus Armbruster# Since: 2.7 8718ac25c84SMarkus Armbruster## 8728ac25c84SMarkus Armbruster{ 'struct': 'CpuInstanceProperties', 8738ac25c84SMarkus Armbruster 'data': { '*node-id': 'int', 8748ac25c84SMarkus Armbruster '*socket-id': 'int', 875176d2cdaSLike Xu '*die-id': 'int', 8768ac25c84SMarkus Armbruster '*core-id': 'int', 8778ac25c84SMarkus Armbruster '*thread-id': 'int' 8788ac25c84SMarkus Armbruster } 8798ac25c84SMarkus Armbruster} 8808ac25c84SMarkus Armbruster 8818ac25c84SMarkus Armbruster## 8828ac25c84SMarkus Armbruster# @HotpluggableCPU: 8838ac25c84SMarkus Armbruster# 8848ac25c84SMarkus Armbruster# @type: CPU object type for usage with device_add command 8858ac25c84SMarkus Armbruster# @props: list of properties to be used for hotplugging CPU 8868ac25c84SMarkus Armbruster# @vcpus-count: number of logical VCPU threads @HotpluggableCPU provides 8878ac25c84SMarkus Armbruster# @qom-path: link to existing CPU object if CPU is present or 8888ac25c84SMarkus Armbruster# omitted if CPU is not present. 8898ac25c84SMarkus Armbruster# 8908ac25c84SMarkus Armbruster# Since: 2.7 8918ac25c84SMarkus Armbruster## 8928ac25c84SMarkus Armbruster{ 'struct': 'HotpluggableCPU', 8938ac25c84SMarkus Armbruster 'data': { 'type': 'str', 8948ac25c84SMarkus Armbruster 'vcpus-count': 'int', 8958ac25c84SMarkus Armbruster 'props': 'CpuInstanceProperties', 8968ac25c84SMarkus Armbruster '*qom-path': 'str' 8978ac25c84SMarkus Armbruster } 8988ac25c84SMarkus Armbruster} 8998ac25c84SMarkus Armbruster 9008ac25c84SMarkus Armbruster## 9018ac25c84SMarkus Armbruster# @query-hotpluggable-cpus: 9028ac25c84SMarkus Armbruster# 9038ac25c84SMarkus Armbruster# TODO: Better documentation; currently there is none. 9048ac25c84SMarkus Armbruster# 9058ac25c84SMarkus Armbruster# Returns: a list of HotpluggableCPU objects. 9068ac25c84SMarkus Armbruster# 9078ac25c84SMarkus Armbruster# Since: 2.7 9088ac25c84SMarkus Armbruster# 9098ac25c84SMarkus Armbruster# Example: 9108ac25c84SMarkus Armbruster# 9118ac25c84SMarkus Armbruster# For pseries machine type started with -smp 2,cores=2,maxcpus=4 -cpu POWER8: 9128ac25c84SMarkus Armbruster# 9138ac25c84SMarkus Armbruster# -> { "execute": "query-hotpluggable-cpus" } 9148ac25c84SMarkus Armbruster# <- {"return": [ 9158ac25c84SMarkus Armbruster# { "props": { "core": 8 }, "type": "POWER8-spapr-cpu-core", 9168ac25c84SMarkus Armbruster# "vcpus-count": 1 }, 9178ac25c84SMarkus Armbruster# { "props": { "core": 0 }, "type": "POWER8-spapr-cpu-core", 9188ac25c84SMarkus Armbruster# "vcpus-count": 1, "qom-path": "/machine/unattached/device[0]"} 9198ac25c84SMarkus Armbruster# ]}' 9208ac25c84SMarkus Armbruster# 9218ac25c84SMarkus Armbruster# For pc machine type started with -smp 1,maxcpus=2: 9228ac25c84SMarkus Armbruster# 9238ac25c84SMarkus Armbruster# -> { "execute": "query-hotpluggable-cpus" } 9248ac25c84SMarkus Armbruster# <- {"return": [ 9258ac25c84SMarkus Armbruster# { 9268ac25c84SMarkus Armbruster# "type": "qemu64-x86_64-cpu", "vcpus-count": 1, 9278ac25c84SMarkus Armbruster# "props": {"core-id": 0, "socket-id": 1, "thread-id": 0} 9288ac25c84SMarkus Armbruster# }, 9298ac25c84SMarkus Armbruster# { 9308ac25c84SMarkus Armbruster# "qom-path": "/machine/unattached/device[0]", 9318ac25c84SMarkus Armbruster# "type": "qemu64-x86_64-cpu", "vcpus-count": 1, 9328ac25c84SMarkus Armbruster# "props": {"core-id": 0, "socket-id": 0, "thread-id": 0} 9338ac25c84SMarkus Armbruster# } 9348ac25c84SMarkus Armbruster# ]} 9358ac25c84SMarkus Armbruster# 9368ac25c84SMarkus Armbruster# For s390x-virtio-ccw machine type started with -smp 1,maxcpus=2 -cpu qemu 9378ac25c84SMarkus Armbruster# (Since: 2.11): 9388ac25c84SMarkus Armbruster# 9398ac25c84SMarkus Armbruster# -> { "execute": "query-hotpluggable-cpus" } 9408ac25c84SMarkus Armbruster# <- {"return": [ 9418ac25c84SMarkus Armbruster# { 9428ac25c84SMarkus Armbruster# "type": "qemu-s390x-cpu", "vcpus-count": 1, 9438ac25c84SMarkus Armbruster# "props": { "core-id": 1 } 9448ac25c84SMarkus Armbruster# }, 9458ac25c84SMarkus Armbruster# { 9468ac25c84SMarkus Armbruster# "qom-path": "/machine/unattached/device[0]", 9478ac25c84SMarkus Armbruster# "type": "qemu-s390x-cpu", "vcpus-count": 1, 9488ac25c84SMarkus Armbruster# "props": { "core-id": 0 } 9498ac25c84SMarkus Armbruster# } 9508ac25c84SMarkus Armbruster# ]} 9518ac25c84SMarkus Armbruster# 9528ac25c84SMarkus Armbruster## 9538ac25c84SMarkus Armbruster{ 'command': 'query-hotpluggable-cpus', 'returns': ['HotpluggableCPU'], 9548ac25c84SMarkus Armbruster 'allow-preconfig': true } 9558ac25c84SMarkus Armbruster 9568ac25c84SMarkus Armbruster## 9578ac25c84SMarkus Armbruster# @set-numa-node: 9588ac25c84SMarkus Armbruster# 9598ac25c84SMarkus Armbruster# Runtime equivalent of '-numa' CLI option, available at 9608ac25c84SMarkus Armbruster# preconfigure stage to configure numa mapping before initializing 9618ac25c84SMarkus Armbruster# machine. 9628ac25c84SMarkus Armbruster# 9638ac25c84SMarkus Armbruster# Since 3.0 9648ac25c84SMarkus Armbruster## 9658ac25c84SMarkus Armbruster{ 'command': 'set-numa-node', 'boxed': true, 9668ac25c84SMarkus Armbruster 'data': 'NumaOptions', 9678ac25c84SMarkus Armbruster 'allow-preconfig': true 9688ac25c84SMarkus Armbruster} 969a83e24baSPhilippe Mathieu-Daudé 970a83e24baSPhilippe Mathieu-Daudé## 971a83e24baSPhilippe Mathieu-Daudé# @balloon: 972a83e24baSPhilippe Mathieu-Daudé# 973a83e24baSPhilippe Mathieu-Daudé# Request the balloon driver to change its balloon size. 974a83e24baSPhilippe Mathieu-Daudé# 975826bd069SPeter Maydell# @value: the target logical size of the VM in bytes. 976a83e24baSPhilippe Mathieu-Daudé# We can deduce the size of the balloon using this formula: 977826bd069SPeter Maydell# 978a83e24baSPhilippe Mathieu-Daudé# logical_vm_size = vm_ram_size - balloon_size 979826bd069SPeter Maydell# 980a83e24baSPhilippe Mathieu-Daudé# From it we have: balloon_size = vm_ram_size - @value 981a83e24baSPhilippe Mathieu-Daudé# 982a83e24baSPhilippe Mathieu-Daudé# Returns: - Nothing on success 983a83e24baSPhilippe Mathieu-Daudé# - If the balloon driver is enabled but not functional because the KVM 984a83e24baSPhilippe Mathieu-Daudé# kernel module cannot support it, KvmMissingCap 985a83e24baSPhilippe Mathieu-Daudé# - If no balloon device is present, DeviceNotActive 986a83e24baSPhilippe Mathieu-Daudé# 987a83e24baSPhilippe Mathieu-Daudé# Notes: This command just issues a request to the guest. When it returns, 988a83e24baSPhilippe Mathieu-Daudé# the balloon size may not have changed. A guest can change the balloon 989a83e24baSPhilippe Mathieu-Daudé# size independent of this command. 990a83e24baSPhilippe Mathieu-Daudé# 9919bc6e893SMarkus Armbruster# Since: 0.14 992a83e24baSPhilippe Mathieu-Daudé# 993a83e24baSPhilippe Mathieu-Daudé# Example: 994a83e24baSPhilippe Mathieu-Daudé# 995a83e24baSPhilippe Mathieu-Daudé# -> { "execute": "balloon", "arguments": { "value": 536870912 } } 996a83e24baSPhilippe Mathieu-Daudé# <- { "return": {} } 997a83e24baSPhilippe Mathieu-Daudé# 998a83e24baSPhilippe Mathieu-Daudé# With a 2.5GiB guest this command inflated the ballon to 3GiB. 999a83e24baSPhilippe Mathieu-Daudé# 1000a83e24baSPhilippe Mathieu-Daudé## 1001a83e24baSPhilippe Mathieu-Daudé{ 'command': 'balloon', 'data': {'value': 'int'} } 1002a83e24baSPhilippe Mathieu-Daudé 1003a83e24baSPhilippe Mathieu-Daudé## 1004a83e24baSPhilippe Mathieu-Daudé# @BalloonInfo: 1005a83e24baSPhilippe Mathieu-Daudé# 1006a83e24baSPhilippe Mathieu-Daudé# Information about the guest balloon device. 1007a83e24baSPhilippe Mathieu-Daudé# 1008a83e24baSPhilippe Mathieu-Daudé# @actual: the logical size of the VM in bytes 1009a83e24baSPhilippe Mathieu-Daudé# Formula used: logical_vm_size = vm_ram_size - balloon_size 1010a83e24baSPhilippe Mathieu-Daudé# 10119bc6e893SMarkus Armbruster# Since: 0.14 1012a83e24baSPhilippe Mathieu-Daudé# 1013a83e24baSPhilippe Mathieu-Daudé## 1014a83e24baSPhilippe Mathieu-Daudé{ 'struct': 'BalloonInfo', 'data': {'actual': 'int' } } 1015a83e24baSPhilippe Mathieu-Daudé 1016a83e24baSPhilippe Mathieu-Daudé## 1017a83e24baSPhilippe Mathieu-Daudé# @query-balloon: 1018a83e24baSPhilippe Mathieu-Daudé# 1019a83e24baSPhilippe Mathieu-Daudé# Return information about the balloon device. 1020a83e24baSPhilippe Mathieu-Daudé# 1021a83e24baSPhilippe Mathieu-Daudé# Returns: - @BalloonInfo on success 1022a83e24baSPhilippe Mathieu-Daudé# - If the balloon driver is enabled but not functional because the KVM 1023a83e24baSPhilippe Mathieu-Daudé# kernel module cannot support it, KvmMissingCap 1024a83e24baSPhilippe Mathieu-Daudé# - If no balloon device is present, DeviceNotActive 1025a83e24baSPhilippe Mathieu-Daudé# 10269bc6e893SMarkus Armbruster# Since: 0.14 1027a83e24baSPhilippe Mathieu-Daudé# 1028a83e24baSPhilippe Mathieu-Daudé# Example: 1029a83e24baSPhilippe Mathieu-Daudé# 1030a83e24baSPhilippe Mathieu-Daudé# -> { "execute": "query-balloon" } 1031a83e24baSPhilippe Mathieu-Daudé# <- { "return": { 1032a83e24baSPhilippe Mathieu-Daudé# "actual": 1073741824, 1033a83e24baSPhilippe Mathieu-Daudé# } 1034a83e24baSPhilippe Mathieu-Daudé# } 1035a83e24baSPhilippe Mathieu-Daudé# 1036a83e24baSPhilippe Mathieu-Daudé## 1037a83e24baSPhilippe Mathieu-Daudé{ 'command': 'query-balloon', 'returns': 'BalloonInfo' } 1038a83e24baSPhilippe Mathieu-Daudé 1039a83e24baSPhilippe Mathieu-Daudé## 1040a83e24baSPhilippe Mathieu-Daudé# @BALLOON_CHANGE: 1041a83e24baSPhilippe Mathieu-Daudé# 1042a83e24baSPhilippe Mathieu-Daudé# Emitted when the guest changes the actual BALLOON level. This value is 1043a83e24baSPhilippe Mathieu-Daudé# equivalent to the @actual field return by the 'query-balloon' command 1044a83e24baSPhilippe Mathieu-Daudé# 1045a83e24baSPhilippe Mathieu-Daudé# @actual: the logical size of the VM in bytes 1046a83e24baSPhilippe Mathieu-Daudé# Formula used: logical_vm_size = vm_ram_size - balloon_size 1047a83e24baSPhilippe Mathieu-Daudé# 1048a83e24baSPhilippe Mathieu-Daudé# Note: this event is rate-limited. 1049a83e24baSPhilippe Mathieu-Daudé# 1050a83e24baSPhilippe Mathieu-Daudé# Since: 1.2 1051a83e24baSPhilippe Mathieu-Daudé# 1052a83e24baSPhilippe Mathieu-Daudé# Example: 1053a83e24baSPhilippe Mathieu-Daudé# 1054a83e24baSPhilippe Mathieu-Daudé# <- { "event": "BALLOON_CHANGE", 1055a83e24baSPhilippe Mathieu-Daudé# "data": { "actual": 944766976 }, 1056a83e24baSPhilippe Mathieu-Daudé# "timestamp": { "seconds": 1267020223, "microseconds": 435656 } } 1057a83e24baSPhilippe Mathieu-Daudé# 1058a83e24baSPhilippe Mathieu-Daudé## 1059a83e24baSPhilippe Mathieu-Daudé{ 'event': 'BALLOON_CHANGE', 1060a83e24baSPhilippe Mathieu-Daudé 'data': { 'actual': 'int' } } 1061b495ec6cSPhilippe Mathieu-Daudé 1062b495ec6cSPhilippe Mathieu-Daudé## 1063b495ec6cSPhilippe Mathieu-Daudé# @MemoryInfo: 1064b495ec6cSPhilippe Mathieu-Daudé# 1065b495ec6cSPhilippe Mathieu-Daudé# Actual memory information in bytes. 1066b495ec6cSPhilippe Mathieu-Daudé# 1067b495ec6cSPhilippe Mathieu-Daudé# @base-memory: size of "base" memory specified with command line 1068b495ec6cSPhilippe Mathieu-Daudé# option -m. 1069b495ec6cSPhilippe Mathieu-Daudé# 1070b495ec6cSPhilippe Mathieu-Daudé# @plugged-memory: size of memory that can be hot-unplugged. This field 1071b495ec6cSPhilippe Mathieu-Daudé# is omitted if target doesn't support memory hotplug 1072b495ec6cSPhilippe Mathieu-Daudé# (i.e. CONFIG_MEM_DEVICE not defined at build time). 1073b495ec6cSPhilippe Mathieu-Daudé# 10749bc6e893SMarkus Armbruster# Since: 2.11 1075b495ec6cSPhilippe Mathieu-Daudé## 1076b495ec6cSPhilippe Mathieu-Daudé{ 'struct': 'MemoryInfo', 1077b495ec6cSPhilippe Mathieu-Daudé 'data' : { 'base-memory': 'size', '*plugged-memory': 'size' } } 1078b495ec6cSPhilippe Mathieu-Daudé 1079b495ec6cSPhilippe Mathieu-Daudé## 1080b495ec6cSPhilippe Mathieu-Daudé# @query-memory-size-summary: 1081b495ec6cSPhilippe Mathieu-Daudé# 1082b495ec6cSPhilippe Mathieu-Daudé# Return the amount of initially allocated and present hotpluggable (if 1083b495ec6cSPhilippe Mathieu-Daudé# enabled) memory in bytes. 1084b495ec6cSPhilippe Mathieu-Daudé# 1085b495ec6cSPhilippe Mathieu-Daudé# Example: 1086b495ec6cSPhilippe Mathieu-Daudé# 1087b495ec6cSPhilippe Mathieu-Daudé# -> { "execute": "query-memory-size-summary" } 1088b495ec6cSPhilippe Mathieu-Daudé# <- { "return": { "base-memory": 4294967296, "plugged-memory": 0 } } 1089b495ec6cSPhilippe Mathieu-Daudé# 10909bc6e893SMarkus Armbruster# Since: 2.11 1091b495ec6cSPhilippe Mathieu-Daudé## 1092b495ec6cSPhilippe Mathieu-Daudé{ 'command': 'query-memory-size-summary', 'returns': 'MemoryInfo' } 1093b495ec6cSPhilippe Mathieu-Daudé 1094b495ec6cSPhilippe Mathieu-Daudé## 1095b495ec6cSPhilippe Mathieu-Daudé# @PCDIMMDeviceInfo: 1096b495ec6cSPhilippe Mathieu-Daudé# 1097b495ec6cSPhilippe Mathieu-Daudé# PCDIMMDevice state information 1098b495ec6cSPhilippe Mathieu-Daudé# 1099b495ec6cSPhilippe Mathieu-Daudé# @id: device's ID 1100b495ec6cSPhilippe Mathieu-Daudé# 1101b495ec6cSPhilippe Mathieu-Daudé# @addr: physical address, where device is mapped 1102b495ec6cSPhilippe Mathieu-Daudé# 1103b495ec6cSPhilippe Mathieu-Daudé# @size: size of memory that the device provides 1104b495ec6cSPhilippe Mathieu-Daudé# 1105b495ec6cSPhilippe Mathieu-Daudé# @slot: slot number at which device is plugged in 1106b495ec6cSPhilippe Mathieu-Daudé# 1107b495ec6cSPhilippe Mathieu-Daudé# @node: NUMA node number where device is plugged in 1108b495ec6cSPhilippe Mathieu-Daudé# 1109b495ec6cSPhilippe Mathieu-Daudé# @memdev: memory backend linked with device 1110b495ec6cSPhilippe Mathieu-Daudé# 1111b495ec6cSPhilippe Mathieu-Daudé# @hotplugged: true if device was hotplugged 1112b495ec6cSPhilippe Mathieu-Daudé# 1113b495ec6cSPhilippe Mathieu-Daudé# @hotpluggable: true if device if could be added/removed while machine is running 1114b495ec6cSPhilippe Mathieu-Daudé# 1115b495ec6cSPhilippe Mathieu-Daudé# Since: 2.1 1116b495ec6cSPhilippe Mathieu-Daudé## 1117b495ec6cSPhilippe Mathieu-Daudé{ 'struct': 'PCDIMMDeviceInfo', 1118b495ec6cSPhilippe Mathieu-Daudé 'data': { '*id': 'str', 1119b495ec6cSPhilippe Mathieu-Daudé 'addr': 'int', 1120b495ec6cSPhilippe Mathieu-Daudé 'size': 'int', 1121b495ec6cSPhilippe Mathieu-Daudé 'slot': 'int', 1122b495ec6cSPhilippe Mathieu-Daudé 'node': 'int', 1123b495ec6cSPhilippe Mathieu-Daudé 'memdev': 'str', 1124b495ec6cSPhilippe Mathieu-Daudé 'hotplugged': 'bool', 1125b495ec6cSPhilippe Mathieu-Daudé 'hotpluggable': 'bool' 1126b495ec6cSPhilippe Mathieu-Daudé } 1127b495ec6cSPhilippe Mathieu-Daudé} 1128b495ec6cSPhilippe Mathieu-Daudé 1129b495ec6cSPhilippe Mathieu-Daudé## 1130b495ec6cSPhilippe Mathieu-Daudé# @VirtioPMEMDeviceInfo: 1131b495ec6cSPhilippe Mathieu-Daudé# 1132b495ec6cSPhilippe Mathieu-Daudé# VirtioPMEM state information 1133b495ec6cSPhilippe Mathieu-Daudé# 1134b495ec6cSPhilippe Mathieu-Daudé# @id: device's ID 1135b495ec6cSPhilippe Mathieu-Daudé# 1136b495ec6cSPhilippe Mathieu-Daudé# @memaddr: physical address in memory, where device is mapped 1137b495ec6cSPhilippe Mathieu-Daudé# 1138b495ec6cSPhilippe Mathieu-Daudé# @size: size of memory that the device provides 1139b495ec6cSPhilippe Mathieu-Daudé# 1140b495ec6cSPhilippe Mathieu-Daudé# @memdev: memory backend linked with device 1141b495ec6cSPhilippe Mathieu-Daudé# 1142b495ec6cSPhilippe Mathieu-Daudé# Since: 4.1 1143b495ec6cSPhilippe Mathieu-Daudé## 1144b495ec6cSPhilippe Mathieu-Daudé{ 'struct': 'VirtioPMEMDeviceInfo', 1145b495ec6cSPhilippe Mathieu-Daudé 'data': { '*id': 'str', 1146b495ec6cSPhilippe Mathieu-Daudé 'memaddr': 'size', 1147b495ec6cSPhilippe Mathieu-Daudé 'size': 'size', 1148b495ec6cSPhilippe Mathieu-Daudé 'memdev': 'str' 1149b495ec6cSPhilippe Mathieu-Daudé } 1150b495ec6cSPhilippe Mathieu-Daudé} 1151b495ec6cSPhilippe Mathieu-Daudé 1152b495ec6cSPhilippe Mathieu-Daudé## 1153b495ec6cSPhilippe Mathieu-Daudé# @VirtioMEMDeviceInfo: 1154b495ec6cSPhilippe Mathieu-Daudé# 1155b495ec6cSPhilippe Mathieu-Daudé# VirtioMEMDevice state information 1156b495ec6cSPhilippe Mathieu-Daudé# 1157b495ec6cSPhilippe Mathieu-Daudé# @id: device's ID 1158b495ec6cSPhilippe Mathieu-Daudé# 1159b495ec6cSPhilippe Mathieu-Daudé# @memaddr: physical address in memory, where device is mapped 1160b495ec6cSPhilippe Mathieu-Daudé# 1161b495ec6cSPhilippe Mathieu-Daudé# @requested-size: the user requested size of the device 1162b495ec6cSPhilippe Mathieu-Daudé# 1163b495ec6cSPhilippe Mathieu-Daudé# @size: the (current) size of memory that the device provides 1164b495ec6cSPhilippe Mathieu-Daudé# 1165b495ec6cSPhilippe Mathieu-Daudé# @max-size: the maximum size of memory that the device can provide 1166b495ec6cSPhilippe Mathieu-Daudé# 1167b495ec6cSPhilippe Mathieu-Daudé# @block-size: the block size of memory that the device provides 1168b495ec6cSPhilippe Mathieu-Daudé# 1169b495ec6cSPhilippe Mathieu-Daudé# @node: NUMA node number where device is assigned to 1170b495ec6cSPhilippe Mathieu-Daudé# 1171b495ec6cSPhilippe Mathieu-Daudé# @memdev: memory backend linked with the region 1172b495ec6cSPhilippe Mathieu-Daudé# 1173b495ec6cSPhilippe Mathieu-Daudé# Since: 5.1 1174b495ec6cSPhilippe Mathieu-Daudé## 1175b495ec6cSPhilippe Mathieu-Daudé{ 'struct': 'VirtioMEMDeviceInfo', 1176b495ec6cSPhilippe Mathieu-Daudé 'data': { '*id': 'str', 1177b495ec6cSPhilippe Mathieu-Daudé 'memaddr': 'size', 1178b495ec6cSPhilippe Mathieu-Daudé 'requested-size': 'size', 1179b495ec6cSPhilippe Mathieu-Daudé 'size': 'size', 1180b495ec6cSPhilippe Mathieu-Daudé 'max-size': 'size', 1181b495ec6cSPhilippe Mathieu-Daudé 'block-size': 'size', 1182b495ec6cSPhilippe Mathieu-Daudé 'node': 'int', 1183b495ec6cSPhilippe Mathieu-Daudé 'memdev': 'str' 1184b495ec6cSPhilippe Mathieu-Daudé } 1185b495ec6cSPhilippe Mathieu-Daudé} 1186b495ec6cSPhilippe Mathieu-Daudé 1187b495ec6cSPhilippe Mathieu-Daudé## 1188b495ec6cSPhilippe Mathieu-Daudé# @MemoryDeviceInfo: 1189b495ec6cSPhilippe Mathieu-Daudé# 1190b495ec6cSPhilippe Mathieu-Daudé# Union containing information about a memory device 1191b495ec6cSPhilippe Mathieu-Daudé# 1192b495ec6cSPhilippe Mathieu-Daudé# nvdimm is included since 2.12. virtio-pmem is included since 4.1. 1193b495ec6cSPhilippe Mathieu-Daudé# virtio-mem is included since 5.1. 1194b495ec6cSPhilippe Mathieu-Daudé# 1195b495ec6cSPhilippe Mathieu-Daudé# Since: 2.1 1196b495ec6cSPhilippe Mathieu-Daudé## 1197b495ec6cSPhilippe Mathieu-Daudé{ 'union': 'MemoryDeviceInfo', 1198b495ec6cSPhilippe Mathieu-Daudé 'data': { 'dimm': 'PCDIMMDeviceInfo', 1199b495ec6cSPhilippe Mathieu-Daudé 'nvdimm': 'PCDIMMDeviceInfo', 1200b495ec6cSPhilippe Mathieu-Daudé 'virtio-pmem': 'VirtioPMEMDeviceInfo', 1201b495ec6cSPhilippe Mathieu-Daudé 'virtio-mem': 'VirtioMEMDeviceInfo' 1202b495ec6cSPhilippe Mathieu-Daudé } 1203b495ec6cSPhilippe Mathieu-Daudé} 1204b495ec6cSPhilippe Mathieu-Daudé 1205b495ec6cSPhilippe Mathieu-Daudé## 1206b495ec6cSPhilippe Mathieu-Daudé# @query-memory-devices: 1207b495ec6cSPhilippe Mathieu-Daudé# 1208b495ec6cSPhilippe Mathieu-Daudé# Lists available memory devices and their state 1209b495ec6cSPhilippe Mathieu-Daudé# 1210b495ec6cSPhilippe Mathieu-Daudé# Since: 2.1 1211b495ec6cSPhilippe Mathieu-Daudé# 1212b495ec6cSPhilippe Mathieu-Daudé# Example: 1213b495ec6cSPhilippe Mathieu-Daudé# 1214b495ec6cSPhilippe Mathieu-Daudé# -> { "execute": "query-memory-devices" } 1215b495ec6cSPhilippe Mathieu-Daudé# <- { "return": [ { "data": 1216b495ec6cSPhilippe Mathieu-Daudé# { "addr": 5368709120, 1217b495ec6cSPhilippe Mathieu-Daudé# "hotpluggable": true, 1218b495ec6cSPhilippe Mathieu-Daudé# "hotplugged": true, 1219b495ec6cSPhilippe Mathieu-Daudé# "id": "d1", 1220b495ec6cSPhilippe Mathieu-Daudé# "memdev": "/objects/memX", 1221b495ec6cSPhilippe Mathieu-Daudé# "node": 0, 1222b495ec6cSPhilippe Mathieu-Daudé# "size": 1073741824, 1223b495ec6cSPhilippe Mathieu-Daudé# "slot": 0}, 1224b495ec6cSPhilippe Mathieu-Daudé# "type": "dimm" 1225b495ec6cSPhilippe Mathieu-Daudé# } ] } 1226b495ec6cSPhilippe Mathieu-Daudé# 1227b495ec6cSPhilippe Mathieu-Daudé## 1228b495ec6cSPhilippe Mathieu-Daudé{ 'command': 'query-memory-devices', 'returns': ['MemoryDeviceInfo'] } 1229b495ec6cSPhilippe Mathieu-Daudé 1230b495ec6cSPhilippe Mathieu-Daudé## 1231b495ec6cSPhilippe Mathieu-Daudé# @MEMORY_DEVICE_SIZE_CHANGE: 1232b495ec6cSPhilippe Mathieu-Daudé# 1233b495ec6cSPhilippe Mathieu-Daudé# Emitted when the size of a memory device changes. Only emitted for memory 1234b495ec6cSPhilippe Mathieu-Daudé# devices that can actually change the size (e.g., virtio-mem due to guest 1235b495ec6cSPhilippe Mathieu-Daudé# action). 1236b495ec6cSPhilippe Mathieu-Daudé# 1237b495ec6cSPhilippe Mathieu-Daudé# @id: device's ID 1238b495ec6cSPhilippe Mathieu-Daudé# @size: the new size of memory that the device provides 1239b495ec6cSPhilippe Mathieu-Daudé# 1240b495ec6cSPhilippe Mathieu-Daudé# Note: this event is rate-limited. 1241b495ec6cSPhilippe Mathieu-Daudé# 1242b495ec6cSPhilippe Mathieu-Daudé# Since: 5.1 1243b495ec6cSPhilippe Mathieu-Daudé# 1244b495ec6cSPhilippe Mathieu-Daudé# Example: 1245b495ec6cSPhilippe Mathieu-Daudé# 1246b495ec6cSPhilippe Mathieu-Daudé# <- { "event": "MEMORY_DEVICE_SIZE_CHANGE", 1247b495ec6cSPhilippe Mathieu-Daudé# "data": { "id": "vm0", "size": 1073741824}, 1248b495ec6cSPhilippe Mathieu-Daudé# "timestamp": { "seconds": 1588168529, "microseconds": 201316 } } 1249b495ec6cSPhilippe Mathieu-Daudé# 1250b495ec6cSPhilippe Mathieu-Daudé## 1251b495ec6cSPhilippe Mathieu-Daudé{ 'event': 'MEMORY_DEVICE_SIZE_CHANGE', 1252b495ec6cSPhilippe Mathieu-Daudé 'data': { '*id': 'str', 'size': 'size' } } 1253b495ec6cSPhilippe Mathieu-Daudé 1254b495ec6cSPhilippe Mathieu-Daudé 1255b495ec6cSPhilippe Mathieu-Daudé## 1256b495ec6cSPhilippe Mathieu-Daudé# @MEM_UNPLUG_ERROR: 1257b495ec6cSPhilippe Mathieu-Daudé# 1258b495ec6cSPhilippe Mathieu-Daudé# Emitted when memory hot unplug error occurs. 1259b495ec6cSPhilippe Mathieu-Daudé# 1260b495ec6cSPhilippe Mathieu-Daudé# @device: device name 1261b495ec6cSPhilippe Mathieu-Daudé# 1262b495ec6cSPhilippe Mathieu-Daudé# @msg: Informative message 1263b495ec6cSPhilippe Mathieu-Daudé# 1264b495ec6cSPhilippe Mathieu-Daudé# Since: 2.4 1265b495ec6cSPhilippe Mathieu-Daudé# 1266b495ec6cSPhilippe Mathieu-Daudé# Example: 1267b495ec6cSPhilippe Mathieu-Daudé# 1268b495ec6cSPhilippe Mathieu-Daudé# <- { "event": "MEM_UNPLUG_ERROR" 1269b495ec6cSPhilippe Mathieu-Daudé# "data": { "device": "dimm1", 1270b495ec6cSPhilippe Mathieu-Daudé# "msg": "acpi: device unplug for unsupported device" 1271b495ec6cSPhilippe Mathieu-Daudé# }, 1272b495ec6cSPhilippe Mathieu-Daudé# "timestamp": { "seconds": 1265044230, "microseconds": 450486 } } 1273b495ec6cSPhilippe Mathieu-Daudé# 1274b495ec6cSPhilippe Mathieu-Daudé## 1275b495ec6cSPhilippe Mathieu-Daudé{ 'event': 'MEM_UNPLUG_ERROR', 1276b495ec6cSPhilippe Mathieu-Daudé 'data': { 'device': 'str', 'msg': 'str' } } 1277