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 11ffaee83bSMarkus Armbruster## 12ffaee83bSMarkus Armbruster# @SysEmuTarget: 13ffaee83bSMarkus Armbruster# 14ffaee83bSMarkus Armbruster# The comprehensive enumeration of QEMU system emulation ("softmmu") 15ffaee83bSMarkus Armbruster# targets. Run "./configure --help" in the project root directory, and 16*44e12af7SPeter Maydell# look for the \*-softmmu targets near the "--target-list" option. The 17ffaee83bSMarkus Armbruster# individual target constants are not documented here, for the time 18ffaee83bSMarkus Armbruster# being. 19ffaee83bSMarkus Armbruster# 20c8c35e5fSYoshinori Sato# @rx: since 5.0 2142f3ff00SMichael Rolnik# @avr: since 5.1 22c8c35e5fSYoshinori Sato# 23ffaee83bSMarkus Armbruster# Notes: The resulting QMP strings can be appended to the "qemu-system-" 24ffaee83bSMarkus Armbruster# prefix to produce the corresponding QEMU executable name. This 25ffaee83bSMarkus Armbruster# is true even for "qemu-system-x86_64". 26ffaee83bSMarkus Armbruster# 27ffaee83bSMarkus Armbruster# Since: 3.0 28ffaee83bSMarkus Armbruster## 29ffaee83bSMarkus Armbruster{ 'enum' : 'SysEmuTarget', 3042f3ff00SMichael Rolnik 'data' : [ 'aarch64', 'alpha', 'arm', 'avr', 'cris', 'hppa', 'i386', 'lm32', 31ffaee83bSMarkus Armbruster 'm68k', 'microblaze', 'microblazeel', 'mips', 'mips64', 32ffaee83bSMarkus Armbruster 'mips64el', 'mipsel', 'moxie', 'nios2', 'or1k', 'ppc', 33c8c35e5fSYoshinori Sato 'ppc64', 'riscv32', 'riscv64', 'rx', 's390x', 'sh4', 34ffaee83bSMarkus Armbruster 'sh4eb', 'sparc', 'sparc64', 'tricore', 'unicore32', 35ffaee83bSMarkus Armbruster 'x86_64', 'xtensa', 'xtensaeb' ] } 368ac25c84SMarkus Armbruster 378ac25c84SMarkus Armbruster## 388ac25c84SMarkus Armbruster# @CpuInfoArch: 398ac25c84SMarkus Armbruster# 408ac25c84SMarkus Armbruster# An enumeration of cpu types that enable additional information during 418ac25c84SMarkus Armbruster# @query-cpus and @query-cpus-fast. 428ac25c84SMarkus Armbruster# 438ac25c84SMarkus Armbruster# @s390: since 2.12 448ac25c84SMarkus Armbruster# 458ac25c84SMarkus Armbruster# @riscv: since 2.12 468ac25c84SMarkus Armbruster# 478ac25c84SMarkus Armbruster# Since: 2.6 488ac25c84SMarkus Armbruster## 498ac25c84SMarkus Armbruster{ 'enum': 'CpuInfoArch', 508ac25c84SMarkus Armbruster 'data': ['x86', 'sparc', 'ppc', 'mips', 'tricore', 's390', 'riscv', 'other' ] } 518ac25c84SMarkus Armbruster 528ac25c84SMarkus Armbruster## 538ac25c84SMarkus Armbruster# @CpuInfo: 548ac25c84SMarkus Armbruster# 558ac25c84SMarkus Armbruster# Information about a virtual CPU 568ac25c84SMarkus Armbruster# 578ac25c84SMarkus Armbruster# @CPU: the index of the virtual CPU 588ac25c84SMarkus Armbruster# 598ac25c84SMarkus Armbruster# @current: this only exists for backwards compatibility and should be ignored 608ac25c84SMarkus Armbruster# 618ac25c84SMarkus Armbruster# @halted: true if the virtual CPU is in the halt state. Halt usually refers 628ac25c84SMarkus Armbruster# to a processor specific low power mode. 638ac25c84SMarkus Armbruster# 648ac25c84SMarkus Armbruster# @qom_path: path to the CPU object in the QOM tree (since 2.4) 658ac25c84SMarkus Armbruster# 668ac25c84SMarkus Armbruster# @thread_id: ID of the underlying host thread 678ac25c84SMarkus Armbruster# 688ac25c84SMarkus Armbruster# @props: properties describing to which node/socket/core/thread 698ac25c84SMarkus Armbruster# virtual CPU belongs to, provided if supported by board (since 2.10) 708ac25c84SMarkus Armbruster# 718ac25c84SMarkus Armbruster# @arch: architecture of the cpu, which determines which additional fields 728ac25c84SMarkus Armbruster# will be listed (since 2.6) 738ac25c84SMarkus Armbruster# 748ac25c84SMarkus Armbruster# Since: 0.14.0 758ac25c84SMarkus Armbruster# 768ac25c84SMarkus Armbruster# Notes: @halted is a transient state that changes frequently. By the time the 778ac25c84SMarkus Armbruster# data is sent to the client, the guest may no longer be halted. 788ac25c84SMarkus Armbruster## 798ac25c84SMarkus Armbruster{ 'union': 'CpuInfo', 808ac25c84SMarkus Armbruster 'base': {'CPU': 'int', 'current': 'bool', 'halted': 'bool', 818ac25c84SMarkus Armbruster 'qom_path': 'str', 'thread_id': 'int', 828ac25c84SMarkus Armbruster '*props': 'CpuInstanceProperties', 'arch': 'CpuInfoArch' }, 838ac25c84SMarkus Armbruster 'discriminator': 'arch', 848ac25c84SMarkus Armbruster 'data': { 'x86': 'CpuInfoX86', 858ac25c84SMarkus Armbruster 'sparc': 'CpuInfoSPARC', 868ac25c84SMarkus Armbruster 'ppc': 'CpuInfoPPC', 878ac25c84SMarkus Armbruster 'mips': 'CpuInfoMIPS', 888ac25c84SMarkus Armbruster 'tricore': 'CpuInfoTricore', 898ac25c84SMarkus Armbruster 's390': 'CpuInfoS390', 908ac25c84SMarkus Armbruster 'riscv': 'CpuInfoRISCV' } } 918ac25c84SMarkus Armbruster 928ac25c84SMarkus Armbruster## 938ac25c84SMarkus Armbruster# @CpuInfoX86: 948ac25c84SMarkus Armbruster# 958ac25c84SMarkus Armbruster# Additional information about a virtual i386 or x86_64 CPU 968ac25c84SMarkus Armbruster# 978ac25c84SMarkus Armbruster# @pc: the 64-bit instruction pointer 988ac25c84SMarkus Armbruster# 998ac25c84SMarkus Armbruster# Since: 2.6 1008ac25c84SMarkus Armbruster## 1018ac25c84SMarkus Armbruster{ 'struct': 'CpuInfoX86', 'data': { 'pc': 'int' } } 1028ac25c84SMarkus Armbruster 1038ac25c84SMarkus Armbruster## 1048ac25c84SMarkus Armbruster# @CpuInfoSPARC: 1058ac25c84SMarkus Armbruster# 1068ac25c84SMarkus Armbruster# Additional information about a virtual SPARC CPU 1078ac25c84SMarkus Armbruster# 1088ac25c84SMarkus Armbruster# @pc: the PC component of the instruction pointer 1098ac25c84SMarkus Armbruster# 1108ac25c84SMarkus Armbruster# @npc: the NPC component of the instruction pointer 1118ac25c84SMarkus Armbruster# 1128ac25c84SMarkus Armbruster# Since: 2.6 1138ac25c84SMarkus Armbruster## 1148ac25c84SMarkus Armbruster{ 'struct': 'CpuInfoSPARC', 'data': { 'pc': 'int', 'npc': 'int' } } 1158ac25c84SMarkus Armbruster 1168ac25c84SMarkus Armbruster## 1178ac25c84SMarkus Armbruster# @CpuInfoPPC: 1188ac25c84SMarkus Armbruster# 1198ac25c84SMarkus Armbruster# Additional information about a virtual PPC CPU 1208ac25c84SMarkus Armbruster# 1218ac25c84SMarkus Armbruster# @nip: the instruction pointer 1228ac25c84SMarkus Armbruster# 1238ac25c84SMarkus Armbruster# Since: 2.6 1248ac25c84SMarkus Armbruster## 1258ac25c84SMarkus Armbruster{ 'struct': 'CpuInfoPPC', 'data': { 'nip': 'int' } } 1268ac25c84SMarkus Armbruster 1278ac25c84SMarkus Armbruster## 1288ac25c84SMarkus Armbruster# @CpuInfoMIPS: 1298ac25c84SMarkus Armbruster# 1308ac25c84SMarkus Armbruster# Additional information about a virtual MIPS CPU 1318ac25c84SMarkus Armbruster# 1328ac25c84SMarkus Armbruster# @PC: the instruction pointer 1338ac25c84SMarkus Armbruster# 1348ac25c84SMarkus Armbruster# Since: 2.6 1358ac25c84SMarkus Armbruster## 1368ac25c84SMarkus Armbruster{ 'struct': 'CpuInfoMIPS', 'data': { 'PC': 'int' } } 1378ac25c84SMarkus Armbruster 1388ac25c84SMarkus Armbruster## 1398ac25c84SMarkus Armbruster# @CpuInfoTricore: 1408ac25c84SMarkus Armbruster# 1418ac25c84SMarkus Armbruster# Additional information about a virtual Tricore CPU 1428ac25c84SMarkus Armbruster# 1438ac25c84SMarkus Armbruster# @PC: the instruction pointer 1448ac25c84SMarkus Armbruster# 1458ac25c84SMarkus Armbruster# Since: 2.6 1468ac25c84SMarkus Armbruster## 1478ac25c84SMarkus Armbruster{ 'struct': 'CpuInfoTricore', 'data': { 'PC': 'int' } } 1488ac25c84SMarkus Armbruster 1498ac25c84SMarkus Armbruster## 1508ac25c84SMarkus Armbruster# @CpuInfoRISCV: 1518ac25c84SMarkus Armbruster# 1528ac25c84SMarkus Armbruster# Additional information about a virtual RISCV CPU 1538ac25c84SMarkus Armbruster# 1548ac25c84SMarkus Armbruster# @pc: the instruction pointer 1558ac25c84SMarkus Armbruster# 1568ac25c84SMarkus Armbruster# Since 2.12 1578ac25c84SMarkus Armbruster## 1588ac25c84SMarkus Armbruster{ 'struct': 'CpuInfoRISCV', 'data': { 'pc': 'int' } } 1598ac25c84SMarkus Armbruster 1608ac25c84SMarkus Armbruster## 1618ac25c84SMarkus Armbruster# @CpuS390State: 1628ac25c84SMarkus Armbruster# 1638ac25c84SMarkus Armbruster# An enumeration of cpu states that can be assumed by a virtual 1648ac25c84SMarkus Armbruster# S390 CPU 1658ac25c84SMarkus Armbruster# 1668ac25c84SMarkus Armbruster# Since: 2.12 1678ac25c84SMarkus Armbruster## 1688ac25c84SMarkus Armbruster{ 'enum': 'CpuS390State', 1698ac25c84SMarkus Armbruster 'prefix': 'S390_CPU_STATE', 1708ac25c84SMarkus Armbruster 'data': [ 'uninitialized', 'stopped', 'check-stop', 'operating', 'load' ] } 1718ac25c84SMarkus Armbruster 1728ac25c84SMarkus Armbruster## 1738ac25c84SMarkus Armbruster# @CpuInfoS390: 1748ac25c84SMarkus Armbruster# 1758ac25c84SMarkus Armbruster# Additional information about a virtual S390 CPU 1768ac25c84SMarkus Armbruster# 1778ac25c84SMarkus Armbruster# @cpu-state: the virtual CPU's state 1788ac25c84SMarkus Armbruster# 1798ac25c84SMarkus Armbruster# Since: 2.12 1808ac25c84SMarkus Armbruster## 1818ac25c84SMarkus Armbruster{ 'struct': 'CpuInfoS390', 'data': { 'cpu-state': 'CpuS390State' } } 1828ac25c84SMarkus Armbruster 1838ac25c84SMarkus Armbruster## 1848ac25c84SMarkus Armbruster# @query-cpus: 1858ac25c84SMarkus Armbruster# 1868ac25c84SMarkus Armbruster# Returns a list of information about each virtual CPU. 1878ac25c84SMarkus Armbruster# 1888ac25c84SMarkus Armbruster# This command causes vCPU threads to exit to userspace, which causes 1898ac25c84SMarkus Armbruster# a small interruption to guest CPU execution. This will have a negative 1908ac25c84SMarkus Armbruster# impact on realtime guests and other latency sensitive guest workloads. 191df4097aeSMarkus Armbruster# 192df4097aeSMarkus Armbruster# Features: 193df4097aeSMarkus Armbruster# @deprecated: This command is deprecated, because it interferes with 194df4097aeSMarkus Armbruster# the guest. Use 'query-cpus-fast' instead to avoid the vCPU 195df4097aeSMarkus Armbruster# interruption. 1968ac25c84SMarkus Armbruster# 1978ac25c84SMarkus Armbruster# Returns: a list of @CpuInfo for each virtual CPU 1988ac25c84SMarkus Armbruster# 1998ac25c84SMarkus Armbruster# Since: 0.14.0 2008ac25c84SMarkus Armbruster# 2018ac25c84SMarkus Armbruster# Example: 2028ac25c84SMarkus Armbruster# 2038ac25c84SMarkus Armbruster# -> { "execute": "query-cpus" } 2048ac25c84SMarkus Armbruster# <- { "return": [ 2058ac25c84SMarkus Armbruster# { 2068ac25c84SMarkus Armbruster# "CPU":0, 2078ac25c84SMarkus Armbruster# "current":true, 2088ac25c84SMarkus Armbruster# "halted":false, 2098ac25c84SMarkus Armbruster# "qom_path":"/machine/unattached/device[0]", 2108ac25c84SMarkus Armbruster# "arch":"x86", 2118ac25c84SMarkus Armbruster# "pc":3227107138, 2128ac25c84SMarkus Armbruster# "thread_id":3134 2138ac25c84SMarkus Armbruster# }, 2148ac25c84SMarkus Armbruster# { 2158ac25c84SMarkus Armbruster# "CPU":1, 2168ac25c84SMarkus Armbruster# "current":false, 2178ac25c84SMarkus Armbruster# "halted":true, 2188ac25c84SMarkus Armbruster# "qom_path":"/machine/unattached/device[2]", 2198ac25c84SMarkus Armbruster# "arch":"x86", 2208ac25c84SMarkus Armbruster# "pc":7108165, 2218ac25c84SMarkus Armbruster# "thread_id":3135 2228ac25c84SMarkus Armbruster# } 2238ac25c84SMarkus Armbruster# ] 2248ac25c84SMarkus Armbruster# } 2258ac25c84SMarkus Armbruster# 2268ac25c84SMarkus Armbruster## 227df4097aeSMarkus Armbruster{ 'command': 'query-cpus', 'returns': ['CpuInfo'], 228df4097aeSMarkus Armbruster 'features': [ 'deprecated' ] } 2298ac25c84SMarkus Armbruster 2308ac25c84SMarkus Armbruster## 2318ac25c84SMarkus Armbruster# @CpuInfoFast: 2328ac25c84SMarkus Armbruster# 2338ac25c84SMarkus Armbruster# Information about a virtual CPU 2348ac25c84SMarkus Armbruster# 2358ac25c84SMarkus Armbruster# @cpu-index: index of the virtual CPU 2368ac25c84SMarkus Armbruster# 2378ac25c84SMarkus Armbruster# @qom-path: path to the CPU object in the QOM tree 2388ac25c84SMarkus Armbruster# 2398ac25c84SMarkus Armbruster# @thread-id: ID of the underlying host thread 2408ac25c84SMarkus Armbruster# 2418ac25c84SMarkus Armbruster# @props: properties describing to which node/socket/core/thread 2428ac25c84SMarkus Armbruster# virtual CPU belongs to, provided if supported by board 2438ac25c84SMarkus Armbruster# 244df4097aeSMarkus Armbruster# @arch: base architecture of the cpu 2458ac25c84SMarkus Armbruster# 2468ac25c84SMarkus Armbruster# @target: the QEMU system emulation target, which determines which 2478ac25c84SMarkus Armbruster# additional fields will be listed (since 3.0) 2488ac25c84SMarkus Armbruster# 249df4097aeSMarkus Armbruster# Features: 250df4097aeSMarkus Armbruster# @deprecated: Member @arch is deprecated. Use @target instead. 251df4097aeSMarkus Armbruster# 2528ac25c84SMarkus Armbruster# Since: 2.12 2538ac25c84SMarkus Armbruster# 2548ac25c84SMarkus Armbruster## 2558ac25c84SMarkus Armbruster{ 'union' : 'CpuInfoFast', 2568ac25c84SMarkus Armbruster 'base' : { 'cpu-index' : 'int', 2578ac25c84SMarkus Armbruster 'qom-path' : 'str', 2588ac25c84SMarkus Armbruster 'thread-id' : 'int', 2598ac25c84SMarkus Armbruster '*props' : 'CpuInstanceProperties', 260df4097aeSMarkus Armbruster 'arch' : { 'type': 'CpuInfoArch', 261df4097aeSMarkus Armbruster 'features': [ 'deprecated' ] }, 2628ac25c84SMarkus Armbruster 'target' : 'SysEmuTarget' }, 2638ac25c84SMarkus Armbruster 'discriminator' : 'target', 2648ac25c84SMarkus Armbruster 'data' : { 's390x' : 'CpuInfoS390' } } 2658ac25c84SMarkus Armbruster 2668ac25c84SMarkus Armbruster## 2678ac25c84SMarkus Armbruster# @query-cpus-fast: 2688ac25c84SMarkus Armbruster# 2698ac25c84SMarkus Armbruster# Returns information about all virtual CPUs. This command does not 2708ac25c84SMarkus Armbruster# incur a performance penalty and should be used in production 2718ac25c84SMarkus Armbruster# instead of query-cpus. 2728ac25c84SMarkus Armbruster# 2738ac25c84SMarkus Armbruster# Returns: list of @CpuInfoFast 2748ac25c84SMarkus Armbruster# 2758ac25c84SMarkus Armbruster# Since: 2.12 2768ac25c84SMarkus Armbruster# 2778ac25c84SMarkus Armbruster# Example: 2788ac25c84SMarkus Armbruster# 2798ac25c84SMarkus Armbruster# -> { "execute": "query-cpus-fast" } 2808ac25c84SMarkus Armbruster# <- { "return": [ 2818ac25c84SMarkus Armbruster# { 2828ac25c84SMarkus Armbruster# "thread-id": 25627, 2838ac25c84SMarkus Armbruster# "props": { 2848ac25c84SMarkus Armbruster# "core-id": 0, 2858ac25c84SMarkus Armbruster# "thread-id": 0, 2868ac25c84SMarkus Armbruster# "socket-id": 0 2878ac25c84SMarkus Armbruster# }, 2888ac25c84SMarkus Armbruster# "qom-path": "/machine/unattached/device[0]", 2898ac25c84SMarkus Armbruster# "arch":"x86", 2908ac25c84SMarkus Armbruster# "target":"x86_64", 2918ac25c84SMarkus Armbruster# "cpu-index": 0 2928ac25c84SMarkus Armbruster# }, 2938ac25c84SMarkus Armbruster# { 2948ac25c84SMarkus Armbruster# "thread-id": 25628, 2958ac25c84SMarkus Armbruster# "props": { 2968ac25c84SMarkus Armbruster# "core-id": 0, 2978ac25c84SMarkus Armbruster# "thread-id": 0, 2988ac25c84SMarkus Armbruster# "socket-id": 1 2998ac25c84SMarkus Armbruster# }, 3008ac25c84SMarkus Armbruster# "qom-path": "/machine/unattached/device[2]", 3018ac25c84SMarkus Armbruster# "arch":"x86", 3028ac25c84SMarkus Armbruster# "target":"x86_64", 3038ac25c84SMarkus Armbruster# "cpu-index": 1 3048ac25c84SMarkus Armbruster# } 3058ac25c84SMarkus Armbruster# ] 3068ac25c84SMarkus Armbruster# } 3078ac25c84SMarkus Armbruster## 3088ac25c84SMarkus Armbruster{ 'command': 'query-cpus-fast', 'returns': [ 'CpuInfoFast' ] } 3098ac25c84SMarkus Armbruster 3108ac25c84SMarkus Armbruster## 3118ac25c84SMarkus Armbruster# @MachineInfo: 3128ac25c84SMarkus Armbruster# 3138ac25c84SMarkus Armbruster# Information describing a machine. 3148ac25c84SMarkus Armbruster# 3158ac25c84SMarkus Armbruster# @name: the name of the machine 3168ac25c84SMarkus Armbruster# 3178ac25c84SMarkus Armbruster# @alias: an alias for the machine name 3188ac25c84SMarkus Armbruster# 3198ac25c84SMarkus Armbruster# @is-default: whether the machine is default 3208ac25c84SMarkus Armbruster# 3218ac25c84SMarkus Armbruster# @cpu-max: maximum number of CPUs supported by the machine type 3228ac25c84SMarkus Armbruster# (since 1.5.0) 3238ac25c84SMarkus Armbruster# 3248ac25c84SMarkus Armbruster# @hotpluggable-cpus: cpu hotplug via -device is supported (since 2.7.0) 3258ac25c84SMarkus Armbruster# 326cd5ff833SIgor Mammedov# @numa-mem-supported: true if '-numa node,mem' option is supported by 327cd5ff833SIgor Mammedov# the machine type and false otherwise (since 4.1) 328cd5ff833SIgor Mammedov# 32979974027SEduardo Habkost# @deprecated: if true, the machine type is deprecated and may be removed 33079974027SEduardo Habkost# in future versions of QEMU according to the QEMU deprecation 33179974027SEduardo Habkost# policy (since 4.1.0) 33279974027SEduardo Habkost# 33304109957SDaniel P. Berrangé# @default-cpu-type: default CPU model typename if none is requested via 33404109957SDaniel P. Berrangé# the -cpu argument. (since 4.2) 33504109957SDaniel P. Berrangé# 336c5566005SMichal Privoznik# @default-ram-id: the default ID of initial RAM memory backend (since 5.2) 337c5566005SMichal Privoznik# 3388ac25c84SMarkus Armbruster# Since: 1.2.0 3398ac25c84SMarkus Armbruster## 3408ac25c84SMarkus Armbruster{ 'struct': 'MachineInfo', 3418ac25c84SMarkus Armbruster 'data': { 'name': 'str', '*alias': 'str', 3428ac25c84SMarkus Armbruster '*is-default': 'bool', 'cpu-max': 'int', 34379974027SEduardo Habkost 'hotpluggable-cpus': 'bool', 'numa-mem-supported': 'bool', 344c5566005SMichal Privoznik 'deprecated': 'bool', '*default-cpu-type': 'str', 345c5566005SMichal Privoznik '*default-ram-id': 'str' } } 3468ac25c84SMarkus Armbruster 3478ac25c84SMarkus Armbruster## 3488ac25c84SMarkus Armbruster# @query-machines: 3498ac25c84SMarkus Armbruster# 3508ac25c84SMarkus Armbruster# Return a list of supported machines 3518ac25c84SMarkus Armbruster# 3528ac25c84SMarkus Armbruster# Returns: a list of MachineInfo 3538ac25c84SMarkus Armbruster# 3548ac25c84SMarkus Armbruster# Since: 1.2.0 3558ac25c84SMarkus Armbruster## 3568ac25c84SMarkus Armbruster{ 'command': 'query-machines', 'returns': ['MachineInfo'] } 3578ac25c84SMarkus Armbruster 3588ac25c84SMarkus Armbruster## 3598ac25c84SMarkus Armbruster# @CurrentMachineParams: 3608ac25c84SMarkus Armbruster# 3618ac25c84SMarkus Armbruster# Information describing the running machine parameters. 3628ac25c84SMarkus Armbruster# 3638ac25c84SMarkus Armbruster# @wakeup-suspend-support: true if the machine supports wake up from 3648ac25c84SMarkus Armbruster# suspend 3658ac25c84SMarkus Armbruster# 3668ac25c84SMarkus Armbruster# Since: 4.0 3678ac25c84SMarkus Armbruster## 3688ac25c84SMarkus Armbruster{ 'struct': 'CurrentMachineParams', 3698ac25c84SMarkus Armbruster 'data': { 'wakeup-suspend-support': 'bool'} } 3708ac25c84SMarkus Armbruster 3718ac25c84SMarkus Armbruster## 3728ac25c84SMarkus Armbruster# @query-current-machine: 3738ac25c84SMarkus Armbruster# 3748ac25c84SMarkus Armbruster# Return information on the current virtual machine. 3758ac25c84SMarkus Armbruster# 3768ac25c84SMarkus Armbruster# Returns: CurrentMachineParams 3778ac25c84SMarkus Armbruster# 3788ac25c84SMarkus Armbruster# Since: 4.0 3798ac25c84SMarkus Armbruster## 3808ac25c84SMarkus Armbruster{ 'command': 'query-current-machine', 'returns': 'CurrentMachineParams' } 3818ac25c84SMarkus Armbruster 3828ac25c84SMarkus Armbruster## 383ffaee83bSMarkus Armbruster# @TargetInfo: 384ffaee83bSMarkus Armbruster# 385ffaee83bSMarkus Armbruster# Information describing the QEMU target. 386ffaee83bSMarkus Armbruster# 387ffaee83bSMarkus Armbruster# @arch: the target architecture 388ffaee83bSMarkus Armbruster# 389ffaee83bSMarkus Armbruster# Since: 1.2.0 390ffaee83bSMarkus Armbruster## 391ffaee83bSMarkus Armbruster{ 'struct': 'TargetInfo', 392ffaee83bSMarkus Armbruster 'data': { 'arch': 'SysEmuTarget' } } 393ffaee83bSMarkus Armbruster 394ffaee83bSMarkus Armbruster## 395ffaee83bSMarkus Armbruster# @query-target: 396ffaee83bSMarkus Armbruster# 397ffaee83bSMarkus Armbruster# Return information about the target for this QEMU 398ffaee83bSMarkus Armbruster# 399ffaee83bSMarkus Armbruster# Returns: TargetInfo 400ffaee83bSMarkus Armbruster# 401ffaee83bSMarkus Armbruster# Since: 1.2.0 402ffaee83bSMarkus Armbruster## 403ffaee83bSMarkus Armbruster{ 'command': 'query-target', 'returns': 'TargetInfo' } 404ffaee83bSMarkus Armbruster 405ffaee83bSMarkus Armbruster## 406f68c0147SPhilippe Mathieu-Daudé# @UuidInfo: 407f68c0147SPhilippe Mathieu-Daudé# 408f68c0147SPhilippe Mathieu-Daudé# Guest UUID information (Universally Unique Identifier). 409f68c0147SPhilippe Mathieu-Daudé# 410f68c0147SPhilippe Mathieu-Daudé# @UUID: the UUID of the guest 411f68c0147SPhilippe Mathieu-Daudé# 412f68c0147SPhilippe Mathieu-Daudé# Since: 0.14.0 413f68c0147SPhilippe Mathieu-Daudé# 414f68c0147SPhilippe Mathieu-Daudé# Notes: If no UUID was specified for the guest, a null UUID is returned. 415f68c0147SPhilippe Mathieu-Daudé## 416f68c0147SPhilippe Mathieu-Daudé{ 'struct': 'UuidInfo', 'data': {'UUID': 'str'} } 417f68c0147SPhilippe Mathieu-Daudé 418f68c0147SPhilippe Mathieu-Daudé## 419f68c0147SPhilippe Mathieu-Daudé# @query-uuid: 420f68c0147SPhilippe Mathieu-Daudé# 421f68c0147SPhilippe Mathieu-Daudé# Query the guest UUID information. 422f68c0147SPhilippe Mathieu-Daudé# 423f68c0147SPhilippe Mathieu-Daudé# Returns: The @UuidInfo for the guest 424f68c0147SPhilippe Mathieu-Daudé# 425f68c0147SPhilippe Mathieu-Daudé# Since: 0.14.0 426f68c0147SPhilippe Mathieu-Daudé# 427f68c0147SPhilippe Mathieu-Daudé# Example: 428f68c0147SPhilippe Mathieu-Daudé# 429f68c0147SPhilippe Mathieu-Daudé# -> { "execute": "query-uuid" } 430f68c0147SPhilippe Mathieu-Daudé# <- { "return": { "UUID": "550e8400-e29b-41d4-a716-446655440000" } } 431f68c0147SPhilippe Mathieu-Daudé# 432f68c0147SPhilippe Mathieu-Daudé## 433f68c0147SPhilippe Mathieu-Daudé{ 'command': 'query-uuid', 'returns': 'UuidInfo', 'allow-preconfig': true } 434f68c0147SPhilippe Mathieu-Daudé 435f68c0147SPhilippe Mathieu-Daudé## 436db0f08dfSPhilippe Mathieu-Daudé# @GuidInfo: 437db0f08dfSPhilippe Mathieu-Daudé# 438db0f08dfSPhilippe Mathieu-Daudé# GUID information. 439db0f08dfSPhilippe Mathieu-Daudé# 440db0f08dfSPhilippe Mathieu-Daudé# @guid: the globally unique identifier 441db0f08dfSPhilippe Mathieu-Daudé# 442db0f08dfSPhilippe Mathieu-Daudé# Since: 2.9 443db0f08dfSPhilippe Mathieu-Daudé## 444db0f08dfSPhilippe Mathieu-Daudé{ 'struct': 'GuidInfo', 'data': {'guid': 'str'} } 445db0f08dfSPhilippe Mathieu-Daudé 446db0f08dfSPhilippe Mathieu-Daudé## 447db0f08dfSPhilippe Mathieu-Daudé# @query-vm-generation-id: 448db0f08dfSPhilippe Mathieu-Daudé# 449db0f08dfSPhilippe Mathieu-Daudé# Show Virtual Machine Generation ID 450db0f08dfSPhilippe Mathieu-Daudé# 451db0f08dfSPhilippe Mathieu-Daudé# Since: 2.9 452db0f08dfSPhilippe Mathieu-Daudé## 453db0f08dfSPhilippe Mathieu-Daudé{ 'command': 'query-vm-generation-id', 'returns': 'GuidInfo' } 454db0f08dfSPhilippe Mathieu-Daudé 455db0f08dfSPhilippe Mathieu-Daudé## 4568dc007d3SPhilippe Mathieu-Daudé# @LostTickPolicy: 4578dc007d3SPhilippe Mathieu-Daudé# 4588dc007d3SPhilippe Mathieu-Daudé# Policy for handling lost ticks in timer devices. Ticks end up getting 4598dc007d3SPhilippe Mathieu-Daudé# lost when, for example, the guest is paused. 4608dc007d3SPhilippe Mathieu-Daudé# 4618dc007d3SPhilippe Mathieu-Daudé# @discard: throw away the missed ticks and continue with future injection 4628dc007d3SPhilippe Mathieu-Daudé# normally. The guest OS will see the timer jump ahead by a 4638dc007d3SPhilippe Mathieu-Daudé# potentially quite significant amount all at once, as if the 4648dc007d3SPhilippe Mathieu-Daudé# intervening chunk of time had simply not existed; needless to 4658dc007d3SPhilippe Mathieu-Daudé# say, such a sudden jump can easily confuse a guest OS which is 4668dc007d3SPhilippe Mathieu-Daudé# not specifically prepared to deal with it. Assuming the guest 4678dc007d3SPhilippe Mathieu-Daudé# OS can deal correctly with the time jump, the time in the guest 4688dc007d3SPhilippe Mathieu-Daudé# and in the host should now match. 4698dc007d3SPhilippe Mathieu-Daudé# 4708dc007d3SPhilippe Mathieu-Daudé# @delay: continue to deliver ticks at the normal rate. The guest OS will 4718dc007d3SPhilippe Mathieu-Daudé# not notice anything is amiss, as from its point of view time will 4728dc007d3SPhilippe Mathieu-Daudé# have continued to flow normally. The time in the guest should now 4738dc007d3SPhilippe Mathieu-Daudé# be behind the time in the host by exactly the amount of time during 4748dc007d3SPhilippe Mathieu-Daudé# which ticks have been missed. 4758dc007d3SPhilippe Mathieu-Daudé# 4768dc007d3SPhilippe Mathieu-Daudé# @slew: deliver ticks at a higher rate to catch up with the missed ticks. 4778dc007d3SPhilippe Mathieu-Daudé# The guest OS will not notice anything is amiss, as from its point 4788dc007d3SPhilippe Mathieu-Daudé# of view time will have continued to flow normally. Once the timer 4798dc007d3SPhilippe Mathieu-Daudé# has managed to catch up with all the missing ticks, the time in 4808dc007d3SPhilippe Mathieu-Daudé# the guest and in the host should match. 4818dc007d3SPhilippe Mathieu-Daudé# 4828dc007d3SPhilippe Mathieu-Daudé# Since: 2.0 4838dc007d3SPhilippe Mathieu-Daudé## 4848dc007d3SPhilippe Mathieu-Daudé{ 'enum': 'LostTickPolicy', 4858dc007d3SPhilippe Mathieu-Daudé 'data': ['discard', 'delay', 'slew' ] } 4868dc007d3SPhilippe Mathieu-Daudé 4878dc007d3SPhilippe Mathieu-Daudé## 4888ac25c84SMarkus Armbruster# @NumaOptionsType: 4898ac25c84SMarkus Armbruster# 4908ac25c84SMarkus Armbruster# @node: NUMA nodes configuration 4918ac25c84SMarkus Armbruster# 4928ac25c84SMarkus Armbruster# @dist: NUMA distance configuration (since 2.10) 4938ac25c84SMarkus Armbruster# 4948ac25c84SMarkus Armbruster# @cpu: property based CPU(s) to node mapping (Since: 2.10) 4958ac25c84SMarkus Armbruster# 4969b12dfa0SLiu Jingqi# @hmat-lb: memory latency and bandwidth information (Since: 5.0) 4979b12dfa0SLiu Jingqi# 498c412a48dSLiu Jingqi# @hmat-cache: memory side cache information (Since: 5.0) 499c412a48dSLiu Jingqi# 5008ac25c84SMarkus Armbruster# Since: 2.1 5018ac25c84SMarkus Armbruster## 5028ac25c84SMarkus Armbruster{ 'enum': 'NumaOptionsType', 503c412a48dSLiu Jingqi 'data': [ 'node', 'dist', 'cpu', 'hmat-lb', 'hmat-cache' ] } 5048ac25c84SMarkus Armbruster 5058ac25c84SMarkus Armbruster## 5068ac25c84SMarkus Armbruster# @NumaOptions: 5078ac25c84SMarkus Armbruster# 5088ac25c84SMarkus Armbruster# A discriminated record of NUMA options. (for OptsVisitor) 5098ac25c84SMarkus Armbruster# 5108ac25c84SMarkus Armbruster# Since: 2.1 5118ac25c84SMarkus Armbruster## 5128ac25c84SMarkus Armbruster{ 'union': 'NumaOptions', 5138ac25c84SMarkus Armbruster 'base': { 'type': 'NumaOptionsType' }, 5148ac25c84SMarkus Armbruster 'discriminator': 'type', 5158ac25c84SMarkus Armbruster 'data': { 5168ac25c84SMarkus Armbruster 'node': 'NumaNodeOptions', 5178ac25c84SMarkus Armbruster 'dist': 'NumaDistOptions', 5189b12dfa0SLiu Jingqi 'cpu': 'NumaCpuOptions', 519c412a48dSLiu Jingqi 'hmat-lb': 'NumaHmatLBOptions', 520c412a48dSLiu Jingqi 'hmat-cache': 'NumaHmatCacheOptions' }} 5218ac25c84SMarkus Armbruster 5228ac25c84SMarkus Armbruster## 5238ac25c84SMarkus Armbruster# @NumaNodeOptions: 5248ac25c84SMarkus Armbruster# 5258ac25c84SMarkus Armbruster# Create a guest NUMA node. (for OptsVisitor) 5268ac25c84SMarkus Armbruster# 5278ac25c84SMarkus Armbruster# @nodeid: NUMA node ID (increase by 1 from 0 if omitted) 5288ac25c84SMarkus Armbruster# 5298ac25c84SMarkus Armbruster# @cpus: VCPUs belonging to this node (assign VCPUS round-robin 5308ac25c84SMarkus Armbruster# if omitted) 5318ac25c84SMarkus Armbruster# 5328ac25c84SMarkus Armbruster# @mem: memory size of this node; mutually exclusive with @memdev. 5338ac25c84SMarkus Armbruster# Equally divide total memory among nodes if both @mem and @memdev are 5348ac25c84SMarkus Armbruster# omitted. 5358ac25c84SMarkus Armbruster# 5368ac25c84SMarkus Armbruster# @memdev: memory backend object. If specified for one node, 5378ac25c84SMarkus Armbruster# it must be specified for all nodes. 5388ac25c84SMarkus Armbruster# 539244b3f44STao Xu# @initiator: defined in ACPI 6.3 Chapter 5.2.27.3 Table 5-145, 540244b3f44STao Xu# points to the nodeid which has the memory controller 541244b3f44STao Xu# responsible for this NUMA node. This field provides 542244b3f44STao Xu# additional information as to the initiator node that 543244b3f44STao Xu# is closest (as in directly attached) to this node, and 544244b3f44STao Xu# therefore has the best performance (since 5.0) 545244b3f44STao Xu# 5468ac25c84SMarkus Armbruster# Since: 2.1 5478ac25c84SMarkus Armbruster## 5488ac25c84SMarkus Armbruster{ 'struct': 'NumaNodeOptions', 5498ac25c84SMarkus Armbruster 'data': { 5508ac25c84SMarkus Armbruster '*nodeid': 'uint16', 5518ac25c84SMarkus Armbruster '*cpus': ['uint16'], 5528ac25c84SMarkus Armbruster '*mem': 'size', 553244b3f44STao Xu '*memdev': 'str', 554244b3f44STao Xu '*initiator': 'uint16' }} 5558ac25c84SMarkus Armbruster 5568ac25c84SMarkus Armbruster## 5578ac25c84SMarkus Armbruster# @NumaDistOptions: 5588ac25c84SMarkus Armbruster# 5598ac25c84SMarkus Armbruster# Set the distance between 2 NUMA nodes. 5608ac25c84SMarkus Armbruster# 5618ac25c84SMarkus Armbruster# @src: source NUMA node. 5628ac25c84SMarkus Armbruster# 5638ac25c84SMarkus Armbruster# @dst: destination NUMA node. 5648ac25c84SMarkus Armbruster# 5658ac25c84SMarkus Armbruster# @val: NUMA distance from source node to destination node. 5668ac25c84SMarkus Armbruster# When a node is unreachable from another node, set the distance 5678ac25c84SMarkus Armbruster# between them to 255. 5688ac25c84SMarkus Armbruster# 5698ac25c84SMarkus Armbruster# Since: 2.10 5708ac25c84SMarkus Armbruster## 5718ac25c84SMarkus Armbruster{ 'struct': 'NumaDistOptions', 5728ac25c84SMarkus Armbruster 'data': { 5738ac25c84SMarkus Armbruster 'src': 'uint16', 5748ac25c84SMarkus Armbruster 'dst': 'uint16', 5758ac25c84SMarkus Armbruster 'val': 'uint8' }} 5768ac25c84SMarkus Armbruster 5778ac25c84SMarkus Armbruster## 5788ac25c84SMarkus Armbruster# @X86CPURegister32: 5798ac25c84SMarkus Armbruster# 5808ac25c84SMarkus Armbruster# A X86 32-bit register 5818ac25c84SMarkus Armbruster# 5828ac25c84SMarkus Armbruster# Since: 1.5 5838ac25c84SMarkus Armbruster## 5848ac25c84SMarkus Armbruster{ 'enum': 'X86CPURegister32', 5858ac25c84SMarkus Armbruster 'data': [ 'EAX', 'EBX', 'ECX', 'EDX', 'ESP', 'EBP', 'ESI', 'EDI' ] } 5868ac25c84SMarkus Armbruster 5878ac25c84SMarkus Armbruster## 5888ac25c84SMarkus Armbruster# @X86CPUFeatureWordInfo: 5898ac25c84SMarkus Armbruster# 5908ac25c84SMarkus Armbruster# Information about a X86 CPU feature word 5918ac25c84SMarkus Armbruster# 5928ac25c84SMarkus Armbruster# @cpuid-input-eax: Input EAX value for CPUID instruction for that feature word 5938ac25c84SMarkus Armbruster# 5948ac25c84SMarkus Armbruster# @cpuid-input-ecx: Input ECX value for CPUID instruction for that 5958ac25c84SMarkus Armbruster# feature word 5968ac25c84SMarkus Armbruster# 5978ac25c84SMarkus Armbruster# @cpuid-register: Output register containing the feature bits 5988ac25c84SMarkus Armbruster# 5998ac25c84SMarkus Armbruster# @features: value of output register, containing the feature bits 6008ac25c84SMarkus Armbruster# 6018ac25c84SMarkus Armbruster# Since: 1.5 6028ac25c84SMarkus Armbruster## 6038ac25c84SMarkus Armbruster{ 'struct': 'X86CPUFeatureWordInfo', 6048ac25c84SMarkus Armbruster 'data': { 'cpuid-input-eax': 'int', 6058ac25c84SMarkus Armbruster '*cpuid-input-ecx': 'int', 6068ac25c84SMarkus Armbruster 'cpuid-register': 'X86CPURegister32', 6078ac25c84SMarkus Armbruster 'features': 'int' } } 6088ac25c84SMarkus Armbruster 6098ac25c84SMarkus Armbruster## 6108ac25c84SMarkus Armbruster# @DummyForceArrays: 6118ac25c84SMarkus Armbruster# 6128ac25c84SMarkus Armbruster# Not used by QMP; hack to let us use X86CPUFeatureWordInfoList internally 6138ac25c84SMarkus Armbruster# 6148ac25c84SMarkus Armbruster# Since: 2.5 6158ac25c84SMarkus Armbruster## 6168ac25c84SMarkus Armbruster{ 'struct': 'DummyForceArrays', 6178ac25c84SMarkus Armbruster 'data': { 'unused': ['X86CPUFeatureWordInfo'] } } 6188ac25c84SMarkus Armbruster 6198ac25c84SMarkus Armbruster## 6208ac25c84SMarkus Armbruster# @NumaCpuOptions: 6218ac25c84SMarkus Armbruster# 6228ac25c84SMarkus Armbruster# Option "-numa cpu" overrides default cpu to node mapping. 6238ac25c84SMarkus Armbruster# It accepts the same set of cpu properties as returned by 6248ac25c84SMarkus Armbruster# query-hotpluggable-cpus[].props, where node-id could be used to 6258ac25c84SMarkus Armbruster# override default node mapping. 6268ac25c84SMarkus Armbruster# 6278ac25c84SMarkus Armbruster# Since: 2.10 6288ac25c84SMarkus Armbruster## 6298ac25c84SMarkus Armbruster{ 'struct': 'NumaCpuOptions', 6308ac25c84SMarkus Armbruster 'base': 'CpuInstanceProperties', 6318ac25c84SMarkus Armbruster 'data' : {} } 6328ac25c84SMarkus Armbruster 6338ac25c84SMarkus Armbruster## 6349b12dfa0SLiu Jingqi# @HmatLBMemoryHierarchy: 6359b12dfa0SLiu Jingqi# 6369b12dfa0SLiu Jingqi# The memory hierarchy in the System Locality Latency and Bandwidth 6379b12dfa0SLiu Jingqi# Information Structure of HMAT (Heterogeneous Memory Attribute Table) 6389b12dfa0SLiu Jingqi# 6399b12dfa0SLiu Jingqi# For more information about @HmatLBMemoryHierarchy, see chapter 6409b12dfa0SLiu Jingqi# 5.2.27.4: Table 5-146: Field "Flags" of ACPI 6.3 spec. 6419b12dfa0SLiu Jingqi# 6429b12dfa0SLiu Jingqi# @memory: the structure represents the memory performance 6439b12dfa0SLiu Jingqi# 6449b12dfa0SLiu Jingqi# @first-level: first level of memory side cache 6459b12dfa0SLiu Jingqi# 6469b12dfa0SLiu Jingqi# @second-level: second level of memory side cache 6479b12dfa0SLiu Jingqi# 6489b12dfa0SLiu Jingqi# @third-level: third level of memory side cache 6499b12dfa0SLiu Jingqi# 6509b12dfa0SLiu Jingqi# Since: 5.0 6519b12dfa0SLiu Jingqi## 6529b12dfa0SLiu Jingqi{ 'enum': 'HmatLBMemoryHierarchy', 6539b12dfa0SLiu Jingqi 'data': [ 'memory', 'first-level', 'second-level', 'third-level' ] } 6549b12dfa0SLiu Jingqi 6559b12dfa0SLiu Jingqi## 6569b12dfa0SLiu Jingqi# @HmatLBDataType: 6579b12dfa0SLiu Jingqi# 6589b12dfa0SLiu Jingqi# Data type in the System Locality Latency and Bandwidth 6599b12dfa0SLiu Jingqi# Information Structure of HMAT (Heterogeneous Memory Attribute Table) 6609b12dfa0SLiu Jingqi# 6619b12dfa0SLiu Jingqi# For more information about @HmatLBDataType, see chapter 6629b12dfa0SLiu Jingqi# 5.2.27.4: Table 5-146: Field "Data Type" of ACPI 6.3 spec. 6639b12dfa0SLiu Jingqi# 6649b12dfa0SLiu Jingqi# @access-latency: access latency (nanoseconds) 6659b12dfa0SLiu Jingqi# 6669b12dfa0SLiu Jingqi# @read-latency: read latency (nanoseconds) 6679b12dfa0SLiu Jingqi# 6689b12dfa0SLiu Jingqi# @write-latency: write latency (nanoseconds) 6699b12dfa0SLiu Jingqi# 6709b12dfa0SLiu Jingqi# @access-bandwidth: access bandwidth (Bytes per second) 6719b12dfa0SLiu Jingqi# 6729b12dfa0SLiu Jingqi# @read-bandwidth: read bandwidth (Bytes per second) 6739b12dfa0SLiu Jingqi# 6749b12dfa0SLiu Jingqi# @write-bandwidth: write bandwidth (Bytes per second) 6759b12dfa0SLiu Jingqi# 6769b12dfa0SLiu Jingqi# Since: 5.0 6779b12dfa0SLiu Jingqi## 6789b12dfa0SLiu Jingqi{ 'enum': 'HmatLBDataType', 6799b12dfa0SLiu Jingqi 'data': [ 'access-latency', 'read-latency', 'write-latency', 6809b12dfa0SLiu Jingqi 'access-bandwidth', 'read-bandwidth', 'write-bandwidth' ] } 6819b12dfa0SLiu Jingqi 6829b12dfa0SLiu Jingqi## 6839b12dfa0SLiu Jingqi# @NumaHmatLBOptions: 6849b12dfa0SLiu Jingqi# 6859b12dfa0SLiu Jingqi# Set the system locality latency and bandwidth information 6869b12dfa0SLiu Jingqi# between Initiator and Target proximity Domains. 6879b12dfa0SLiu Jingqi# 6889b12dfa0SLiu Jingqi# For more information about @NumaHmatLBOptions, see chapter 6899b12dfa0SLiu Jingqi# 5.2.27.4: Table 5-146 of ACPI 6.3 spec. 6909b12dfa0SLiu Jingqi# 6919b12dfa0SLiu Jingqi# @initiator: the Initiator Proximity Domain. 6929b12dfa0SLiu Jingqi# 6939b12dfa0SLiu Jingqi# @target: the Target Proximity Domain. 6949b12dfa0SLiu Jingqi# 6959b12dfa0SLiu Jingqi# @hierarchy: the Memory Hierarchy. Indicates the performance 6969b12dfa0SLiu Jingqi# of memory or side cache. 6979b12dfa0SLiu Jingqi# 6989b12dfa0SLiu Jingqi# @data-type: presents the type of data, access/read/write 6999b12dfa0SLiu Jingqi# latency or hit latency. 7009b12dfa0SLiu Jingqi# 7019b12dfa0SLiu Jingqi# @latency: the value of latency from @initiator to @target 7029b12dfa0SLiu Jingqi# proximity domain, the latency unit is "ns(nanosecond)". 7039b12dfa0SLiu Jingqi# 7049b12dfa0SLiu Jingqi# @bandwidth: the value of bandwidth between @initiator and @target 7059b12dfa0SLiu Jingqi# proximity domain, the bandwidth unit is 7069b12dfa0SLiu Jingqi# "Bytes per second". 7079b12dfa0SLiu Jingqi# 7089b12dfa0SLiu Jingqi# Since: 5.0 7099b12dfa0SLiu Jingqi## 7109b12dfa0SLiu Jingqi{ 'struct': 'NumaHmatLBOptions', 7119b12dfa0SLiu Jingqi 'data': { 7129b12dfa0SLiu Jingqi 'initiator': 'uint16', 7139b12dfa0SLiu Jingqi 'target': 'uint16', 7149b12dfa0SLiu Jingqi 'hierarchy': 'HmatLBMemoryHierarchy', 7159b12dfa0SLiu Jingqi 'data-type': 'HmatLBDataType', 7169b12dfa0SLiu Jingqi '*latency': 'uint64', 7179b12dfa0SLiu Jingqi '*bandwidth': 'size' }} 7189b12dfa0SLiu Jingqi 7199b12dfa0SLiu Jingqi## 720c412a48dSLiu Jingqi# @HmatCacheAssociativity: 721c412a48dSLiu Jingqi# 722c412a48dSLiu Jingqi# Cache associativity in the Memory Side Cache Information Structure 723c412a48dSLiu Jingqi# of HMAT 724c412a48dSLiu Jingqi# 725c412a48dSLiu Jingqi# For more information of @HmatCacheAssociativity, see chapter 726c412a48dSLiu Jingqi# 5.2.27.5: Table 5-147 of ACPI 6.3 spec. 727c412a48dSLiu Jingqi# 728c412a48dSLiu Jingqi# @none: None (no memory side cache in this proximity domain, 729c412a48dSLiu Jingqi# or cache associativity unknown) 730c412a48dSLiu Jingqi# 731c412a48dSLiu Jingqi# @direct: Direct Mapped 732c412a48dSLiu Jingqi# 733c412a48dSLiu Jingqi# @complex: Complex Cache Indexing (implementation specific) 734c412a48dSLiu Jingqi# 735c412a48dSLiu Jingqi# Since: 5.0 736c412a48dSLiu Jingqi## 737c412a48dSLiu Jingqi{ 'enum': 'HmatCacheAssociativity', 738c412a48dSLiu Jingqi 'data': [ 'none', 'direct', 'complex' ] } 739c412a48dSLiu Jingqi 740c412a48dSLiu Jingqi## 741c412a48dSLiu Jingqi# @HmatCacheWritePolicy: 742c412a48dSLiu Jingqi# 743c412a48dSLiu Jingqi# Cache write policy in the Memory Side Cache Information Structure 744c412a48dSLiu Jingqi# of HMAT 745c412a48dSLiu Jingqi# 746c412a48dSLiu Jingqi# For more information of @HmatCacheWritePolicy, see chapter 747c412a48dSLiu Jingqi# 5.2.27.5: Table 5-147: Field "Cache Attributes" of ACPI 6.3 spec. 748c412a48dSLiu Jingqi# 749c412a48dSLiu Jingqi# @none: None (no memory side cache in this proximity domain, 750c412a48dSLiu Jingqi# or cache write policy unknown) 751c412a48dSLiu Jingqi# 752c412a48dSLiu Jingqi# @write-back: Write Back (WB) 753c412a48dSLiu Jingqi# 754c412a48dSLiu Jingqi# @write-through: Write Through (WT) 755c412a48dSLiu Jingqi# 756c412a48dSLiu Jingqi# Since: 5.0 757c412a48dSLiu Jingqi## 758c412a48dSLiu Jingqi{ 'enum': 'HmatCacheWritePolicy', 759c412a48dSLiu Jingqi 'data': [ 'none', 'write-back', 'write-through' ] } 760c412a48dSLiu Jingqi 761c412a48dSLiu Jingqi## 762c412a48dSLiu Jingqi# @NumaHmatCacheOptions: 763c412a48dSLiu Jingqi# 764c412a48dSLiu Jingqi# Set the memory side cache information for a given memory domain. 765c412a48dSLiu Jingqi# 766c412a48dSLiu Jingqi# For more information of @NumaHmatCacheOptions, see chapter 767c412a48dSLiu Jingqi# 5.2.27.5: Table 5-147: Field "Cache Attributes" of ACPI 6.3 spec. 768c412a48dSLiu Jingqi# 769c412a48dSLiu Jingqi# @node-id: the memory proximity domain to which the memory belongs. 770c412a48dSLiu Jingqi# 771c412a48dSLiu Jingqi# @size: the size of memory side cache in bytes. 772c412a48dSLiu Jingqi# 773c412a48dSLiu Jingqi# @level: the cache level described in this structure. 774c412a48dSLiu Jingqi# 775c412a48dSLiu Jingqi# @associativity: the cache associativity, 776c412a48dSLiu Jingqi# none/direct-mapped/complex(complex cache indexing). 777c412a48dSLiu Jingqi# 778c412a48dSLiu Jingqi# @policy: the write policy, none/write-back/write-through. 779c412a48dSLiu Jingqi# 780c412a48dSLiu Jingqi# @line: the cache Line size in bytes. 781c412a48dSLiu Jingqi# 782c412a48dSLiu Jingqi# Since: 5.0 783c412a48dSLiu Jingqi## 784c412a48dSLiu Jingqi{ 'struct': 'NumaHmatCacheOptions', 785c412a48dSLiu Jingqi 'data': { 786c412a48dSLiu Jingqi 'node-id': 'uint32', 787c412a48dSLiu Jingqi 'size': 'size', 788c412a48dSLiu Jingqi 'level': 'uint8', 789c412a48dSLiu Jingqi 'associativity': 'HmatCacheAssociativity', 790c412a48dSLiu Jingqi 'policy': 'HmatCacheWritePolicy', 791c412a48dSLiu Jingqi 'line': 'uint16' }} 792c412a48dSLiu Jingqi 793c412a48dSLiu Jingqi## 7948ac25c84SMarkus Armbruster# @HostMemPolicy: 7958ac25c84SMarkus Armbruster# 7968ac25c84SMarkus Armbruster# Host memory policy types 7978ac25c84SMarkus Armbruster# 7988ac25c84SMarkus Armbruster# @default: restore default policy, remove any nondefault policy 7998ac25c84SMarkus Armbruster# 8008ac25c84SMarkus Armbruster# @preferred: set the preferred host nodes for allocation 8018ac25c84SMarkus Armbruster# 8028ac25c84SMarkus Armbruster# @bind: a strict policy that restricts memory allocation to the 8038ac25c84SMarkus Armbruster# host nodes specified 8048ac25c84SMarkus Armbruster# 8058ac25c84SMarkus Armbruster# @interleave: memory allocations are interleaved across the set 8068ac25c84SMarkus Armbruster# of host nodes specified 8078ac25c84SMarkus Armbruster# 8088ac25c84SMarkus Armbruster# Since: 2.1 8098ac25c84SMarkus Armbruster## 8108ac25c84SMarkus Armbruster{ 'enum': 'HostMemPolicy', 8118ac25c84SMarkus Armbruster 'data': [ 'default', 'preferred', 'bind', 'interleave' ] } 8128ac25c84SMarkus Armbruster 8138ac25c84SMarkus Armbruster## 8148ac25c84SMarkus Armbruster# @Memdev: 8158ac25c84SMarkus Armbruster# 8168ac25c84SMarkus Armbruster# Information about memory backend 8178ac25c84SMarkus Armbruster# 8188ac25c84SMarkus Armbruster# @id: backend's ID if backend has 'id' property (since 2.9) 8198ac25c84SMarkus Armbruster# 8208ac25c84SMarkus Armbruster# @size: memory backend size 8218ac25c84SMarkus Armbruster# 8228ac25c84SMarkus Armbruster# @merge: enables or disables memory merge support 8238ac25c84SMarkus Armbruster# 8248ac25c84SMarkus Armbruster# @dump: includes memory backend's memory in a core dump or not 8258ac25c84SMarkus Armbruster# 8268ac25c84SMarkus Armbruster# @prealloc: enables or disables memory preallocation 8278ac25c84SMarkus Armbruster# 8288ac25c84SMarkus Armbruster# @host-nodes: host nodes for its memory policy 8298ac25c84SMarkus Armbruster# 8308ac25c84SMarkus Armbruster# @policy: memory policy of memory backend 8318ac25c84SMarkus Armbruster# 8328ac25c84SMarkus Armbruster# Since: 2.1 8338ac25c84SMarkus Armbruster## 8348ac25c84SMarkus Armbruster{ 'struct': 'Memdev', 8358ac25c84SMarkus Armbruster 'data': { 8368ac25c84SMarkus Armbruster '*id': 'str', 8378ac25c84SMarkus Armbruster 'size': 'size', 8388ac25c84SMarkus Armbruster 'merge': 'bool', 8398ac25c84SMarkus Armbruster 'dump': 'bool', 8408ac25c84SMarkus Armbruster 'prealloc': 'bool', 8418ac25c84SMarkus Armbruster 'host-nodes': ['uint16'], 8428ac25c84SMarkus Armbruster 'policy': 'HostMemPolicy' }} 8438ac25c84SMarkus Armbruster 8448ac25c84SMarkus Armbruster## 8458ac25c84SMarkus Armbruster# @query-memdev: 8468ac25c84SMarkus Armbruster# 8478ac25c84SMarkus Armbruster# Returns information for all memory backends. 8488ac25c84SMarkus Armbruster# 8498ac25c84SMarkus Armbruster# Returns: a list of @Memdev. 8508ac25c84SMarkus Armbruster# 8518ac25c84SMarkus Armbruster# Since: 2.1 8528ac25c84SMarkus Armbruster# 8538ac25c84SMarkus Armbruster# Example: 8548ac25c84SMarkus Armbruster# 8558ac25c84SMarkus Armbruster# -> { "execute": "query-memdev" } 8568ac25c84SMarkus Armbruster# <- { "return": [ 8578ac25c84SMarkus Armbruster# { 8588ac25c84SMarkus Armbruster# "id": "mem1", 8598ac25c84SMarkus Armbruster# "size": 536870912, 8608ac25c84SMarkus Armbruster# "merge": false, 8618ac25c84SMarkus Armbruster# "dump": true, 8628ac25c84SMarkus Armbruster# "prealloc": false, 8638ac25c84SMarkus Armbruster# "host-nodes": [0, 1], 8648ac25c84SMarkus Armbruster# "policy": "bind" 8658ac25c84SMarkus Armbruster# }, 8668ac25c84SMarkus Armbruster# { 8678ac25c84SMarkus Armbruster# "size": 536870912, 8688ac25c84SMarkus Armbruster# "merge": false, 8698ac25c84SMarkus Armbruster# "dump": true, 8708ac25c84SMarkus Armbruster# "prealloc": true, 8718ac25c84SMarkus Armbruster# "host-nodes": [2, 3], 8728ac25c84SMarkus Armbruster# "policy": "preferred" 8738ac25c84SMarkus Armbruster# } 8748ac25c84SMarkus Armbruster# ] 8758ac25c84SMarkus Armbruster# } 8768ac25c84SMarkus Armbruster# 8778ac25c84SMarkus Armbruster## 8788ac25c84SMarkus Armbruster{ 'command': 'query-memdev', 'returns': ['Memdev'], 'allow-preconfig': true } 8798ac25c84SMarkus Armbruster 8808ac25c84SMarkus Armbruster## 8818ac25c84SMarkus Armbruster# @CpuInstanceProperties: 8828ac25c84SMarkus Armbruster# 8838ac25c84SMarkus Armbruster# List of properties to be used for hotplugging a CPU instance, 8848ac25c84SMarkus Armbruster# it should be passed by management with device_add command when 8858ac25c84SMarkus Armbruster# a CPU is being hotplugged. 8868ac25c84SMarkus Armbruster# 8878ac25c84SMarkus Armbruster# @node-id: NUMA node ID the CPU belongs to 8888ac25c84SMarkus Armbruster# @socket-id: socket number within node/board the CPU belongs to 889176d2cdaSLike Xu# @die-id: die number within node/board the CPU belongs to (Since 4.1) 8906ac3f1e7SPeter Maydell# @core-id: core number within die the CPU belongs to 8916ac3f1e7SPeter Maydell# @thread-id: thread number within core the CPU belongs to 8928ac25c84SMarkus Armbruster# 893176d2cdaSLike Xu# Note: currently there are 5 properties that could be present 8948ac25c84SMarkus Armbruster# but management should be prepared to pass through other 8958ac25c84SMarkus Armbruster# properties with device_add command to allow for future 8968ac25c84SMarkus Armbruster# interface extension. This also requires the filed names to be kept in 8978ac25c84SMarkus Armbruster# sync with the properties passed to -device/device_add. 8988ac25c84SMarkus Armbruster# 8998ac25c84SMarkus Armbruster# Since: 2.7 9008ac25c84SMarkus Armbruster## 9018ac25c84SMarkus Armbruster{ 'struct': 'CpuInstanceProperties', 9028ac25c84SMarkus Armbruster 'data': { '*node-id': 'int', 9038ac25c84SMarkus Armbruster '*socket-id': 'int', 904176d2cdaSLike Xu '*die-id': 'int', 9058ac25c84SMarkus Armbruster '*core-id': 'int', 9068ac25c84SMarkus Armbruster '*thread-id': 'int' 9078ac25c84SMarkus Armbruster } 9088ac25c84SMarkus Armbruster} 9098ac25c84SMarkus Armbruster 9108ac25c84SMarkus Armbruster## 9118ac25c84SMarkus Armbruster# @HotpluggableCPU: 9128ac25c84SMarkus Armbruster# 9138ac25c84SMarkus Armbruster# @type: CPU object type for usage with device_add command 9148ac25c84SMarkus Armbruster# @props: list of properties to be used for hotplugging CPU 9158ac25c84SMarkus Armbruster# @vcpus-count: number of logical VCPU threads @HotpluggableCPU provides 9168ac25c84SMarkus Armbruster# @qom-path: link to existing CPU object if CPU is present or 9178ac25c84SMarkus Armbruster# omitted if CPU is not present. 9188ac25c84SMarkus Armbruster# 9198ac25c84SMarkus Armbruster# Since: 2.7 9208ac25c84SMarkus Armbruster## 9218ac25c84SMarkus Armbruster{ 'struct': 'HotpluggableCPU', 9228ac25c84SMarkus Armbruster 'data': { 'type': 'str', 9238ac25c84SMarkus Armbruster 'vcpus-count': 'int', 9248ac25c84SMarkus Armbruster 'props': 'CpuInstanceProperties', 9258ac25c84SMarkus Armbruster '*qom-path': 'str' 9268ac25c84SMarkus Armbruster } 9278ac25c84SMarkus Armbruster} 9288ac25c84SMarkus Armbruster 9298ac25c84SMarkus Armbruster## 9308ac25c84SMarkus Armbruster# @query-hotpluggable-cpus: 9318ac25c84SMarkus Armbruster# 9328ac25c84SMarkus Armbruster# TODO: Better documentation; currently there is none. 9338ac25c84SMarkus Armbruster# 9348ac25c84SMarkus Armbruster# Returns: a list of HotpluggableCPU objects. 9358ac25c84SMarkus Armbruster# 9368ac25c84SMarkus Armbruster# Since: 2.7 9378ac25c84SMarkus Armbruster# 9388ac25c84SMarkus Armbruster# Example: 9398ac25c84SMarkus Armbruster# 9408ac25c84SMarkus Armbruster# For pseries machine type started with -smp 2,cores=2,maxcpus=4 -cpu POWER8: 9418ac25c84SMarkus Armbruster# 9428ac25c84SMarkus Armbruster# -> { "execute": "query-hotpluggable-cpus" } 9438ac25c84SMarkus Armbruster# <- {"return": [ 9448ac25c84SMarkus Armbruster# { "props": { "core": 8 }, "type": "POWER8-spapr-cpu-core", 9458ac25c84SMarkus Armbruster# "vcpus-count": 1 }, 9468ac25c84SMarkus Armbruster# { "props": { "core": 0 }, "type": "POWER8-spapr-cpu-core", 9478ac25c84SMarkus Armbruster# "vcpus-count": 1, "qom-path": "/machine/unattached/device[0]"} 9488ac25c84SMarkus Armbruster# ]}' 9498ac25c84SMarkus Armbruster# 9508ac25c84SMarkus Armbruster# For pc machine type started with -smp 1,maxcpus=2: 9518ac25c84SMarkus Armbruster# 9528ac25c84SMarkus Armbruster# -> { "execute": "query-hotpluggable-cpus" } 9538ac25c84SMarkus Armbruster# <- {"return": [ 9548ac25c84SMarkus Armbruster# { 9558ac25c84SMarkus Armbruster# "type": "qemu64-x86_64-cpu", "vcpus-count": 1, 9568ac25c84SMarkus Armbruster# "props": {"core-id": 0, "socket-id": 1, "thread-id": 0} 9578ac25c84SMarkus Armbruster# }, 9588ac25c84SMarkus Armbruster# { 9598ac25c84SMarkus Armbruster# "qom-path": "/machine/unattached/device[0]", 9608ac25c84SMarkus Armbruster# "type": "qemu64-x86_64-cpu", "vcpus-count": 1, 9618ac25c84SMarkus Armbruster# "props": {"core-id": 0, "socket-id": 0, "thread-id": 0} 9628ac25c84SMarkus Armbruster# } 9638ac25c84SMarkus Armbruster# ]} 9648ac25c84SMarkus Armbruster# 9658ac25c84SMarkus Armbruster# For s390x-virtio-ccw machine type started with -smp 1,maxcpus=2 -cpu qemu 9668ac25c84SMarkus Armbruster# (Since: 2.11): 9678ac25c84SMarkus Armbruster# 9688ac25c84SMarkus Armbruster# -> { "execute": "query-hotpluggable-cpus" } 9698ac25c84SMarkus Armbruster# <- {"return": [ 9708ac25c84SMarkus Armbruster# { 9718ac25c84SMarkus Armbruster# "type": "qemu-s390x-cpu", "vcpus-count": 1, 9728ac25c84SMarkus Armbruster# "props": { "core-id": 1 } 9738ac25c84SMarkus Armbruster# }, 9748ac25c84SMarkus Armbruster# { 9758ac25c84SMarkus Armbruster# "qom-path": "/machine/unattached/device[0]", 9768ac25c84SMarkus Armbruster# "type": "qemu-s390x-cpu", "vcpus-count": 1, 9778ac25c84SMarkus Armbruster# "props": { "core-id": 0 } 9788ac25c84SMarkus Armbruster# } 9798ac25c84SMarkus Armbruster# ]} 9808ac25c84SMarkus Armbruster# 9818ac25c84SMarkus Armbruster## 9828ac25c84SMarkus Armbruster{ 'command': 'query-hotpluggable-cpus', 'returns': ['HotpluggableCPU'], 9838ac25c84SMarkus Armbruster 'allow-preconfig': true } 9848ac25c84SMarkus Armbruster 9858ac25c84SMarkus Armbruster## 9868ac25c84SMarkus Armbruster# @set-numa-node: 9878ac25c84SMarkus Armbruster# 9888ac25c84SMarkus Armbruster# Runtime equivalent of '-numa' CLI option, available at 9898ac25c84SMarkus Armbruster# preconfigure stage to configure numa mapping before initializing 9908ac25c84SMarkus Armbruster# machine. 9918ac25c84SMarkus Armbruster# 9928ac25c84SMarkus Armbruster# Since 3.0 9938ac25c84SMarkus Armbruster## 9948ac25c84SMarkus Armbruster{ 'command': 'set-numa-node', 'boxed': true, 9958ac25c84SMarkus Armbruster 'data': 'NumaOptions', 9968ac25c84SMarkus Armbruster 'allow-preconfig': true 9978ac25c84SMarkus Armbruster} 998a83e24baSPhilippe Mathieu-Daudé 999a83e24baSPhilippe Mathieu-Daudé## 1000a83e24baSPhilippe Mathieu-Daudé# @balloon: 1001a83e24baSPhilippe Mathieu-Daudé# 1002a83e24baSPhilippe Mathieu-Daudé# Request the balloon driver to change its balloon size. 1003a83e24baSPhilippe Mathieu-Daudé# 1004826bd069SPeter Maydell# @value: the target logical size of the VM in bytes. 1005a83e24baSPhilippe Mathieu-Daudé# We can deduce the size of the balloon using this formula: 1006826bd069SPeter Maydell# 1007a83e24baSPhilippe Mathieu-Daudé# logical_vm_size = vm_ram_size - balloon_size 1008826bd069SPeter Maydell# 1009a83e24baSPhilippe Mathieu-Daudé# From it we have: balloon_size = vm_ram_size - @value 1010a83e24baSPhilippe Mathieu-Daudé# 1011a83e24baSPhilippe Mathieu-Daudé# Returns: - Nothing on success 1012a83e24baSPhilippe Mathieu-Daudé# - If the balloon driver is enabled but not functional because the KVM 1013a83e24baSPhilippe Mathieu-Daudé# kernel module cannot support it, KvmMissingCap 1014a83e24baSPhilippe Mathieu-Daudé# - If no balloon device is present, DeviceNotActive 1015a83e24baSPhilippe Mathieu-Daudé# 1016a83e24baSPhilippe Mathieu-Daudé# Notes: This command just issues a request to the guest. When it returns, 1017a83e24baSPhilippe Mathieu-Daudé# the balloon size may not have changed. A guest can change the balloon 1018a83e24baSPhilippe Mathieu-Daudé# size independent of this command. 1019a83e24baSPhilippe Mathieu-Daudé# 1020a83e24baSPhilippe Mathieu-Daudé# Since: 0.14.0 1021a83e24baSPhilippe Mathieu-Daudé# 1022a83e24baSPhilippe Mathieu-Daudé# Example: 1023a83e24baSPhilippe Mathieu-Daudé# 1024a83e24baSPhilippe Mathieu-Daudé# -> { "execute": "balloon", "arguments": { "value": 536870912 } } 1025a83e24baSPhilippe Mathieu-Daudé# <- { "return": {} } 1026a83e24baSPhilippe Mathieu-Daudé# 1027a83e24baSPhilippe Mathieu-Daudé# With a 2.5GiB guest this command inflated the ballon to 3GiB. 1028a83e24baSPhilippe Mathieu-Daudé# 1029a83e24baSPhilippe Mathieu-Daudé## 1030a83e24baSPhilippe Mathieu-Daudé{ 'command': 'balloon', 'data': {'value': 'int'} } 1031a83e24baSPhilippe Mathieu-Daudé 1032a83e24baSPhilippe Mathieu-Daudé## 1033a83e24baSPhilippe Mathieu-Daudé# @BalloonInfo: 1034a83e24baSPhilippe Mathieu-Daudé# 1035a83e24baSPhilippe Mathieu-Daudé# Information about the guest balloon device. 1036a83e24baSPhilippe Mathieu-Daudé# 1037a83e24baSPhilippe Mathieu-Daudé# @actual: the logical size of the VM in bytes 1038a83e24baSPhilippe Mathieu-Daudé# Formula used: logical_vm_size = vm_ram_size - balloon_size 1039a83e24baSPhilippe Mathieu-Daudé# 1040a83e24baSPhilippe Mathieu-Daudé# Since: 0.14.0 1041a83e24baSPhilippe Mathieu-Daudé# 1042a83e24baSPhilippe Mathieu-Daudé## 1043a83e24baSPhilippe Mathieu-Daudé{ 'struct': 'BalloonInfo', 'data': {'actual': 'int' } } 1044a83e24baSPhilippe Mathieu-Daudé 1045a83e24baSPhilippe Mathieu-Daudé## 1046a83e24baSPhilippe Mathieu-Daudé# @query-balloon: 1047a83e24baSPhilippe Mathieu-Daudé# 1048a83e24baSPhilippe Mathieu-Daudé# Return information about the balloon device. 1049a83e24baSPhilippe Mathieu-Daudé# 1050a83e24baSPhilippe Mathieu-Daudé# Returns: - @BalloonInfo on success 1051a83e24baSPhilippe Mathieu-Daudé# - If the balloon driver is enabled but not functional because the KVM 1052a83e24baSPhilippe Mathieu-Daudé# kernel module cannot support it, KvmMissingCap 1053a83e24baSPhilippe Mathieu-Daudé# - If no balloon device is present, DeviceNotActive 1054a83e24baSPhilippe Mathieu-Daudé# 1055a83e24baSPhilippe Mathieu-Daudé# Since: 0.14.0 1056a83e24baSPhilippe Mathieu-Daudé# 1057a83e24baSPhilippe Mathieu-Daudé# Example: 1058a83e24baSPhilippe Mathieu-Daudé# 1059a83e24baSPhilippe Mathieu-Daudé# -> { "execute": "query-balloon" } 1060a83e24baSPhilippe Mathieu-Daudé# <- { "return": { 1061a83e24baSPhilippe Mathieu-Daudé# "actual": 1073741824, 1062a83e24baSPhilippe Mathieu-Daudé# } 1063a83e24baSPhilippe Mathieu-Daudé# } 1064a83e24baSPhilippe Mathieu-Daudé# 1065a83e24baSPhilippe Mathieu-Daudé## 1066a83e24baSPhilippe Mathieu-Daudé{ 'command': 'query-balloon', 'returns': 'BalloonInfo' } 1067a83e24baSPhilippe Mathieu-Daudé 1068a83e24baSPhilippe Mathieu-Daudé## 1069a83e24baSPhilippe Mathieu-Daudé# @BALLOON_CHANGE: 1070a83e24baSPhilippe Mathieu-Daudé# 1071a83e24baSPhilippe Mathieu-Daudé# Emitted when the guest changes the actual BALLOON level. This value is 1072a83e24baSPhilippe Mathieu-Daudé# equivalent to the @actual field return by the 'query-balloon' command 1073a83e24baSPhilippe Mathieu-Daudé# 1074a83e24baSPhilippe Mathieu-Daudé# @actual: the logical size of the VM in bytes 1075a83e24baSPhilippe Mathieu-Daudé# Formula used: logical_vm_size = vm_ram_size - balloon_size 1076a83e24baSPhilippe Mathieu-Daudé# 1077a83e24baSPhilippe Mathieu-Daudé# Note: this event is rate-limited. 1078a83e24baSPhilippe Mathieu-Daudé# 1079a83e24baSPhilippe Mathieu-Daudé# Since: 1.2 1080a83e24baSPhilippe Mathieu-Daudé# 1081a83e24baSPhilippe Mathieu-Daudé# Example: 1082a83e24baSPhilippe Mathieu-Daudé# 1083a83e24baSPhilippe Mathieu-Daudé# <- { "event": "BALLOON_CHANGE", 1084a83e24baSPhilippe Mathieu-Daudé# "data": { "actual": 944766976 }, 1085a83e24baSPhilippe Mathieu-Daudé# "timestamp": { "seconds": 1267020223, "microseconds": 435656 } } 1086a83e24baSPhilippe Mathieu-Daudé# 1087a83e24baSPhilippe Mathieu-Daudé## 1088a83e24baSPhilippe Mathieu-Daudé{ 'event': 'BALLOON_CHANGE', 1089a83e24baSPhilippe Mathieu-Daudé 'data': { 'actual': 'int' } } 1090b495ec6cSPhilippe Mathieu-Daudé 1091b495ec6cSPhilippe Mathieu-Daudé## 1092b495ec6cSPhilippe Mathieu-Daudé# @MemoryInfo: 1093b495ec6cSPhilippe Mathieu-Daudé# 1094b495ec6cSPhilippe Mathieu-Daudé# Actual memory information in bytes. 1095b495ec6cSPhilippe Mathieu-Daudé# 1096b495ec6cSPhilippe Mathieu-Daudé# @base-memory: size of "base" memory specified with command line 1097b495ec6cSPhilippe Mathieu-Daudé# option -m. 1098b495ec6cSPhilippe Mathieu-Daudé# 1099b495ec6cSPhilippe Mathieu-Daudé# @plugged-memory: size of memory that can be hot-unplugged. This field 1100b495ec6cSPhilippe Mathieu-Daudé# is omitted if target doesn't support memory hotplug 1101b495ec6cSPhilippe Mathieu-Daudé# (i.e. CONFIG_MEM_DEVICE not defined at build time). 1102b495ec6cSPhilippe Mathieu-Daudé# 1103b495ec6cSPhilippe Mathieu-Daudé# Since: 2.11.0 1104b495ec6cSPhilippe Mathieu-Daudé## 1105b495ec6cSPhilippe Mathieu-Daudé{ 'struct': 'MemoryInfo', 1106b495ec6cSPhilippe Mathieu-Daudé 'data' : { 'base-memory': 'size', '*plugged-memory': 'size' } } 1107b495ec6cSPhilippe Mathieu-Daudé 1108b495ec6cSPhilippe Mathieu-Daudé## 1109b495ec6cSPhilippe Mathieu-Daudé# @query-memory-size-summary: 1110b495ec6cSPhilippe Mathieu-Daudé# 1111b495ec6cSPhilippe Mathieu-Daudé# Return the amount of initially allocated and present hotpluggable (if 1112b495ec6cSPhilippe Mathieu-Daudé# enabled) memory in bytes. 1113b495ec6cSPhilippe Mathieu-Daudé# 1114b495ec6cSPhilippe Mathieu-Daudé# Example: 1115b495ec6cSPhilippe Mathieu-Daudé# 1116b495ec6cSPhilippe Mathieu-Daudé# -> { "execute": "query-memory-size-summary" } 1117b495ec6cSPhilippe Mathieu-Daudé# <- { "return": { "base-memory": 4294967296, "plugged-memory": 0 } } 1118b495ec6cSPhilippe Mathieu-Daudé# 1119b495ec6cSPhilippe Mathieu-Daudé# Since: 2.11.0 1120b495ec6cSPhilippe Mathieu-Daudé## 1121b495ec6cSPhilippe Mathieu-Daudé{ 'command': 'query-memory-size-summary', 'returns': 'MemoryInfo' } 1122b495ec6cSPhilippe Mathieu-Daudé 1123b495ec6cSPhilippe Mathieu-Daudé## 1124b495ec6cSPhilippe Mathieu-Daudé# @PCDIMMDeviceInfo: 1125b495ec6cSPhilippe Mathieu-Daudé# 1126b495ec6cSPhilippe Mathieu-Daudé# PCDIMMDevice state information 1127b495ec6cSPhilippe Mathieu-Daudé# 1128b495ec6cSPhilippe Mathieu-Daudé# @id: device's ID 1129b495ec6cSPhilippe Mathieu-Daudé# 1130b495ec6cSPhilippe Mathieu-Daudé# @addr: physical address, where device is mapped 1131b495ec6cSPhilippe Mathieu-Daudé# 1132b495ec6cSPhilippe Mathieu-Daudé# @size: size of memory that the device provides 1133b495ec6cSPhilippe Mathieu-Daudé# 1134b495ec6cSPhilippe Mathieu-Daudé# @slot: slot number at which device is plugged in 1135b495ec6cSPhilippe Mathieu-Daudé# 1136b495ec6cSPhilippe Mathieu-Daudé# @node: NUMA node number where device is plugged in 1137b495ec6cSPhilippe Mathieu-Daudé# 1138b495ec6cSPhilippe Mathieu-Daudé# @memdev: memory backend linked with device 1139b495ec6cSPhilippe Mathieu-Daudé# 1140b495ec6cSPhilippe Mathieu-Daudé# @hotplugged: true if device was hotplugged 1141b495ec6cSPhilippe Mathieu-Daudé# 1142b495ec6cSPhilippe Mathieu-Daudé# @hotpluggable: true if device if could be added/removed while machine is running 1143b495ec6cSPhilippe Mathieu-Daudé# 1144b495ec6cSPhilippe Mathieu-Daudé# Since: 2.1 1145b495ec6cSPhilippe Mathieu-Daudé## 1146b495ec6cSPhilippe Mathieu-Daudé{ 'struct': 'PCDIMMDeviceInfo', 1147b495ec6cSPhilippe Mathieu-Daudé 'data': { '*id': 'str', 1148b495ec6cSPhilippe Mathieu-Daudé 'addr': 'int', 1149b495ec6cSPhilippe Mathieu-Daudé 'size': 'int', 1150b495ec6cSPhilippe Mathieu-Daudé 'slot': 'int', 1151b495ec6cSPhilippe Mathieu-Daudé 'node': 'int', 1152b495ec6cSPhilippe Mathieu-Daudé 'memdev': 'str', 1153b495ec6cSPhilippe Mathieu-Daudé 'hotplugged': 'bool', 1154b495ec6cSPhilippe Mathieu-Daudé 'hotpluggable': 'bool' 1155b495ec6cSPhilippe Mathieu-Daudé } 1156b495ec6cSPhilippe Mathieu-Daudé} 1157b495ec6cSPhilippe Mathieu-Daudé 1158b495ec6cSPhilippe Mathieu-Daudé## 1159b495ec6cSPhilippe Mathieu-Daudé# @VirtioPMEMDeviceInfo: 1160b495ec6cSPhilippe Mathieu-Daudé# 1161b495ec6cSPhilippe Mathieu-Daudé# VirtioPMEM state information 1162b495ec6cSPhilippe Mathieu-Daudé# 1163b495ec6cSPhilippe Mathieu-Daudé# @id: device's ID 1164b495ec6cSPhilippe Mathieu-Daudé# 1165b495ec6cSPhilippe Mathieu-Daudé# @memaddr: physical address in memory, where device is mapped 1166b495ec6cSPhilippe Mathieu-Daudé# 1167b495ec6cSPhilippe Mathieu-Daudé# @size: size of memory that the device provides 1168b495ec6cSPhilippe Mathieu-Daudé# 1169b495ec6cSPhilippe Mathieu-Daudé# @memdev: memory backend linked with device 1170b495ec6cSPhilippe Mathieu-Daudé# 1171b495ec6cSPhilippe Mathieu-Daudé# Since: 4.1 1172b495ec6cSPhilippe Mathieu-Daudé## 1173b495ec6cSPhilippe Mathieu-Daudé{ 'struct': 'VirtioPMEMDeviceInfo', 1174b495ec6cSPhilippe Mathieu-Daudé 'data': { '*id': 'str', 1175b495ec6cSPhilippe Mathieu-Daudé 'memaddr': 'size', 1176b495ec6cSPhilippe Mathieu-Daudé 'size': 'size', 1177b495ec6cSPhilippe Mathieu-Daudé 'memdev': 'str' 1178b495ec6cSPhilippe Mathieu-Daudé } 1179b495ec6cSPhilippe Mathieu-Daudé} 1180b495ec6cSPhilippe Mathieu-Daudé 1181b495ec6cSPhilippe Mathieu-Daudé## 1182b495ec6cSPhilippe Mathieu-Daudé# @VirtioMEMDeviceInfo: 1183b495ec6cSPhilippe Mathieu-Daudé# 1184b495ec6cSPhilippe Mathieu-Daudé# VirtioMEMDevice state information 1185b495ec6cSPhilippe Mathieu-Daudé# 1186b495ec6cSPhilippe Mathieu-Daudé# @id: device's ID 1187b495ec6cSPhilippe Mathieu-Daudé# 1188b495ec6cSPhilippe Mathieu-Daudé# @memaddr: physical address in memory, where device is mapped 1189b495ec6cSPhilippe Mathieu-Daudé# 1190b495ec6cSPhilippe Mathieu-Daudé# @requested-size: the user requested size of the device 1191b495ec6cSPhilippe Mathieu-Daudé# 1192b495ec6cSPhilippe Mathieu-Daudé# @size: the (current) size of memory that the device provides 1193b495ec6cSPhilippe Mathieu-Daudé# 1194b495ec6cSPhilippe Mathieu-Daudé# @max-size: the maximum size of memory that the device can provide 1195b495ec6cSPhilippe Mathieu-Daudé# 1196b495ec6cSPhilippe Mathieu-Daudé# @block-size: the block size of memory that the device provides 1197b495ec6cSPhilippe Mathieu-Daudé# 1198b495ec6cSPhilippe Mathieu-Daudé# @node: NUMA node number where device is assigned to 1199b495ec6cSPhilippe Mathieu-Daudé# 1200b495ec6cSPhilippe Mathieu-Daudé# @memdev: memory backend linked with the region 1201b495ec6cSPhilippe Mathieu-Daudé# 1202b495ec6cSPhilippe Mathieu-Daudé# Since: 5.1 1203b495ec6cSPhilippe Mathieu-Daudé## 1204b495ec6cSPhilippe Mathieu-Daudé{ 'struct': 'VirtioMEMDeviceInfo', 1205b495ec6cSPhilippe Mathieu-Daudé 'data': { '*id': 'str', 1206b495ec6cSPhilippe Mathieu-Daudé 'memaddr': 'size', 1207b495ec6cSPhilippe Mathieu-Daudé 'requested-size': 'size', 1208b495ec6cSPhilippe Mathieu-Daudé 'size': 'size', 1209b495ec6cSPhilippe Mathieu-Daudé 'max-size': 'size', 1210b495ec6cSPhilippe Mathieu-Daudé 'block-size': 'size', 1211b495ec6cSPhilippe Mathieu-Daudé 'node': 'int', 1212b495ec6cSPhilippe Mathieu-Daudé 'memdev': 'str' 1213b495ec6cSPhilippe Mathieu-Daudé } 1214b495ec6cSPhilippe Mathieu-Daudé} 1215b495ec6cSPhilippe Mathieu-Daudé 1216b495ec6cSPhilippe Mathieu-Daudé## 1217b495ec6cSPhilippe Mathieu-Daudé# @MemoryDeviceInfo: 1218b495ec6cSPhilippe Mathieu-Daudé# 1219b495ec6cSPhilippe Mathieu-Daudé# Union containing information about a memory device 1220b495ec6cSPhilippe Mathieu-Daudé# 1221b495ec6cSPhilippe Mathieu-Daudé# nvdimm is included since 2.12. virtio-pmem is included since 4.1. 1222b495ec6cSPhilippe Mathieu-Daudé# virtio-mem is included since 5.1. 1223b495ec6cSPhilippe Mathieu-Daudé# 1224b495ec6cSPhilippe Mathieu-Daudé# Since: 2.1 1225b495ec6cSPhilippe Mathieu-Daudé## 1226b495ec6cSPhilippe Mathieu-Daudé{ 'union': 'MemoryDeviceInfo', 1227b495ec6cSPhilippe Mathieu-Daudé 'data': { 'dimm': 'PCDIMMDeviceInfo', 1228b495ec6cSPhilippe Mathieu-Daudé 'nvdimm': 'PCDIMMDeviceInfo', 1229b495ec6cSPhilippe Mathieu-Daudé 'virtio-pmem': 'VirtioPMEMDeviceInfo', 1230b495ec6cSPhilippe Mathieu-Daudé 'virtio-mem': 'VirtioMEMDeviceInfo' 1231b495ec6cSPhilippe Mathieu-Daudé } 1232b495ec6cSPhilippe Mathieu-Daudé} 1233b495ec6cSPhilippe Mathieu-Daudé 1234b495ec6cSPhilippe Mathieu-Daudé## 1235b495ec6cSPhilippe Mathieu-Daudé# @query-memory-devices: 1236b495ec6cSPhilippe Mathieu-Daudé# 1237b495ec6cSPhilippe Mathieu-Daudé# Lists available memory devices and their state 1238b495ec6cSPhilippe Mathieu-Daudé# 1239b495ec6cSPhilippe Mathieu-Daudé# Since: 2.1 1240b495ec6cSPhilippe Mathieu-Daudé# 1241b495ec6cSPhilippe Mathieu-Daudé# Example: 1242b495ec6cSPhilippe Mathieu-Daudé# 1243b495ec6cSPhilippe Mathieu-Daudé# -> { "execute": "query-memory-devices" } 1244b495ec6cSPhilippe Mathieu-Daudé# <- { "return": [ { "data": 1245b495ec6cSPhilippe Mathieu-Daudé# { "addr": 5368709120, 1246b495ec6cSPhilippe Mathieu-Daudé# "hotpluggable": true, 1247b495ec6cSPhilippe Mathieu-Daudé# "hotplugged": true, 1248b495ec6cSPhilippe Mathieu-Daudé# "id": "d1", 1249b495ec6cSPhilippe Mathieu-Daudé# "memdev": "/objects/memX", 1250b495ec6cSPhilippe Mathieu-Daudé# "node": 0, 1251b495ec6cSPhilippe Mathieu-Daudé# "size": 1073741824, 1252b495ec6cSPhilippe Mathieu-Daudé# "slot": 0}, 1253b495ec6cSPhilippe Mathieu-Daudé# "type": "dimm" 1254b495ec6cSPhilippe Mathieu-Daudé# } ] } 1255b495ec6cSPhilippe Mathieu-Daudé# 1256b495ec6cSPhilippe Mathieu-Daudé## 1257b495ec6cSPhilippe Mathieu-Daudé{ 'command': 'query-memory-devices', 'returns': ['MemoryDeviceInfo'] } 1258b495ec6cSPhilippe Mathieu-Daudé 1259b495ec6cSPhilippe Mathieu-Daudé## 1260b495ec6cSPhilippe Mathieu-Daudé# @MEMORY_DEVICE_SIZE_CHANGE: 1261b495ec6cSPhilippe Mathieu-Daudé# 1262b495ec6cSPhilippe Mathieu-Daudé# Emitted when the size of a memory device changes. Only emitted for memory 1263b495ec6cSPhilippe Mathieu-Daudé# devices that can actually change the size (e.g., virtio-mem due to guest 1264b495ec6cSPhilippe Mathieu-Daudé# action). 1265b495ec6cSPhilippe Mathieu-Daudé# 1266b495ec6cSPhilippe Mathieu-Daudé# @id: device's ID 1267b495ec6cSPhilippe Mathieu-Daudé# @size: the new size of memory that the device provides 1268b495ec6cSPhilippe Mathieu-Daudé# 1269b495ec6cSPhilippe Mathieu-Daudé# Note: this event is rate-limited. 1270b495ec6cSPhilippe Mathieu-Daudé# 1271b495ec6cSPhilippe Mathieu-Daudé# Since: 5.1 1272b495ec6cSPhilippe Mathieu-Daudé# 1273b495ec6cSPhilippe Mathieu-Daudé# Example: 1274b495ec6cSPhilippe Mathieu-Daudé# 1275b495ec6cSPhilippe Mathieu-Daudé# <- { "event": "MEMORY_DEVICE_SIZE_CHANGE", 1276b495ec6cSPhilippe Mathieu-Daudé# "data": { "id": "vm0", "size": 1073741824}, 1277b495ec6cSPhilippe Mathieu-Daudé# "timestamp": { "seconds": 1588168529, "microseconds": 201316 } } 1278b495ec6cSPhilippe Mathieu-Daudé# 1279b495ec6cSPhilippe Mathieu-Daudé## 1280b495ec6cSPhilippe Mathieu-Daudé{ 'event': 'MEMORY_DEVICE_SIZE_CHANGE', 1281b495ec6cSPhilippe Mathieu-Daudé 'data': { '*id': 'str', 'size': 'size' } } 1282b495ec6cSPhilippe Mathieu-Daudé 1283b495ec6cSPhilippe Mathieu-Daudé 1284b495ec6cSPhilippe Mathieu-Daudé## 1285b495ec6cSPhilippe Mathieu-Daudé# @MEM_UNPLUG_ERROR: 1286b495ec6cSPhilippe Mathieu-Daudé# 1287b495ec6cSPhilippe Mathieu-Daudé# Emitted when memory hot unplug error occurs. 1288b495ec6cSPhilippe Mathieu-Daudé# 1289b495ec6cSPhilippe Mathieu-Daudé# @device: device name 1290b495ec6cSPhilippe Mathieu-Daudé# 1291b495ec6cSPhilippe Mathieu-Daudé# @msg: Informative message 1292b495ec6cSPhilippe Mathieu-Daudé# 1293b495ec6cSPhilippe Mathieu-Daudé# Since: 2.4 1294b495ec6cSPhilippe Mathieu-Daudé# 1295b495ec6cSPhilippe Mathieu-Daudé# Example: 1296b495ec6cSPhilippe Mathieu-Daudé# 1297b495ec6cSPhilippe Mathieu-Daudé# <- { "event": "MEM_UNPLUG_ERROR" 1298b495ec6cSPhilippe Mathieu-Daudé# "data": { "device": "dimm1", 1299b495ec6cSPhilippe Mathieu-Daudé# "msg": "acpi: device unplug for unsupported device" 1300b495ec6cSPhilippe Mathieu-Daudé# }, 1301b495ec6cSPhilippe Mathieu-Daudé# "timestamp": { "seconds": 1265044230, "microseconds": 450486 } } 1302b495ec6cSPhilippe Mathieu-Daudé# 1303b495ec6cSPhilippe Mathieu-Daudé## 1304b495ec6cSPhilippe Mathieu-Daudé{ 'event': 'MEM_UNPLUG_ERROR', 1305b495ec6cSPhilippe Mathieu-Daudé 'data': { 'device': 'str', 'msg': 'str' } } 1306