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