xref: /qemu/qapi/machine.json (revision 4901b80e)
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' }
125de1aff2SPierre Morel{ 'include': 'machine-common.json' }
13913d9063SKevin Wolf
14ffaee83bSMarkus Armbruster##
15ffaee83bSMarkus Armbruster# @SysEmuTarget:
16ffaee83bSMarkus Armbruster#
17ffaee83bSMarkus Armbruster# The comprehensive enumeration of QEMU system emulation ("softmmu")
18a937b6aaSMarkus Armbruster# targets.  Run "./configure --help" in the project root directory,
19a937b6aaSMarkus Armbruster# and look for the \*-softmmu targets near the "--target-list" option.
20a937b6aaSMarkus Armbruster# The individual target constants are not documented here, for the
21a937b6aaSMarkus Armbruster# time being.
22ffaee83bSMarkus Armbruster#
23c8c35e5fSYoshinori Sato# @rx: since 5.0
24a937b6aaSMarkus Armbruster#
2542f3ff00SMichael Rolnik# @avr: since 5.1
26c8c35e5fSYoshinori Sato#
27a937b6aaSMarkus Armbruster# Notes: The resulting QMP strings can be appended to the
28a937b6aaSMarkus Armbruster#     "qemu-system-" prefix to produce the corresponding QEMU
29a937b6aaSMarkus Armbruster#     executable name.  This is true even for "qemu-system-x86_64".
30ffaee83bSMarkus Armbruster#
31ffaee83bSMarkus Armbruster# Since: 3.0
32ffaee83bSMarkus Armbruster##
33ffaee83bSMarkus Armbruster{ 'enum' : 'SysEmuTarget',
349d49bcf6SMarkus Armbruster  'data' : [ 'aarch64', 'alpha', 'arm', 'avr', 'cris', 'hppa', 'i386',
35a8a506c3SXiaojuan Yang             'loongarch64', 'm68k', 'microblaze', 'microblazeel', 'mips', 'mips64',
36875bb7e3SThomas Huth             'mips64el', 'mipsel', 'nios2', 'or1k', 'ppc',
37c8c35e5fSYoshinori Sato             'ppc64', 'riscv32', 'riscv64', 'rx', 's390x', 'sh4',
3843692239SMarkus Armbruster             'sh4eb', 'sparc', 'sparc64', 'tricore',
39ffaee83bSMarkus Armbruster             'x86_64', 'xtensa', 'xtensaeb' ] }
408ac25c84SMarkus Armbruster
418ac25c84SMarkus Armbruster##
428ac25c84SMarkus Armbruster# @CpuS390State:
438ac25c84SMarkus Armbruster#
44a937b6aaSMarkus Armbruster# An enumeration of cpu states that can be assumed by a virtual S390
45a937b6aaSMarkus Armbruster# CPU
468ac25c84SMarkus Armbruster#
478ac25c84SMarkus Armbruster# Since: 2.12
488ac25c84SMarkus Armbruster##
498ac25c84SMarkus Armbruster{ 'enum': 'CpuS390State',
508ac25c84SMarkus Armbruster  'prefix': 'S390_CPU_STATE',
518ac25c84SMarkus Armbruster  'data': [ 'uninitialized', 'stopped', 'check-stop', 'operating', 'load' ] }
528ac25c84SMarkus Armbruster
538ac25c84SMarkus Armbruster##
548ac25c84SMarkus Armbruster# @CpuInfoS390:
558ac25c84SMarkus Armbruster#
568ac25c84SMarkus Armbruster# Additional information about a virtual S390 CPU
578ac25c84SMarkus Armbruster#
588ac25c84SMarkus Armbruster# @cpu-state: the virtual CPU's state
598ac25c84SMarkus Armbruster#
60ad2d1afcSPierre Morel# @dedicated: the virtual CPU's dedication (since 8.2)
61ad2d1afcSPierre Morel#
62ad2d1afcSPierre Morel# @entitlement: the virtual CPU's entitlement (since 8.2)
63ad2d1afcSPierre Morel#
648ac25c84SMarkus Armbruster# Since: 2.12
658ac25c84SMarkus Armbruster##
66ad2d1afcSPierre Morel{ 'struct': 'CpuInfoS390',
67ad2d1afcSPierre Morel  'data': { 'cpu-state': 'CpuS390State',
68ad2d1afcSPierre Morel            '*dedicated': 'bool',
69ad2d1afcSPierre Morel            '*entitlement': 'CpuS390Entitlement' } }
708ac25c84SMarkus Armbruster
718ac25c84SMarkus Armbruster##
728ac25c84SMarkus Armbruster# @CpuInfoFast:
738ac25c84SMarkus Armbruster#
748ac25c84SMarkus Armbruster# Information about a virtual CPU
758ac25c84SMarkus Armbruster#
768ac25c84SMarkus Armbruster# @cpu-index: index of the virtual CPU
778ac25c84SMarkus Armbruster#
788ac25c84SMarkus Armbruster# @qom-path: path to the CPU object in the QOM tree
798ac25c84SMarkus Armbruster#
808ac25c84SMarkus Armbruster# @thread-id: ID of the underlying host thread
818ac25c84SMarkus Armbruster#
823da4aef8SNina Schoetterl-Glausch# @props: properties associated with a virtual CPU, e.g. the socket id
838ac25c84SMarkus Armbruster#
848ac25c84SMarkus Armbruster# @target: the QEMU system emulation target, which determines which
858ac25c84SMarkus Armbruster#     additional fields will be listed (since 3.0)
868ac25c84SMarkus Armbruster#
878ac25c84SMarkus Armbruster# Since: 2.12
888ac25c84SMarkus Armbruster##
898ac25c84SMarkus Armbruster{ 'union'         : 'CpuInfoFast',
908ac25c84SMarkus Armbruster  'base'          : { 'cpu-index'    : 'int',
918ac25c84SMarkus Armbruster                      'qom-path'     : 'str',
928ac25c84SMarkus Armbruster                      'thread-id'    : 'int',
938ac25c84SMarkus Armbruster                      '*props'       : 'CpuInstanceProperties',
948ac25c84SMarkus Armbruster                      'target'       : 'SysEmuTarget' },
958ac25c84SMarkus Armbruster  'discriminator' : 'target',
968ac25c84SMarkus Armbruster  'data'          : { 's390x'        : 'CpuInfoS390' } }
978ac25c84SMarkus Armbruster
988ac25c84SMarkus Armbruster##
998ac25c84SMarkus Armbruster# @query-cpus-fast:
1008ac25c84SMarkus Armbruster#
1018af54b91SDaniel P. Berrangé# Returns information about all virtual CPUs.
1028ac25c84SMarkus Armbruster#
1038ac25c84SMarkus Armbruster# Returns: list of @CpuInfoFast
1048ac25c84SMarkus Armbruster#
1058ac25c84SMarkus Armbruster# Since: 2.12
1068ac25c84SMarkus Armbruster#
1078ac25c84SMarkus Armbruster# Example:
1088ac25c84SMarkus Armbruster#
1098ac25c84SMarkus Armbruster#     -> { "execute": "query-cpus-fast" }
1108ac25c84SMarkus Armbruster#     <- { "return": [
1118ac25c84SMarkus Armbruster#             {
1128ac25c84SMarkus Armbruster#                 "thread-id": 25627,
1138ac25c84SMarkus Armbruster#                 "props": {
1148ac25c84SMarkus Armbruster#                     "core-id": 0,
1158ac25c84SMarkus Armbruster#                     "thread-id": 0,
1168ac25c84SMarkus Armbruster#                     "socket-id": 0
1178ac25c84SMarkus Armbruster#                 },
1188ac25c84SMarkus Armbruster#                 "qom-path": "/machine/unattached/device[0]",
1198ac25c84SMarkus Armbruster#                 "target":"x86_64",
1208ac25c84SMarkus Armbruster#                 "cpu-index": 0
1218ac25c84SMarkus Armbruster#             },
1228ac25c84SMarkus Armbruster#             {
1238ac25c84SMarkus Armbruster#                 "thread-id": 25628,
1248ac25c84SMarkus Armbruster#                 "props": {
1258ac25c84SMarkus Armbruster#                     "core-id": 0,
1268ac25c84SMarkus Armbruster#                     "thread-id": 0,
1278ac25c84SMarkus Armbruster#                     "socket-id": 1
1288ac25c84SMarkus Armbruster#                 },
1298ac25c84SMarkus Armbruster#                 "qom-path": "/machine/unattached/device[2]",
1308ac25c84SMarkus Armbruster#                 "target":"x86_64",
1318ac25c84SMarkus Armbruster#                 "cpu-index": 1
1328ac25c84SMarkus Armbruster#             }
1338ac25c84SMarkus Armbruster#         ]
1348ac25c84SMarkus Armbruster#     }
1358ac25c84SMarkus Armbruster##
1368ac25c84SMarkus Armbruster{ 'command': 'query-cpus-fast', 'returns': [ 'CpuInfoFast' ] }
1378ac25c84SMarkus Armbruster
1388ac25c84SMarkus Armbruster##
1398ac25c84SMarkus Armbruster# @MachineInfo:
1408ac25c84SMarkus Armbruster#
1418ac25c84SMarkus Armbruster# Information describing a machine.
1428ac25c84SMarkus Armbruster#
1438ac25c84SMarkus Armbruster# @name: the name of the machine
1448ac25c84SMarkus Armbruster#
1458ac25c84SMarkus Armbruster# @alias: an alias for the machine name
1468ac25c84SMarkus Armbruster#
1478ac25c84SMarkus Armbruster# @is-default: whether the machine is default
1488ac25c84SMarkus Armbruster#
1498ac25c84SMarkus Armbruster# @cpu-max: maximum number of CPUs supported by the machine type
1509bc6e893SMarkus Armbruster#     (since 1.5)
1518ac25c84SMarkus Armbruster#
1529bc6e893SMarkus Armbruster# @hotpluggable-cpus: cpu hotplug via -device is supported (since 2.7)
1538ac25c84SMarkus Armbruster#
154cd5ff833SIgor Mammedov# @numa-mem-supported: true if '-numa node,mem' option is supported by
155cd5ff833SIgor Mammedov#     the machine type and false otherwise (since 4.1)
156cd5ff833SIgor Mammedov#
157a937b6aaSMarkus Armbruster# @deprecated: if true, the machine type is deprecated and may be
158a937b6aaSMarkus Armbruster#     removed in future versions of QEMU according to the QEMU
159a937b6aaSMarkus Armbruster#     deprecation policy (since 4.1)
16079974027SEduardo Habkost#
161a937b6aaSMarkus Armbruster# @default-cpu-type: default CPU model typename if none is requested
162a937b6aaSMarkus Armbruster#     via the -cpu argument.  (since 4.2)
16304109957SDaniel P. Berrangé#
164a937b6aaSMarkus Armbruster# @default-ram-id: the default ID of initial RAM memory backend (since
165a937b6aaSMarkus Armbruster#     5.2)
166c5566005SMichal Privoznik#
167b97f3147SPeter Krempa# @acpi: machine type supports ACPI (since 8.0)
168b97f3147SPeter Krempa#
1699bc6e893SMarkus Armbruster# Since: 1.2
1708ac25c84SMarkus Armbruster##
1718ac25c84SMarkus Armbruster{ 'struct': 'MachineInfo',
1728ac25c84SMarkus Armbruster  'data': { 'name': 'str', '*alias': 'str',
1738ac25c84SMarkus Armbruster            '*is-default': 'bool', 'cpu-max': 'int',
17479974027SEduardo Habkost            'hotpluggable-cpus': 'bool',  'numa-mem-supported': 'bool',
175c5566005SMichal Privoznik            'deprecated': 'bool', '*default-cpu-type': 'str',
176b97f3147SPeter Krempa            '*default-ram-id': 'str', 'acpi': 'bool' } }
1778ac25c84SMarkus Armbruster
1788ac25c84SMarkus Armbruster##
1798ac25c84SMarkus Armbruster# @query-machines:
1808ac25c84SMarkus Armbruster#
1818ac25c84SMarkus Armbruster# Return a list of supported machines
1828ac25c84SMarkus Armbruster#
1838ac25c84SMarkus Armbruster# Returns: a list of MachineInfo
1848ac25c84SMarkus Armbruster#
1859bc6e893SMarkus Armbruster# Since: 1.2
1868ac25c84SMarkus Armbruster##
1878ac25c84SMarkus Armbruster{ 'command': 'query-machines', 'returns': ['MachineInfo'] }
1888ac25c84SMarkus Armbruster
1898ac25c84SMarkus Armbruster##
1908ac25c84SMarkus Armbruster# @CurrentMachineParams:
1918ac25c84SMarkus Armbruster#
1928ac25c84SMarkus Armbruster# Information describing the running machine parameters.
1938ac25c84SMarkus Armbruster#
1948ac25c84SMarkus Armbruster# @wakeup-suspend-support: true if the machine supports wake up from
1958ac25c84SMarkus Armbruster#     suspend
1968ac25c84SMarkus Armbruster#
1978ac25c84SMarkus Armbruster# Since: 4.0
1988ac25c84SMarkus Armbruster##
1998ac25c84SMarkus Armbruster{ 'struct': 'CurrentMachineParams',
2008ac25c84SMarkus Armbruster  'data': { 'wakeup-suspend-support': 'bool'} }
2018ac25c84SMarkus Armbruster
2028ac25c84SMarkus Armbruster##
2038ac25c84SMarkus Armbruster# @query-current-machine:
2048ac25c84SMarkus Armbruster#
2058ac25c84SMarkus Armbruster# Return information on the current virtual machine.
2068ac25c84SMarkus Armbruster#
2078ac25c84SMarkus Armbruster# Returns: CurrentMachineParams
2088ac25c84SMarkus Armbruster#
2098ac25c84SMarkus Armbruster# Since: 4.0
2108ac25c84SMarkus Armbruster##
2118ac25c84SMarkus Armbruster{ 'command': 'query-current-machine', 'returns': 'CurrentMachineParams' }
2128ac25c84SMarkus Armbruster
2138ac25c84SMarkus Armbruster##
214ffaee83bSMarkus Armbruster# @TargetInfo:
215ffaee83bSMarkus Armbruster#
216ffaee83bSMarkus Armbruster# Information describing the QEMU target.
217ffaee83bSMarkus Armbruster#
218ffaee83bSMarkus Armbruster# @arch: the target architecture
219ffaee83bSMarkus Armbruster#
2209bc6e893SMarkus Armbruster# Since: 1.2
221ffaee83bSMarkus Armbruster##
222ffaee83bSMarkus Armbruster{ 'struct': 'TargetInfo',
223ffaee83bSMarkus Armbruster  'data': { 'arch': 'SysEmuTarget' } }
224ffaee83bSMarkus Armbruster
225ffaee83bSMarkus Armbruster##
226ffaee83bSMarkus Armbruster# @query-target:
227ffaee83bSMarkus Armbruster#
228ffaee83bSMarkus Armbruster# Return information about the target for this QEMU
229ffaee83bSMarkus Armbruster#
230ffaee83bSMarkus Armbruster# Returns: TargetInfo
231ffaee83bSMarkus Armbruster#
2329bc6e893SMarkus Armbruster# Since: 1.2
233ffaee83bSMarkus Armbruster##
234ffaee83bSMarkus Armbruster{ 'command': 'query-target', 'returns': 'TargetInfo' }
235ffaee83bSMarkus Armbruster
236ffaee83bSMarkus Armbruster##
237f68c0147SPhilippe Mathieu-Daudé# @UuidInfo:
238f68c0147SPhilippe Mathieu-Daudé#
239f68c0147SPhilippe Mathieu-Daudé# Guest UUID information (Universally Unique Identifier).
240f68c0147SPhilippe Mathieu-Daudé#
241f68c0147SPhilippe Mathieu-Daudé# @UUID: the UUID of the guest
242f68c0147SPhilippe Mathieu-Daudé#
2439bc6e893SMarkus Armbruster# Since: 0.14
244f68c0147SPhilippe Mathieu-Daudé#
245a937b6aaSMarkus Armbruster# Notes: If no UUID was specified for the guest, a null UUID is
246a937b6aaSMarkus Armbruster#     returned.
247f68c0147SPhilippe Mathieu-Daudé##
248f68c0147SPhilippe Mathieu-Daudé{ 'struct': 'UuidInfo', 'data': {'UUID': 'str'} }
249f68c0147SPhilippe Mathieu-Daudé
250f68c0147SPhilippe Mathieu-Daudé##
251f68c0147SPhilippe Mathieu-Daudé# @query-uuid:
252f68c0147SPhilippe Mathieu-Daudé#
253f68c0147SPhilippe Mathieu-Daudé# Query the guest UUID information.
254f68c0147SPhilippe Mathieu-Daudé#
255f68c0147SPhilippe Mathieu-Daudé# Returns: The @UuidInfo for the guest
256f68c0147SPhilippe Mathieu-Daudé#
2579bc6e893SMarkus Armbruster# Since: 0.14
258f68c0147SPhilippe Mathieu-Daudé#
259f68c0147SPhilippe Mathieu-Daudé# Example:
260f68c0147SPhilippe Mathieu-Daudé#
261f68c0147SPhilippe Mathieu-Daudé#     -> { "execute": "query-uuid" }
262f68c0147SPhilippe Mathieu-Daudé#     <- { "return": { "UUID": "550e8400-e29b-41d4-a716-446655440000" } }
263f68c0147SPhilippe Mathieu-Daudé##
264f68c0147SPhilippe Mathieu-Daudé{ 'command': 'query-uuid', 'returns': 'UuidInfo', 'allow-preconfig': true }
265f68c0147SPhilippe Mathieu-Daudé
266f68c0147SPhilippe Mathieu-Daudé##
267db0f08dfSPhilippe Mathieu-Daudé# @GuidInfo:
268db0f08dfSPhilippe Mathieu-Daudé#
269db0f08dfSPhilippe Mathieu-Daudé# GUID information.
270db0f08dfSPhilippe Mathieu-Daudé#
271db0f08dfSPhilippe Mathieu-Daudé# @guid: the globally unique identifier
272db0f08dfSPhilippe Mathieu-Daudé#
273db0f08dfSPhilippe Mathieu-Daudé# Since: 2.9
274db0f08dfSPhilippe Mathieu-Daudé##
275db0f08dfSPhilippe Mathieu-Daudé{ 'struct': 'GuidInfo', 'data': {'guid': 'str'} }
276db0f08dfSPhilippe Mathieu-Daudé
277db0f08dfSPhilippe Mathieu-Daudé##
278db0f08dfSPhilippe Mathieu-Daudé# @query-vm-generation-id:
279db0f08dfSPhilippe Mathieu-Daudé#
280db0f08dfSPhilippe Mathieu-Daudé# Show Virtual Machine Generation ID
281db0f08dfSPhilippe Mathieu-Daudé#
282db0f08dfSPhilippe Mathieu-Daudé# Since: 2.9
283db0f08dfSPhilippe Mathieu-Daudé##
284db0f08dfSPhilippe Mathieu-Daudé{ 'command': 'query-vm-generation-id', 'returns': 'GuidInfo' }
285db0f08dfSPhilippe Mathieu-Daudé
286db0f08dfSPhilippe Mathieu-Daudé##
28790f8c0f9SPhilippe Mathieu-Daudé# @system_reset:
28890f8c0f9SPhilippe Mathieu-Daudé#
28990f8c0f9SPhilippe Mathieu-Daudé# Performs a hard reset of a guest.
29090f8c0f9SPhilippe Mathieu-Daudé#
2919bc6e893SMarkus Armbruster# Since: 0.14
29290f8c0f9SPhilippe Mathieu-Daudé#
29390f8c0f9SPhilippe Mathieu-Daudé# Example:
29490f8c0f9SPhilippe Mathieu-Daudé#
29590f8c0f9SPhilippe Mathieu-Daudé#     -> { "execute": "system_reset" }
29690f8c0f9SPhilippe Mathieu-Daudé#     <- { "return": {} }
29790f8c0f9SPhilippe Mathieu-Daudé##
29890f8c0f9SPhilippe Mathieu-Daudé{ 'command': 'system_reset' }
29990f8c0f9SPhilippe Mathieu-Daudé
30090f8c0f9SPhilippe Mathieu-Daudé##
30190f8c0f9SPhilippe Mathieu-Daudé# @system_powerdown:
30290f8c0f9SPhilippe Mathieu-Daudé#
30390f8c0f9SPhilippe Mathieu-Daudé# Requests that a guest perform a powerdown operation.
30490f8c0f9SPhilippe Mathieu-Daudé#
3059bc6e893SMarkus Armbruster# Since: 0.14
30690f8c0f9SPhilippe Mathieu-Daudé#
30790f8c0f9SPhilippe Mathieu-Daudé# Notes: A guest may or may not respond to this command.  This command
308a937b6aaSMarkus Armbruster#     returning does not indicate that a guest has accepted the
309a937b6aaSMarkus Armbruster#     request or that it has shut down.  Many guests will respond to
310a937b6aaSMarkus Armbruster#     this command by prompting the user in some way.
3114ae65a52SAndrea Bolognani#
31290f8c0f9SPhilippe Mathieu-Daudé# Example:
31390f8c0f9SPhilippe Mathieu-Daudé#
31490f8c0f9SPhilippe Mathieu-Daudé#     -> { "execute": "system_powerdown" }
31590f8c0f9SPhilippe Mathieu-Daudé#     <- { "return": {} }
31690f8c0f9SPhilippe Mathieu-Daudé##
31790f8c0f9SPhilippe Mathieu-Daudé{ 'command': 'system_powerdown' }
31890f8c0f9SPhilippe Mathieu-Daudé
31990f8c0f9SPhilippe Mathieu-Daudé##
32090f8c0f9SPhilippe Mathieu-Daudé# @system_wakeup:
32190f8c0f9SPhilippe Mathieu-Daudé#
32290f8c0f9SPhilippe Mathieu-Daudé# Wake up guest from suspend.  If the guest has wake-up from suspend
32390f8c0f9SPhilippe Mathieu-Daudé# support enabled (wakeup-suspend-support flag from
32490f8c0f9SPhilippe Mathieu-Daudé# query-current-machine), wake-up guest from suspend if the guest is
32590f8c0f9SPhilippe Mathieu-Daudé# in SUSPENDED state.  Return an error otherwise.
32690f8c0f9SPhilippe Mathieu-Daudé#
32790f8c0f9SPhilippe Mathieu-Daudé# Since: 1.1
32890f8c0f9SPhilippe Mathieu-Daudé#
32990f8c0f9SPhilippe Mathieu-Daudé# Note: prior to 4.0, this command does nothing in case the guest
33090f8c0f9SPhilippe Mathieu-Daudé#     isn't suspended.
33190f8c0f9SPhilippe Mathieu-Daudé#
33290f8c0f9SPhilippe Mathieu-Daudé# Example:
33390f8c0f9SPhilippe Mathieu-Daudé#
33490f8c0f9SPhilippe Mathieu-Daudé#     -> { "execute": "system_wakeup" }
33590f8c0f9SPhilippe Mathieu-Daudé#     <- { "return": {} }
33690f8c0f9SPhilippe Mathieu-Daudé##
33790f8c0f9SPhilippe Mathieu-Daudé{ 'command': 'system_wakeup' }
33890f8c0f9SPhilippe Mathieu-Daudé
33990f8c0f9SPhilippe Mathieu-Daudé##
3408dc007d3SPhilippe Mathieu-Daudé# @LostTickPolicy:
3418dc007d3SPhilippe Mathieu-Daudé#
342a937b6aaSMarkus Armbruster# Policy for handling lost ticks in timer devices.  Ticks end up
343a937b6aaSMarkus Armbruster# getting lost when, for example, the guest is paused.
3448dc007d3SPhilippe Mathieu-Daudé#
345a937b6aaSMarkus Armbruster# @discard: throw away the missed ticks and continue with future
346a937b6aaSMarkus Armbruster#     injection normally.  The guest OS will see the timer jump ahead
347a937b6aaSMarkus Armbruster#     by a potentially quite significant amount all at once, as if the
3488dc007d3SPhilippe Mathieu-Daudé#     intervening chunk of time had simply not existed; needless to
3498dc007d3SPhilippe Mathieu-Daudé#     say, such a sudden jump can easily confuse a guest OS which is
3508dc007d3SPhilippe Mathieu-Daudé#     not specifically prepared to deal with it.  Assuming the guest
3518dc007d3SPhilippe Mathieu-Daudé#     OS can deal correctly with the time jump, the time in the guest
3528dc007d3SPhilippe Mathieu-Daudé#     and in the host should now match.
3538dc007d3SPhilippe Mathieu-Daudé#
354a937b6aaSMarkus Armbruster# @delay: continue to deliver ticks at the normal rate.  The guest OS
355a937b6aaSMarkus Armbruster#     will not notice anything is amiss, as from its point of view
356a937b6aaSMarkus Armbruster#     time will have continued to flow normally.  The time in the
357a937b6aaSMarkus Armbruster#     guest should now be behind the time in the host by exactly the
358a937b6aaSMarkus Armbruster#     amount of time during which ticks have been missed.
3598dc007d3SPhilippe Mathieu-Daudé#
360a937b6aaSMarkus Armbruster# @slew: deliver ticks at a higher rate to catch up with the missed
361a937b6aaSMarkus Armbruster#     ticks.  The guest OS will not notice anything is amiss, as from
362a937b6aaSMarkus Armbruster#     its point of view time will have continued to flow normally.
363a937b6aaSMarkus Armbruster#     Once the timer has managed to catch up with all the missing
364a937b6aaSMarkus Armbruster#     ticks, the time in the guest and in the host should match.
3658dc007d3SPhilippe Mathieu-Daudé#
3668dc007d3SPhilippe Mathieu-Daudé# Since: 2.0
3678dc007d3SPhilippe Mathieu-Daudé##
3688dc007d3SPhilippe Mathieu-Daudé{ 'enum': 'LostTickPolicy',
3698dc007d3SPhilippe Mathieu-Daudé  'data': ['discard', 'delay', 'slew' ] }
3708dc007d3SPhilippe Mathieu-Daudé
3718dc007d3SPhilippe Mathieu-Daudé##
372df7a1f48SPhilippe Mathieu-Daudé# @inject-nmi:
373df7a1f48SPhilippe Mathieu-Daudé#
374a937b6aaSMarkus Armbruster# Injects a Non-Maskable Interrupt into the default CPU (x86/s390) or
375a937b6aaSMarkus Armbruster# all CPUs (ppc64). The command fails when the guest doesn't support
376a937b6aaSMarkus Armbruster# injecting.
377df7a1f48SPhilippe Mathieu-Daudé#
3789bc6e893SMarkus Armbruster# Since: 0.14
379df7a1f48SPhilippe Mathieu-Daudé#
380a937b6aaSMarkus Armbruster# Note: prior to 2.1, this command was only supported for x86 and s390
381a937b6aaSMarkus Armbruster#     VMs
382df7a1f48SPhilippe Mathieu-Daudé#
383df7a1f48SPhilippe Mathieu-Daudé# Example:
384df7a1f48SPhilippe Mathieu-Daudé#
385df7a1f48SPhilippe Mathieu-Daudé#     -> { "execute": "inject-nmi" }
386df7a1f48SPhilippe Mathieu-Daudé#     <- { "return": {} }
387df7a1f48SPhilippe Mathieu-Daudé##
388df7a1f48SPhilippe Mathieu-Daudé{ 'command': 'inject-nmi' }
389df7a1f48SPhilippe Mathieu-Daudé
390df7a1f48SPhilippe Mathieu-Daudé##
39181dddc1bSPhilippe Mathieu-Daudé# @KvmInfo:
39281dddc1bSPhilippe Mathieu-Daudé#
39381dddc1bSPhilippe Mathieu-Daudé# Information about support for KVM acceleration
39481dddc1bSPhilippe Mathieu-Daudé#
39581dddc1bSPhilippe Mathieu-Daudé# @enabled: true if KVM acceleration is active
39681dddc1bSPhilippe Mathieu-Daudé#
39781dddc1bSPhilippe Mathieu-Daudé# @present: true if KVM acceleration is built into this executable
39881dddc1bSPhilippe Mathieu-Daudé#
3999bc6e893SMarkus Armbruster# Since: 0.14
40081dddc1bSPhilippe Mathieu-Daudé##
40181dddc1bSPhilippe Mathieu-Daudé{ 'struct': 'KvmInfo', 'data': {'enabled': 'bool', 'present': 'bool'} }
40281dddc1bSPhilippe Mathieu-Daudé
40381dddc1bSPhilippe Mathieu-Daudé##
40481dddc1bSPhilippe Mathieu-Daudé# @query-kvm:
40581dddc1bSPhilippe Mathieu-Daudé#
40681dddc1bSPhilippe Mathieu-Daudé# Returns information about KVM acceleration
40781dddc1bSPhilippe Mathieu-Daudé#
40881dddc1bSPhilippe Mathieu-Daudé# Returns: @KvmInfo
40981dddc1bSPhilippe Mathieu-Daudé#
4109bc6e893SMarkus Armbruster# Since: 0.14
41181dddc1bSPhilippe Mathieu-Daudé#
41281dddc1bSPhilippe Mathieu-Daudé# Example:
41381dddc1bSPhilippe Mathieu-Daudé#
41481dddc1bSPhilippe Mathieu-Daudé#     -> { "execute": "query-kvm" }
41581dddc1bSPhilippe Mathieu-Daudé#     <- { "return": { "enabled": true, "present": true } }
41681dddc1bSPhilippe Mathieu-Daudé##
41781dddc1bSPhilippe Mathieu-Daudé{ 'command': 'query-kvm', 'returns': 'KvmInfo' }
41881dddc1bSPhilippe Mathieu-Daudé
41981dddc1bSPhilippe Mathieu-Daudé##
4208ac25c84SMarkus Armbruster# @NumaOptionsType:
4218ac25c84SMarkus Armbruster#
4228ac25c84SMarkus Armbruster# @node: NUMA nodes configuration
4238ac25c84SMarkus Armbruster#
4248ac25c84SMarkus Armbruster# @dist: NUMA distance configuration (since 2.10)
4258ac25c84SMarkus Armbruster#
4268ac25c84SMarkus Armbruster# @cpu: property based CPU(s) to node mapping (Since: 2.10)
4278ac25c84SMarkus Armbruster#
4289b12dfa0SLiu Jingqi# @hmat-lb: memory latency and bandwidth information (Since: 5.0)
4299b12dfa0SLiu Jingqi#
430c412a48dSLiu Jingqi# @hmat-cache: memory side cache information (Since: 5.0)
431c412a48dSLiu Jingqi#
4328ac25c84SMarkus Armbruster# Since: 2.1
4338ac25c84SMarkus Armbruster##
4348ac25c84SMarkus Armbruster{ 'enum': 'NumaOptionsType',
435c412a48dSLiu Jingqi  'data': [ 'node', 'dist', 'cpu', 'hmat-lb', 'hmat-cache' ] }
4368ac25c84SMarkus Armbruster
4378ac25c84SMarkus Armbruster##
4388ac25c84SMarkus Armbruster# @NumaOptions:
4398ac25c84SMarkus Armbruster#
4408ac25c84SMarkus Armbruster# A discriminated record of NUMA options.  (for OptsVisitor)
4418ac25c84SMarkus Armbruster#
44289a2273bSMarkus Armbruster# @type: NUMA option type
44389a2273bSMarkus Armbruster#
4448ac25c84SMarkus Armbruster# Since: 2.1
4458ac25c84SMarkus Armbruster##
4468ac25c84SMarkus Armbruster{ 'union': 'NumaOptions',
4478ac25c84SMarkus Armbruster  'base': { 'type': 'NumaOptionsType' },
4488ac25c84SMarkus Armbruster  'discriminator': 'type',
4498ac25c84SMarkus Armbruster  'data': {
4508ac25c84SMarkus Armbruster    'node': 'NumaNodeOptions',
4518ac25c84SMarkus Armbruster    'dist': 'NumaDistOptions',
4529b12dfa0SLiu Jingqi    'cpu': 'NumaCpuOptions',
453c412a48dSLiu Jingqi    'hmat-lb': 'NumaHmatLBOptions',
454c412a48dSLiu Jingqi    'hmat-cache': 'NumaHmatCacheOptions' }}
4558ac25c84SMarkus Armbruster
4568ac25c84SMarkus Armbruster##
4578ac25c84SMarkus Armbruster# @NumaNodeOptions:
4588ac25c84SMarkus Armbruster#
4598ac25c84SMarkus Armbruster# Create a guest NUMA node.  (for OptsVisitor)
4608ac25c84SMarkus Armbruster#
4618ac25c84SMarkus Armbruster# @nodeid: NUMA node ID (increase by 1 from 0 if omitted)
4628ac25c84SMarkus Armbruster#
463a937b6aaSMarkus Armbruster# @cpus: VCPUs belonging to this node (assign VCPUS round-robin if
464a937b6aaSMarkus Armbruster#     omitted)
4658ac25c84SMarkus Armbruster#
4668ac25c84SMarkus Armbruster# @mem: memory size of this node; mutually exclusive with @memdev.
467a937b6aaSMarkus Armbruster#     Equally divide total memory among nodes if both @mem and @memdev
468a937b6aaSMarkus Armbruster#     are omitted.
4698ac25c84SMarkus Armbruster#
470a937b6aaSMarkus Armbruster# @memdev: memory backend object.  If specified for one node, it must
471a937b6aaSMarkus Armbruster#     be specified for all nodes.
4728ac25c84SMarkus Armbruster#
473a937b6aaSMarkus Armbruster# @initiator: defined in ACPI 6.3 Chapter 5.2.27.3 Table 5-145, points
474a937b6aaSMarkus Armbruster#     to the nodeid which has the memory controller responsible for
475a937b6aaSMarkus Armbruster#     this NUMA node.  This field provides additional information as
476a937b6aaSMarkus Armbruster#     to the initiator node that is closest (as in directly attached)
477a937b6aaSMarkus Armbruster#     to this node, and therefore has the best performance (since 5.0)
478244b3f44STao Xu#
4798ac25c84SMarkus Armbruster# Since: 2.1
4808ac25c84SMarkus Armbruster##
4818ac25c84SMarkus Armbruster{ 'struct': 'NumaNodeOptions',
4828ac25c84SMarkus Armbruster  'data': {
4838ac25c84SMarkus Armbruster   '*nodeid': 'uint16',
4848ac25c84SMarkus Armbruster   '*cpus':   ['uint16'],
4858ac25c84SMarkus Armbruster   '*mem':    'size',
486244b3f44STao Xu   '*memdev': 'str',
487244b3f44STao Xu   '*initiator': 'uint16' }}
4888ac25c84SMarkus Armbruster
4898ac25c84SMarkus Armbruster##
4908ac25c84SMarkus Armbruster# @NumaDistOptions:
4918ac25c84SMarkus Armbruster#
4928ac25c84SMarkus Armbruster# Set the distance between 2 NUMA nodes.
4938ac25c84SMarkus Armbruster#
4948ac25c84SMarkus Armbruster# @src: source NUMA node.
4958ac25c84SMarkus Armbruster#
4968ac25c84SMarkus Armbruster# @dst: destination NUMA node.
4978ac25c84SMarkus Armbruster#
498a937b6aaSMarkus Armbruster# @val: NUMA distance from source node to destination node.  When a
499a937b6aaSMarkus Armbruster#     node is unreachable from another node, set the distance between
500a937b6aaSMarkus Armbruster#     them to 255.
5018ac25c84SMarkus Armbruster#
5028ac25c84SMarkus Armbruster# Since: 2.10
5038ac25c84SMarkus Armbruster##
5048ac25c84SMarkus Armbruster{ 'struct': 'NumaDistOptions',
5058ac25c84SMarkus Armbruster  'data': {
5068ac25c84SMarkus Armbruster   'src': 'uint16',
5078ac25c84SMarkus Armbruster   'dst': 'uint16',
5088ac25c84SMarkus Armbruster   'val': 'uint8' }}
5098ac25c84SMarkus Armbruster
5108ac25c84SMarkus Armbruster##
511aadfe320SJonathan Cameron# @CXLFixedMemoryWindowOptions:
512aadfe320SJonathan Cameron#
513aadfe320SJonathan Cameron# Create a CXL Fixed Memory Window
514aadfe320SJonathan Cameron#
515aadfe320SJonathan Cameron# @size: Size of the Fixed Memory Window in bytes.  Must be a multiple
516aadfe320SJonathan Cameron#     of 256MiB.
517a937b6aaSMarkus Armbruster#
518aadfe320SJonathan Cameron# @interleave-granularity: Number of contiguous bytes for which
519a937b6aaSMarkus Armbruster#     accesses will go to a given interleave target.  Accepted values
520a937b6aaSMarkus Armbruster#     [256, 512, 1k, 2k, 4k, 8k, 16k]
521a937b6aaSMarkus Armbruster#
522a937b6aaSMarkus Armbruster# @targets: Target root bridge IDs from -device ...,id=<ID> for each
523a937b6aaSMarkus Armbruster#     root bridge.
524aadfe320SJonathan Cameron#
5257c3def93SMarkus Armbruster# Since: 7.1
526aadfe320SJonathan Cameron##
527aadfe320SJonathan Cameron{ 'struct': 'CXLFixedMemoryWindowOptions',
528aadfe320SJonathan Cameron  'data': {
529aadfe320SJonathan Cameron      'size': 'size',
530aadfe320SJonathan Cameron      '*interleave-granularity': 'size',
531aadfe320SJonathan Cameron      'targets': ['str'] }}
532aadfe320SJonathan Cameron
533aadfe320SJonathan Cameron##
53403b39fcfSJonathan Cameron# @CXLFMWProperties:
53503b39fcfSJonathan Cameron#
53603b39fcfSJonathan Cameron# List of CXL Fixed Memory Windows.
53703b39fcfSJonathan Cameron#
53803b39fcfSJonathan Cameron# @cxl-fmw: List of CXLFixedMemoryWindowOptions
53903b39fcfSJonathan Cameron#
5407c3def93SMarkus Armbruster# Since: 7.1
54103b39fcfSJonathan Cameron##
54203b39fcfSJonathan Cameron{ 'struct' : 'CXLFMWProperties',
54303b39fcfSJonathan Cameron  'data': { 'cxl-fmw': ['CXLFixedMemoryWindowOptions'] }
54403b39fcfSJonathan Cameron}
54503b39fcfSJonathan Cameron
54603b39fcfSJonathan Cameron##
5478ac25c84SMarkus Armbruster# @X86CPURegister32:
5488ac25c84SMarkus Armbruster#
5498ac25c84SMarkus Armbruster# A X86 32-bit register
5508ac25c84SMarkus Armbruster#
5518ac25c84SMarkus Armbruster# Since: 1.5
5528ac25c84SMarkus Armbruster##
5538ac25c84SMarkus Armbruster{ 'enum': 'X86CPURegister32',
5548ac25c84SMarkus Armbruster  'data': [ 'EAX', 'EBX', 'ECX', 'EDX', 'ESP', 'EBP', 'ESI', 'EDI' ] }
5558ac25c84SMarkus Armbruster
5568ac25c84SMarkus Armbruster##
5578ac25c84SMarkus Armbruster# @X86CPUFeatureWordInfo:
5588ac25c84SMarkus Armbruster#
5598ac25c84SMarkus Armbruster# Information about a X86 CPU feature word
5608ac25c84SMarkus Armbruster#
561a937b6aaSMarkus Armbruster# @cpuid-input-eax: Input EAX value for CPUID instruction for that
562a937b6aaSMarkus Armbruster#     feature word
5638ac25c84SMarkus Armbruster#
5648ac25c84SMarkus Armbruster# @cpuid-input-ecx: Input ECX value for CPUID instruction for that
5658ac25c84SMarkus Armbruster#     feature word
5668ac25c84SMarkus Armbruster#
5678ac25c84SMarkus Armbruster# @cpuid-register: Output register containing the feature bits
5688ac25c84SMarkus Armbruster#
5698ac25c84SMarkus Armbruster# @features: value of output register, containing the feature bits
5708ac25c84SMarkus Armbruster#
5718ac25c84SMarkus Armbruster# Since: 1.5
5728ac25c84SMarkus Armbruster##
5738ac25c84SMarkus Armbruster{ 'struct': 'X86CPUFeatureWordInfo',
5748ac25c84SMarkus Armbruster  'data': { 'cpuid-input-eax': 'int',
5758ac25c84SMarkus Armbruster            '*cpuid-input-ecx': 'int',
5768ac25c84SMarkus Armbruster            'cpuid-register': 'X86CPURegister32',
5778ac25c84SMarkus Armbruster            'features': 'int' } }
5788ac25c84SMarkus Armbruster
5798ac25c84SMarkus Armbruster##
5808ac25c84SMarkus Armbruster# @DummyForceArrays:
5818ac25c84SMarkus Armbruster#
582a937b6aaSMarkus Armbruster# Not used by QMP; hack to let us use X86CPUFeatureWordInfoList
583a937b6aaSMarkus Armbruster# internally
5848ac25c84SMarkus Armbruster#
5858ac25c84SMarkus Armbruster# Since: 2.5
5868ac25c84SMarkus Armbruster##
5878ac25c84SMarkus Armbruster{ 'struct': 'DummyForceArrays',
5888ac25c84SMarkus Armbruster  'data': { 'unused': ['X86CPUFeatureWordInfo'] } }
5898ac25c84SMarkus Armbruster
5908ac25c84SMarkus Armbruster##
5918ac25c84SMarkus Armbruster# @NumaCpuOptions:
5928ac25c84SMarkus Armbruster#
593a937b6aaSMarkus Armbruster# Option "-numa cpu" overrides default cpu to node mapping.  It
594a937b6aaSMarkus Armbruster# accepts the same set of cpu properties as returned by
5958ac25c84SMarkus Armbruster# query-hotpluggable-cpus[].props, where node-id could be used to
5968ac25c84SMarkus Armbruster# override default node mapping.
5978ac25c84SMarkus Armbruster#
5988ac25c84SMarkus Armbruster# Since: 2.10
5998ac25c84SMarkus Armbruster##
6008ac25c84SMarkus Armbruster{ 'struct': 'NumaCpuOptions',
6018ac25c84SMarkus Armbruster   'base': 'CpuInstanceProperties',
6028ac25c84SMarkus Armbruster   'data' : {} }
6038ac25c84SMarkus Armbruster
6048ac25c84SMarkus Armbruster##
6059b12dfa0SLiu Jingqi# @HmatLBMemoryHierarchy:
6069b12dfa0SLiu Jingqi#
6079b12dfa0SLiu Jingqi# The memory hierarchy in the System Locality Latency and Bandwidth
6089b12dfa0SLiu Jingqi# Information Structure of HMAT (Heterogeneous Memory Attribute Table)
6099b12dfa0SLiu Jingqi#
6109b12dfa0SLiu Jingqi# For more information about @HmatLBMemoryHierarchy, see chapter
6119b12dfa0SLiu Jingqi# 5.2.27.4: Table 5-146: Field "Flags" of ACPI 6.3 spec.
6129b12dfa0SLiu Jingqi#
6139b12dfa0SLiu Jingqi# @memory: the structure represents the memory performance
6149b12dfa0SLiu Jingqi#
6159b12dfa0SLiu Jingqi# @first-level: first level of memory side cache
6169b12dfa0SLiu Jingqi#
6179b12dfa0SLiu Jingqi# @second-level: second level of memory side cache
6189b12dfa0SLiu Jingqi#
6199b12dfa0SLiu Jingqi# @third-level: third level of memory side cache
6209b12dfa0SLiu Jingqi#
6219b12dfa0SLiu Jingqi# Since: 5.0
6229b12dfa0SLiu Jingqi##
6239b12dfa0SLiu Jingqi{ 'enum': 'HmatLBMemoryHierarchy',
6249b12dfa0SLiu Jingqi  'data': [ 'memory', 'first-level', 'second-level', 'third-level' ] }
6259b12dfa0SLiu Jingqi
6269b12dfa0SLiu Jingqi##
6279b12dfa0SLiu Jingqi# @HmatLBDataType:
6289b12dfa0SLiu Jingqi#
629a937b6aaSMarkus Armbruster# Data type in the System Locality Latency and Bandwidth Information
630a937b6aaSMarkus Armbruster# Structure of HMAT (Heterogeneous Memory Attribute Table)
6319b12dfa0SLiu Jingqi#
632a937b6aaSMarkus Armbruster# For more information about @HmatLBDataType, see chapter 5.2.27.4:
633a937b6aaSMarkus Armbruster# Table 5-146:  Field "Data Type" of ACPI 6.3 spec.
6349b12dfa0SLiu Jingqi#
6359b12dfa0SLiu Jingqi# @access-latency: access latency (nanoseconds)
6369b12dfa0SLiu Jingqi#
6379b12dfa0SLiu Jingqi# @read-latency: read latency (nanoseconds)
6389b12dfa0SLiu Jingqi#
6399b12dfa0SLiu Jingqi# @write-latency: write latency (nanoseconds)
6409b12dfa0SLiu Jingqi#
6419b12dfa0SLiu Jingqi# @access-bandwidth: access bandwidth (Bytes per second)
6429b12dfa0SLiu Jingqi#
6439b12dfa0SLiu Jingqi# @read-bandwidth: read bandwidth (Bytes per second)
6449b12dfa0SLiu Jingqi#
6459b12dfa0SLiu Jingqi# @write-bandwidth: write bandwidth (Bytes per second)
6469b12dfa0SLiu Jingqi#
6479b12dfa0SLiu Jingqi# Since: 5.0
6489b12dfa0SLiu Jingqi##
6499b12dfa0SLiu Jingqi{ 'enum': 'HmatLBDataType',
6509b12dfa0SLiu Jingqi  'data': [ 'access-latency', 'read-latency', 'write-latency',
6519b12dfa0SLiu Jingqi            'access-bandwidth', 'read-bandwidth', 'write-bandwidth' ] }
6529b12dfa0SLiu Jingqi
6539b12dfa0SLiu Jingqi##
6549b12dfa0SLiu Jingqi# @NumaHmatLBOptions:
6559b12dfa0SLiu Jingqi#
656a937b6aaSMarkus Armbruster# Set the system locality latency and bandwidth information between
657a937b6aaSMarkus Armbruster# Initiator and Target proximity Domains.
6589b12dfa0SLiu Jingqi#
659a937b6aaSMarkus Armbruster# For more information about @NumaHmatLBOptions, see chapter 5.2.27.4:
660a937b6aaSMarkus Armbruster# Table 5-146 of ACPI 6.3 spec.
6619b12dfa0SLiu Jingqi#
6629b12dfa0SLiu Jingqi# @initiator: the Initiator Proximity Domain.
6639b12dfa0SLiu Jingqi#
6649b12dfa0SLiu Jingqi# @target: the Target Proximity Domain.
6659b12dfa0SLiu Jingqi#
666a937b6aaSMarkus Armbruster# @hierarchy: the Memory Hierarchy.  Indicates the performance of
667a937b6aaSMarkus Armbruster#     memory or side cache.
6689b12dfa0SLiu Jingqi#
669a937b6aaSMarkus Armbruster# @data-type: presents the type of data, access/read/write latency or
670a937b6aaSMarkus Armbruster#     hit latency.
6719b12dfa0SLiu Jingqi#
672a937b6aaSMarkus Armbruster# @latency: the value of latency from @initiator to @target proximity
673a937b6aaSMarkus Armbruster#     domain, the latency unit is "ns(nanosecond)".
6749b12dfa0SLiu Jingqi#
6759b12dfa0SLiu Jingqi# @bandwidth: the value of bandwidth between @initiator and @target
676a937b6aaSMarkus Armbruster#     proximity domain, the bandwidth unit is "Bytes per second".
6779b12dfa0SLiu Jingqi#
6789b12dfa0SLiu Jingqi# Since: 5.0
6799b12dfa0SLiu Jingqi##
6809b12dfa0SLiu Jingqi{ 'struct': 'NumaHmatLBOptions',
6819b12dfa0SLiu Jingqi    'data': {
6829b12dfa0SLiu Jingqi    'initiator': 'uint16',
6839b12dfa0SLiu Jingqi    'target': 'uint16',
6849b12dfa0SLiu Jingqi    'hierarchy': 'HmatLBMemoryHierarchy',
6859b12dfa0SLiu Jingqi    'data-type': 'HmatLBDataType',
6869b12dfa0SLiu Jingqi    '*latency': 'uint64',
6879b12dfa0SLiu Jingqi    '*bandwidth': 'size' }}
6889b12dfa0SLiu Jingqi
6899b12dfa0SLiu Jingqi##
690c412a48dSLiu Jingqi# @HmatCacheAssociativity:
691c412a48dSLiu Jingqi#
692c412a48dSLiu Jingqi# Cache associativity in the Memory Side Cache Information Structure
693c412a48dSLiu Jingqi# of HMAT
694c412a48dSLiu Jingqi#
695c412a48dSLiu Jingqi# For more information of @HmatCacheAssociativity, see chapter
696c412a48dSLiu Jingqi# 5.2.27.5: Table 5-147 of ACPI 6.3 spec.
697c412a48dSLiu Jingqi#
698a937b6aaSMarkus Armbruster# @none: None (no memory side cache in this proximity domain, or cache
699a937b6aaSMarkus Armbruster#     associativity unknown)
700c412a48dSLiu Jingqi#
701c412a48dSLiu Jingqi# @direct: Direct Mapped
702c412a48dSLiu Jingqi#
703c412a48dSLiu Jingqi# @complex: Complex Cache Indexing (implementation specific)
704c412a48dSLiu Jingqi#
705c412a48dSLiu Jingqi# Since: 5.0
706c412a48dSLiu Jingqi##
707c412a48dSLiu Jingqi{ 'enum': 'HmatCacheAssociativity',
708c412a48dSLiu Jingqi  'data': [ 'none', 'direct', 'complex' ] }
709c412a48dSLiu Jingqi
710c412a48dSLiu Jingqi##
711c412a48dSLiu Jingqi# @HmatCacheWritePolicy:
712c412a48dSLiu Jingqi#
713a937b6aaSMarkus Armbruster# Cache write policy in the Memory Side Cache Information Structure of
714a937b6aaSMarkus Armbruster# HMAT
715c412a48dSLiu Jingqi#
716a937b6aaSMarkus Armbruster# For more information of @HmatCacheWritePolicy, see chapter 5.2.27.5:
717a937b6aaSMarkus Armbruster# Table 5-147: Field "Cache Attributes" of ACPI 6.3 spec.
718c412a48dSLiu Jingqi#
719a937b6aaSMarkus Armbruster# @none: None (no memory side cache in this proximity domain, or cache
720a937b6aaSMarkus Armbruster#     write policy unknown)
721c412a48dSLiu Jingqi#
722c412a48dSLiu Jingqi# @write-back: Write Back (WB)
723c412a48dSLiu Jingqi#
724c412a48dSLiu Jingqi# @write-through: Write Through (WT)
725c412a48dSLiu Jingqi#
726c412a48dSLiu Jingqi# Since: 5.0
727c412a48dSLiu Jingqi##
728c412a48dSLiu Jingqi{ 'enum': 'HmatCacheWritePolicy',
729c412a48dSLiu Jingqi  'data': [ 'none', 'write-back', 'write-through' ] }
730c412a48dSLiu Jingqi
731c412a48dSLiu Jingqi##
732c412a48dSLiu Jingqi# @NumaHmatCacheOptions:
733c412a48dSLiu Jingqi#
734c412a48dSLiu Jingqi# Set the memory side cache information for a given memory domain.
735c412a48dSLiu Jingqi#
736a937b6aaSMarkus Armbruster# For more information of @NumaHmatCacheOptions, see chapter 5.2.27.5:
737a937b6aaSMarkus Armbruster# Table 5-147: Field "Cache Attributes" of ACPI 6.3 spec.
738c412a48dSLiu Jingqi#
739c412a48dSLiu Jingqi# @node-id: the memory proximity domain to which the memory belongs.
740c412a48dSLiu Jingqi#
741c412a48dSLiu Jingqi# @size: the size of memory side cache in bytes.
742c412a48dSLiu Jingqi#
743c412a48dSLiu Jingqi# @level: the cache level described in this structure.
744c412a48dSLiu Jingqi#
745c412a48dSLiu Jingqi# @associativity: the cache associativity,
746c412a48dSLiu Jingqi#     none/direct-mapped/complex(complex cache indexing).
747c412a48dSLiu Jingqi#
748c412a48dSLiu Jingqi# @policy: the write policy, none/write-back/write-through.
749c412a48dSLiu Jingqi#
750c412a48dSLiu Jingqi# @line: the cache Line size in bytes.
751c412a48dSLiu Jingqi#
752c412a48dSLiu Jingqi# Since: 5.0
753c412a48dSLiu Jingqi##
754c412a48dSLiu Jingqi{ 'struct': 'NumaHmatCacheOptions',
755c412a48dSLiu Jingqi  'data': {
756c412a48dSLiu Jingqi   'node-id': 'uint32',
757c412a48dSLiu Jingqi   'size': 'size',
758c412a48dSLiu Jingqi   'level': 'uint8',
759c412a48dSLiu Jingqi   'associativity': 'HmatCacheAssociativity',
760c412a48dSLiu Jingqi   'policy': 'HmatCacheWritePolicy',
761c412a48dSLiu Jingqi   'line': 'uint16' }}
762c412a48dSLiu Jingqi
763c412a48dSLiu Jingqi##
764d4130cbfSPhilippe Mathieu-Daudé# @memsave:
765d4130cbfSPhilippe Mathieu-Daudé#
766d4130cbfSPhilippe Mathieu-Daudé# Save a portion of guest memory to a file.
767d4130cbfSPhilippe Mathieu-Daudé#
768d4130cbfSPhilippe Mathieu-Daudé# @val: the virtual address of the guest to start from
769d4130cbfSPhilippe Mathieu-Daudé#
770d4130cbfSPhilippe Mathieu-Daudé# @size: the size of memory region to save
771d4130cbfSPhilippe Mathieu-Daudé#
772d4130cbfSPhilippe Mathieu-Daudé# @filename: the file to save the memory to as binary data
773d4130cbfSPhilippe Mathieu-Daudé#
774d4130cbfSPhilippe Mathieu-Daudé# @cpu-index: the index of the virtual CPU to use for translating the
775d4130cbfSPhilippe Mathieu-Daudé#     virtual address (defaults to CPU 0)
776d4130cbfSPhilippe Mathieu-Daudé#
7779bc6e893SMarkus Armbruster# Since: 0.14
778d4130cbfSPhilippe Mathieu-Daudé#
779d4130cbfSPhilippe Mathieu-Daudé# Notes: Errors were not reliably returned until 1.1
780d4130cbfSPhilippe Mathieu-Daudé#
781d4130cbfSPhilippe Mathieu-Daudé# Example:
782d4130cbfSPhilippe Mathieu-Daudé#
783d4130cbfSPhilippe Mathieu-Daudé#     -> { "execute": "memsave",
784d4130cbfSPhilippe Mathieu-Daudé#          "arguments": { "val": 10,
785d4130cbfSPhilippe Mathieu-Daudé#                         "size": 100,
786d4130cbfSPhilippe Mathieu-Daudé#                         "filename": "/tmp/virtual-mem-dump" } }
787d4130cbfSPhilippe Mathieu-Daudé#     <- { "return": {} }
788d4130cbfSPhilippe Mathieu-Daudé##
789d4130cbfSPhilippe Mathieu-Daudé{ 'command': 'memsave',
790d4130cbfSPhilippe Mathieu-Daudé  'data': {'val': 'int', 'size': 'int', 'filename': 'str', '*cpu-index': 'int'} }
791d4130cbfSPhilippe Mathieu-Daudé
792d4130cbfSPhilippe Mathieu-Daudé##
793d4130cbfSPhilippe Mathieu-Daudé# @pmemsave:
794d4130cbfSPhilippe Mathieu-Daudé#
795d4130cbfSPhilippe Mathieu-Daudé# Save a portion of guest physical memory to a file.
796d4130cbfSPhilippe Mathieu-Daudé#
797d4130cbfSPhilippe Mathieu-Daudé# @val: the physical address of the guest to start from
798d4130cbfSPhilippe Mathieu-Daudé#
799d4130cbfSPhilippe Mathieu-Daudé# @size: the size of memory region to save
800d4130cbfSPhilippe Mathieu-Daudé#
801d4130cbfSPhilippe Mathieu-Daudé# @filename: the file to save the memory to as binary data
802d4130cbfSPhilippe Mathieu-Daudé#
8039bc6e893SMarkus Armbruster# Since: 0.14
804d4130cbfSPhilippe Mathieu-Daudé#
805d4130cbfSPhilippe Mathieu-Daudé# Notes: Errors were not reliably returned until 1.1
806d4130cbfSPhilippe Mathieu-Daudé#
807d4130cbfSPhilippe Mathieu-Daudé# Example:
808d4130cbfSPhilippe Mathieu-Daudé#
809d4130cbfSPhilippe Mathieu-Daudé#     -> { "execute": "pmemsave",
810d4130cbfSPhilippe Mathieu-Daudé#          "arguments": { "val": 10,
811d4130cbfSPhilippe Mathieu-Daudé#                         "size": 100,
812d4130cbfSPhilippe Mathieu-Daudé#                         "filename": "/tmp/physical-mem-dump" } }
813d4130cbfSPhilippe Mathieu-Daudé#     <- { "return": {} }
814d4130cbfSPhilippe Mathieu-Daudé##
815d4130cbfSPhilippe Mathieu-Daudé{ 'command': 'pmemsave',
816d4130cbfSPhilippe Mathieu-Daudé  'data': {'val': 'int', 'size': 'int', 'filename': 'str'} }
817d4130cbfSPhilippe Mathieu-Daudé
818d4130cbfSPhilippe Mathieu-Daudé##
8198ac25c84SMarkus Armbruster# @Memdev:
8208ac25c84SMarkus Armbruster#
8218ac25c84SMarkus Armbruster# Information about memory backend
8228ac25c84SMarkus Armbruster#
8238ac25c84SMarkus Armbruster# @id: backend's ID if backend has 'id' property (since 2.9)
8248ac25c84SMarkus Armbruster#
8258ac25c84SMarkus Armbruster# @size: memory backend size
8268ac25c84SMarkus Armbruster#
827157cfaf9SDavid Hildenbrand# @merge: whether memory merge support is enabled
8288ac25c84SMarkus Armbruster#
829157cfaf9SDavid Hildenbrand# @dump: whether memory backend's memory is included in a core dump
8308ac25c84SMarkus Armbruster#
831157cfaf9SDavid Hildenbrand# @prealloc: whether memory was preallocated
8328ac25c84SMarkus Armbruster#
833d300fc54SDavid Hildenbrand# @share: whether memory is private to QEMU or shared (since 6.1)
834d300fc54SDavid Hildenbrand#
835a937b6aaSMarkus Armbruster# @reserve: whether swap space (or huge pages) was reserved if
836a937b6aaSMarkus Armbruster#     applicable.  This corresponds to the user configuration and not
837a937b6aaSMarkus Armbruster#     the actual behavior implemented in the OS to perform the
838a937b6aaSMarkus Armbruster#     reservation.  For example, Linux will never reserve swap space
839a937b6aaSMarkus Armbruster#     for shared file mappings.  (since 6.1)
84069647f9dSDavid Hildenbrand#
8418ac25c84SMarkus Armbruster# @host-nodes: host nodes for its memory policy
8428ac25c84SMarkus Armbruster#
8438ac25c84SMarkus Armbruster# @policy: memory policy of memory backend
8448ac25c84SMarkus Armbruster#
8458ac25c84SMarkus Armbruster# Since: 2.1
8468ac25c84SMarkus Armbruster##
8478ac25c84SMarkus Armbruster{ 'struct': 'Memdev',
8488ac25c84SMarkus Armbruster  'data': {
8498ac25c84SMarkus Armbruster    '*id':        'str',
8508ac25c84SMarkus Armbruster    'size':       'size',
8518ac25c84SMarkus Armbruster    'merge':      'bool',
8528ac25c84SMarkus Armbruster    'dump':       'bool',
8538ac25c84SMarkus Armbruster    'prealloc':   'bool',
854d300fc54SDavid Hildenbrand    'share':      'bool',
85569647f9dSDavid Hildenbrand    '*reserve':    'bool',
8568ac25c84SMarkus Armbruster    'host-nodes': ['uint16'],
8578ac25c84SMarkus Armbruster    'policy':     'HostMemPolicy' }}
8588ac25c84SMarkus Armbruster
8598ac25c84SMarkus Armbruster##
8608ac25c84SMarkus Armbruster# @query-memdev:
8618ac25c84SMarkus Armbruster#
8628ac25c84SMarkus Armbruster# Returns information for all memory backends.
8638ac25c84SMarkus Armbruster#
8648ac25c84SMarkus Armbruster# Returns: a list of @Memdev.
8658ac25c84SMarkus Armbruster#
8668ac25c84SMarkus Armbruster# Since: 2.1
8678ac25c84SMarkus Armbruster#
8688ac25c84SMarkus Armbruster# Example:
8698ac25c84SMarkus Armbruster#
8708ac25c84SMarkus Armbruster#     -> { "execute": "query-memdev" }
8718ac25c84SMarkus Armbruster#     <- { "return": [
8728ac25c84SMarkus Armbruster#            {
8738ac25c84SMarkus Armbruster#              "id": "mem1",
8748ac25c84SMarkus Armbruster#              "size": 536870912,
8758ac25c84SMarkus Armbruster#              "merge": false,
8768ac25c84SMarkus Armbruster#              "dump": true,
8778ac25c84SMarkus Armbruster#              "prealloc": false,
8787c90031dSVictor Toso#              "share": false,
8798ac25c84SMarkus Armbruster#              "host-nodes": [0, 1],
8808ac25c84SMarkus Armbruster#              "policy": "bind"
8818ac25c84SMarkus Armbruster#            },
8828ac25c84SMarkus Armbruster#            {
8838ac25c84SMarkus Armbruster#              "size": 536870912,
8848ac25c84SMarkus Armbruster#              "merge": false,
8858ac25c84SMarkus Armbruster#              "dump": true,
8868ac25c84SMarkus Armbruster#              "prealloc": true,
8877c90031dSVictor Toso#              "share": false,
8888ac25c84SMarkus Armbruster#              "host-nodes": [2, 3],
8898ac25c84SMarkus Armbruster#              "policy": "preferred"
8908ac25c84SMarkus Armbruster#            }
8918ac25c84SMarkus Armbruster#          ]
8928ac25c84SMarkus Armbruster#        }
8938ac25c84SMarkus Armbruster##
8948ac25c84SMarkus Armbruster{ 'command': 'query-memdev', 'returns': ['Memdev'], 'allow-preconfig': true }
8958ac25c84SMarkus Armbruster
8968ac25c84SMarkus Armbruster##
8978ac25c84SMarkus Armbruster# @CpuInstanceProperties:
8988ac25c84SMarkus Armbruster#
899a937b6aaSMarkus Armbruster# List of properties to be used for hotplugging a CPU instance, it
900a937b6aaSMarkus Armbruster# should be passed by management with device_add command when a CPU is
901a937b6aaSMarkus Armbruster# being hotplugged.
9028ac25c84SMarkus Armbruster#
9033da4aef8SNina Schoetterl-Glausch# Which members are optional and which mandatory depends on the
9043da4aef8SNina Schoetterl-Glausch# architecture and board.
9053da4aef8SNina Schoetterl-Glausch#
9060d177cddSPierre Morel# For s390x see :ref:`cpu-topology-s390x`.
9070d177cddSPierre Morel#
9083da4aef8SNina Schoetterl-Glausch# The ids other than the node-id specify the position of the CPU
9093da4aef8SNina Schoetterl-Glausch# within the CPU topology (as defined by the machine property "smp",
9103da4aef8SNina Schoetterl-Glausch# thus see also type @SMPConfiguration)
9113da4aef8SNina Schoetterl-Glausch#
9128ac25c84SMarkus Armbruster# @node-id: NUMA node ID the CPU belongs to
913a937b6aaSMarkus Armbruster#
9145de1aff2SPierre Morel# @drawer-id: drawer number within CPU topology the CPU belongs to
9155de1aff2SPierre Morel#     (since 8.2)
9165de1aff2SPierre Morel#
9175de1aff2SPierre Morel# @book-id: book number within parent container the CPU belongs to
9185de1aff2SPierre Morel#     (since 8.2)
9195de1aff2SPierre Morel#
9205de1aff2SPierre Morel# @socket-id: socket number within parent container the CPU belongs to
921a937b6aaSMarkus Armbruster#
9223da4aef8SNina Schoetterl-Glausch# @die-id: die number within the parent container the CPU belongs to
9233da4aef8SNina Schoetterl-Glausch#    (since 4.1)
924a937b6aaSMarkus Armbruster#
9253da4aef8SNina Schoetterl-Glausch# @cluster-id: cluster number within the parent container the CPU
9263da4aef8SNina Schoetterl-Glausch#     belongs to (since 7.1)
927a937b6aaSMarkus Armbruster#
9283da4aef8SNina Schoetterl-Glausch# @core-id: core number within the parent container the CPU
9293da4aef8SNina Schoetterl-Glausch#     belongs to
930a937b6aaSMarkus Armbruster#
9313da4aef8SNina Schoetterl-Glausch# @thread-id: thread number within the core the CPU  belongs to
9328ac25c84SMarkus Armbruster#
9333da4aef8SNina Schoetterl-Glausch# Note: management should be prepared to pass through additional
9343da4aef8SNina Schoetterl-Glausch#     properties with device_add.
9358ac25c84SMarkus Armbruster#
9368ac25c84SMarkus Armbruster# Since: 2.7
9378ac25c84SMarkus Armbruster##
9388ac25c84SMarkus Armbruster{ 'struct': 'CpuInstanceProperties',
9393da4aef8SNina Schoetterl-Glausch  # Keep these in sync with the properties device_add accepts
9408ac25c84SMarkus Armbruster  'data': { '*node-id': 'int',
9415de1aff2SPierre Morel            '*drawer-id': 'int',
9425de1aff2SPierre Morel            '*book-id': 'int',
9438ac25c84SMarkus Armbruster            '*socket-id': 'int',
944176d2cdaSLike Xu            '*die-id': 'int',
9451dcf7001SGavin Shan            '*cluster-id': 'int',
9468ac25c84SMarkus Armbruster            '*core-id': 'int',
9478ac25c84SMarkus Armbruster            '*thread-id': 'int'
9488ac25c84SMarkus Armbruster  }
9498ac25c84SMarkus Armbruster}
9508ac25c84SMarkus Armbruster
9518ac25c84SMarkus Armbruster##
9528ac25c84SMarkus Armbruster# @HotpluggableCPU:
9538ac25c84SMarkus Armbruster#
9548ac25c84SMarkus Armbruster# @type: CPU object type for usage with device_add command
955a937b6aaSMarkus Armbruster#
9568ac25c84SMarkus Armbruster# @props: list of properties to be used for hotplugging CPU
957a937b6aaSMarkus Armbruster#
958a937b6aaSMarkus Armbruster# @vcpus-count: number of logical VCPU threads @HotpluggableCPU
959a937b6aaSMarkus Armbruster#     provides
960a937b6aaSMarkus Armbruster#
961a937b6aaSMarkus Armbruster# @qom-path: link to existing CPU object if CPU is present or omitted
962a937b6aaSMarkus Armbruster#     if CPU is not present.
9638ac25c84SMarkus Armbruster#
9648ac25c84SMarkus Armbruster# Since: 2.7
9658ac25c84SMarkus Armbruster##
9668ac25c84SMarkus Armbruster{ 'struct': 'HotpluggableCPU',
9678ac25c84SMarkus Armbruster  'data': { 'type': 'str',
9688ac25c84SMarkus Armbruster            'vcpus-count': 'int',
9698ac25c84SMarkus Armbruster            'props': 'CpuInstanceProperties',
9708ac25c84SMarkus Armbruster            '*qom-path': 'str'
9718ac25c84SMarkus Armbruster          }
9728ac25c84SMarkus Armbruster}
9738ac25c84SMarkus Armbruster
9748ac25c84SMarkus Armbruster##
9758ac25c84SMarkus Armbruster# @query-hotpluggable-cpus:
9768ac25c84SMarkus Armbruster#
9778ac25c84SMarkus Armbruster# TODO: Better documentation; currently there is none.
9788ac25c84SMarkus Armbruster#
9798ac25c84SMarkus Armbruster# Returns: a list of HotpluggableCPU objects.
9808ac25c84SMarkus Armbruster#
9818ac25c84SMarkus Armbruster# Since: 2.7
9828ac25c84SMarkus Armbruster#
98337fa48a4SMarkus Armbruster# Examples:
9848ac25c84SMarkus Armbruster#
985a937b6aaSMarkus Armbruster#     For pseries machine type started with -smp 2,cores=2,maxcpus=4 -cpu
986a937b6aaSMarkus Armbruster#     POWER8:
9878ac25c84SMarkus Armbruster#
9888ac25c84SMarkus Armbruster#     -> { "execute": "query-hotpluggable-cpus" }
9898ac25c84SMarkus Armbruster#     <- {"return": [
990b4c32cbfSVictor Toso#          { "props": { "core-id": 8 }, "type": "POWER8-spapr-cpu-core",
9918ac25c84SMarkus Armbruster#            "vcpus-count": 1 },
992b4c32cbfSVictor Toso#          { "props": { "core-id": 0 }, "type": "POWER8-spapr-cpu-core",
9938ac25c84SMarkus Armbruster#            "vcpus-count": 1, "qom-path": "/machine/unattached/device[0]"}
9948ac25c84SMarkus Armbruster#        ]}'
9958ac25c84SMarkus Armbruster#
9968ac25c84SMarkus Armbruster#     For pc machine type started with -smp 1,maxcpus=2:
9978ac25c84SMarkus Armbruster#
9988ac25c84SMarkus Armbruster#     -> { "execute": "query-hotpluggable-cpus" }
9998ac25c84SMarkus Armbruster#     <- {"return": [
10008ac25c84SMarkus Armbruster#          {
10018ac25c84SMarkus Armbruster#             "type": "qemu64-x86_64-cpu", "vcpus-count": 1,
10028ac25c84SMarkus Armbruster#             "props": {"core-id": 0, "socket-id": 1, "thread-id": 0}
10038ac25c84SMarkus Armbruster#          },
10048ac25c84SMarkus Armbruster#          {
10058ac25c84SMarkus Armbruster#             "qom-path": "/machine/unattached/device[0]",
10068ac25c84SMarkus Armbruster#             "type": "qemu64-x86_64-cpu", "vcpus-count": 1,
10078ac25c84SMarkus Armbruster#             "props": {"core-id": 0, "socket-id": 0, "thread-id": 0}
10088ac25c84SMarkus Armbruster#          }
10098ac25c84SMarkus Armbruster#        ]}
10108ac25c84SMarkus Armbruster#
1011a937b6aaSMarkus Armbruster#     For s390x-virtio-ccw machine type started with -smp 1,maxcpus=2 -cpu
1012a937b6aaSMarkus Armbruster#     qemu (Since: 2.11):
10138ac25c84SMarkus Armbruster#
10148ac25c84SMarkus Armbruster#     -> { "execute": "query-hotpluggable-cpus" }
10158ac25c84SMarkus Armbruster#     <- {"return": [
10168ac25c84SMarkus Armbruster#          {
10178ac25c84SMarkus Armbruster#             "type": "qemu-s390x-cpu", "vcpus-count": 1,
10188ac25c84SMarkus Armbruster#             "props": { "core-id": 1 }
10198ac25c84SMarkus Armbruster#          },
10208ac25c84SMarkus Armbruster#          {
10218ac25c84SMarkus Armbruster#             "qom-path": "/machine/unattached/device[0]",
10228ac25c84SMarkus Armbruster#             "type": "qemu-s390x-cpu", "vcpus-count": 1,
10238ac25c84SMarkus Armbruster#             "props": { "core-id": 0 }
10248ac25c84SMarkus Armbruster#          }
10258ac25c84SMarkus Armbruster#        ]}
10268ac25c84SMarkus Armbruster##
10278ac25c84SMarkus Armbruster{ 'command': 'query-hotpluggable-cpus', 'returns': ['HotpluggableCPU'],
10288ac25c84SMarkus Armbruster             'allow-preconfig': true }
10298ac25c84SMarkus Armbruster
10308ac25c84SMarkus Armbruster##
10318ac25c84SMarkus Armbruster# @set-numa-node:
10328ac25c84SMarkus Armbruster#
1033a937b6aaSMarkus Armbruster# Runtime equivalent of '-numa' CLI option, available at preconfigure
1034a937b6aaSMarkus Armbruster# stage to configure numa mapping before initializing machine.
10358ac25c84SMarkus Armbruster#
1036433a4fdcSMarkus Armbruster# Since: 3.0
10378ac25c84SMarkus Armbruster##
10388ac25c84SMarkus Armbruster{ 'command': 'set-numa-node', 'boxed': true,
10398ac25c84SMarkus Armbruster  'data': 'NumaOptions',
10408ac25c84SMarkus Armbruster  'allow-preconfig': true
10418ac25c84SMarkus Armbruster}
1042a83e24baSPhilippe Mathieu-Daudé
1043a83e24baSPhilippe Mathieu-Daudé##
1044a83e24baSPhilippe Mathieu-Daudé# @balloon:
1045a83e24baSPhilippe Mathieu-Daudé#
1046a83e24baSPhilippe Mathieu-Daudé# Request the balloon driver to change its balloon size.
1047a83e24baSPhilippe Mathieu-Daudé#
1048a937b6aaSMarkus Armbruster# @value: the target logical size of the VM in bytes.  We can deduce
1049a937b6aaSMarkus Armbruster#     the size of the balloon using this formula:
1050826bd069SPeter Maydell#
1051a83e24baSPhilippe Mathieu-Daudé#        logical_vm_size = vm_ram_size - balloon_size
1052826bd069SPeter Maydell#
1053a83e24baSPhilippe Mathieu-Daudé#     From it we have: balloon_size = vm_ram_size - @value
1054a83e24baSPhilippe Mathieu-Daudé#
10552746f060SMarkus Armbruster# Errors:
1056e6ab40feSMarkus Armbruster#     - If the balloon driver is enabled but not functional because
1057e6ab40feSMarkus Armbruster#       the KVM kernel module cannot support it, KVMMissingCap
1058a83e24baSPhilippe Mathieu-Daudé#     - If no balloon device is present, DeviceNotActive
1059a83e24baSPhilippe Mathieu-Daudé#
1060a937b6aaSMarkus Armbruster# Notes: This command just issues a request to the guest.  When it
1061a937b6aaSMarkus Armbruster#     returns, the balloon size may not have changed.  A guest can
1062a937b6aaSMarkus Armbruster#     change the balloon size independent of this command.
1063a83e24baSPhilippe Mathieu-Daudé#
10649bc6e893SMarkus Armbruster# Since: 0.14
1065a83e24baSPhilippe Mathieu-Daudé#
1066a83e24baSPhilippe Mathieu-Daudé# Example:
1067a83e24baSPhilippe Mathieu-Daudé#
1068a83e24baSPhilippe Mathieu-Daudé#     -> { "execute": "balloon", "arguments": { "value": 536870912 } }
1069a83e24baSPhilippe Mathieu-Daudé#     <- { "return": {} }
1070a83e24baSPhilippe Mathieu-Daudé#
1071a83e24baSPhilippe Mathieu-Daudé#     With a 2.5GiB guest this command inflated the ballon to 3GiB.
1072a83e24baSPhilippe Mathieu-Daudé##
1073a83e24baSPhilippe Mathieu-Daudé{ 'command': 'balloon', 'data': {'value': 'int'} }
1074a83e24baSPhilippe Mathieu-Daudé
1075a83e24baSPhilippe Mathieu-Daudé##
1076a83e24baSPhilippe Mathieu-Daudé# @BalloonInfo:
1077a83e24baSPhilippe Mathieu-Daudé#
1078a83e24baSPhilippe Mathieu-Daudé# Information about the guest balloon device.
1079a83e24baSPhilippe Mathieu-Daudé#
1080a937b6aaSMarkus Armbruster# @actual: the logical size of the VM in bytes Formula used:
1081a937b6aaSMarkus Armbruster#     logical_vm_size = vm_ram_size - balloon_size
1082a83e24baSPhilippe Mathieu-Daudé#
10839bc6e893SMarkus Armbruster# Since: 0.14
1084a83e24baSPhilippe Mathieu-Daudé##
1085a83e24baSPhilippe Mathieu-Daudé{ 'struct': 'BalloonInfo', 'data': {'actual': 'int' } }
1086a83e24baSPhilippe Mathieu-Daudé
1087a83e24baSPhilippe Mathieu-Daudé##
1088a83e24baSPhilippe Mathieu-Daudé# @query-balloon:
1089a83e24baSPhilippe Mathieu-Daudé#
1090a83e24baSPhilippe Mathieu-Daudé# Return information about the balloon device.
1091a83e24baSPhilippe Mathieu-Daudé#
1092a937b6aaSMarkus Armbruster# Returns:
1093e2c1dcbcSMarkus Armbruster#     @BalloonInfo
10942746f060SMarkus Armbruster#
10952746f060SMarkus Armbruster# Errors:
1096e6ab40feSMarkus Armbruster#     - If the balloon driver is enabled but not functional because
1097e6ab40feSMarkus Armbruster#       the KVM kernel module cannot support it, KVMMissingCap
1098a83e24baSPhilippe Mathieu-Daudé#     - If no balloon device is present, DeviceNotActive
1099a83e24baSPhilippe Mathieu-Daudé#
11009bc6e893SMarkus Armbruster# Since: 0.14
1101a83e24baSPhilippe Mathieu-Daudé#
1102a83e24baSPhilippe Mathieu-Daudé# Example:
1103a83e24baSPhilippe Mathieu-Daudé#
1104a83e24baSPhilippe Mathieu-Daudé#     -> { "execute": "query-balloon" }
1105a83e24baSPhilippe Mathieu-Daudé#     <- { "return": {
11065d07159dSVictor Toso#              "actual": 1073741824
1107a83e24baSPhilippe Mathieu-Daudé#           }
1108a83e24baSPhilippe Mathieu-Daudé#        }
1109a83e24baSPhilippe Mathieu-Daudé##
1110a83e24baSPhilippe Mathieu-Daudé{ 'command': 'query-balloon', 'returns': 'BalloonInfo' }
1111a83e24baSPhilippe Mathieu-Daudé
1112a83e24baSPhilippe Mathieu-Daudé##
1113a83e24baSPhilippe Mathieu-Daudé# @BALLOON_CHANGE:
1114a83e24baSPhilippe Mathieu-Daudé#
1115a937b6aaSMarkus Armbruster# Emitted when the guest changes the actual BALLOON level.  This value
1116a937b6aaSMarkus Armbruster# is equivalent to the @actual field return by the 'query-balloon'
1117a937b6aaSMarkus Armbruster# command
1118a83e24baSPhilippe Mathieu-Daudé#
1119a937b6aaSMarkus Armbruster# @actual: the logical size of the VM in bytes Formula used:
1120a937b6aaSMarkus Armbruster#     logical_vm_size = vm_ram_size - balloon_size
1121a83e24baSPhilippe Mathieu-Daudé#
1122a83e24baSPhilippe Mathieu-Daudé# Note: this event is rate-limited.
1123a83e24baSPhilippe Mathieu-Daudé#
1124a83e24baSPhilippe Mathieu-Daudé# Since: 1.2
1125a83e24baSPhilippe Mathieu-Daudé#
1126a83e24baSPhilippe Mathieu-Daudé# Example:
1127a83e24baSPhilippe Mathieu-Daudé#
1128a83e24baSPhilippe Mathieu-Daudé#     <- { "event": "BALLOON_CHANGE",
1129a83e24baSPhilippe Mathieu-Daudé#          "data": { "actual": 944766976 },
1130a83e24baSPhilippe Mathieu-Daudé#          "timestamp": { "seconds": 1267020223, "microseconds": 435656 } }
1131a83e24baSPhilippe Mathieu-Daudé##
1132a83e24baSPhilippe Mathieu-Daudé{ 'event': 'BALLOON_CHANGE',
1133a83e24baSPhilippe Mathieu-Daudé  'data': { 'actual': 'int' } }
1134b495ec6cSPhilippe Mathieu-Daudé
1135b495ec6cSPhilippe Mathieu-Daudé##
1136259ebed4SMaciej S. Szmigiero# @HvBalloonInfo:
1137259ebed4SMaciej S. Szmigiero#
1138259ebed4SMaciej S. Szmigiero# hv-balloon guest-provided memory status information.
1139259ebed4SMaciej S. Szmigiero#
1140259ebed4SMaciej S. Szmigiero# @committed: the amount of memory in use inside the guest plus the
1141259ebed4SMaciej S. Szmigiero#     amount of the memory unusable inside the guest (ballooned out,
1142259ebed4SMaciej S. Szmigiero#     offline, etc.)
1143259ebed4SMaciej S. Szmigiero#
1144259ebed4SMaciej S. Szmigiero# @available: the amount of the memory inside the guest available for
1145259ebed4SMaciej S. Szmigiero#     new allocations ("free")
1146259ebed4SMaciej S. Szmigiero#
1147259ebed4SMaciej S. Szmigiero# Since: 8.2
1148259ebed4SMaciej S. Szmigiero##
1149259ebed4SMaciej S. Szmigiero{ 'struct': 'HvBalloonInfo',
1150259ebed4SMaciej S. Szmigiero  'data': { 'committed': 'size', 'available': 'size' } }
1151259ebed4SMaciej S. Szmigiero
1152259ebed4SMaciej S. Szmigiero##
1153259ebed4SMaciej S. Szmigiero# @query-hv-balloon-status-report:
1154259ebed4SMaciej S. Szmigiero#
1155259ebed4SMaciej S. Szmigiero# Returns the hv-balloon driver data contained in the last received "STATUS"
1156259ebed4SMaciej S. Szmigiero# message from the guest.
1157259ebed4SMaciej S. Szmigiero#
1158259ebed4SMaciej S. Szmigiero# Returns:
1159e2c1dcbcSMarkus Armbruster#     @HvBalloonInfo
11602746f060SMarkus Armbruster#
11612746f060SMarkus Armbruster# Errors:
1162e6ab40feSMarkus Armbruster#     - If no hv-balloon device is present, guest memory status
1163e6ab40feSMarkus Armbruster#       reporting is not enabled or no guest memory status report
1164e6ab40feSMarkus Armbruster#       received yet, GenericError
1165259ebed4SMaciej S. Szmigiero#
1166259ebed4SMaciej S. Szmigiero# Since: 8.2
1167259ebed4SMaciej S. Szmigiero#
1168259ebed4SMaciej S. Szmigiero# Example:
1169259ebed4SMaciej S. Szmigiero#
1170259ebed4SMaciej S. Szmigiero#     -> { "execute": "query-hv-balloon-status-report" }
1171259ebed4SMaciej S. Szmigiero#     <- { "return": {
1172259ebed4SMaciej S. Szmigiero#              "committed": 816640000,
1173259ebed4SMaciej S. Szmigiero#              "available": 3333054464
1174259ebed4SMaciej S. Szmigiero#           }
1175259ebed4SMaciej S. Szmigiero#        }
1176259ebed4SMaciej S. Szmigiero##
1177259ebed4SMaciej S. Szmigiero{ 'command': 'query-hv-balloon-status-report', 'returns': 'HvBalloonInfo' }
1178259ebed4SMaciej S. Szmigiero
1179259ebed4SMaciej S. Szmigiero##
1180259ebed4SMaciej S. Szmigiero# @HV_BALLOON_STATUS_REPORT:
1181259ebed4SMaciej S. Szmigiero#
1182259ebed4SMaciej S. Szmigiero# Emitted when the hv-balloon driver receives a "STATUS" message from
1183259ebed4SMaciej S. Szmigiero# the guest.
1184259ebed4SMaciej S. Szmigiero#
1185259ebed4SMaciej S. Szmigiero# Note: this event is rate-limited.
1186259ebed4SMaciej S. Szmigiero#
1187259ebed4SMaciej S. Szmigiero# Since: 8.2
1188259ebed4SMaciej S. Szmigiero#
1189259ebed4SMaciej S. Szmigiero# Example:
1190259ebed4SMaciej S. Szmigiero#
1191259ebed4SMaciej S. Szmigiero#     <- { "event": "HV_BALLOON_STATUS_REPORT",
1192259ebed4SMaciej S. Szmigiero#          "data": { "committed": 816640000, "available": 3333054464 },
1193259ebed4SMaciej S. Szmigiero#          "timestamp": { "seconds": 1600295492, "microseconds": 661044 } }
1194259ebed4SMaciej S. Szmigiero#
1195259ebed4SMaciej S. Szmigiero##
1196259ebed4SMaciej S. Szmigiero{ 'event': 'HV_BALLOON_STATUS_REPORT',
1197259ebed4SMaciej S. Szmigiero  'data': 'HvBalloonInfo' }
1198259ebed4SMaciej S. Szmigiero
1199259ebed4SMaciej S. Szmigiero##
1200b495ec6cSPhilippe Mathieu-Daudé# @MemoryInfo:
1201b495ec6cSPhilippe Mathieu-Daudé#
1202b495ec6cSPhilippe Mathieu-Daudé# Actual memory information in bytes.
1203b495ec6cSPhilippe Mathieu-Daudé#
1204b495ec6cSPhilippe Mathieu-Daudé# @base-memory: size of "base" memory specified with command line
1205b495ec6cSPhilippe Mathieu-Daudé#     option -m.
1206b495ec6cSPhilippe Mathieu-Daudé#
1207a937b6aaSMarkus Armbruster# @plugged-memory: size of memory that can be hot-unplugged.  This
1208a937b6aaSMarkus Armbruster#     field is omitted if target doesn't support memory hotplug (i.e.
1209a937b6aaSMarkus Armbruster#     CONFIG_MEM_DEVICE not defined at build time).
1210b495ec6cSPhilippe Mathieu-Daudé#
12119bc6e893SMarkus Armbruster# Since: 2.11
1212b495ec6cSPhilippe Mathieu-Daudé##
1213b495ec6cSPhilippe Mathieu-Daudé{ 'struct': 'MemoryInfo',
1214b495ec6cSPhilippe Mathieu-Daudé  'data'  : { 'base-memory': 'size', '*plugged-memory': 'size' } }
1215b495ec6cSPhilippe Mathieu-Daudé
1216b495ec6cSPhilippe Mathieu-Daudé##
1217b495ec6cSPhilippe Mathieu-Daudé# @query-memory-size-summary:
1218b495ec6cSPhilippe Mathieu-Daudé#
1219a937b6aaSMarkus Armbruster# Return the amount of initially allocated and present hotpluggable
1220a937b6aaSMarkus Armbruster# (if enabled) memory in bytes.
1221b495ec6cSPhilippe Mathieu-Daudé#
1222b495ec6cSPhilippe Mathieu-Daudé# Example:
1223b495ec6cSPhilippe Mathieu-Daudé#
1224b495ec6cSPhilippe Mathieu-Daudé#     -> { "execute": "query-memory-size-summary" }
1225b495ec6cSPhilippe Mathieu-Daudé#     <- { "return": { "base-memory": 4294967296, "plugged-memory": 0 } }
1226b495ec6cSPhilippe Mathieu-Daudé#
12279bc6e893SMarkus Armbruster# Since: 2.11
1228b495ec6cSPhilippe Mathieu-Daudé##
1229b495ec6cSPhilippe Mathieu-Daudé{ 'command': 'query-memory-size-summary', 'returns': 'MemoryInfo' }
1230b495ec6cSPhilippe Mathieu-Daudé
1231b495ec6cSPhilippe Mathieu-Daudé##
1232b495ec6cSPhilippe Mathieu-Daudé# @PCDIMMDeviceInfo:
1233b495ec6cSPhilippe Mathieu-Daudé#
1234b495ec6cSPhilippe Mathieu-Daudé# PCDIMMDevice state information
1235b495ec6cSPhilippe Mathieu-Daudé#
1236b495ec6cSPhilippe Mathieu-Daudé# @id: device's ID
1237b495ec6cSPhilippe Mathieu-Daudé#
1238b495ec6cSPhilippe Mathieu-Daudé# @addr: physical address, where device is mapped
1239b495ec6cSPhilippe Mathieu-Daudé#
1240b495ec6cSPhilippe Mathieu-Daudé# @size: size of memory that the device provides
1241b495ec6cSPhilippe Mathieu-Daudé#
1242b495ec6cSPhilippe Mathieu-Daudé# @slot: slot number at which device is plugged in
1243b495ec6cSPhilippe Mathieu-Daudé#
1244b495ec6cSPhilippe Mathieu-Daudé# @node: NUMA node number where device is plugged in
1245b495ec6cSPhilippe Mathieu-Daudé#
1246b495ec6cSPhilippe Mathieu-Daudé# @memdev: memory backend linked with device
1247b495ec6cSPhilippe Mathieu-Daudé#
1248b495ec6cSPhilippe Mathieu-Daudé# @hotplugged: true if device was hotplugged
1249b495ec6cSPhilippe Mathieu-Daudé#
1250a937b6aaSMarkus Armbruster# @hotpluggable: true if device if could be added/removed while
1251a937b6aaSMarkus Armbruster#     machine is running
1252b495ec6cSPhilippe Mathieu-Daudé#
1253b495ec6cSPhilippe Mathieu-Daudé# Since: 2.1
1254b495ec6cSPhilippe Mathieu-Daudé##
1255b495ec6cSPhilippe Mathieu-Daudé{ 'struct': 'PCDIMMDeviceInfo',
1256b495ec6cSPhilippe Mathieu-Daudé  'data': { '*id': 'str',
1257b495ec6cSPhilippe Mathieu-Daudé            'addr': 'int',
1258b495ec6cSPhilippe Mathieu-Daudé            'size': 'int',
1259b495ec6cSPhilippe Mathieu-Daudé            'slot': 'int',
1260b495ec6cSPhilippe Mathieu-Daudé            'node': 'int',
1261b495ec6cSPhilippe Mathieu-Daudé            'memdev': 'str',
1262b495ec6cSPhilippe Mathieu-Daudé            'hotplugged': 'bool',
1263b495ec6cSPhilippe Mathieu-Daudé            'hotpluggable': 'bool'
1264b495ec6cSPhilippe Mathieu-Daudé          }
1265b495ec6cSPhilippe Mathieu-Daudé}
1266b495ec6cSPhilippe Mathieu-Daudé
1267b495ec6cSPhilippe Mathieu-Daudé##
1268b495ec6cSPhilippe Mathieu-Daudé# @VirtioPMEMDeviceInfo:
1269b495ec6cSPhilippe Mathieu-Daudé#
1270b495ec6cSPhilippe Mathieu-Daudé# VirtioPMEM state information
1271b495ec6cSPhilippe Mathieu-Daudé#
1272b495ec6cSPhilippe Mathieu-Daudé# @id: device's ID
1273b495ec6cSPhilippe Mathieu-Daudé#
1274b495ec6cSPhilippe Mathieu-Daudé# @memaddr: physical address in memory, where device is mapped
1275b495ec6cSPhilippe Mathieu-Daudé#
1276b495ec6cSPhilippe Mathieu-Daudé# @size: size of memory that the device provides
1277b495ec6cSPhilippe Mathieu-Daudé#
1278b495ec6cSPhilippe Mathieu-Daudé# @memdev: memory backend linked with device
1279b495ec6cSPhilippe Mathieu-Daudé#
1280b495ec6cSPhilippe Mathieu-Daudé# Since: 4.1
1281b495ec6cSPhilippe Mathieu-Daudé##
1282b495ec6cSPhilippe Mathieu-Daudé{ 'struct': 'VirtioPMEMDeviceInfo',
1283b495ec6cSPhilippe Mathieu-Daudé  'data': { '*id': 'str',
1284b495ec6cSPhilippe Mathieu-Daudé            'memaddr': 'size',
1285b495ec6cSPhilippe Mathieu-Daudé            'size': 'size',
1286b495ec6cSPhilippe Mathieu-Daudé            'memdev': 'str'
1287b495ec6cSPhilippe Mathieu-Daudé          }
1288b495ec6cSPhilippe Mathieu-Daudé}
1289b495ec6cSPhilippe Mathieu-Daudé
1290b495ec6cSPhilippe Mathieu-Daudé##
1291b495ec6cSPhilippe Mathieu-Daudé# @VirtioMEMDeviceInfo:
1292b495ec6cSPhilippe Mathieu-Daudé#
1293b495ec6cSPhilippe Mathieu-Daudé# VirtioMEMDevice state information
1294b495ec6cSPhilippe Mathieu-Daudé#
1295b495ec6cSPhilippe Mathieu-Daudé# @id: device's ID
1296b495ec6cSPhilippe Mathieu-Daudé#
1297b495ec6cSPhilippe Mathieu-Daudé# @memaddr: physical address in memory, where device is mapped
1298b495ec6cSPhilippe Mathieu-Daudé#
1299b495ec6cSPhilippe Mathieu-Daudé# @requested-size: the user requested size of the device
1300b495ec6cSPhilippe Mathieu-Daudé#
1301b495ec6cSPhilippe Mathieu-Daudé# @size: the (current) size of memory that the device provides
1302b495ec6cSPhilippe Mathieu-Daudé#
1303b495ec6cSPhilippe Mathieu-Daudé# @max-size: the maximum size of memory that the device can provide
1304b495ec6cSPhilippe Mathieu-Daudé#
1305b495ec6cSPhilippe Mathieu-Daudé# @block-size: the block size of memory that the device provides
1306b495ec6cSPhilippe Mathieu-Daudé#
1307b495ec6cSPhilippe Mathieu-Daudé# @node: NUMA node number where device is assigned to
1308b495ec6cSPhilippe Mathieu-Daudé#
1309b495ec6cSPhilippe Mathieu-Daudé# @memdev: memory backend linked with the region
1310b495ec6cSPhilippe Mathieu-Daudé#
1311b495ec6cSPhilippe Mathieu-Daudé# Since: 5.1
1312b495ec6cSPhilippe Mathieu-Daudé##
1313b495ec6cSPhilippe Mathieu-Daudé{ 'struct': 'VirtioMEMDeviceInfo',
1314b495ec6cSPhilippe Mathieu-Daudé  'data': { '*id': 'str',
1315b495ec6cSPhilippe Mathieu-Daudé            'memaddr': 'size',
1316b495ec6cSPhilippe Mathieu-Daudé            'requested-size': 'size',
1317b495ec6cSPhilippe Mathieu-Daudé            'size': 'size',
1318b495ec6cSPhilippe Mathieu-Daudé            'max-size': 'size',
1319b495ec6cSPhilippe Mathieu-Daudé            'block-size': 'size',
1320b495ec6cSPhilippe Mathieu-Daudé            'node': 'int',
1321b495ec6cSPhilippe Mathieu-Daudé            'memdev': 'str'
1322b495ec6cSPhilippe Mathieu-Daudé          }
1323b495ec6cSPhilippe Mathieu-Daudé}
1324b495ec6cSPhilippe Mathieu-Daudé
1325b495ec6cSPhilippe Mathieu-Daudé##
1326a7c565a9SYang Zhong# @SgxEPCDeviceInfo:
1327a7c565a9SYang Zhong#
1328a7c565a9SYang Zhong# Sgx EPC state information
1329a7c565a9SYang Zhong#
1330a7c565a9SYang Zhong# @id: device's ID
1331a7c565a9SYang Zhong#
1332a7c565a9SYang Zhong# @memaddr: physical address in memory, where device is mapped
1333a7c565a9SYang Zhong#
1334a7c565a9SYang Zhong# @size: size of memory that the device provides
1335a7c565a9SYang Zhong#
1336a7c565a9SYang Zhong# @memdev: memory backend linked with device
1337a7c565a9SYang Zhong#
1338a66bd91fSYang Zhong# @node: the numa node (Since: 7.0)
133911058123SYang Zhong#
1340a7c565a9SYang Zhong# Since: 6.2
1341a7c565a9SYang Zhong##
1342a7c565a9SYang Zhong{ 'struct': 'SgxEPCDeviceInfo',
1343a7c565a9SYang Zhong  'data': { '*id': 'str',
1344a7c565a9SYang Zhong            'memaddr': 'size',
1345a7c565a9SYang Zhong            'size': 'size',
134611058123SYang Zhong            'node': 'int',
1347a7c565a9SYang Zhong            'memdev': 'str'
1348a7c565a9SYang Zhong          }
1349a7c565a9SYang Zhong}
1350a7c565a9SYang Zhong
1351a7c565a9SYang Zhong##
135216dff2f9SMaciej S. Szmigiero# @HvBalloonDeviceInfo:
135316dff2f9SMaciej S. Szmigiero#
135416dff2f9SMaciej S. Szmigiero# hv-balloon provided memory state information
135516dff2f9SMaciej S. Szmigiero#
135616dff2f9SMaciej S. Szmigiero# @id: device's ID
135716dff2f9SMaciej S. Szmigiero#
135816dff2f9SMaciej S. Szmigiero# @memaddr: physical address in memory, where device is mapped
135916dff2f9SMaciej S. Szmigiero#
136016dff2f9SMaciej S. Szmigiero# @max-size: the maximum size of memory that the device can provide
136116dff2f9SMaciej S. Szmigiero#
136216dff2f9SMaciej S. Szmigiero# @memdev: memory backend linked with device
136316dff2f9SMaciej S. Szmigiero#
136416dff2f9SMaciej S. Szmigiero# Since: 8.2
136516dff2f9SMaciej S. Szmigiero##
136616dff2f9SMaciej S. Szmigiero{ 'struct': 'HvBalloonDeviceInfo',
136716dff2f9SMaciej S. Szmigiero  'data': { '*id': 'str',
136816dff2f9SMaciej S. Szmigiero            '*memaddr': 'size',
136916dff2f9SMaciej S. Szmigiero            'max-size': 'size',
137016dff2f9SMaciej S. Szmigiero            '*memdev': 'str'
137116dff2f9SMaciej S. Szmigiero          }
137216dff2f9SMaciej S. Szmigiero}
137316dff2f9SMaciej S. Szmigiero
137416dff2f9SMaciej S. Szmigiero##
1375db6a252bSMarkus Armbruster# @MemoryDeviceInfoKind:
1376db6a252bSMarkus Armbruster#
137786bf13aeSMarkus Armbruster# @nvdimm: since 2.12
137886bf13aeSMarkus Armbruster#
137986bf13aeSMarkus Armbruster# @virtio-pmem: since 4.1
138086bf13aeSMarkus Armbruster#
138186bf13aeSMarkus Armbruster# @virtio-mem: since 5.1
138286bf13aeSMarkus Armbruster#
138386bf13aeSMarkus Armbruster# @sgx-epc: since 6.2.
138486bf13aeSMarkus Armbruster#
138516dff2f9SMaciej S. Szmigiero# @hv-balloon: since 8.2.
138616dff2f9SMaciej S. Szmigiero#
1387db6a252bSMarkus Armbruster# Since: 2.1
1388db6a252bSMarkus Armbruster##
1389db6a252bSMarkus Armbruster{ 'enum': 'MemoryDeviceInfoKind',
139016dff2f9SMaciej S. Szmigiero  'data': [ 'dimm', 'nvdimm', 'virtio-pmem', 'virtio-mem', 'sgx-epc',
139116dff2f9SMaciej S. Szmigiero            'hv-balloon' ] }
1392db6a252bSMarkus Armbruster
1393db6a252bSMarkus Armbruster##
1394db6a252bSMarkus Armbruster# @PCDIMMDeviceInfoWrapper:
1395db6a252bSMarkus Armbruster#
13962fecccbcSMarkus Armbruster# @data: PCDIMMDevice state information
13972fecccbcSMarkus Armbruster#
1398db6a252bSMarkus Armbruster# Since: 2.1
1399db6a252bSMarkus Armbruster##
1400db6a252bSMarkus Armbruster{ 'struct': 'PCDIMMDeviceInfoWrapper',
1401db6a252bSMarkus Armbruster  'data': { 'data': 'PCDIMMDeviceInfo' } }
1402db6a252bSMarkus Armbruster
1403db6a252bSMarkus Armbruster##
1404db6a252bSMarkus Armbruster# @VirtioPMEMDeviceInfoWrapper:
1405db6a252bSMarkus Armbruster#
14062fecccbcSMarkus Armbruster# @data: VirtioPMEM state information
14072fecccbcSMarkus Armbruster#
1408db6a252bSMarkus Armbruster# Since: 2.1
1409db6a252bSMarkus Armbruster##
1410db6a252bSMarkus Armbruster{ 'struct': 'VirtioPMEMDeviceInfoWrapper',
1411db6a252bSMarkus Armbruster  'data': { 'data': 'VirtioPMEMDeviceInfo' } }
1412db6a252bSMarkus Armbruster
1413db6a252bSMarkus Armbruster##
1414db6a252bSMarkus Armbruster# @VirtioMEMDeviceInfoWrapper:
1415db6a252bSMarkus Armbruster#
14162fecccbcSMarkus Armbruster# @data: VirtioMEMDevice state information
14172fecccbcSMarkus Armbruster#
1418db6a252bSMarkus Armbruster# Since: 2.1
1419db6a252bSMarkus Armbruster##
1420db6a252bSMarkus Armbruster{ 'struct': 'VirtioMEMDeviceInfoWrapper',
1421db6a252bSMarkus Armbruster  'data': { 'data': 'VirtioMEMDeviceInfo' } }
1422db6a252bSMarkus Armbruster
1423db6a252bSMarkus Armbruster##
1424a7c565a9SYang Zhong# @SgxEPCDeviceInfoWrapper:
1425a7c565a9SYang Zhong#
14262fecccbcSMarkus Armbruster# @data: Sgx EPC state information
14272fecccbcSMarkus Armbruster#
1428a7c565a9SYang Zhong# Since: 6.2
1429a7c565a9SYang Zhong##
1430a7c565a9SYang Zhong{ 'struct': 'SgxEPCDeviceInfoWrapper',
1431a7c565a9SYang Zhong  'data': { 'data': 'SgxEPCDeviceInfo' } }
1432a7c565a9SYang Zhong
1433b495ec6cSPhilippe Mathieu-Daudé##
143416dff2f9SMaciej S. Szmigiero# @HvBalloonDeviceInfoWrapper:
143516dff2f9SMaciej S. Szmigiero#
14362fecccbcSMarkus Armbruster# @data: hv-balloon provided memory state information
14372fecccbcSMarkus Armbruster#
143816dff2f9SMaciej S. Szmigiero# Since: 8.2
143916dff2f9SMaciej S. Szmigiero##
144016dff2f9SMaciej S. Szmigiero{ 'struct': 'HvBalloonDeviceInfoWrapper',
144116dff2f9SMaciej S. Szmigiero  'data': { 'data': 'HvBalloonDeviceInfo' } }
144216dff2f9SMaciej S. Szmigiero
144316dff2f9SMaciej S. Szmigiero##
1444b495ec6cSPhilippe Mathieu-Daudé# @MemoryDeviceInfo:
1445b495ec6cSPhilippe Mathieu-Daudé#
1446b495ec6cSPhilippe Mathieu-Daudé# Union containing information about a memory device
1447b495ec6cSPhilippe Mathieu-Daudé#
144889a2273bSMarkus Armbruster# @type: memory device type
144989a2273bSMarkus Armbruster#
1450b495ec6cSPhilippe Mathieu-Daudé# Since: 2.1
1451b495ec6cSPhilippe Mathieu-Daudé##
1452b495ec6cSPhilippe Mathieu-Daudé{ 'union': 'MemoryDeviceInfo',
1453db6a252bSMarkus Armbruster  'base': { 'type': 'MemoryDeviceInfoKind' },
1454db6a252bSMarkus Armbruster  'discriminator': 'type',
1455db6a252bSMarkus Armbruster  'data': { 'dimm': 'PCDIMMDeviceInfoWrapper',
1456db6a252bSMarkus Armbruster            'nvdimm': 'PCDIMMDeviceInfoWrapper',
1457db6a252bSMarkus Armbruster            'virtio-pmem': 'VirtioPMEMDeviceInfoWrapper',
1458a7c565a9SYang Zhong            'virtio-mem': 'VirtioMEMDeviceInfoWrapper',
145916dff2f9SMaciej S. Szmigiero            'sgx-epc': 'SgxEPCDeviceInfoWrapper',
146016dff2f9SMaciej S. Szmigiero            'hv-balloon': 'HvBalloonDeviceInfoWrapper'
1461b495ec6cSPhilippe Mathieu-Daudé          }
1462b495ec6cSPhilippe Mathieu-Daudé}
1463b495ec6cSPhilippe Mathieu-Daudé
1464b495ec6cSPhilippe Mathieu-Daudé##
1465dfce81f1SSean Christopherson# @SgxEPC:
1466dfce81f1SSean Christopherson#
1467dfce81f1SSean Christopherson# Sgx EPC cmdline information
1468dfce81f1SSean Christopherson#
1469dfce81f1SSean Christopherson# @memdev: memory backend linked with device
1470dfce81f1SSean Christopherson#
1471a66bd91fSYang Zhong# @node: the numa node (Since: 7.0)
147211058123SYang Zhong#
1473dfce81f1SSean Christopherson# Since: 6.2
1474dfce81f1SSean Christopherson##
1475dfce81f1SSean Christopherson{ 'struct': 'SgxEPC',
147611058123SYang Zhong  'data': { 'memdev': 'str',
147711058123SYang Zhong            'node': 'int'
147811058123SYang Zhong          }
147911058123SYang Zhong}
1480dfce81f1SSean Christopherson
1481dfce81f1SSean Christopherson##
1482dfce81f1SSean Christopherson# @SgxEPCProperties:
1483dfce81f1SSean Christopherson#
1484dfce81f1SSean Christopherson# SGX properties of machine types.
1485dfce81f1SSean Christopherson#
1486dfce81f1SSean Christopherson# @sgx-epc: list of ids of memory-backend-epc objects.
1487dfce81f1SSean Christopherson#
1488dfce81f1SSean Christopherson# Since: 6.2
1489dfce81f1SSean Christopherson##
1490dfce81f1SSean Christopherson{ 'struct': 'SgxEPCProperties',
1491dfce81f1SSean Christopherson  'data': { 'sgx-epc': ['SgxEPC'] }
1492dfce81f1SSean Christopherson}
1493dfce81f1SSean Christopherson
1494dfce81f1SSean Christopherson##
1495b495ec6cSPhilippe Mathieu-Daudé# @query-memory-devices:
1496b495ec6cSPhilippe Mathieu-Daudé#
1497b495ec6cSPhilippe Mathieu-Daudé# Lists available memory devices and their state
1498b495ec6cSPhilippe Mathieu-Daudé#
1499b495ec6cSPhilippe Mathieu-Daudé# Since: 2.1
1500b495ec6cSPhilippe Mathieu-Daudé#
1501b495ec6cSPhilippe Mathieu-Daudé# Example:
1502b495ec6cSPhilippe Mathieu-Daudé#
1503b495ec6cSPhilippe Mathieu-Daudé#     -> { "execute": "query-memory-devices" }
1504b495ec6cSPhilippe Mathieu-Daudé#     <- { "return": [ { "data":
1505b495ec6cSPhilippe Mathieu-Daudé#                           { "addr": 5368709120,
1506b495ec6cSPhilippe Mathieu-Daudé#                             "hotpluggable": true,
1507b495ec6cSPhilippe Mathieu-Daudé#                             "hotplugged": true,
1508b495ec6cSPhilippe Mathieu-Daudé#                             "id": "d1",
1509b495ec6cSPhilippe Mathieu-Daudé#                             "memdev": "/objects/memX",
1510b495ec6cSPhilippe Mathieu-Daudé#                             "node": 0,
1511b495ec6cSPhilippe Mathieu-Daudé#                             "size": 1073741824,
1512b495ec6cSPhilippe Mathieu-Daudé#                             "slot": 0},
1513b495ec6cSPhilippe Mathieu-Daudé#                        "type": "dimm"
1514b495ec6cSPhilippe Mathieu-Daudé#                      } ] }
1515b495ec6cSPhilippe Mathieu-Daudé##
1516b495ec6cSPhilippe Mathieu-Daudé{ 'command': 'query-memory-devices', 'returns': ['MemoryDeviceInfo'] }
1517b495ec6cSPhilippe Mathieu-Daudé
1518b495ec6cSPhilippe Mathieu-Daudé##
1519b495ec6cSPhilippe Mathieu-Daudé# @MEMORY_DEVICE_SIZE_CHANGE:
1520b495ec6cSPhilippe Mathieu-Daudé#
1521a937b6aaSMarkus Armbruster# Emitted when the size of a memory device changes.  Only emitted for
1522a937b6aaSMarkus Armbruster# memory devices that can actually change the size (e.g., virtio-mem
1523a937b6aaSMarkus Armbruster# due to guest action).
1524b495ec6cSPhilippe Mathieu-Daudé#
1525b495ec6cSPhilippe Mathieu-Daudé# @id: device's ID
1526d89dd28fSDavid Hildenbrand#
1527b495ec6cSPhilippe Mathieu-Daudé# @size: the new size of memory that the device provides
1528b495ec6cSPhilippe Mathieu-Daudé#
1529d89dd28fSDavid Hildenbrand# @qom-path: path to the device object in the QOM tree (since 6.2)
1530d89dd28fSDavid Hildenbrand#
1531b495ec6cSPhilippe Mathieu-Daudé# Note: this event is rate-limited.
1532b495ec6cSPhilippe Mathieu-Daudé#
1533b495ec6cSPhilippe Mathieu-Daudé# Since: 5.1
1534b495ec6cSPhilippe Mathieu-Daudé#
1535b495ec6cSPhilippe Mathieu-Daudé# Example:
1536b495ec6cSPhilippe Mathieu-Daudé#
1537b495ec6cSPhilippe Mathieu-Daudé#     <- { "event": "MEMORY_DEVICE_SIZE_CHANGE",
1538dba673b9SVictor Toso#          "data": { "id": "vm0", "size": 1073741824,
1539dba673b9SVictor Toso#                    "qom-path": "/machine/unattached/device[2]" },
1540b495ec6cSPhilippe Mathieu-Daudé#          "timestamp": { "seconds": 1588168529, "microseconds": 201316 } }
1541b495ec6cSPhilippe Mathieu-Daudé##
1542b495ec6cSPhilippe Mathieu-Daudé{ 'event': 'MEMORY_DEVICE_SIZE_CHANGE',
1543d89dd28fSDavid Hildenbrand  'data': { '*id': 'str', 'size': 'size', 'qom-path' : 'str'} }
1544b495ec6cSPhilippe Mathieu-Daudé
1545b495ec6cSPhilippe Mathieu-Daudé##
1546b495ec6cSPhilippe Mathieu-Daudé# @MEM_UNPLUG_ERROR:
1547b495ec6cSPhilippe Mathieu-Daudé#
1548b495ec6cSPhilippe Mathieu-Daudé# Emitted when memory hot unplug error occurs.
1549b495ec6cSPhilippe Mathieu-Daudé#
1550b495ec6cSPhilippe Mathieu-Daudé# @device: device name
1551b495ec6cSPhilippe Mathieu-Daudé#
1552b495ec6cSPhilippe Mathieu-Daudé# @msg: Informative message
1553b495ec6cSPhilippe Mathieu-Daudé#
1554d43f1670SDaniel Henrique Barboza# Features:
1555a937b6aaSMarkus Armbruster#
1556a937b6aaSMarkus Armbruster# @deprecated: This event is deprecated.  Use
1557a937b6aaSMarkus Armbruster#     @DEVICE_UNPLUG_GUEST_ERROR instead.
1558d43f1670SDaniel Henrique Barboza#
1559b495ec6cSPhilippe Mathieu-Daudé# Since: 2.4
1560b495ec6cSPhilippe Mathieu-Daudé#
1561b495ec6cSPhilippe Mathieu-Daudé# Example:
1562b495ec6cSPhilippe Mathieu-Daudé#
1563e8796ac4SVictor Toso#     <- { "event": "MEM_UNPLUG_ERROR",
1564b495ec6cSPhilippe Mathieu-Daudé#          "data": { "device": "dimm1",
1565b495ec6cSPhilippe Mathieu-Daudé#                    "msg": "acpi: device unplug for unsupported device"
1566b495ec6cSPhilippe Mathieu-Daudé#          },
1567b495ec6cSPhilippe Mathieu-Daudé#          "timestamp": { "seconds": 1265044230, "microseconds": 450486 } }
1568b495ec6cSPhilippe Mathieu-Daudé##
1569b495ec6cSPhilippe Mathieu-Daudé{ 'event': 'MEM_UNPLUG_ERROR',
1570d43f1670SDaniel Henrique Barboza  'data': { 'device': 'str', 'msg': 'str' },
1571d43f1670SDaniel Henrique Barboza  'features': ['deprecated'] }
15721e63fe68SPaolo Bonzini
15731e63fe68SPaolo Bonzini##
157497ec4d21SPaolo Bonzini# @BootConfiguration:
157597ec4d21SPaolo Bonzini#
157697ec4d21SPaolo Bonzini# Schema for virtual machine boot configuration.
157797ec4d21SPaolo Bonzini#
157897ec4d21SPaolo Bonzini# @order: Boot order (a=floppy, c=hard disk, d=CD-ROM, n=network)
157997ec4d21SPaolo Bonzini#
158097ec4d21SPaolo Bonzini# @once: Boot order to apply on first boot
158197ec4d21SPaolo Bonzini#
158297ec4d21SPaolo Bonzini# @menu: Whether to show a boot menu
158397ec4d21SPaolo Bonzini#
1584a937b6aaSMarkus Armbruster# @splash: The name of the file to be passed to the firmware as logo
1585a937b6aaSMarkus Armbruster#     picture, if @menu is true.
158697ec4d21SPaolo Bonzini#
158797ec4d21SPaolo Bonzini# @splash-time: How long to show the logo picture, in milliseconds
158897ec4d21SPaolo Bonzini#
158997ec4d21SPaolo Bonzini# @reboot-timeout: Timeout before guest reboots after boot fails
159097ec4d21SPaolo Bonzini#
1591a937b6aaSMarkus Armbruster# @strict: Whether to attempt booting from devices not included in the
1592a937b6aaSMarkus Armbruster#     boot order
159397ec4d21SPaolo Bonzini#
159497ec4d21SPaolo Bonzini# Since: 7.1
159597ec4d21SPaolo Bonzini##
159697ec4d21SPaolo Bonzini{ 'struct': 'BootConfiguration', 'data': {
159797ec4d21SPaolo Bonzini     '*order': 'str',
159897ec4d21SPaolo Bonzini     '*once': 'str',
159997ec4d21SPaolo Bonzini     '*menu': 'bool',
160097ec4d21SPaolo Bonzini     '*splash': 'str',
160197ec4d21SPaolo Bonzini     '*splash-time': 'int',
160297ec4d21SPaolo Bonzini     '*reboot-timeout': 'int',
160397ec4d21SPaolo Bonzini     '*strict': 'bool' } }
160497ec4d21SPaolo Bonzini
160597ec4d21SPaolo Bonzini##
16061e63fe68SPaolo Bonzini# @SMPConfiguration:
16071e63fe68SPaolo Bonzini#
1608a937b6aaSMarkus Armbruster# Schema for CPU topology configuration.  A missing value lets QEMU
1609a937b6aaSMarkus Armbruster# figure out a suitable value based on the ones that are provided.
16101e63fe68SPaolo Bonzini#
16113da4aef8SNina Schoetterl-Glausch# The members other than @cpus and @maxcpus define a topology of
16123da4aef8SNina Schoetterl-Glausch# containers.
16133da4aef8SNina Schoetterl-Glausch#
16143da4aef8SNina Schoetterl-Glausch# The ordering from highest/coarsest to lowest/finest is:
16155de1aff2SPierre Morel# @drawers, @books, @sockets, @dies, @clusters, @cores, @threads.
16163da4aef8SNina Schoetterl-Glausch#
16173da4aef8SNina Schoetterl-Glausch# Different architectures support different subsets of topology
16183da4aef8SNina Schoetterl-Glausch# containers.
16193da4aef8SNina Schoetterl-Glausch#
16203da4aef8SNina Schoetterl-Glausch# For example, s390x does not have clusters and dies, and the socket
16213da4aef8SNina Schoetterl-Glausch# is the parent container of cores.
16223da4aef8SNina Schoetterl-Glausch#
16231e63fe68SPaolo Bonzini# @cpus: number of virtual CPUs in the virtual machine
16241e63fe68SPaolo Bonzini#
1625a937b6aaSMarkus Armbruster# @maxcpus: maximum number of hotpluggable virtual CPUs in the virtual
1626a937b6aaSMarkus Armbruster#     machine
16271e63fe68SPaolo Bonzini#
16285de1aff2SPierre Morel# @drawers: number of drawers in the CPU topology (since 8.2)
16295de1aff2SPierre Morel#
16305de1aff2SPierre Morel# @books: number of books in the CPU topology (since 8.2)
16315de1aff2SPierre Morel#
16325de1aff2SPierre Morel# @sockets: number of sockets per parent container
16333da4aef8SNina Schoetterl-Glausch#
16343da4aef8SNina Schoetterl-Glausch# @dies: number of dies per parent container
16353da4aef8SNina Schoetterl-Glausch#
16363da4aef8SNina Schoetterl-Glausch# @clusters: number of clusters per parent container (since 7.0)
16373da4aef8SNina Schoetterl-Glausch#
16383da4aef8SNina Schoetterl-Glausch# @cores: number of cores per parent container
16393da4aef8SNina Schoetterl-Glausch#
16403da4aef8SNina Schoetterl-Glausch# @threads: number of threads per core
16413da4aef8SNina Schoetterl-Glausch#
16421e63fe68SPaolo Bonzini# Since: 6.1
16431e63fe68SPaolo Bonzini##
16441e63fe68SPaolo Bonzini{ 'struct': 'SMPConfiguration', 'data': {
16451e63fe68SPaolo Bonzini     '*cpus': 'int',
16465de1aff2SPierre Morel     '*drawers': 'int',
16475de1aff2SPierre Morel     '*books': 'int',
16481e63fe68SPaolo Bonzini     '*sockets': 'int',
16491e63fe68SPaolo Bonzini     '*dies': 'int',
1650864c3b5cSYanan Wang     '*clusters': 'int',
16511e63fe68SPaolo Bonzini     '*cores': 'int',
16521e63fe68SPaolo Bonzini     '*threads': 'int',
16531e63fe68SPaolo Bonzini     '*maxcpus': 'int' } }
1654dd98234cSDaniel P. Berrangé
1655dd98234cSDaniel P. Berrangé##
165691f2fa70SDaniel P. Berrangé# @x-query-irq:
165791f2fa70SDaniel P. Berrangé#
165891f2fa70SDaniel P. Berrangé# Query interrupt statistics
165991f2fa70SDaniel P. Berrangé#
16608c0bae5aSMarkus Armbruster# Features:
1661a937b6aaSMarkus Armbruster#
16628c0bae5aSMarkus Armbruster# @unstable: This command is meant for debugging.
16638c0bae5aSMarkus Armbruster#
166491f2fa70SDaniel P. Berrangé# Returns: interrupt statistics
166591f2fa70SDaniel P. Berrangé#
166691f2fa70SDaniel P. Berrangé# Since: 6.2
166791f2fa70SDaniel P. Berrangé##
166891f2fa70SDaniel P. Berrangé{ 'command': 'x-query-irq',
16698c0bae5aSMarkus Armbruster  'returns': 'HumanReadableText',
16708c0bae5aSMarkus Armbruster  'features': [ 'unstable' ] }
167191f2fa70SDaniel P. Berrangé
167291f2fa70SDaniel P. Berrangé##
16733a841ab5SDaniel P. Berrangé# @x-query-jit:
16743a841ab5SDaniel P. Berrangé#
16753a841ab5SDaniel P. Berrangé# Query TCG compiler statistics
16763a841ab5SDaniel P. Berrangé#
16778c0bae5aSMarkus Armbruster# Features:
1678a937b6aaSMarkus Armbruster#
16798c0bae5aSMarkus Armbruster# @unstable: This command is meant for debugging.
16808c0bae5aSMarkus Armbruster#
16813a841ab5SDaniel P. Berrangé# Returns: TCG compiler statistics
16823a841ab5SDaniel P. Berrangé#
16833a841ab5SDaniel P. Berrangé# Since: 6.2
16843a841ab5SDaniel P. Berrangé##
16853a841ab5SDaniel P. Berrangé{ 'command': 'x-query-jit',
16863a841ab5SDaniel P. Berrangé  'returns': 'HumanReadableText',
16878c0bae5aSMarkus Armbruster  'if': 'CONFIG_TCG',
16888c0bae5aSMarkus Armbruster  'features': [ 'unstable' ] }
16893a841ab5SDaniel P. Berrangé
16903a841ab5SDaniel P. Berrangé##
16911b8ae799SDaniel P. Berrangé# @x-query-numa:
16921b8ae799SDaniel P. Berrangé#
16931b8ae799SDaniel P. Berrangé# Query NUMA topology information
16941b8ae799SDaniel P. Berrangé#
16958c0bae5aSMarkus Armbruster# Features:
1696a937b6aaSMarkus Armbruster#
16978c0bae5aSMarkus Armbruster# @unstable: This command is meant for debugging.
16988c0bae5aSMarkus Armbruster#
16991b8ae799SDaniel P. Berrangé# Returns: topology information
17001b8ae799SDaniel P. Berrangé#
17011b8ae799SDaniel P. Berrangé# Since: 6.2
17021b8ae799SDaniel P. Berrangé##
17031b8ae799SDaniel P. Berrangé{ 'command': 'x-query-numa',
17048c0bae5aSMarkus Armbruster  'returns': 'HumanReadableText',
17058c0bae5aSMarkus Armbruster  'features': [ 'unstable' ] }
17061b8ae799SDaniel P. Berrangé
17071b8ae799SDaniel P. Berrangé##
1708b6a7f3e0SDaniel P. Berrangé# @x-query-opcount:
1709b6a7f3e0SDaniel P. Berrangé#
1710b6a7f3e0SDaniel P. Berrangé# Query TCG opcode counters
1711b6a7f3e0SDaniel P. Berrangé#
17128c0bae5aSMarkus Armbruster# Features:
1713a937b6aaSMarkus Armbruster#
17148c0bae5aSMarkus Armbruster# @unstable: This command is meant for debugging.
17158c0bae5aSMarkus Armbruster#
1716b6a7f3e0SDaniel P. Berrangé# Returns: TCG opcode counters
1717b6a7f3e0SDaniel P. Berrangé#
1718b6a7f3e0SDaniel P. Berrangé# Since: 6.2
1719b6a7f3e0SDaniel P. Berrangé##
1720b6a7f3e0SDaniel P. Berrangé{ 'command': 'x-query-opcount',
1721b6a7f3e0SDaniel P. Berrangé  'returns': 'HumanReadableText',
17228c0bae5aSMarkus Armbruster  'if': 'CONFIG_TCG',
17238c0bae5aSMarkus Armbruster  'features': [ 'unstable' ] }
1724b6a7f3e0SDaniel P. Berrangé
1725b6a7f3e0SDaniel P. Berrangé##
1726ca411b7cSDaniel P. Berrangé# @x-query-ramblock:
1727ca411b7cSDaniel P. Berrangé#
1728ca411b7cSDaniel P. Berrangé# Query system ramblock information
1729ca411b7cSDaniel P. Berrangé#
17308c0bae5aSMarkus Armbruster# Features:
1731a937b6aaSMarkus Armbruster#
17328c0bae5aSMarkus Armbruster# @unstable: This command is meant for debugging.
17338c0bae5aSMarkus Armbruster#
1734ca411b7cSDaniel P. Berrangé# Returns: system ramblock information
1735ca411b7cSDaniel P. Berrangé#
1736ca411b7cSDaniel P. Berrangé# Since: 6.2
1737ca411b7cSDaniel P. Berrangé##
1738ca411b7cSDaniel P. Berrangé{ 'command': 'x-query-ramblock',
17398c0bae5aSMarkus Armbruster  'returns': 'HumanReadableText',
17408c0bae5aSMarkus Armbruster  'features': [ 'unstable' ] }
1741ca411b7cSDaniel P. Berrangé
1742ca411b7cSDaniel P. Berrangé##
17438dbbca5cSDaniel P. Berrangé# @x-query-rdma:
17448dbbca5cSDaniel P. Berrangé#
17458dbbca5cSDaniel P. Berrangé# Query RDMA state
17468dbbca5cSDaniel P. Berrangé#
17478c0bae5aSMarkus Armbruster# Features:
1748a937b6aaSMarkus Armbruster#
17498c0bae5aSMarkus Armbruster# @unstable: This command is meant for debugging.
17508c0bae5aSMarkus Armbruster#
17518dbbca5cSDaniel P. Berrangé# Returns: RDMA state
17528dbbca5cSDaniel P. Berrangé#
17538dbbca5cSDaniel P. Berrangé# Since: 6.2
17548dbbca5cSDaniel P. Berrangé##
17558dbbca5cSDaniel P. Berrangé{ 'command': 'x-query-rdma',
17568c0bae5aSMarkus Armbruster  'returns': 'HumanReadableText',
17578c0bae5aSMarkus Armbruster  'features': [ 'unstable' ] }
17588dbbca5cSDaniel P. Berrangé
17598dbbca5cSDaniel P. Berrangé##
1760dd98234cSDaniel P. Berrangé# @x-query-roms:
1761dd98234cSDaniel P. Berrangé#
1762dd98234cSDaniel P. Berrangé# Query information on the registered ROMS
1763dd98234cSDaniel P. Berrangé#
17648c0bae5aSMarkus Armbruster# Features:
1765a937b6aaSMarkus Armbruster#
17668c0bae5aSMarkus Armbruster# @unstable: This command is meant for debugging.
17678c0bae5aSMarkus Armbruster#
1768dd98234cSDaniel P. Berrangé# Returns: registered ROMs
1769dd98234cSDaniel P. Berrangé#
1770dd98234cSDaniel P. Berrangé# Since: 6.2
1771dd98234cSDaniel P. Berrangé##
1772dd98234cSDaniel P. Berrangé{ 'command': 'x-query-roms',
17738c0bae5aSMarkus Armbruster  'returns': 'HumanReadableText',
17748c0bae5aSMarkus Armbruster  'features': [ 'unstable' ] }
1775fc309207SDaniel P. Berrangé
1776fc309207SDaniel P. Berrangé##
1777fc309207SDaniel P. Berrangé# @x-query-usb:
1778fc309207SDaniel P. Berrangé#
1779fc309207SDaniel P. Berrangé# Query information on the USB devices
1780fc309207SDaniel P. Berrangé#
17818c0bae5aSMarkus Armbruster# Features:
1782a937b6aaSMarkus Armbruster#
17838c0bae5aSMarkus Armbruster# @unstable: This command is meant for debugging.
17848c0bae5aSMarkus Armbruster#
1785fc309207SDaniel P. Berrangé# Returns: USB device information
1786fc309207SDaniel P. Berrangé#
1787fc309207SDaniel P. Berrangé# Since: 6.2
1788fc309207SDaniel P. Berrangé##
1789fc309207SDaniel P. Berrangé{ 'command': 'x-query-usb',
17908c0bae5aSMarkus Armbruster  'returns': 'HumanReadableText',
17918c0bae5aSMarkus Armbruster  'features': [ 'unstable' ] }
1792bdf54a9aSEduardo Habkost
1793bdf54a9aSEduardo Habkost##
1794bdf54a9aSEduardo Habkost# @SmbiosEntryPointType:
1795bdf54a9aSEduardo Habkost#
1796bdf54a9aSEduardo Habkost# @32: SMBIOS version 2.1 (32-bit) Entry Point
1797bdf54a9aSEduardo Habkost#
1798bdf54a9aSEduardo Habkost# @64: SMBIOS version 3.0 (64-bit) Entry Point
1799bdf54a9aSEduardo Habkost#
1800*4901b80eSIgor Mammedov# @auto: Either 2.x or 3.x SMBIOS version, 2.x if configuration can be
1801*4901b80eSIgor Mammedov#     described by it and 3.x otherwise (since: 9.0)
1802*4901b80eSIgor Mammedov#
1803bdf54a9aSEduardo Habkost# Since: 7.0
1804bdf54a9aSEduardo Habkost##
1805bdf54a9aSEduardo Habkost{ 'enum': 'SmbiosEntryPointType',
1806*4901b80eSIgor Mammedov  'data': [ '32', '64', 'auto' ] }
1807ce9d03fbSPaolo Bonzini
1808ce9d03fbSPaolo Bonzini##
1809ce9d03fbSPaolo Bonzini# @MemorySizeConfiguration:
1810ce9d03fbSPaolo Bonzini#
1811ce9d03fbSPaolo Bonzini# Schema for memory size configuration.
1812ce9d03fbSPaolo Bonzini#
1813ce9d03fbSPaolo Bonzini# @size: memory size in bytes
1814ce9d03fbSPaolo Bonzini#
1815ce9d03fbSPaolo Bonzini# @max-size: maximum hotpluggable memory size in bytes
1816ce9d03fbSPaolo Bonzini#
1817ce9d03fbSPaolo Bonzini# @slots: number of available memory slots for hotplug
1818ce9d03fbSPaolo Bonzini#
1819ce9d03fbSPaolo Bonzini# Since: 7.1
1820ce9d03fbSPaolo Bonzini##
1821ce9d03fbSPaolo Bonzini{ 'struct': 'MemorySizeConfiguration', 'data': {
1822ce9d03fbSPaolo Bonzini     '*size': 'size',
1823ce9d03fbSPaolo Bonzini     '*max-size': 'size',
1824ce9d03fbSPaolo Bonzini     '*slots': 'uint64' } }
1825bf353ad5SDaniel Henrique Barboza
1826bf353ad5SDaniel Henrique Barboza##
1827bf353ad5SDaniel Henrique Barboza# @dumpdtb:
1828bf353ad5SDaniel Henrique Barboza#
1829bf353ad5SDaniel Henrique Barboza# Save the FDT in dtb format.
1830bf353ad5SDaniel Henrique Barboza#
1831bf353ad5SDaniel Henrique Barboza# @filename: name of the dtb file to be created
1832bf353ad5SDaniel Henrique Barboza#
1833bf353ad5SDaniel Henrique Barboza# Since: 7.2
1834bf353ad5SDaniel Henrique Barboza#
1835bf353ad5SDaniel Henrique Barboza# Example:
1836a937b6aaSMarkus Armbruster#
183737fa48a4SMarkus Armbruster#     -> { "execute": "dumpdtb" }
1838bf353ad5SDaniel Henrique Barboza#          "arguments": { "filename": "fdt.dtb" } }
183937fa48a4SMarkus Armbruster#     <- { "return": {} }
1840bf353ad5SDaniel Henrique Barboza##
1841bf353ad5SDaniel Henrique Barboza{ 'command': 'dumpdtb',
1842bf353ad5SDaniel Henrique Barboza  'data': { 'filename': 'str' },
1843bf353ad5SDaniel Henrique Barboza  'if': 'CONFIG_FDT' }
1844