xref: /qemu/qapi/machine.json (revision 44e12af7)
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