xref: /qemu/qapi/machine.json (revision 8dbbca5c)
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',
3643692239SMarkus 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#
793157cfaf9SDavid Hildenbrand# @merge: whether memory merge support is enabled
7948ac25c84SMarkus Armbruster#
795157cfaf9SDavid Hildenbrand# @dump: whether memory backend's memory is included in a core dump
7968ac25c84SMarkus Armbruster#
797157cfaf9SDavid Hildenbrand# @prealloc: whether memory was preallocated
7988ac25c84SMarkus Armbruster#
799d300fc54SDavid Hildenbrand# @share: whether memory is private to QEMU or shared (since 6.1)
800d300fc54SDavid Hildenbrand#
80169647f9dSDavid Hildenbrand# @reserve: whether swap space (or huge pages) was reserved if applicable.
80269647f9dSDavid Hildenbrand#           This corresponds to the user configuration and not the actual
80369647f9dSDavid Hildenbrand#           behavior implemented in the OS to perform the reservation.
80469647f9dSDavid Hildenbrand#           For example, Linux will never reserve swap space for shared
80569647f9dSDavid Hildenbrand#           file mappings. (since 6.1)
80669647f9dSDavid Hildenbrand#
8078ac25c84SMarkus Armbruster# @host-nodes: host nodes for its memory policy
8088ac25c84SMarkus Armbruster#
8098ac25c84SMarkus Armbruster# @policy: memory policy of memory backend
8108ac25c84SMarkus Armbruster#
8118ac25c84SMarkus Armbruster# Since: 2.1
8128ac25c84SMarkus Armbruster##
8138ac25c84SMarkus Armbruster{ 'struct': 'Memdev',
8148ac25c84SMarkus Armbruster  'data': {
8158ac25c84SMarkus Armbruster    '*id':        'str',
8168ac25c84SMarkus Armbruster    'size':       'size',
8178ac25c84SMarkus Armbruster    'merge':      'bool',
8188ac25c84SMarkus Armbruster    'dump':       'bool',
8198ac25c84SMarkus Armbruster    'prealloc':   'bool',
820d300fc54SDavid Hildenbrand    'share':      'bool',
82169647f9dSDavid Hildenbrand    '*reserve':    'bool',
8228ac25c84SMarkus Armbruster    'host-nodes': ['uint16'],
8238ac25c84SMarkus Armbruster    'policy':     'HostMemPolicy' }}
8248ac25c84SMarkus Armbruster
8258ac25c84SMarkus Armbruster##
8268ac25c84SMarkus Armbruster# @query-memdev:
8278ac25c84SMarkus Armbruster#
8288ac25c84SMarkus Armbruster# Returns information for all memory backends.
8298ac25c84SMarkus Armbruster#
8308ac25c84SMarkus Armbruster# Returns: a list of @Memdev.
8318ac25c84SMarkus Armbruster#
8328ac25c84SMarkus Armbruster# Since: 2.1
8338ac25c84SMarkus Armbruster#
8348ac25c84SMarkus Armbruster# Example:
8358ac25c84SMarkus Armbruster#
8368ac25c84SMarkus Armbruster# -> { "execute": "query-memdev" }
8378ac25c84SMarkus Armbruster# <- { "return": [
8388ac25c84SMarkus Armbruster#        {
8398ac25c84SMarkus Armbruster#          "id": "mem1",
8408ac25c84SMarkus Armbruster#          "size": 536870912,
8418ac25c84SMarkus Armbruster#          "merge": false,
8428ac25c84SMarkus Armbruster#          "dump": true,
8438ac25c84SMarkus Armbruster#          "prealloc": false,
8448ac25c84SMarkus Armbruster#          "host-nodes": [0, 1],
8458ac25c84SMarkus Armbruster#          "policy": "bind"
8468ac25c84SMarkus Armbruster#        },
8478ac25c84SMarkus Armbruster#        {
8488ac25c84SMarkus Armbruster#          "size": 536870912,
8498ac25c84SMarkus Armbruster#          "merge": false,
8508ac25c84SMarkus Armbruster#          "dump": true,
8518ac25c84SMarkus Armbruster#          "prealloc": true,
8528ac25c84SMarkus Armbruster#          "host-nodes": [2, 3],
8538ac25c84SMarkus Armbruster#          "policy": "preferred"
8548ac25c84SMarkus Armbruster#        }
8558ac25c84SMarkus Armbruster#      ]
8568ac25c84SMarkus Armbruster#    }
8578ac25c84SMarkus Armbruster#
8588ac25c84SMarkus Armbruster##
8598ac25c84SMarkus Armbruster{ 'command': 'query-memdev', 'returns': ['Memdev'], 'allow-preconfig': true }
8608ac25c84SMarkus Armbruster
8618ac25c84SMarkus Armbruster##
8628ac25c84SMarkus Armbruster# @CpuInstanceProperties:
8638ac25c84SMarkus Armbruster#
8648ac25c84SMarkus Armbruster# List of properties to be used for hotplugging a CPU instance,
8658ac25c84SMarkus Armbruster# it should be passed by management with device_add command when
8668ac25c84SMarkus Armbruster# a CPU is being hotplugged.
8678ac25c84SMarkus Armbruster#
8688ac25c84SMarkus Armbruster# @node-id: NUMA node ID the CPU belongs to
8698ac25c84SMarkus Armbruster# @socket-id: socket number within node/board the CPU belongs to
870176d2cdaSLike Xu# @die-id: die number within node/board the CPU belongs to (Since 4.1)
8716ac3f1e7SPeter Maydell# @core-id: core number within die the CPU belongs to
8726ac3f1e7SPeter Maydell# @thread-id: thread number within core the CPU belongs to
8738ac25c84SMarkus Armbruster#
874176d2cdaSLike Xu# Note: currently there are 5 properties that could be present
8758ac25c84SMarkus Armbruster#       but management should be prepared to pass through other
8768ac25c84SMarkus Armbruster#       properties with device_add command to allow for future
8778ac25c84SMarkus Armbruster#       interface extension. This also requires the filed names to be kept in
8788ac25c84SMarkus Armbruster#       sync with the properties passed to -device/device_add.
8798ac25c84SMarkus Armbruster#
8808ac25c84SMarkus Armbruster# Since: 2.7
8818ac25c84SMarkus Armbruster##
8828ac25c84SMarkus Armbruster{ 'struct': 'CpuInstanceProperties',
8838ac25c84SMarkus Armbruster  'data': { '*node-id': 'int',
8848ac25c84SMarkus Armbruster            '*socket-id': 'int',
885176d2cdaSLike Xu            '*die-id': 'int',
8868ac25c84SMarkus Armbruster            '*core-id': 'int',
8878ac25c84SMarkus Armbruster            '*thread-id': 'int'
8888ac25c84SMarkus Armbruster  }
8898ac25c84SMarkus Armbruster}
8908ac25c84SMarkus Armbruster
8918ac25c84SMarkus Armbruster##
8928ac25c84SMarkus Armbruster# @HotpluggableCPU:
8938ac25c84SMarkus Armbruster#
8948ac25c84SMarkus Armbruster# @type: CPU object type for usage with device_add command
8958ac25c84SMarkus Armbruster# @props: list of properties to be used for hotplugging CPU
8968ac25c84SMarkus Armbruster# @vcpus-count: number of logical VCPU threads @HotpluggableCPU provides
8978ac25c84SMarkus Armbruster# @qom-path: link to existing CPU object if CPU is present or
8988ac25c84SMarkus Armbruster#            omitted if CPU is not present.
8998ac25c84SMarkus Armbruster#
9008ac25c84SMarkus Armbruster# Since: 2.7
9018ac25c84SMarkus Armbruster##
9028ac25c84SMarkus Armbruster{ 'struct': 'HotpluggableCPU',
9038ac25c84SMarkus Armbruster  'data': { 'type': 'str',
9048ac25c84SMarkus Armbruster            'vcpus-count': 'int',
9058ac25c84SMarkus Armbruster            'props': 'CpuInstanceProperties',
9068ac25c84SMarkus Armbruster            '*qom-path': 'str'
9078ac25c84SMarkus Armbruster          }
9088ac25c84SMarkus Armbruster}
9098ac25c84SMarkus Armbruster
9108ac25c84SMarkus Armbruster##
9118ac25c84SMarkus Armbruster# @query-hotpluggable-cpus:
9128ac25c84SMarkus Armbruster#
9138ac25c84SMarkus Armbruster# TODO: Better documentation; currently there is none.
9148ac25c84SMarkus Armbruster#
9158ac25c84SMarkus Armbruster# Returns: a list of HotpluggableCPU objects.
9168ac25c84SMarkus Armbruster#
9178ac25c84SMarkus Armbruster# Since: 2.7
9188ac25c84SMarkus Armbruster#
9198ac25c84SMarkus Armbruster# Example:
9208ac25c84SMarkus Armbruster#
9218ac25c84SMarkus Armbruster# For pseries machine type started with -smp 2,cores=2,maxcpus=4 -cpu POWER8:
9228ac25c84SMarkus Armbruster#
9238ac25c84SMarkus Armbruster# -> { "execute": "query-hotpluggable-cpus" }
9248ac25c84SMarkus Armbruster# <- {"return": [
9258ac25c84SMarkus Armbruster#      { "props": { "core": 8 }, "type": "POWER8-spapr-cpu-core",
9268ac25c84SMarkus Armbruster#        "vcpus-count": 1 },
9278ac25c84SMarkus Armbruster#      { "props": { "core": 0 }, "type": "POWER8-spapr-cpu-core",
9288ac25c84SMarkus Armbruster#        "vcpus-count": 1, "qom-path": "/machine/unattached/device[0]"}
9298ac25c84SMarkus Armbruster#    ]}'
9308ac25c84SMarkus Armbruster#
9318ac25c84SMarkus Armbruster# For pc machine type started with -smp 1,maxcpus=2:
9328ac25c84SMarkus Armbruster#
9338ac25c84SMarkus Armbruster# -> { "execute": "query-hotpluggable-cpus" }
9348ac25c84SMarkus Armbruster# <- {"return": [
9358ac25c84SMarkus Armbruster#      {
9368ac25c84SMarkus Armbruster#         "type": "qemu64-x86_64-cpu", "vcpus-count": 1,
9378ac25c84SMarkus Armbruster#         "props": {"core-id": 0, "socket-id": 1, "thread-id": 0}
9388ac25c84SMarkus Armbruster#      },
9398ac25c84SMarkus Armbruster#      {
9408ac25c84SMarkus Armbruster#         "qom-path": "/machine/unattached/device[0]",
9418ac25c84SMarkus Armbruster#         "type": "qemu64-x86_64-cpu", "vcpus-count": 1,
9428ac25c84SMarkus Armbruster#         "props": {"core-id": 0, "socket-id": 0, "thread-id": 0}
9438ac25c84SMarkus Armbruster#      }
9448ac25c84SMarkus Armbruster#    ]}
9458ac25c84SMarkus Armbruster#
9468ac25c84SMarkus Armbruster# For s390x-virtio-ccw machine type started with -smp 1,maxcpus=2 -cpu qemu
9478ac25c84SMarkus Armbruster# (Since: 2.11):
9488ac25c84SMarkus Armbruster#
9498ac25c84SMarkus Armbruster# -> { "execute": "query-hotpluggable-cpus" }
9508ac25c84SMarkus Armbruster# <- {"return": [
9518ac25c84SMarkus Armbruster#      {
9528ac25c84SMarkus Armbruster#         "type": "qemu-s390x-cpu", "vcpus-count": 1,
9538ac25c84SMarkus Armbruster#         "props": { "core-id": 1 }
9548ac25c84SMarkus Armbruster#      },
9558ac25c84SMarkus Armbruster#      {
9568ac25c84SMarkus Armbruster#         "qom-path": "/machine/unattached/device[0]",
9578ac25c84SMarkus Armbruster#         "type": "qemu-s390x-cpu", "vcpus-count": 1,
9588ac25c84SMarkus Armbruster#         "props": { "core-id": 0 }
9598ac25c84SMarkus Armbruster#      }
9608ac25c84SMarkus Armbruster#    ]}
9618ac25c84SMarkus Armbruster#
9628ac25c84SMarkus Armbruster##
9638ac25c84SMarkus Armbruster{ 'command': 'query-hotpluggable-cpus', 'returns': ['HotpluggableCPU'],
9648ac25c84SMarkus Armbruster             'allow-preconfig': true }
9658ac25c84SMarkus Armbruster
9668ac25c84SMarkus Armbruster##
9678ac25c84SMarkus Armbruster# @set-numa-node:
9688ac25c84SMarkus Armbruster#
9698ac25c84SMarkus Armbruster# Runtime equivalent of '-numa' CLI option, available at
9708ac25c84SMarkus Armbruster# preconfigure stage to configure numa mapping before initializing
9718ac25c84SMarkus Armbruster# machine.
9728ac25c84SMarkus Armbruster#
9738ac25c84SMarkus Armbruster# Since 3.0
9748ac25c84SMarkus Armbruster##
9758ac25c84SMarkus Armbruster{ 'command': 'set-numa-node', 'boxed': true,
9768ac25c84SMarkus Armbruster  'data': 'NumaOptions',
9778ac25c84SMarkus Armbruster  'allow-preconfig': true
9788ac25c84SMarkus Armbruster}
979a83e24baSPhilippe Mathieu-Daudé
980a83e24baSPhilippe Mathieu-Daudé##
981a83e24baSPhilippe Mathieu-Daudé# @balloon:
982a83e24baSPhilippe Mathieu-Daudé#
983a83e24baSPhilippe Mathieu-Daudé# Request the balloon driver to change its balloon size.
984a83e24baSPhilippe Mathieu-Daudé#
985826bd069SPeter Maydell# @value: the target logical size of the VM in bytes.
986a83e24baSPhilippe Mathieu-Daudé#         We can deduce the size of the balloon using this formula:
987826bd069SPeter Maydell#
988a83e24baSPhilippe Mathieu-Daudé#            logical_vm_size = vm_ram_size - balloon_size
989826bd069SPeter Maydell#
990a83e24baSPhilippe Mathieu-Daudé#         From it we have: balloon_size = vm_ram_size - @value
991a83e24baSPhilippe Mathieu-Daudé#
992a83e24baSPhilippe Mathieu-Daudé# Returns: - Nothing on success
993a83e24baSPhilippe Mathieu-Daudé#          - If the balloon driver is enabled but not functional because the KVM
994a83e24baSPhilippe Mathieu-Daudé#            kernel module cannot support it, KvmMissingCap
995a83e24baSPhilippe Mathieu-Daudé#          - If no balloon device is present, DeviceNotActive
996a83e24baSPhilippe Mathieu-Daudé#
997a83e24baSPhilippe Mathieu-Daudé# Notes: This command just issues a request to the guest.  When it returns,
998a83e24baSPhilippe Mathieu-Daudé#        the balloon size may not have changed.  A guest can change the balloon
999a83e24baSPhilippe Mathieu-Daudé#        size independent of this command.
1000a83e24baSPhilippe Mathieu-Daudé#
10019bc6e893SMarkus Armbruster# Since: 0.14
1002a83e24baSPhilippe Mathieu-Daudé#
1003a83e24baSPhilippe Mathieu-Daudé# Example:
1004a83e24baSPhilippe Mathieu-Daudé#
1005a83e24baSPhilippe Mathieu-Daudé# -> { "execute": "balloon", "arguments": { "value": 536870912 } }
1006a83e24baSPhilippe Mathieu-Daudé# <- { "return": {} }
1007a83e24baSPhilippe Mathieu-Daudé#
1008a83e24baSPhilippe Mathieu-Daudé# With a 2.5GiB guest this command inflated the ballon to 3GiB.
1009a83e24baSPhilippe Mathieu-Daudé#
1010a83e24baSPhilippe Mathieu-Daudé##
1011a83e24baSPhilippe Mathieu-Daudé{ 'command': 'balloon', 'data': {'value': 'int'} }
1012a83e24baSPhilippe Mathieu-Daudé
1013a83e24baSPhilippe Mathieu-Daudé##
1014a83e24baSPhilippe Mathieu-Daudé# @BalloonInfo:
1015a83e24baSPhilippe Mathieu-Daudé#
1016a83e24baSPhilippe Mathieu-Daudé# Information about the guest balloon device.
1017a83e24baSPhilippe Mathieu-Daudé#
1018a83e24baSPhilippe Mathieu-Daudé# @actual: the logical size of the VM in bytes
1019a83e24baSPhilippe Mathieu-Daudé#          Formula used: logical_vm_size = vm_ram_size - balloon_size
1020a83e24baSPhilippe Mathieu-Daudé#
10219bc6e893SMarkus Armbruster# Since: 0.14
1022a83e24baSPhilippe Mathieu-Daudé#
1023a83e24baSPhilippe Mathieu-Daudé##
1024a83e24baSPhilippe Mathieu-Daudé{ 'struct': 'BalloonInfo', 'data': {'actual': 'int' } }
1025a83e24baSPhilippe Mathieu-Daudé
1026a83e24baSPhilippe Mathieu-Daudé##
1027a83e24baSPhilippe Mathieu-Daudé# @query-balloon:
1028a83e24baSPhilippe Mathieu-Daudé#
1029a83e24baSPhilippe Mathieu-Daudé# Return information about the balloon device.
1030a83e24baSPhilippe Mathieu-Daudé#
1031a83e24baSPhilippe Mathieu-Daudé# Returns: - @BalloonInfo on success
1032a83e24baSPhilippe Mathieu-Daudé#          - If the balloon driver is enabled but not functional because the KVM
1033a83e24baSPhilippe Mathieu-Daudé#            kernel module cannot support it, KvmMissingCap
1034a83e24baSPhilippe Mathieu-Daudé#          - If no balloon device is present, DeviceNotActive
1035a83e24baSPhilippe Mathieu-Daudé#
10369bc6e893SMarkus Armbruster# Since: 0.14
1037a83e24baSPhilippe Mathieu-Daudé#
1038a83e24baSPhilippe Mathieu-Daudé# Example:
1039a83e24baSPhilippe Mathieu-Daudé#
1040a83e24baSPhilippe Mathieu-Daudé# -> { "execute": "query-balloon" }
1041a83e24baSPhilippe Mathieu-Daudé# <- { "return": {
1042a83e24baSPhilippe Mathieu-Daudé#          "actual": 1073741824,
1043a83e24baSPhilippe Mathieu-Daudé#       }
1044a83e24baSPhilippe Mathieu-Daudé#    }
1045a83e24baSPhilippe Mathieu-Daudé#
1046a83e24baSPhilippe Mathieu-Daudé##
1047a83e24baSPhilippe Mathieu-Daudé{ 'command': 'query-balloon', 'returns': 'BalloonInfo' }
1048a83e24baSPhilippe Mathieu-Daudé
1049a83e24baSPhilippe Mathieu-Daudé##
1050a83e24baSPhilippe Mathieu-Daudé# @BALLOON_CHANGE:
1051a83e24baSPhilippe Mathieu-Daudé#
1052a83e24baSPhilippe Mathieu-Daudé# Emitted when the guest changes the actual BALLOON level. This value is
1053a83e24baSPhilippe Mathieu-Daudé# equivalent to the @actual field return by the 'query-balloon' command
1054a83e24baSPhilippe Mathieu-Daudé#
1055a83e24baSPhilippe Mathieu-Daudé# @actual: the logical size of the VM in bytes
1056a83e24baSPhilippe Mathieu-Daudé#          Formula used: logical_vm_size = vm_ram_size - balloon_size
1057a83e24baSPhilippe Mathieu-Daudé#
1058a83e24baSPhilippe Mathieu-Daudé# Note: this event is rate-limited.
1059a83e24baSPhilippe Mathieu-Daudé#
1060a83e24baSPhilippe Mathieu-Daudé# Since: 1.2
1061a83e24baSPhilippe Mathieu-Daudé#
1062a83e24baSPhilippe Mathieu-Daudé# Example:
1063a83e24baSPhilippe Mathieu-Daudé#
1064a83e24baSPhilippe Mathieu-Daudé# <- { "event": "BALLOON_CHANGE",
1065a83e24baSPhilippe Mathieu-Daudé#      "data": { "actual": 944766976 },
1066a83e24baSPhilippe Mathieu-Daudé#      "timestamp": { "seconds": 1267020223, "microseconds": 435656 } }
1067a83e24baSPhilippe Mathieu-Daudé#
1068a83e24baSPhilippe Mathieu-Daudé##
1069a83e24baSPhilippe Mathieu-Daudé{ 'event': 'BALLOON_CHANGE',
1070a83e24baSPhilippe Mathieu-Daudé  'data': { 'actual': 'int' } }
1071b495ec6cSPhilippe Mathieu-Daudé
1072b495ec6cSPhilippe Mathieu-Daudé##
1073b495ec6cSPhilippe Mathieu-Daudé# @MemoryInfo:
1074b495ec6cSPhilippe Mathieu-Daudé#
1075b495ec6cSPhilippe Mathieu-Daudé# Actual memory information in bytes.
1076b495ec6cSPhilippe Mathieu-Daudé#
1077b495ec6cSPhilippe Mathieu-Daudé# @base-memory: size of "base" memory specified with command line
1078b495ec6cSPhilippe Mathieu-Daudé#               option -m.
1079b495ec6cSPhilippe Mathieu-Daudé#
1080b495ec6cSPhilippe Mathieu-Daudé# @plugged-memory: size of memory that can be hot-unplugged. This field
1081b495ec6cSPhilippe Mathieu-Daudé#                  is omitted if target doesn't support memory hotplug
1082b495ec6cSPhilippe Mathieu-Daudé#                  (i.e. CONFIG_MEM_DEVICE not defined at build time).
1083b495ec6cSPhilippe Mathieu-Daudé#
10849bc6e893SMarkus Armbruster# Since: 2.11
1085b495ec6cSPhilippe Mathieu-Daudé##
1086b495ec6cSPhilippe Mathieu-Daudé{ 'struct': 'MemoryInfo',
1087b495ec6cSPhilippe Mathieu-Daudé  'data'  : { 'base-memory': 'size', '*plugged-memory': 'size' } }
1088b495ec6cSPhilippe Mathieu-Daudé
1089b495ec6cSPhilippe Mathieu-Daudé##
1090b495ec6cSPhilippe Mathieu-Daudé# @query-memory-size-summary:
1091b495ec6cSPhilippe Mathieu-Daudé#
1092b495ec6cSPhilippe Mathieu-Daudé# Return the amount of initially allocated and present hotpluggable (if
1093b495ec6cSPhilippe Mathieu-Daudé# enabled) memory in bytes.
1094b495ec6cSPhilippe Mathieu-Daudé#
1095b495ec6cSPhilippe Mathieu-Daudé# Example:
1096b495ec6cSPhilippe Mathieu-Daudé#
1097b495ec6cSPhilippe Mathieu-Daudé# -> { "execute": "query-memory-size-summary" }
1098b495ec6cSPhilippe Mathieu-Daudé# <- { "return": { "base-memory": 4294967296, "plugged-memory": 0 } }
1099b495ec6cSPhilippe Mathieu-Daudé#
11009bc6e893SMarkus Armbruster# Since: 2.11
1101b495ec6cSPhilippe Mathieu-Daudé##
1102b495ec6cSPhilippe Mathieu-Daudé{ 'command': 'query-memory-size-summary', 'returns': 'MemoryInfo' }
1103b495ec6cSPhilippe Mathieu-Daudé
1104b495ec6cSPhilippe Mathieu-Daudé##
1105b495ec6cSPhilippe Mathieu-Daudé# @PCDIMMDeviceInfo:
1106b495ec6cSPhilippe Mathieu-Daudé#
1107b495ec6cSPhilippe Mathieu-Daudé# PCDIMMDevice state information
1108b495ec6cSPhilippe Mathieu-Daudé#
1109b495ec6cSPhilippe Mathieu-Daudé# @id: device's ID
1110b495ec6cSPhilippe Mathieu-Daudé#
1111b495ec6cSPhilippe Mathieu-Daudé# @addr: physical address, where device is mapped
1112b495ec6cSPhilippe Mathieu-Daudé#
1113b495ec6cSPhilippe Mathieu-Daudé# @size: size of memory that the device provides
1114b495ec6cSPhilippe Mathieu-Daudé#
1115b495ec6cSPhilippe Mathieu-Daudé# @slot: slot number at which device is plugged in
1116b495ec6cSPhilippe Mathieu-Daudé#
1117b495ec6cSPhilippe Mathieu-Daudé# @node: NUMA node number where device is plugged in
1118b495ec6cSPhilippe Mathieu-Daudé#
1119b495ec6cSPhilippe Mathieu-Daudé# @memdev: memory backend linked with device
1120b495ec6cSPhilippe Mathieu-Daudé#
1121b495ec6cSPhilippe Mathieu-Daudé# @hotplugged: true if device was hotplugged
1122b495ec6cSPhilippe Mathieu-Daudé#
1123b495ec6cSPhilippe Mathieu-Daudé# @hotpluggable: true if device if could be added/removed while machine is running
1124b495ec6cSPhilippe Mathieu-Daudé#
1125b495ec6cSPhilippe Mathieu-Daudé# Since: 2.1
1126b495ec6cSPhilippe Mathieu-Daudé##
1127b495ec6cSPhilippe Mathieu-Daudé{ 'struct': 'PCDIMMDeviceInfo',
1128b495ec6cSPhilippe Mathieu-Daudé  'data': { '*id': 'str',
1129b495ec6cSPhilippe Mathieu-Daudé            'addr': 'int',
1130b495ec6cSPhilippe Mathieu-Daudé            'size': 'int',
1131b495ec6cSPhilippe Mathieu-Daudé            'slot': 'int',
1132b495ec6cSPhilippe Mathieu-Daudé            'node': 'int',
1133b495ec6cSPhilippe Mathieu-Daudé            'memdev': 'str',
1134b495ec6cSPhilippe Mathieu-Daudé            'hotplugged': 'bool',
1135b495ec6cSPhilippe Mathieu-Daudé            'hotpluggable': 'bool'
1136b495ec6cSPhilippe Mathieu-Daudé          }
1137b495ec6cSPhilippe Mathieu-Daudé}
1138b495ec6cSPhilippe Mathieu-Daudé
1139b495ec6cSPhilippe Mathieu-Daudé##
1140b495ec6cSPhilippe Mathieu-Daudé# @VirtioPMEMDeviceInfo:
1141b495ec6cSPhilippe Mathieu-Daudé#
1142b495ec6cSPhilippe Mathieu-Daudé# VirtioPMEM state information
1143b495ec6cSPhilippe Mathieu-Daudé#
1144b495ec6cSPhilippe Mathieu-Daudé# @id: device's ID
1145b495ec6cSPhilippe Mathieu-Daudé#
1146b495ec6cSPhilippe Mathieu-Daudé# @memaddr: physical address in memory, where device is mapped
1147b495ec6cSPhilippe Mathieu-Daudé#
1148b495ec6cSPhilippe Mathieu-Daudé# @size: size of memory that the device provides
1149b495ec6cSPhilippe Mathieu-Daudé#
1150b495ec6cSPhilippe Mathieu-Daudé# @memdev: memory backend linked with device
1151b495ec6cSPhilippe Mathieu-Daudé#
1152b495ec6cSPhilippe Mathieu-Daudé# Since: 4.1
1153b495ec6cSPhilippe Mathieu-Daudé##
1154b495ec6cSPhilippe Mathieu-Daudé{ 'struct': 'VirtioPMEMDeviceInfo',
1155b495ec6cSPhilippe Mathieu-Daudé  'data': { '*id': 'str',
1156b495ec6cSPhilippe Mathieu-Daudé            'memaddr': 'size',
1157b495ec6cSPhilippe Mathieu-Daudé            'size': 'size',
1158b495ec6cSPhilippe Mathieu-Daudé            'memdev': 'str'
1159b495ec6cSPhilippe Mathieu-Daudé          }
1160b495ec6cSPhilippe Mathieu-Daudé}
1161b495ec6cSPhilippe Mathieu-Daudé
1162b495ec6cSPhilippe Mathieu-Daudé##
1163b495ec6cSPhilippe Mathieu-Daudé# @VirtioMEMDeviceInfo:
1164b495ec6cSPhilippe Mathieu-Daudé#
1165b495ec6cSPhilippe Mathieu-Daudé# VirtioMEMDevice state information
1166b495ec6cSPhilippe Mathieu-Daudé#
1167b495ec6cSPhilippe Mathieu-Daudé# @id: device's ID
1168b495ec6cSPhilippe Mathieu-Daudé#
1169b495ec6cSPhilippe Mathieu-Daudé# @memaddr: physical address in memory, where device is mapped
1170b495ec6cSPhilippe Mathieu-Daudé#
1171b495ec6cSPhilippe Mathieu-Daudé# @requested-size: the user requested size of the device
1172b495ec6cSPhilippe Mathieu-Daudé#
1173b495ec6cSPhilippe Mathieu-Daudé# @size: the (current) size of memory that the device provides
1174b495ec6cSPhilippe Mathieu-Daudé#
1175b495ec6cSPhilippe Mathieu-Daudé# @max-size: the maximum size of memory that the device can provide
1176b495ec6cSPhilippe Mathieu-Daudé#
1177b495ec6cSPhilippe Mathieu-Daudé# @block-size: the block size of memory that the device provides
1178b495ec6cSPhilippe Mathieu-Daudé#
1179b495ec6cSPhilippe Mathieu-Daudé# @node: NUMA node number where device is assigned to
1180b495ec6cSPhilippe Mathieu-Daudé#
1181b495ec6cSPhilippe Mathieu-Daudé# @memdev: memory backend linked with the region
1182b495ec6cSPhilippe Mathieu-Daudé#
1183b495ec6cSPhilippe Mathieu-Daudé# Since: 5.1
1184b495ec6cSPhilippe Mathieu-Daudé##
1185b495ec6cSPhilippe Mathieu-Daudé{ 'struct': 'VirtioMEMDeviceInfo',
1186b495ec6cSPhilippe Mathieu-Daudé  'data': { '*id': 'str',
1187b495ec6cSPhilippe Mathieu-Daudé            'memaddr': 'size',
1188b495ec6cSPhilippe Mathieu-Daudé            'requested-size': 'size',
1189b495ec6cSPhilippe Mathieu-Daudé            'size': 'size',
1190b495ec6cSPhilippe Mathieu-Daudé            'max-size': 'size',
1191b495ec6cSPhilippe Mathieu-Daudé            'block-size': 'size',
1192b495ec6cSPhilippe Mathieu-Daudé            'node': 'int',
1193b495ec6cSPhilippe Mathieu-Daudé            'memdev': 'str'
1194b495ec6cSPhilippe Mathieu-Daudé          }
1195b495ec6cSPhilippe Mathieu-Daudé}
1196b495ec6cSPhilippe Mathieu-Daudé
1197b495ec6cSPhilippe Mathieu-Daudé##
1198a7c565a9SYang Zhong# @SgxEPCDeviceInfo:
1199a7c565a9SYang Zhong#
1200a7c565a9SYang Zhong# Sgx EPC state information
1201a7c565a9SYang Zhong#
1202a7c565a9SYang Zhong# @id: device's ID
1203a7c565a9SYang Zhong#
1204a7c565a9SYang Zhong# @memaddr: physical address in memory, where device is mapped
1205a7c565a9SYang Zhong#
1206a7c565a9SYang Zhong# @size: size of memory that the device provides
1207a7c565a9SYang Zhong#
1208a7c565a9SYang Zhong# @memdev: memory backend linked with device
1209a7c565a9SYang Zhong#
1210a7c565a9SYang Zhong# Since: 6.2
1211a7c565a9SYang Zhong##
1212a7c565a9SYang Zhong{ 'struct': 'SgxEPCDeviceInfo',
1213a7c565a9SYang Zhong  'data': { '*id': 'str',
1214a7c565a9SYang Zhong            'memaddr': 'size',
1215a7c565a9SYang Zhong            'size': 'size',
1216a7c565a9SYang Zhong            'memdev': 'str'
1217a7c565a9SYang Zhong          }
1218a7c565a9SYang Zhong}
1219a7c565a9SYang Zhong
1220a7c565a9SYang Zhong##
1221db6a252bSMarkus Armbruster# @MemoryDeviceInfoKind:
1222db6a252bSMarkus Armbruster#
1223db6a252bSMarkus Armbruster# Since: 2.1
1224db6a252bSMarkus Armbruster##
1225db6a252bSMarkus Armbruster{ 'enum': 'MemoryDeviceInfoKind',
1226a7c565a9SYang Zhong  'data': [ 'dimm', 'nvdimm', 'virtio-pmem', 'virtio-mem', 'sgx-epc' ] }
1227db6a252bSMarkus Armbruster
1228db6a252bSMarkus Armbruster##
1229db6a252bSMarkus Armbruster# @PCDIMMDeviceInfoWrapper:
1230db6a252bSMarkus Armbruster#
1231db6a252bSMarkus Armbruster# Since: 2.1
1232db6a252bSMarkus Armbruster##
1233db6a252bSMarkus Armbruster{ 'struct': 'PCDIMMDeviceInfoWrapper',
1234db6a252bSMarkus Armbruster  'data': { 'data': 'PCDIMMDeviceInfo' } }
1235db6a252bSMarkus Armbruster
1236db6a252bSMarkus Armbruster##
1237db6a252bSMarkus Armbruster# @VirtioPMEMDeviceInfoWrapper:
1238db6a252bSMarkus Armbruster#
1239db6a252bSMarkus Armbruster# Since: 2.1
1240db6a252bSMarkus Armbruster##
1241db6a252bSMarkus Armbruster{ 'struct': 'VirtioPMEMDeviceInfoWrapper',
1242db6a252bSMarkus Armbruster  'data': { 'data': 'VirtioPMEMDeviceInfo' } }
1243db6a252bSMarkus Armbruster
1244db6a252bSMarkus Armbruster##
1245db6a252bSMarkus Armbruster# @VirtioMEMDeviceInfoWrapper:
1246db6a252bSMarkus Armbruster#
1247db6a252bSMarkus Armbruster# Since: 2.1
1248db6a252bSMarkus Armbruster##
1249db6a252bSMarkus Armbruster{ 'struct': 'VirtioMEMDeviceInfoWrapper',
1250db6a252bSMarkus Armbruster  'data': { 'data': 'VirtioMEMDeviceInfo' } }
1251db6a252bSMarkus Armbruster
1252db6a252bSMarkus Armbruster##
1253a7c565a9SYang Zhong# @SgxEPCDeviceInfoWrapper:
1254a7c565a9SYang Zhong#
1255a7c565a9SYang Zhong# Since: 6.2
1256a7c565a9SYang Zhong##
1257a7c565a9SYang Zhong{ 'struct': 'SgxEPCDeviceInfoWrapper',
1258a7c565a9SYang Zhong  'data': { 'data': 'SgxEPCDeviceInfo' } }
1259a7c565a9SYang Zhong
1260b495ec6cSPhilippe Mathieu-Daudé##
1261b495ec6cSPhilippe Mathieu-Daudé# @MemoryDeviceInfo:
1262b495ec6cSPhilippe Mathieu-Daudé#
1263b495ec6cSPhilippe Mathieu-Daudé# Union containing information about a memory device
1264b495ec6cSPhilippe Mathieu-Daudé#
1265b495ec6cSPhilippe Mathieu-Daudé# nvdimm is included since 2.12. virtio-pmem is included since 4.1.
1266a7c565a9SYang Zhong# virtio-mem is included since 5.1. sgx-epc is included since 6.2.
1267b495ec6cSPhilippe Mathieu-Daudé#
1268b495ec6cSPhilippe Mathieu-Daudé# Since: 2.1
1269b495ec6cSPhilippe Mathieu-Daudé##
1270b495ec6cSPhilippe Mathieu-Daudé{ 'union': 'MemoryDeviceInfo',
1271db6a252bSMarkus Armbruster  'base': { 'type': 'MemoryDeviceInfoKind' },
1272db6a252bSMarkus Armbruster  'discriminator': 'type',
1273db6a252bSMarkus Armbruster  'data': { 'dimm': 'PCDIMMDeviceInfoWrapper',
1274db6a252bSMarkus Armbruster            'nvdimm': 'PCDIMMDeviceInfoWrapper',
1275db6a252bSMarkus Armbruster            'virtio-pmem': 'VirtioPMEMDeviceInfoWrapper',
1276a7c565a9SYang Zhong            'virtio-mem': 'VirtioMEMDeviceInfoWrapper',
1277a7c565a9SYang Zhong            'sgx-epc': 'SgxEPCDeviceInfoWrapper'
1278b495ec6cSPhilippe Mathieu-Daudé          }
1279b495ec6cSPhilippe Mathieu-Daudé}
1280b495ec6cSPhilippe Mathieu-Daudé
1281b495ec6cSPhilippe Mathieu-Daudé##
1282dfce81f1SSean Christopherson# @SgxEPC:
1283dfce81f1SSean Christopherson#
1284dfce81f1SSean Christopherson# Sgx EPC cmdline information
1285dfce81f1SSean Christopherson#
1286dfce81f1SSean Christopherson# @memdev: memory backend linked with device
1287dfce81f1SSean Christopherson#
1288dfce81f1SSean Christopherson# Since: 6.2
1289dfce81f1SSean Christopherson##
1290dfce81f1SSean Christopherson{ 'struct': 'SgxEPC',
1291dfce81f1SSean Christopherson  'data': { 'memdev': 'str' } }
1292dfce81f1SSean Christopherson
1293dfce81f1SSean Christopherson##
1294dfce81f1SSean Christopherson# @SgxEPCProperties:
1295dfce81f1SSean Christopherson#
1296dfce81f1SSean Christopherson# SGX properties of machine types.
1297dfce81f1SSean Christopherson#
1298dfce81f1SSean Christopherson# @sgx-epc: list of ids of memory-backend-epc objects.
1299dfce81f1SSean Christopherson#
1300dfce81f1SSean Christopherson# Since: 6.2
1301dfce81f1SSean Christopherson##
1302dfce81f1SSean Christopherson{ 'struct': 'SgxEPCProperties',
1303dfce81f1SSean Christopherson  'data': { 'sgx-epc': ['SgxEPC'] }
1304dfce81f1SSean Christopherson}
1305dfce81f1SSean Christopherson
1306dfce81f1SSean Christopherson##
1307b495ec6cSPhilippe Mathieu-Daudé# @query-memory-devices:
1308b495ec6cSPhilippe Mathieu-Daudé#
1309b495ec6cSPhilippe Mathieu-Daudé# Lists available memory devices and their state
1310b495ec6cSPhilippe Mathieu-Daudé#
1311b495ec6cSPhilippe Mathieu-Daudé# Since: 2.1
1312b495ec6cSPhilippe Mathieu-Daudé#
1313b495ec6cSPhilippe Mathieu-Daudé# Example:
1314b495ec6cSPhilippe Mathieu-Daudé#
1315b495ec6cSPhilippe Mathieu-Daudé# -> { "execute": "query-memory-devices" }
1316b495ec6cSPhilippe Mathieu-Daudé# <- { "return": [ { "data":
1317b495ec6cSPhilippe Mathieu-Daudé#                       { "addr": 5368709120,
1318b495ec6cSPhilippe Mathieu-Daudé#                         "hotpluggable": true,
1319b495ec6cSPhilippe Mathieu-Daudé#                         "hotplugged": true,
1320b495ec6cSPhilippe Mathieu-Daudé#                         "id": "d1",
1321b495ec6cSPhilippe Mathieu-Daudé#                         "memdev": "/objects/memX",
1322b495ec6cSPhilippe Mathieu-Daudé#                         "node": 0,
1323b495ec6cSPhilippe Mathieu-Daudé#                         "size": 1073741824,
1324b495ec6cSPhilippe Mathieu-Daudé#                         "slot": 0},
1325b495ec6cSPhilippe Mathieu-Daudé#                    "type": "dimm"
1326b495ec6cSPhilippe Mathieu-Daudé#                  } ] }
1327b495ec6cSPhilippe Mathieu-Daudé#
1328b495ec6cSPhilippe Mathieu-Daudé##
1329b495ec6cSPhilippe Mathieu-Daudé{ 'command': 'query-memory-devices', 'returns': ['MemoryDeviceInfo'] }
1330b495ec6cSPhilippe Mathieu-Daudé
1331b495ec6cSPhilippe Mathieu-Daudé##
1332b495ec6cSPhilippe Mathieu-Daudé# @MEMORY_DEVICE_SIZE_CHANGE:
1333b495ec6cSPhilippe Mathieu-Daudé#
1334b495ec6cSPhilippe Mathieu-Daudé# Emitted when the size of a memory device changes. Only emitted for memory
1335b495ec6cSPhilippe Mathieu-Daudé# devices that can actually change the size (e.g., virtio-mem due to guest
1336b495ec6cSPhilippe Mathieu-Daudé# action).
1337b495ec6cSPhilippe Mathieu-Daudé#
1338b495ec6cSPhilippe Mathieu-Daudé# @id: device's ID
1339d89dd28fSDavid Hildenbrand#
1340b495ec6cSPhilippe Mathieu-Daudé# @size: the new size of memory that the device provides
1341b495ec6cSPhilippe Mathieu-Daudé#
1342d89dd28fSDavid Hildenbrand# @qom-path: path to the device object in the QOM tree (since 6.2)
1343d89dd28fSDavid Hildenbrand#
1344b495ec6cSPhilippe Mathieu-Daudé# Note: this event is rate-limited.
1345b495ec6cSPhilippe Mathieu-Daudé#
1346b495ec6cSPhilippe Mathieu-Daudé# Since: 5.1
1347b495ec6cSPhilippe Mathieu-Daudé#
1348b495ec6cSPhilippe Mathieu-Daudé# Example:
1349b495ec6cSPhilippe Mathieu-Daudé#
1350b495ec6cSPhilippe Mathieu-Daudé# <- { "event": "MEMORY_DEVICE_SIZE_CHANGE",
1351b495ec6cSPhilippe Mathieu-Daudé#      "data": { "id": "vm0", "size": 1073741824},
1352b495ec6cSPhilippe Mathieu-Daudé#      "timestamp": { "seconds": 1588168529, "microseconds": 201316 } }
1353b495ec6cSPhilippe Mathieu-Daudé#
1354b495ec6cSPhilippe Mathieu-Daudé##
1355b495ec6cSPhilippe Mathieu-Daudé{ 'event': 'MEMORY_DEVICE_SIZE_CHANGE',
1356d89dd28fSDavid Hildenbrand  'data': { '*id': 'str', 'size': 'size', 'qom-path' : 'str'} }
1357b495ec6cSPhilippe Mathieu-Daudé
1358b495ec6cSPhilippe Mathieu-Daudé
1359b495ec6cSPhilippe Mathieu-Daudé##
1360b495ec6cSPhilippe Mathieu-Daudé# @MEM_UNPLUG_ERROR:
1361b495ec6cSPhilippe Mathieu-Daudé#
1362b495ec6cSPhilippe Mathieu-Daudé# Emitted when memory hot unplug error occurs.
1363b495ec6cSPhilippe Mathieu-Daudé#
1364b495ec6cSPhilippe Mathieu-Daudé# @device: device name
1365b495ec6cSPhilippe Mathieu-Daudé#
1366b495ec6cSPhilippe Mathieu-Daudé# @msg: Informative message
1367b495ec6cSPhilippe Mathieu-Daudé#
1368d43f1670SDaniel Henrique Barboza# Features:
1369d43f1670SDaniel Henrique Barboza# @deprecated: This event is deprecated. Use @DEVICE_UNPLUG_GUEST_ERROR
1370d43f1670SDaniel Henrique Barboza#              instead.
1371d43f1670SDaniel Henrique Barboza#
1372b495ec6cSPhilippe Mathieu-Daudé# Since: 2.4
1373b495ec6cSPhilippe Mathieu-Daudé#
1374b495ec6cSPhilippe Mathieu-Daudé# Example:
1375b495ec6cSPhilippe Mathieu-Daudé#
1376b495ec6cSPhilippe Mathieu-Daudé# <- { "event": "MEM_UNPLUG_ERROR"
1377b495ec6cSPhilippe Mathieu-Daudé#      "data": { "device": "dimm1",
1378b495ec6cSPhilippe Mathieu-Daudé#                "msg": "acpi: device unplug for unsupported device"
1379b495ec6cSPhilippe Mathieu-Daudé#      },
1380b495ec6cSPhilippe Mathieu-Daudé#      "timestamp": { "seconds": 1265044230, "microseconds": 450486 } }
1381b495ec6cSPhilippe Mathieu-Daudé#
1382b495ec6cSPhilippe Mathieu-Daudé##
1383b495ec6cSPhilippe Mathieu-Daudé{ 'event': 'MEM_UNPLUG_ERROR',
1384d43f1670SDaniel Henrique Barboza  'data': { 'device': 'str', 'msg': 'str' },
1385d43f1670SDaniel Henrique Barboza  'features': ['deprecated'] }
13861e63fe68SPaolo Bonzini
13871e63fe68SPaolo Bonzini##
13881e63fe68SPaolo Bonzini# @SMPConfiguration:
13891e63fe68SPaolo Bonzini#
13900572edc5SAndrew Jones# Schema for CPU topology configuration.  A missing value lets
13911e63fe68SPaolo Bonzini# QEMU figure out a suitable value based on the ones that are provided.
13921e63fe68SPaolo Bonzini#
13931e63fe68SPaolo Bonzini# @cpus: number of virtual CPUs in the virtual machine
13941e63fe68SPaolo Bonzini#
13951e63fe68SPaolo Bonzini# @sockets: number of sockets in the CPU topology
13961e63fe68SPaolo Bonzini#
13971e63fe68SPaolo Bonzini# @dies: number of dies per socket in the CPU topology
13981e63fe68SPaolo Bonzini#
13997237c7ceSYanan Wang# @cores: number of cores per die in the CPU topology
14001e63fe68SPaolo Bonzini#
14011e63fe68SPaolo Bonzini# @threads: number of threads per core in the CPU topology
14021e63fe68SPaolo Bonzini#
14031e63fe68SPaolo Bonzini# @maxcpus: maximum number of hotpluggable virtual CPUs in the virtual machine
14041e63fe68SPaolo Bonzini#
14051e63fe68SPaolo Bonzini# Since: 6.1
14061e63fe68SPaolo Bonzini##
14071e63fe68SPaolo Bonzini{ 'struct': 'SMPConfiguration', 'data': {
14081e63fe68SPaolo Bonzini     '*cpus': 'int',
14091e63fe68SPaolo Bonzini     '*sockets': 'int',
14101e63fe68SPaolo Bonzini     '*dies': 'int',
14111e63fe68SPaolo Bonzini     '*cores': 'int',
14121e63fe68SPaolo Bonzini     '*threads': 'int',
14131e63fe68SPaolo Bonzini     '*maxcpus': 'int' } }
1414dd98234cSDaniel P. Berrangé
1415dd98234cSDaniel P. Berrangé##
14161b8ae799SDaniel P. Berrangé# @x-query-numa:
14171b8ae799SDaniel P. Berrangé#
14181b8ae799SDaniel P. Berrangé# Query NUMA topology information
14191b8ae799SDaniel P. Berrangé#
14201b8ae799SDaniel P. Berrangé# Returns: topology information
14211b8ae799SDaniel P. Berrangé#
14221b8ae799SDaniel P. Berrangé# Since: 6.2
14231b8ae799SDaniel P. Berrangé##
14241b8ae799SDaniel P. Berrangé{ 'command': 'x-query-numa',
14251b8ae799SDaniel P. Berrangé  'returns': 'HumanReadableText' }
14261b8ae799SDaniel P. Berrangé
14271b8ae799SDaniel P. Berrangé##
142837087fdeSDaniel P. Berrangé# @x-query-profile:
142937087fdeSDaniel P. Berrangé#
143037087fdeSDaniel P. Berrangé# Query TCG profiling information
143137087fdeSDaniel P. Berrangé#
143237087fdeSDaniel P. Berrangé# Returns: profile information
143337087fdeSDaniel P. Berrangé#
143437087fdeSDaniel P. Berrangé# Since: 6.2
143537087fdeSDaniel P. Berrangé##
143637087fdeSDaniel P. Berrangé{ 'command': 'x-query-profile',
143737087fdeSDaniel P. Berrangé  'returns': 'HumanReadableText' }
143837087fdeSDaniel P. Berrangé
143937087fdeSDaniel P. Berrangé##
1440*8dbbca5cSDaniel P. Berrangé# @x-query-rdma:
1441*8dbbca5cSDaniel P. Berrangé#
1442*8dbbca5cSDaniel P. Berrangé# Query RDMA state
1443*8dbbca5cSDaniel P. Berrangé#
1444*8dbbca5cSDaniel P. Berrangé# Returns: RDMA state
1445*8dbbca5cSDaniel P. Berrangé#
1446*8dbbca5cSDaniel P. Berrangé# Since: 6.2
1447*8dbbca5cSDaniel P. Berrangé##
1448*8dbbca5cSDaniel P. Berrangé{ 'command': 'x-query-rdma',
1449*8dbbca5cSDaniel P. Berrangé  'returns': 'HumanReadableText' }
1450*8dbbca5cSDaniel P. Berrangé
1451*8dbbca5cSDaniel P. Berrangé##
1452dd98234cSDaniel P. Berrangé# @x-query-roms:
1453dd98234cSDaniel P. Berrangé#
1454dd98234cSDaniel P. Berrangé# Query information on the registered ROMS
1455dd98234cSDaniel P. Berrangé#
1456dd98234cSDaniel P. Berrangé# Returns: registered ROMs
1457dd98234cSDaniel P. Berrangé#
1458dd98234cSDaniel P. Berrangé# Since: 6.2
1459dd98234cSDaniel P. Berrangé##
1460dd98234cSDaniel P. Berrangé{ 'command': 'x-query-roms',
1461dd98234cSDaniel P. Berrangé  'returns': 'HumanReadableText' }
1462fc309207SDaniel P. Berrangé
1463fc309207SDaniel P. Berrangé##
1464fc309207SDaniel P. Berrangé# @x-query-usb:
1465fc309207SDaniel P. Berrangé#
1466fc309207SDaniel P. Berrangé# Query information on the USB devices
1467fc309207SDaniel P. Berrangé#
1468fc309207SDaniel P. Berrangé# Returns: USB device information
1469fc309207SDaniel P. Berrangé#
1470fc309207SDaniel P. Berrangé# Since: 6.2
1471fc309207SDaniel P. Berrangé##
1472fc309207SDaniel P. Berrangé{ 'command': 'x-query-usb',
1473fc309207SDaniel P. Berrangé  'returns': 'HumanReadableText' }
1474