xref: /openbmc/qemu/qapi/machine.json (revision 11b8920ed2093848f79f93d106afe8a69a61a523)
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#
27bc2e34e3SMarkus Armbruster# @loongarch64: since 7.1
28bc2e34e3SMarkus Armbruster#
29d461c279SJohn Snow# .. note:: The resulting QMP strings can be appended to the
3001bed0ffSMarkus Armbruster#    "qemu-system-" prefix to produce the corresponding QEMU
3101bed0ffSMarkus Armbruster#    executable name.  This is true even for "qemu-system-x86_64".
32ffaee83bSMarkus Armbruster#
33ffaee83bSMarkus Armbruster# Since: 3.0
34ffaee83bSMarkus Armbruster##
35ffaee83bSMarkus Armbruster{ 'enum' : 'SysEmuTarget',
3601d01edcSPhilippe Mathieu-Daudé  'data' : [ 'aarch64', 'alpha', 'arm', 'avr', 'hppa', 'i386',
37a8a506c3SXiaojuan Yang             'loongarch64', 'm68k', 'microblaze', 'microblazeel', 'mips', 'mips64',
386c301485SPhilippe Mathieu-Daudé             'mips64el', 'mipsel', 'or1k', 'ppc',
39c8c35e5fSYoshinori Sato             'ppc64', 'riscv32', 'riscv64', 'rx', 's390x', 'sh4',
40*51cdb680SThomas Huth             'sh4eb', 'sparc', 'sparc64', 'tricore',
41ffaee83bSMarkus Armbruster             'x86_64', 'xtensa', 'xtensaeb' ] }
428ac25c84SMarkus Armbruster
438ac25c84SMarkus Armbruster##
4432cfefb9SMarkus Armbruster# @S390CpuState:
458ac25c84SMarkus Armbruster#
46a937b6aaSMarkus Armbruster# An enumeration of cpu states that can be assumed by a virtual S390
47a937b6aaSMarkus Armbruster# CPU
488ac25c84SMarkus Armbruster#
498ac25c84SMarkus Armbruster# Since: 2.12
508ac25c84SMarkus Armbruster##
5132cfefb9SMarkus Armbruster{ 'enum': 'S390CpuState',
528ac25c84SMarkus Armbruster  'data': [ 'uninitialized', 'stopped', 'check-stop', 'operating', 'load' ] }
538ac25c84SMarkus Armbruster
548ac25c84SMarkus Armbruster##
558ac25c84SMarkus Armbruster# @CpuInfoS390:
568ac25c84SMarkus Armbruster#
578ac25c84SMarkus Armbruster# Additional information about a virtual S390 CPU
588ac25c84SMarkus Armbruster#
598ac25c84SMarkus Armbruster# @cpu-state: the virtual CPU's state
608ac25c84SMarkus Armbruster#
61ad2d1afcSPierre Morel# @dedicated: the virtual CPU's dedication (since 8.2)
62ad2d1afcSPierre Morel#
63ad2d1afcSPierre Morel# @entitlement: the virtual CPU's entitlement (since 8.2)
64ad2d1afcSPierre Morel#
658ac25c84SMarkus Armbruster# Since: 2.12
668ac25c84SMarkus Armbruster##
67ad2d1afcSPierre Morel{ 'struct': 'CpuInfoS390',
6832cfefb9SMarkus Armbruster  'data': { 'cpu-state': 'S390CpuState',
69ad2d1afcSPierre Morel            '*dedicated': 'bool',
7032cfefb9SMarkus Armbruster            '*entitlement': 'S390CpuEntitlement' } }
718ac25c84SMarkus Armbruster
728ac25c84SMarkus Armbruster##
738ac25c84SMarkus Armbruster# @CpuInfoFast:
748ac25c84SMarkus Armbruster#
758ac25c84SMarkus Armbruster# Information about a virtual CPU
768ac25c84SMarkus Armbruster#
778ac25c84SMarkus Armbruster# @cpu-index: index of the virtual CPU
788ac25c84SMarkus Armbruster#
798ac25c84SMarkus Armbruster# @qom-path: path to the CPU object in the QOM tree
808ac25c84SMarkus Armbruster#
818ac25c84SMarkus Armbruster# @thread-id: ID of the underlying host thread
828ac25c84SMarkus Armbruster#
833da4aef8SNina Schoetterl-Glausch# @props: properties associated with a virtual CPU, e.g. the socket id
848ac25c84SMarkus Armbruster#
858ac25c84SMarkus Armbruster# @target: the QEMU system emulation target, which determines which
868ac25c84SMarkus Armbruster#     additional fields will be listed (since 3.0)
878ac25c84SMarkus Armbruster#
888ac25c84SMarkus Armbruster# Since: 2.12
898ac25c84SMarkus Armbruster##
908ac25c84SMarkus Armbruster{ 'union'         : 'CpuInfoFast',
918ac25c84SMarkus Armbruster  'base'          : { 'cpu-index'    : 'int',
928ac25c84SMarkus Armbruster                      'qom-path'     : 'str',
938ac25c84SMarkus Armbruster                      'thread-id'    : 'int',
948ac25c84SMarkus Armbruster                      '*props'       : 'CpuInstanceProperties',
958ac25c84SMarkus Armbruster                      'target'       : 'SysEmuTarget' },
968ac25c84SMarkus Armbruster  'discriminator' : 'target',
978ac25c84SMarkus Armbruster  'data'          : { 's390x'        : 'CpuInfoS390' } }
988ac25c84SMarkus Armbruster
998ac25c84SMarkus Armbruster##
1008ac25c84SMarkus Armbruster# @query-cpus-fast:
1018ac25c84SMarkus Armbruster#
1028af54b91SDaniel P. Berrangé# Returns information about all virtual CPUs.
1038ac25c84SMarkus Armbruster#
1048ac25c84SMarkus Armbruster# Returns: list of @CpuInfoFast
1058ac25c84SMarkus Armbruster#
1068ac25c84SMarkus Armbruster# Since: 2.12
1078ac25c84SMarkus Armbruster#
10814b48aaaSJohn Snow# .. qmp-example::
1098ac25c84SMarkus Armbruster#
1108ac25c84SMarkus Armbruster#     -> { "execute": "query-cpus-fast" }
1118ac25c84SMarkus Armbruster#     <- { "return": [
1128ac25c84SMarkus Armbruster#             {
1138ac25c84SMarkus Armbruster#                 "thread-id": 25627,
1148ac25c84SMarkus Armbruster#                 "props": {
1158ac25c84SMarkus Armbruster#                     "core-id": 0,
1168ac25c84SMarkus Armbruster#                     "thread-id": 0,
1178ac25c84SMarkus Armbruster#                     "socket-id": 0
1188ac25c84SMarkus Armbruster#                 },
1198ac25c84SMarkus Armbruster#                 "qom-path": "/machine/unattached/device[0]",
1208ac25c84SMarkus Armbruster#                 "target":"x86_64",
1218ac25c84SMarkus Armbruster#                 "cpu-index": 0
1228ac25c84SMarkus Armbruster#             },
1238ac25c84SMarkus Armbruster#             {
1248ac25c84SMarkus Armbruster#                 "thread-id": 25628,
1258ac25c84SMarkus Armbruster#                 "props": {
1268ac25c84SMarkus Armbruster#                     "core-id": 0,
1278ac25c84SMarkus Armbruster#                     "thread-id": 0,
1288ac25c84SMarkus Armbruster#                     "socket-id": 1
1298ac25c84SMarkus Armbruster#                 },
1308ac25c84SMarkus Armbruster#                 "qom-path": "/machine/unattached/device[2]",
1318ac25c84SMarkus Armbruster#                 "target":"x86_64",
1328ac25c84SMarkus Armbruster#                 "cpu-index": 1
1338ac25c84SMarkus Armbruster#             }
1348ac25c84SMarkus Armbruster#         ]
1358ac25c84SMarkus Armbruster#     }
1368ac25c84SMarkus Armbruster##
1378ac25c84SMarkus Armbruster{ 'command': 'query-cpus-fast', 'returns': [ 'CpuInfoFast' ] }
1388ac25c84SMarkus Armbruster
1398ac25c84SMarkus Armbruster##
140236e9397SMaksim Davydov# @CompatProperty:
141236e9397SMaksim Davydov#
142236e9397SMaksim Davydov# Property default values specific to a machine type, for use by
143236e9397SMaksim Davydov# scripts/compare-machine-types.
144236e9397SMaksim Davydov#
145236e9397SMaksim Davydov# @qom-type: name of the QOM type to which the default applies
146236e9397SMaksim Davydov#
147236e9397SMaksim Davydov# @property: name of its property to which the default applies
148236e9397SMaksim Davydov#
149236e9397SMaksim Davydov# @value: the default value (machine-specific default can overwrite
150236e9397SMaksim Davydov#     the "default" default, to avoid this use -machine none)
151236e9397SMaksim Davydov#
152236e9397SMaksim Davydov# Since: 9.1
153236e9397SMaksim Davydov##
154236e9397SMaksim Davydov{ 'struct': 'CompatProperty',
155236e9397SMaksim Davydov  'data': { 'qom-type': 'str',
156236e9397SMaksim Davydov            'property': 'str',
157236e9397SMaksim Davydov            'value': 'str' } }
158236e9397SMaksim Davydov
159236e9397SMaksim Davydov##
1608ac25c84SMarkus Armbruster# @MachineInfo:
1618ac25c84SMarkus Armbruster#
1628ac25c84SMarkus Armbruster# Information describing a machine.
1638ac25c84SMarkus Armbruster#
1648ac25c84SMarkus Armbruster# @name: the name of the machine
1658ac25c84SMarkus Armbruster#
1668ac25c84SMarkus Armbruster# @alias: an alias for the machine name
1678ac25c84SMarkus Armbruster#
1688ac25c84SMarkus Armbruster# @is-default: whether the machine is default
1698ac25c84SMarkus Armbruster#
1708ac25c84SMarkus Armbruster# @cpu-max: maximum number of CPUs supported by the machine type
1719bc6e893SMarkus Armbruster#     (since 1.5)
1728ac25c84SMarkus Armbruster#
1739bc6e893SMarkus Armbruster# @hotpluggable-cpus: cpu hotplug via -device is supported (since 2.7)
1748ac25c84SMarkus Armbruster#
175cd5ff833SIgor Mammedov# @numa-mem-supported: true if '-numa node,mem' option is supported by
176cd5ff833SIgor Mammedov#     the machine type and false otherwise (since 4.1)
177cd5ff833SIgor Mammedov#
178a937b6aaSMarkus Armbruster# @deprecated: if true, the machine type is deprecated and may be
179a937b6aaSMarkus Armbruster#     removed in future versions of QEMU according to the QEMU
180a937b6aaSMarkus Armbruster#     deprecation policy (since 4.1)
18179974027SEduardo Habkost#
182a937b6aaSMarkus Armbruster# @default-cpu-type: default CPU model typename if none is requested
183a937b6aaSMarkus Armbruster#     via the -cpu argument.  (since 4.2)
18404109957SDaniel P. Berrangé#
185a937b6aaSMarkus Armbruster# @default-ram-id: the default ID of initial RAM memory backend (since
186a937b6aaSMarkus Armbruster#     5.2)
187c5566005SMichal Privoznik#
188b97f3147SPeter Krempa# @acpi: machine type supports ACPI (since 8.0)
189b97f3147SPeter Krempa#
190236e9397SMaksim Davydov# @compat-props: The machine type's compatibility properties.  Only
191236e9397SMaksim Davydov#     present when query-machines argument @compat-props is true.
192236e9397SMaksim Davydov#     (since 9.1)
193236e9397SMaksim Davydov#
194236e9397SMaksim Davydov# Features:
195236e9397SMaksim Davydov#
196236e9397SMaksim Davydov# @unstable: Member @compat-props is experimental.
197236e9397SMaksim Davydov#
1989bc6e893SMarkus Armbruster# Since: 1.2
1998ac25c84SMarkus Armbruster##
2008ac25c84SMarkus Armbruster{ 'struct': 'MachineInfo',
2018ac25c84SMarkus Armbruster  'data': { 'name': 'str', '*alias': 'str',
2028ac25c84SMarkus Armbruster            '*is-default': 'bool', 'cpu-max': 'int',
20379974027SEduardo Habkost            'hotpluggable-cpus': 'bool',  'numa-mem-supported': 'bool',
204c5566005SMichal Privoznik            'deprecated': 'bool', '*default-cpu-type': 'str',
205236e9397SMaksim Davydov            '*default-ram-id': 'str', 'acpi': 'bool',
206236e9397SMaksim Davydov            '*compat-props': { 'type': ['CompatProperty'],
207236e9397SMaksim Davydov                               'features': ['unstable'] } } }
2088ac25c84SMarkus Armbruster
2098ac25c84SMarkus Armbruster##
2108ac25c84SMarkus Armbruster# @query-machines:
2118ac25c84SMarkus Armbruster#
2128ac25c84SMarkus Armbruster# Return a list of supported machines
2138ac25c84SMarkus Armbruster#
214236e9397SMaksim Davydov# @compat-props: if true, also return compatibility properties.
215236e9397SMaksim Davydov#     (default: false) (since 9.1)
216236e9397SMaksim Davydov#
217236e9397SMaksim Davydov# Features:
218236e9397SMaksim Davydov#
219236e9397SMaksim Davydov# @unstable: Argument @compat-props is experimental.
220236e9397SMaksim Davydov#
2218ac25c84SMarkus Armbruster# Returns: a list of MachineInfo
2228ac25c84SMarkus Armbruster#
2239bc6e893SMarkus Armbruster# Since: 1.2
224236e9397SMaksim Davydov#
22514b48aaaSJohn Snow# .. qmp-example::
226236e9397SMaksim Davydov#
227236e9397SMaksim Davydov#     -> { "execute": "query-machines", "arguments": { "compat-props": true } }
228236e9397SMaksim Davydov#     <- { "return": [
229236e9397SMaksim Davydov#               {
230236e9397SMaksim Davydov#                  "hotpluggable-cpus": true,
231236e9397SMaksim Davydov#                  "name": "pc-q35-6.2",
232236e9397SMaksim Davydov#                  "compat-props": [
233236e9397SMaksim Davydov#                       {
234236e9397SMaksim Davydov#                          "qom-type": "virtio-mem",
235236e9397SMaksim Davydov#                          "property": "unplugged-inaccessible",
236236e9397SMaksim Davydov#                          "value": "off"
237236e9397SMaksim Davydov#                       }
238236e9397SMaksim Davydov#                   ],
239236e9397SMaksim Davydov#                   "numa-mem-supported": false,
240236e9397SMaksim Davydov#                   "default-cpu-type": "qemu64-x86_64-cpu",
241236e9397SMaksim Davydov#                   "cpu-max": 288,
242236e9397SMaksim Davydov#                   "deprecated": false,
243236e9397SMaksim Davydov#                   "default-ram-id": "pc.ram"
244236e9397SMaksim Davydov#               },
245236e9397SMaksim Davydov#               ...
246236e9397SMaksim Davydov#        }
2478ac25c84SMarkus Armbruster##
248236e9397SMaksim Davydov{ 'command': 'query-machines',
249236e9397SMaksim Davydov  'data': { '*compat-props': { 'type': 'bool',
250236e9397SMaksim Davydov                               'features': [ 'unstable' ] } },
251236e9397SMaksim Davydov  'returns': ['MachineInfo'] }
2528ac25c84SMarkus Armbruster
2538ac25c84SMarkus Armbruster##
2548ac25c84SMarkus Armbruster# @CurrentMachineParams:
2558ac25c84SMarkus Armbruster#
2568ac25c84SMarkus Armbruster# Information describing the running machine parameters.
2578ac25c84SMarkus Armbruster#
2588ac25c84SMarkus Armbruster# @wakeup-suspend-support: true if the machine supports wake up from
2598ac25c84SMarkus Armbruster#     suspend
2608ac25c84SMarkus Armbruster#
2618ac25c84SMarkus Armbruster# Since: 4.0
2628ac25c84SMarkus Armbruster##
2638ac25c84SMarkus Armbruster{ 'struct': 'CurrentMachineParams',
2648ac25c84SMarkus Armbruster  'data': { 'wakeup-suspend-support': 'bool'} }
2658ac25c84SMarkus Armbruster
2668ac25c84SMarkus Armbruster##
2678ac25c84SMarkus Armbruster# @query-current-machine:
2688ac25c84SMarkus Armbruster#
2698ac25c84SMarkus Armbruster# Return information on the current virtual machine.
2708ac25c84SMarkus Armbruster#
2718ac25c84SMarkus Armbruster# Returns: CurrentMachineParams
2728ac25c84SMarkus Armbruster#
2738ac25c84SMarkus Armbruster# Since: 4.0
2748ac25c84SMarkus Armbruster##
2758ac25c84SMarkus Armbruster{ 'command': 'query-current-machine', 'returns': 'CurrentMachineParams' }
2768ac25c84SMarkus Armbruster
2778ac25c84SMarkus Armbruster##
278ffaee83bSMarkus Armbruster# @TargetInfo:
279ffaee83bSMarkus Armbruster#
280ffaee83bSMarkus Armbruster# Information describing the QEMU target.
281ffaee83bSMarkus Armbruster#
282ffaee83bSMarkus Armbruster# @arch: the target architecture
283ffaee83bSMarkus Armbruster#
2849bc6e893SMarkus Armbruster# Since: 1.2
285ffaee83bSMarkus Armbruster##
286ffaee83bSMarkus Armbruster{ 'struct': 'TargetInfo',
287ffaee83bSMarkus Armbruster  'data': { 'arch': 'SysEmuTarget' } }
288ffaee83bSMarkus Armbruster
289ffaee83bSMarkus Armbruster##
290ffaee83bSMarkus Armbruster# @query-target:
291ffaee83bSMarkus Armbruster#
292ffaee83bSMarkus Armbruster# Return information about the target for this QEMU
293ffaee83bSMarkus Armbruster#
294ffaee83bSMarkus Armbruster# Returns: TargetInfo
295ffaee83bSMarkus Armbruster#
2969bc6e893SMarkus Armbruster# Since: 1.2
297ffaee83bSMarkus Armbruster##
298ffaee83bSMarkus Armbruster{ 'command': 'query-target', 'returns': 'TargetInfo' }
299ffaee83bSMarkus Armbruster
300ffaee83bSMarkus Armbruster##
301f68c0147SPhilippe Mathieu-Daudé# @UuidInfo:
302f68c0147SPhilippe Mathieu-Daudé#
303f68c0147SPhilippe Mathieu-Daudé# Guest UUID information (Universally Unique Identifier).
304f68c0147SPhilippe Mathieu-Daudé#
305f68c0147SPhilippe Mathieu-Daudé# @UUID: the UUID of the guest
306f68c0147SPhilippe Mathieu-Daudé#
3079bc6e893SMarkus Armbruster# Since: 0.14
308f68c0147SPhilippe Mathieu-Daudé#
309dd950220SMarkus Armbruster# .. note:: If no UUID was specified for the guest, the nil UUID (all
310dd950220SMarkus Armbruster#    zeroes) is returned.
311f68c0147SPhilippe Mathieu-Daudé##
312f68c0147SPhilippe Mathieu-Daudé{ 'struct': 'UuidInfo', 'data': {'UUID': 'str'} }
313f68c0147SPhilippe Mathieu-Daudé
314f68c0147SPhilippe Mathieu-Daudé##
315f68c0147SPhilippe Mathieu-Daudé# @query-uuid:
316f68c0147SPhilippe Mathieu-Daudé#
317f68c0147SPhilippe Mathieu-Daudé# Query the guest UUID information.
318f68c0147SPhilippe Mathieu-Daudé#
319f68c0147SPhilippe Mathieu-Daudé# Returns: The @UuidInfo for the guest
320f68c0147SPhilippe Mathieu-Daudé#
3219bc6e893SMarkus Armbruster# Since: 0.14
322f68c0147SPhilippe Mathieu-Daudé#
32314b48aaaSJohn Snow# .. qmp-example::
324f68c0147SPhilippe Mathieu-Daudé#
325f68c0147SPhilippe Mathieu-Daudé#     -> { "execute": "query-uuid" }
326f68c0147SPhilippe Mathieu-Daudé#     <- { "return": { "UUID": "550e8400-e29b-41d4-a716-446655440000" } }
327f68c0147SPhilippe Mathieu-Daudé##
328f68c0147SPhilippe Mathieu-Daudé{ 'command': 'query-uuid', 'returns': 'UuidInfo', 'allow-preconfig': true }
329f68c0147SPhilippe Mathieu-Daudé
330f68c0147SPhilippe Mathieu-Daudé##
331db0f08dfSPhilippe Mathieu-Daudé# @GuidInfo:
332db0f08dfSPhilippe Mathieu-Daudé#
333db0f08dfSPhilippe Mathieu-Daudé# GUID information.
334db0f08dfSPhilippe Mathieu-Daudé#
335db0f08dfSPhilippe Mathieu-Daudé# @guid: the globally unique identifier
336db0f08dfSPhilippe Mathieu-Daudé#
337db0f08dfSPhilippe Mathieu-Daudé# Since: 2.9
338db0f08dfSPhilippe Mathieu-Daudé##
339db0f08dfSPhilippe Mathieu-Daudé{ 'struct': 'GuidInfo', 'data': {'guid': 'str'} }
340db0f08dfSPhilippe Mathieu-Daudé
341db0f08dfSPhilippe Mathieu-Daudé##
342db0f08dfSPhilippe Mathieu-Daudé# @query-vm-generation-id:
343db0f08dfSPhilippe Mathieu-Daudé#
344db0f08dfSPhilippe Mathieu-Daudé# Show Virtual Machine Generation ID
345db0f08dfSPhilippe Mathieu-Daudé#
346db0f08dfSPhilippe Mathieu-Daudé# Since: 2.9
347db0f08dfSPhilippe Mathieu-Daudé##
348db0f08dfSPhilippe Mathieu-Daudé{ 'command': 'query-vm-generation-id', 'returns': 'GuidInfo' }
349db0f08dfSPhilippe Mathieu-Daudé
350db0f08dfSPhilippe Mathieu-Daudé##
35190f8c0f9SPhilippe Mathieu-Daudé# @system_reset:
35290f8c0f9SPhilippe Mathieu-Daudé#
35390f8c0f9SPhilippe Mathieu-Daudé# Performs a hard reset of a guest.
35490f8c0f9SPhilippe Mathieu-Daudé#
3559bc6e893SMarkus Armbruster# Since: 0.14
35690f8c0f9SPhilippe Mathieu-Daudé#
35714b48aaaSJohn Snow# .. qmp-example::
35890f8c0f9SPhilippe Mathieu-Daudé#
35990f8c0f9SPhilippe Mathieu-Daudé#     -> { "execute": "system_reset" }
36090f8c0f9SPhilippe Mathieu-Daudé#     <- { "return": {} }
36190f8c0f9SPhilippe Mathieu-Daudé##
36290f8c0f9SPhilippe Mathieu-Daudé{ 'command': 'system_reset' }
36390f8c0f9SPhilippe Mathieu-Daudé
36490f8c0f9SPhilippe Mathieu-Daudé##
36590f8c0f9SPhilippe Mathieu-Daudé# @system_powerdown:
36690f8c0f9SPhilippe Mathieu-Daudé#
36790f8c0f9SPhilippe Mathieu-Daudé# Requests that a guest perform a powerdown operation.
36890f8c0f9SPhilippe Mathieu-Daudé#
3699bc6e893SMarkus Armbruster# Since: 0.14
37090f8c0f9SPhilippe Mathieu-Daudé#
371d461c279SJohn Snow# .. note:: A guest may or may not respond to this command.  This
372d461c279SJohn Snow#    command returning does not indicate that a guest has accepted the
37301bed0ffSMarkus Armbruster#    request or that it has shut down.  Many guests will respond to
37401bed0ffSMarkus Armbruster#    this command by prompting the user in some way.
3754ae65a52SAndrea Bolognani#
37614b48aaaSJohn Snow# .. qmp-example::
37790f8c0f9SPhilippe Mathieu-Daudé#
37890f8c0f9SPhilippe Mathieu-Daudé#     -> { "execute": "system_powerdown" }
37990f8c0f9SPhilippe Mathieu-Daudé#     <- { "return": {} }
38090f8c0f9SPhilippe Mathieu-Daudé##
38190f8c0f9SPhilippe Mathieu-Daudé{ 'command': 'system_powerdown' }
38290f8c0f9SPhilippe Mathieu-Daudé
38390f8c0f9SPhilippe Mathieu-Daudé##
38490f8c0f9SPhilippe Mathieu-Daudé# @system_wakeup:
38590f8c0f9SPhilippe Mathieu-Daudé#
38690f8c0f9SPhilippe Mathieu-Daudé# Wake up guest from suspend.  If the guest has wake-up from suspend
38790f8c0f9SPhilippe Mathieu-Daudé# support enabled (wakeup-suspend-support flag from
38890f8c0f9SPhilippe Mathieu-Daudé# query-current-machine), wake-up guest from suspend if the guest is
38990f8c0f9SPhilippe Mathieu-Daudé# in SUSPENDED state.  Return an error otherwise.
39090f8c0f9SPhilippe Mathieu-Daudé#
39190f8c0f9SPhilippe Mathieu-Daudé# Since: 1.1
39290f8c0f9SPhilippe Mathieu-Daudé#
393d461c279SJohn Snow# .. note:: Prior to 4.0, this command does nothing in case the guest
39490f8c0f9SPhilippe Mathieu-Daudé#    isn't suspended.
39590f8c0f9SPhilippe Mathieu-Daudé#
39614b48aaaSJohn Snow# .. qmp-example::
39790f8c0f9SPhilippe Mathieu-Daudé#
39890f8c0f9SPhilippe Mathieu-Daudé#     -> { "execute": "system_wakeup" }
39990f8c0f9SPhilippe Mathieu-Daudé#     <- { "return": {} }
40090f8c0f9SPhilippe Mathieu-Daudé##
40190f8c0f9SPhilippe Mathieu-Daudé{ 'command': 'system_wakeup' }
40290f8c0f9SPhilippe Mathieu-Daudé
40390f8c0f9SPhilippe Mathieu-Daudé##
4048dc007d3SPhilippe Mathieu-Daudé# @LostTickPolicy:
4058dc007d3SPhilippe Mathieu-Daudé#
406a937b6aaSMarkus Armbruster# Policy for handling lost ticks in timer devices.  Ticks end up
407a937b6aaSMarkus Armbruster# getting lost when, for example, the guest is paused.
4088dc007d3SPhilippe Mathieu-Daudé#
409a937b6aaSMarkus Armbruster# @discard: throw away the missed ticks and continue with future
410a937b6aaSMarkus Armbruster#     injection normally.  The guest OS will see the timer jump ahead
411a937b6aaSMarkus Armbruster#     by a potentially quite significant amount all at once, as if the
4128dc007d3SPhilippe Mathieu-Daudé#     intervening chunk of time had simply not existed; needless to
4138dc007d3SPhilippe Mathieu-Daudé#     say, such a sudden jump can easily confuse a guest OS which is
4148dc007d3SPhilippe Mathieu-Daudé#     not specifically prepared to deal with it.  Assuming the guest
4158dc007d3SPhilippe Mathieu-Daudé#     OS can deal correctly with the time jump, the time in the guest
4168dc007d3SPhilippe Mathieu-Daudé#     and in the host should now match.
4178dc007d3SPhilippe Mathieu-Daudé#
418a937b6aaSMarkus Armbruster# @delay: continue to deliver ticks at the normal rate.  The guest OS
419a937b6aaSMarkus Armbruster#     will not notice anything is amiss, as from its point of view
420a937b6aaSMarkus Armbruster#     time will have continued to flow normally.  The time in the
421a937b6aaSMarkus Armbruster#     guest should now be behind the time in the host by exactly the
422a937b6aaSMarkus Armbruster#     amount of time during which ticks have been missed.
4238dc007d3SPhilippe Mathieu-Daudé#
424a937b6aaSMarkus Armbruster# @slew: deliver ticks at a higher rate to catch up with the missed
425a937b6aaSMarkus Armbruster#     ticks.  The guest OS will not notice anything is amiss, as from
426a937b6aaSMarkus Armbruster#     its point of view time will have continued to flow normally.
427a937b6aaSMarkus Armbruster#     Once the timer has managed to catch up with all the missing
428a937b6aaSMarkus Armbruster#     ticks, the time in the guest and in the host should match.
4298dc007d3SPhilippe Mathieu-Daudé#
4308dc007d3SPhilippe Mathieu-Daudé# Since: 2.0
4318dc007d3SPhilippe Mathieu-Daudé##
4328dc007d3SPhilippe Mathieu-Daudé{ 'enum': 'LostTickPolicy',
4338dc007d3SPhilippe Mathieu-Daudé  'data': ['discard', 'delay', 'slew' ] }
4348dc007d3SPhilippe Mathieu-Daudé
4358dc007d3SPhilippe Mathieu-Daudé##
436df7a1f48SPhilippe Mathieu-Daudé# @inject-nmi:
437df7a1f48SPhilippe Mathieu-Daudé#
438a937b6aaSMarkus Armbruster# Injects a Non-Maskable Interrupt into the default CPU (x86/s390) or
439a937b6aaSMarkus Armbruster# all CPUs (ppc64).  The command fails when the guest doesn't support
440a937b6aaSMarkus Armbruster# injecting.
441df7a1f48SPhilippe Mathieu-Daudé#
4429bc6e893SMarkus Armbruster# Since: 0.14
443df7a1f48SPhilippe Mathieu-Daudé#
444d461c279SJohn Snow# .. note:: Prior to 2.1, this command was only supported for x86 and
445d461c279SJohn Snow#    s390 VMs.
446df7a1f48SPhilippe Mathieu-Daudé#
44714b48aaaSJohn Snow# .. qmp-example::
448df7a1f48SPhilippe Mathieu-Daudé#
449df7a1f48SPhilippe Mathieu-Daudé#     -> { "execute": "inject-nmi" }
450df7a1f48SPhilippe Mathieu-Daudé#     <- { "return": {} }
451df7a1f48SPhilippe Mathieu-Daudé##
452df7a1f48SPhilippe Mathieu-Daudé{ 'command': 'inject-nmi' }
453df7a1f48SPhilippe Mathieu-Daudé
454df7a1f48SPhilippe Mathieu-Daudé##
45581dddc1bSPhilippe Mathieu-Daudé# @KvmInfo:
45681dddc1bSPhilippe Mathieu-Daudé#
45781dddc1bSPhilippe Mathieu-Daudé# Information about support for KVM acceleration
45881dddc1bSPhilippe Mathieu-Daudé#
45981dddc1bSPhilippe Mathieu-Daudé# @enabled: true if KVM acceleration is active
46081dddc1bSPhilippe Mathieu-Daudé#
46181dddc1bSPhilippe Mathieu-Daudé# @present: true if KVM acceleration is built into this executable
46281dddc1bSPhilippe Mathieu-Daudé#
4639bc6e893SMarkus Armbruster# Since: 0.14
46481dddc1bSPhilippe Mathieu-Daudé##
46581dddc1bSPhilippe Mathieu-Daudé{ 'struct': 'KvmInfo', 'data': {'enabled': 'bool', 'present': 'bool'} }
46681dddc1bSPhilippe Mathieu-Daudé
46781dddc1bSPhilippe Mathieu-Daudé##
46881dddc1bSPhilippe Mathieu-Daudé# @query-kvm:
46981dddc1bSPhilippe Mathieu-Daudé#
47081dddc1bSPhilippe Mathieu-Daudé# Returns information about KVM acceleration
47181dddc1bSPhilippe Mathieu-Daudé#
47281dddc1bSPhilippe Mathieu-Daudé# Returns: @KvmInfo
47381dddc1bSPhilippe Mathieu-Daudé#
4749bc6e893SMarkus Armbruster# Since: 0.14
47581dddc1bSPhilippe Mathieu-Daudé#
47614b48aaaSJohn Snow# .. qmp-example::
47781dddc1bSPhilippe Mathieu-Daudé#
47881dddc1bSPhilippe Mathieu-Daudé#     -> { "execute": "query-kvm" }
47981dddc1bSPhilippe Mathieu-Daudé#     <- { "return": { "enabled": true, "present": true } }
48081dddc1bSPhilippe Mathieu-Daudé##
48181dddc1bSPhilippe Mathieu-Daudé{ 'command': 'query-kvm', 'returns': 'KvmInfo' }
48281dddc1bSPhilippe Mathieu-Daudé
48381dddc1bSPhilippe Mathieu-Daudé##
4848ac25c84SMarkus Armbruster# @NumaOptionsType:
4858ac25c84SMarkus Armbruster#
4868ac25c84SMarkus Armbruster# @node: NUMA nodes configuration
4878ac25c84SMarkus Armbruster#
4888ac25c84SMarkus Armbruster# @dist: NUMA distance configuration (since 2.10)
4898ac25c84SMarkus Armbruster#
4908ac25c84SMarkus Armbruster# @cpu: property based CPU(s) to node mapping (Since: 2.10)
4918ac25c84SMarkus Armbruster#
4929b12dfa0SLiu Jingqi# @hmat-lb: memory latency and bandwidth information (Since: 5.0)
4939b12dfa0SLiu Jingqi#
494c412a48dSLiu Jingqi# @hmat-cache: memory side cache information (Since: 5.0)
495c412a48dSLiu Jingqi#
4968ac25c84SMarkus Armbruster# Since: 2.1
4978ac25c84SMarkus Armbruster##
4988ac25c84SMarkus Armbruster{ 'enum': 'NumaOptionsType',
499c412a48dSLiu Jingqi  'data': [ 'node', 'dist', 'cpu', 'hmat-lb', 'hmat-cache' ] }
5008ac25c84SMarkus Armbruster
5018ac25c84SMarkus Armbruster##
5028ac25c84SMarkus Armbruster# @NumaOptions:
5038ac25c84SMarkus Armbruster#
5048ac25c84SMarkus Armbruster# A discriminated record of NUMA options.  (for OptsVisitor)
5058ac25c84SMarkus Armbruster#
50689a2273bSMarkus Armbruster# @type: NUMA option type
50789a2273bSMarkus Armbruster#
5088ac25c84SMarkus Armbruster# Since: 2.1
5098ac25c84SMarkus Armbruster##
5108ac25c84SMarkus Armbruster{ 'union': 'NumaOptions',
5118ac25c84SMarkus Armbruster  'base': { 'type': 'NumaOptionsType' },
5128ac25c84SMarkus Armbruster  'discriminator': 'type',
5138ac25c84SMarkus Armbruster  'data': {
5148ac25c84SMarkus Armbruster    'node': 'NumaNodeOptions',
5158ac25c84SMarkus Armbruster    'dist': 'NumaDistOptions',
5169b12dfa0SLiu Jingqi    'cpu': 'NumaCpuOptions',
517c412a48dSLiu Jingqi    'hmat-lb': 'NumaHmatLBOptions',
518c412a48dSLiu Jingqi    'hmat-cache': 'NumaHmatCacheOptions' }}
5198ac25c84SMarkus Armbruster
5208ac25c84SMarkus Armbruster##
5218ac25c84SMarkus Armbruster# @NumaNodeOptions:
5228ac25c84SMarkus Armbruster#
5238ac25c84SMarkus Armbruster# Create a guest NUMA node.  (for OptsVisitor)
5248ac25c84SMarkus Armbruster#
5258ac25c84SMarkus Armbruster# @nodeid: NUMA node ID (increase by 1 from 0 if omitted)
5268ac25c84SMarkus Armbruster#
527a937b6aaSMarkus Armbruster# @cpus: VCPUs belonging to this node (assign VCPUS round-robin if
528a937b6aaSMarkus Armbruster#     omitted)
5298ac25c84SMarkus Armbruster#
5308ac25c84SMarkus Armbruster# @mem: memory size of this node; mutually exclusive with @memdev.
531a937b6aaSMarkus Armbruster#     Equally divide total memory among nodes if both @mem and @memdev
532a937b6aaSMarkus Armbruster#     are omitted.
5338ac25c84SMarkus Armbruster#
534a937b6aaSMarkus Armbruster# @memdev: memory backend object.  If specified for one node, it must
535a937b6aaSMarkus Armbruster#     be specified for all nodes.
5368ac25c84SMarkus Armbruster#
537a937b6aaSMarkus Armbruster# @initiator: defined in ACPI 6.3 Chapter 5.2.27.3 Table 5-145, points
538a937b6aaSMarkus Armbruster#     to the nodeid which has the memory controller responsible for
539a937b6aaSMarkus Armbruster#     this NUMA node.  This field provides additional information as
540a937b6aaSMarkus Armbruster#     to the initiator node that is closest (as in directly attached)
541a937b6aaSMarkus Armbruster#     to this node, and therefore has the best performance (since 5.0)
542244b3f44STao Xu#
5438ac25c84SMarkus Armbruster# Since: 2.1
5448ac25c84SMarkus Armbruster##
5458ac25c84SMarkus Armbruster{ 'struct': 'NumaNodeOptions',
5468ac25c84SMarkus Armbruster  'data': {
5478ac25c84SMarkus Armbruster   '*nodeid': 'uint16',
5488ac25c84SMarkus Armbruster   '*cpus':   ['uint16'],
5498ac25c84SMarkus Armbruster   '*mem':    'size',
550244b3f44STao Xu   '*memdev': 'str',
551244b3f44STao Xu   '*initiator': 'uint16' }}
5528ac25c84SMarkus Armbruster
5538ac25c84SMarkus Armbruster##
5548ac25c84SMarkus Armbruster# @NumaDistOptions:
5558ac25c84SMarkus Armbruster#
5568ac25c84SMarkus Armbruster# Set the distance between 2 NUMA nodes.
5578ac25c84SMarkus Armbruster#
5588ac25c84SMarkus Armbruster# @src: source NUMA node.
5598ac25c84SMarkus Armbruster#
5608ac25c84SMarkus Armbruster# @dst: destination NUMA node.
5618ac25c84SMarkus Armbruster#
562a937b6aaSMarkus Armbruster# @val: NUMA distance from source node to destination node.  When a
563a937b6aaSMarkus Armbruster#     node is unreachable from another node, set the distance between
564a937b6aaSMarkus Armbruster#     them to 255.
5658ac25c84SMarkus Armbruster#
5668ac25c84SMarkus Armbruster# Since: 2.10
5678ac25c84SMarkus Armbruster##
5688ac25c84SMarkus Armbruster{ 'struct': 'NumaDistOptions',
5698ac25c84SMarkus Armbruster  'data': {
5708ac25c84SMarkus Armbruster   'src': 'uint16',
5718ac25c84SMarkus Armbruster   'dst': 'uint16',
5728ac25c84SMarkus Armbruster   'val': 'uint8' }}
5738ac25c84SMarkus Armbruster
5748ac25c84SMarkus Armbruster##
575aadfe320SJonathan Cameron# @CXLFixedMemoryWindowOptions:
576aadfe320SJonathan Cameron#
577aadfe320SJonathan Cameron# Create a CXL Fixed Memory Window
578aadfe320SJonathan Cameron#
579aadfe320SJonathan Cameron# @size: Size of the Fixed Memory Window in bytes.  Must be a multiple
580aadfe320SJonathan Cameron#     of 256MiB.
581a937b6aaSMarkus Armbruster#
582aadfe320SJonathan Cameron# @interleave-granularity: Number of contiguous bytes for which
583a937b6aaSMarkus Armbruster#     accesses will go to a given interleave target.  Accepted values
584a937b6aaSMarkus Armbruster#     [256, 512, 1k, 2k, 4k, 8k, 16k]
585a937b6aaSMarkus Armbruster#
586a937b6aaSMarkus Armbruster# @targets: Target root bridge IDs from -device ...,id=<ID> for each
587a937b6aaSMarkus Armbruster#     root bridge.
588aadfe320SJonathan Cameron#
5897c3def93SMarkus Armbruster# Since: 7.1
590aadfe320SJonathan Cameron##
591aadfe320SJonathan Cameron{ 'struct': 'CXLFixedMemoryWindowOptions',
592aadfe320SJonathan Cameron  'data': {
593aadfe320SJonathan Cameron      'size': 'size',
594aadfe320SJonathan Cameron      '*interleave-granularity': 'size',
595aadfe320SJonathan Cameron      'targets': ['str'] }}
596aadfe320SJonathan Cameron
597aadfe320SJonathan Cameron##
59803b39fcfSJonathan Cameron# @CXLFMWProperties:
59903b39fcfSJonathan Cameron#
60003b39fcfSJonathan Cameron# List of CXL Fixed Memory Windows.
60103b39fcfSJonathan Cameron#
60203b39fcfSJonathan Cameron# @cxl-fmw: List of CXLFixedMemoryWindowOptions
60303b39fcfSJonathan Cameron#
6047c3def93SMarkus Armbruster# Since: 7.1
60503b39fcfSJonathan Cameron##
60603b39fcfSJonathan Cameron{ 'struct' : 'CXLFMWProperties',
60703b39fcfSJonathan Cameron  'data': { 'cxl-fmw': ['CXLFixedMemoryWindowOptions'] }
60803b39fcfSJonathan Cameron}
60903b39fcfSJonathan Cameron
61003b39fcfSJonathan Cameron##
6118ac25c84SMarkus Armbruster# @X86CPURegister32:
6128ac25c84SMarkus Armbruster#
6138ac25c84SMarkus Armbruster# A X86 32-bit register
6148ac25c84SMarkus Armbruster#
6158ac25c84SMarkus Armbruster# Since: 1.5
6168ac25c84SMarkus Armbruster##
6178ac25c84SMarkus Armbruster{ 'enum': 'X86CPURegister32',
6188ac25c84SMarkus Armbruster  'data': [ 'EAX', 'EBX', 'ECX', 'EDX', 'ESP', 'EBP', 'ESI', 'EDI' ] }
6198ac25c84SMarkus Armbruster
6208ac25c84SMarkus Armbruster##
6218ac25c84SMarkus Armbruster# @X86CPUFeatureWordInfo:
6228ac25c84SMarkus Armbruster#
6238ac25c84SMarkus Armbruster# Information about a X86 CPU feature word
6248ac25c84SMarkus Armbruster#
625a937b6aaSMarkus Armbruster# @cpuid-input-eax: Input EAX value for CPUID instruction for that
626a937b6aaSMarkus Armbruster#     feature word
6278ac25c84SMarkus Armbruster#
6288ac25c84SMarkus Armbruster# @cpuid-input-ecx: Input ECX value for CPUID instruction for that
6298ac25c84SMarkus Armbruster#     feature word
6308ac25c84SMarkus Armbruster#
6318ac25c84SMarkus Armbruster# @cpuid-register: Output register containing the feature bits
6328ac25c84SMarkus Armbruster#
6338ac25c84SMarkus Armbruster# @features: value of output register, containing the feature bits
6348ac25c84SMarkus Armbruster#
6358ac25c84SMarkus Armbruster# Since: 1.5
6368ac25c84SMarkus Armbruster##
6378ac25c84SMarkus Armbruster{ 'struct': 'X86CPUFeatureWordInfo',
6388ac25c84SMarkus Armbruster  'data': { 'cpuid-input-eax': 'int',
6398ac25c84SMarkus Armbruster            '*cpuid-input-ecx': 'int',
6408ac25c84SMarkus Armbruster            'cpuid-register': 'X86CPURegister32',
6418ac25c84SMarkus Armbruster            'features': 'int' } }
6428ac25c84SMarkus Armbruster
6438ac25c84SMarkus Armbruster##
6448ac25c84SMarkus Armbruster# @DummyForceArrays:
6458ac25c84SMarkus Armbruster#
646a937b6aaSMarkus Armbruster# Not used by QMP; hack to let us use X86CPUFeatureWordInfoList
647a937b6aaSMarkus Armbruster# internally
6488ac25c84SMarkus Armbruster#
6498ac25c84SMarkus Armbruster# Since: 2.5
6508ac25c84SMarkus Armbruster##
6518ac25c84SMarkus Armbruster{ 'struct': 'DummyForceArrays',
6528ac25c84SMarkus Armbruster  'data': { 'unused': ['X86CPUFeatureWordInfo'] } }
6538ac25c84SMarkus Armbruster
6548ac25c84SMarkus Armbruster##
6558ac25c84SMarkus Armbruster# @NumaCpuOptions:
6568ac25c84SMarkus Armbruster#
657a937b6aaSMarkus Armbruster# Option "-numa cpu" overrides default cpu to node mapping.  It
658a937b6aaSMarkus Armbruster# accepts the same set of cpu properties as returned by
6598ac25c84SMarkus Armbruster# query-hotpluggable-cpus[].props, where node-id could be used to
6608ac25c84SMarkus Armbruster# override default node mapping.
6618ac25c84SMarkus Armbruster#
6628ac25c84SMarkus Armbruster# Since: 2.10
6638ac25c84SMarkus Armbruster##
6648ac25c84SMarkus Armbruster{ 'struct': 'NumaCpuOptions',
6658ac25c84SMarkus Armbruster   'base': 'CpuInstanceProperties',
6668ac25c84SMarkus Armbruster   'data' : {} }
6678ac25c84SMarkus Armbruster
6688ac25c84SMarkus Armbruster##
6699b12dfa0SLiu Jingqi# @HmatLBMemoryHierarchy:
6709b12dfa0SLiu Jingqi#
6719b12dfa0SLiu Jingqi# The memory hierarchy in the System Locality Latency and Bandwidth
6729b12dfa0SLiu Jingqi# Information Structure of HMAT (Heterogeneous Memory Attribute Table)
6739b12dfa0SLiu Jingqi#
6749b12dfa0SLiu Jingqi# For more information about @HmatLBMemoryHierarchy, see chapter
6759b12dfa0SLiu Jingqi# 5.2.27.4: Table 5-146: Field "Flags" of ACPI 6.3 spec.
6769b12dfa0SLiu Jingqi#
6779b12dfa0SLiu Jingqi# @memory: the structure represents the memory performance
6789b12dfa0SLiu Jingqi#
6799b12dfa0SLiu Jingqi# @first-level: first level of memory side cache
6809b12dfa0SLiu Jingqi#
6819b12dfa0SLiu Jingqi# @second-level: second level of memory side cache
6829b12dfa0SLiu Jingqi#
6839b12dfa0SLiu Jingqi# @third-level: third level of memory side cache
6849b12dfa0SLiu Jingqi#
6859b12dfa0SLiu Jingqi# Since: 5.0
6869b12dfa0SLiu Jingqi##
6879b12dfa0SLiu Jingqi{ 'enum': 'HmatLBMemoryHierarchy',
6889b12dfa0SLiu Jingqi  'data': [ 'memory', 'first-level', 'second-level', 'third-level' ] }
6899b12dfa0SLiu Jingqi
6909b12dfa0SLiu Jingqi##
6919b12dfa0SLiu Jingqi# @HmatLBDataType:
6929b12dfa0SLiu Jingqi#
693a937b6aaSMarkus Armbruster# Data type in the System Locality Latency and Bandwidth Information
694a937b6aaSMarkus Armbruster# Structure of HMAT (Heterogeneous Memory Attribute Table)
6959b12dfa0SLiu Jingqi#
696a937b6aaSMarkus Armbruster# For more information about @HmatLBDataType, see chapter 5.2.27.4:
697a937b6aaSMarkus Armbruster# Table 5-146:  Field "Data Type" of ACPI 6.3 spec.
6989b12dfa0SLiu Jingqi#
6999b12dfa0SLiu Jingqi# @access-latency: access latency (nanoseconds)
7009b12dfa0SLiu Jingqi#
7019b12dfa0SLiu Jingqi# @read-latency: read latency (nanoseconds)
7029b12dfa0SLiu Jingqi#
7039b12dfa0SLiu Jingqi# @write-latency: write latency (nanoseconds)
7049b12dfa0SLiu Jingqi#
7059b12dfa0SLiu Jingqi# @access-bandwidth: access bandwidth (Bytes per second)
7069b12dfa0SLiu Jingqi#
7079b12dfa0SLiu Jingqi# @read-bandwidth: read bandwidth (Bytes per second)
7089b12dfa0SLiu Jingqi#
7099b12dfa0SLiu Jingqi# @write-bandwidth: write bandwidth (Bytes per second)
7109b12dfa0SLiu Jingqi#
7119b12dfa0SLiu Jingqi# Since: 5.0
7129b12dfa0SLiu Jingqi##
7139b12dfa0SLiu Jingqi{ 'enum': 'HmatLBDataType',
7149b12dfa0SLiu Jingqi  'data': [ 'access-latency', 'read-latency', 'write-latency',
7159b12dfa0SLiu Jingqi            'access-bandwidth', 'read-bandwidth', 'write-bandwidth' ] }
7169b12dfa0SLiu Jingqi
7179b12dfa0SLiu Jingqi##
7189b12dfa0SLiu Jingqi# @NumaHmatLBOptions:
7199b12dfa0SLiu Jingqi#
720a937b6aaSMarkus Armbruster# Set the system locality latency and bandwidth information between
721a937b6aaSMarkus Armbruster# Initiator and Target proximity Domains.
7229b12dfa0SLiu Jingqi#
723a937b6aaSMarkus Armbruster# For more information about @NumaHmatLBOptions, see chapter 5.2.27.4:
724a937b6aaSMarkus Armbruster# Table 5-146 of ACPI 6.3 spec.
7259b12dfa0SLiu Jingqi#
7269b12dfa0SLiu Jingqi# @initiator: the Initiator Proximity Domain.
7279b12dfa0SLiu Jingqi#
7289b12dfa0SLiu Jingqi# @target: the Target Proximity Domain.
7299b12dfa0SLiu Jingqi#
730a937b6aaSMarkus Armbruster# @hierarchy: the Memory Hierarchy.  Indicates the performance of
731a937b6aaSMarkus Armbruster#     memory or side cache.
7329b12dfa0SLiu Jingqi#
733a937b6aaSMarkus Armbruster# @data-type: presents the type of data, access/read/write latency or
734a937b6aaSMarkus Armbruster#     hit latency.
7359b12dfa0SLiu Jingqi#
736a937b6aaSMarkus Armbruster# @latency: the value of latency from @initiator to @target proximity
737a937b6aaSMarkus Armbruster#     domain, the latency unit is "ns(nanosecond)".
7389b12dfa0SLiu Jingqi#
7399b12dfa0SLiu Jingqi# @bandwidth: the value of bandwidth between @initiator and @target
740a937b6aaSMarkus Armbruster#     proximity domain, the bandwidth unit is "Bytes per second".
7419b12dfa0SLiu Jingqi#
7429b12dfa0SLiu Jingqi# Since: 5.0
7439b12dfa0SLiu Jingqi##
7449b12dfa0SLiu Jingqi{ 'struct': 'NumaHmatLBOptions',
7459b12dfa0SLiu Jingqi    'data': {
7469b12dfa0SLiu Jingqi    'initiator': 'uint16',
7479b12dfa0SLiu Jingqi    'target': 'uint16',
7489b12dfa0SLiu Jingqi    'hierarchy': 'HmatLBMemoryHierarchy',
7499b12dfa0SLiu Jingqi    'data-type': 'HmatLBDataType',
7509b12dfa0SLiu Jingqi    '*latency': 'uint64',
7519b12dfa0SLiu Jingqi    '*bandwidth': 'size' }}
7529b12dfa0SLiu Jingqi
7539b12dfa0SLiu Jingqi##
754c412a48dSLiu Jingqi# @HmatCacheAssociativity:
755c412a48dSLiu Jingqi#
756c412a48dSLiu Jingqi# Cache associativity in the Memory Side Cache Information Structure
757c412a48dSLiu Jingqi# of HMAT
758c412a48dSLiu Jingqi#
759c412a48dSLiu Jingqi# For more information of @HmatCacheAssociativity, see chapter
760c412a48dSLiu Jingqi# 5.2.27.5: Table 5-147 of ACPI 6.3 spec.
761c412a48dSLiu Jingqi#
762a937b6aaSMarkus Armbruster# @none: None (no memory side cache in this proximity domain, or cache
763a937b6aaSMarkus Armbruster#     associativity unknown)
764c412a48dSLiu Jingqi#
765c412a48dSLiu Jingqi# @direct: Direct Mapped
766c412a48dSLiu Jingqi#
767c412a48dSLiu Jingqi# @complex: Complex Cache Indexing (implementation specific)
768c412a48dSLiu Jingqi#
769c412a48dSLiu Jingqi# Since: 5.0
770c412a48dSLiu Jingqi##
771c412a48dSLiu Jingqi{ 'enum': 'HmatCacheAssociativity',
772c412a48dSLiu Jingqi  'data': [ 'none', 'direct', 'complex' ] }
773c412a48dSLiu Jingqi
774c412a48dSLiu Jingqi##
775c412a48dSLiu Jingqi# @HmatCacheWritePolicy:
776c412a48dSLiu Jingqi#
777a937b6aaSMarkus Armbruster# Cache write policy in the Memory Side Cache Information Structure of
778a937b6aaSMarkus Armbruster# HMAT
779c412a48dSLiu Jingqi#
780a937b6aaSMarkus Armbruster# For more information of @HmatCacheWritePolicy, see chapter 5.2.27.5:
781a937b6aaSMarkus Armbruster# Table 5-147: Field "Cache Attributes" of ACPI 6.3 spec.
782c412a48dSLiu Jingqi#
783a937b6aaSMarkus Armbruster# @none: None (no memory side cache in this proximity domain, or cache
784a937b6aaSMarkus Armbruster#     write policy unknown)
785c412a48dSLiu Jingqi#
786c412a48dSLiu Jingqi# @write-back: Write Back (WB)
787c412a48dSLiu Jingqi#
788c412a48dSLiu Jingqi# @write-through: Write Through (WT)
789c412a48dSLiu Jingqi#
790c412a48dSLiu Jingqi# Since: 5.0
791c412a48dSLiu Jingqi##
792c412a48dSLiu Jingqi{ 'enum': 'HmatCacheWritePolicy',
793c412a48dSLiu Jingqi  'data': [ 'none', 'write-back', 'write-through' ] }
794c412a48dSLiu Jingqi
795c412a48dSLiu Jingqi##
796c412a48dSLiu Jingqi# @NumaHmatCacheOptions:
797c412a48dSLiu Jingqi#
798c412a48dSLiu Jingqi# Set the memory side cache information for a given memory domain.
799c412a48dSLiu Jingqi#
800a937b6aaSMarkus Armbruster# For more information of @NumaHmatCacheOptions, see chapter 5.2.27.5:
801a937b6aaSMarkus Armbruster# Table 5-147: Field "Cache Attributes" of ACPI 6.3 spec.
802c412a48dSLiu Jingqi#
803c412a48dSLiu Jingqi# @node-id: the memory proximity domain to which the memory belongs.
804c412a48dSLiu Jingqi#
805c412a48dSLiu Jingqi# @size: the size of memory side cache in bytes.
806c412a48dSLiu Jingqi#
807c412a48dSLiu Jingqi# @level: the cache level described in this structure.
808c412a48dSLiu Jingqi#
809c412a48dSLiu Jingqi# @associativity: the cache associativity,
810c412a48dSLiu Jingqi#     none/direct-mapped/complex(complex cache indexing).
811c412a48dSLiu Jingqi#
812c412a48dSLiu Jingqi# @policy: the write policy, none/write-back/write-through.
813c412a48dSLiu Jingqi#
814c412a48dSLiu Jingqi# @line: the cache Line size in bytes.
815c412a48dSLiu Jingqi#
816c412a48dSLiu Jingqi# Since: 5.0
817c412a48dSLiu Jingqi##
818c412a48dSLiu Jingqi{ 'struct': 'NumaHmatCacheOptions',
819c412a48dSLiu Jingqi  'data': {
820c412a48dSLiu Jingqi   'node-id': 'uint32',
821c412a48dSLiu Jingqi   'size': 'size',
822c412a48dSLiu Jingqi   'level': 'uint8',
823c412a48dSLiu Jingqi   'associativity': 'HmatCacheAssociativity',
824c412a48dSLiu Jingqi   'policy': 'HmatCacheWritePolicy',
825c412a48dSLiu Jingqi   'line': 'uint16' }}
826c412a48dSLiu Jingqi
827c412a48dSLiu Jingqi##
828d4130cbfSPhilippe Mathieu-Daudé# @memsave:
829d4130cbfSPhilippe Mathieu-Daudé#
830d4130cbfSPhilippe Mathieu-Daudé# Save a portion of guest memory to a file.
831d4130cbfSPhilippe Mathieu-Daudé#
832d4130cbfSPhilippe Mathieu-Daudé# @val: the virtual address of the guest to start from
833d4130cbfSPhilippe Mathieu-Daudé#
834d4130cbfSPhilippe Mathieu-Daudé# @size: the size of memory region to save
835d4130cbfSPhilippe Mathieu-Daudé#
836d4130cbfSPhilippe Mathieu-Daudé# @filename: the file to save the memory to as binary data
837d4130cbfSPhilippe Mathieu-Daudé#
838d4130cbfSPhilippe Mathieu-Daudé# @cpu-index: the index of the virtual CPU to use for translating the
839d4130cbfSPhilippe Mathieu-Daudé#     virtual address (defaults to CPU 0)
840d4130cbfSPhilippe Mathieu-Daudé#
8419bc6e893SMarkus Armbruster# Since: 0.14
842d4130cbfSPhilippe Mathieu-Daudé#
843d461c279SJohn Snow# .. caution:: Errors were not reliably returned until 1.1.
844d4130cbfSPhilippe Mathieu-Daudé#
84514b48aaaSJohn Snow# .. qmp-example::
846d4130cbfSPhilippe Mathieu-Daudé#
847d4130cbfSPhilippe Mathieu-Daudé#     -> { "execute": "memsave",
848d4130cbfSPhilippe Mathieu-Daudé#          "arguments": { "val": 10,
849d4130cbfSPhilippe Mathieu-Daudé#                         "size": 100,
850d4130cbfSPhilippe Mathieu-Daudé#                         "filename": "/tmp/virtual-mem-dump" } }
851d4130cbfSPhilippe Mathieu-Daudé#     <- { "return": {} }
852d4130cbfSPhilippe Mathieu-Daudé##
853d4130cbfSPhilippe Mathieu-Daudé{ 'command': 'memsave',
854ef71d820SJosh Junon  'data': {
855ef71d820SJosh Junon     'val': 'uint64',
856ef71d820SJosh Junon     'size': 'size',
857ef71d820SJosh Junon     'filename': 'str',
858ef71d820SJosh Junon     '*cpu-index': 'int' } }
859d4130cbfSPhilippe Mathieu-Daudé
860d4130cbfSPhilippe Mathieu-Daudé##
861d4130cbfSPhilippe Mathieu-Daudé# @pmemsave:
862d4130cbfSPhilippe Mathieu-Daudé#
863d4130cbfSPhilippe Mathieu-Daudé# Save a portion of guest physical memory to a file.
864d4130cbfSPhilippe Mathieu-Daudé#
865d4130cbfSPhilippe Mathieu-Daudé# @val: the physical address of the guest to start from
866d4130cbfSPhilippe Mathieu-Daudé#
867d4130cbfSPhilippe Mathieu-Daudé# @size: the size of memory region to save
868d4130cbfSPhilippe Mathieu-Daudé#
869d4130cbfSPhilippe Mathieu-Daudé# @filename: the file to save the memory to as binary data
870d4130cbfSPhilippe Mathieu-Daudé#
8719bc6e893SMarkus Armbruster# Since: 0.14
872d4130cbfSPhilippe Mathieu-Daudé#
873d461c279SJohn Snow# .. caution:: Errors were not reliably returned until 1.1.
874d4130cbfSPhilippe Mathieu-Daudé#
87514b48aaaSJohn Snow# .. qmp-example::
876d4130cbfSPhilippe Mathieu-Daudé#
877d4130cbfSPhilippe Mathieu-Daudé#     -> { "execute": "pmemsave",
878d4130cbfSPhilippe Mathieu-Daudé#          "arguments": { "val": 10,
879d4130cbfSPhilippe Mathieu-Daudé#                         "size": 100,
880d4130cbfSPhilippe Mathieu-Daudé#                         "filename": "/tmp/physical-mem-dump" } }
881d4130cbfSPhilippe Mathieu-Daudé#     <- { "return": {} }
882d4130cbfSPhilippe Mathieu-Daudé##
883d4130cbfSPhilippe Mathieu-Daudé{ 'command': 'pmemsave',
884ef71d820SJosh Junon  'data': {
885ef71d820SJosh Junon    'val': 'uint64',
886ef71d820SJosh Junon    'size': 'size',
887ef71d820SJosh Junon    'filename': 'str' } }
888d4130cbfSPhilippe Mathieu-Daudé
889d4130cbfSPhilippe Mathieu-Daudé##
8908ac25c84SMarkus Armbruster# @Memdev:
8918ac25c84SMarkus Armbruster#
8928ac25c84SMarkus Armbruster# Information about memory backend
8938ac25c84SMarkus Armbruster#
8948ac25c84SMarkus Armbruster# @id: backend's ID if backend has 'id' property (since 2.9)
8958ac25c84SMarkus Armbruster#
8968ac25c84SMarkus Armbruster# @size: memory backend size
8978ac25c84SMarkus Armbruster#
898157cfaf9SDavid Hildenbrand# @merge: whether memory merge support is enabled
8998ac25c84SMarkus Armbruster#
900157cfaf9SDavid Hildenbrand# @dump: whether memory backend's memory is included in a core dump
9018ac25c84SMarkus Armbruster#
902157cfaf9SDavid Hildenbrand# @prealloc: whether memory was preallocated
9038ac25c84SMarkus Armbruster#
904d300fc54SDavid Hildenbrand# @share: whether memory is private to QEMU or shared (since 6.1)
905d300fc54SDavid Hildenbrand#
906a937b6aaSMarkus Armbruster# @reserve: whether swap space (or huge pages) was reserved if
907a937b6aaSMarkus Armbruster#     applicable.  This corresponds to the user configuration and not
908a937b6aaSMarkus Armbruster#     the actual behavior implemented in the OS to perform the
909a937b6aaSMarkus Armbruster#     reservation.  For example, Linux will never reserve swap space
910a937b6aaSMarkus Armbruster#     for shared file mappings.  (since 6.1)
91169647f9dSDavid Hildenbrand#
9128ac25c84SMarkus Armbruster# @host-nodes: host nodes for its memory policy
9138ac25c84SMarkus Armbruster#
9148ac25c84SMarkus Armbruster# @policy: memory policy of memory backend
9158ac25c84SMarkus Armbruster#
9168ac25c84SMarkus Armbruster# Since: 2.1
9178ac25c84SMarkus Armbruster##
9188ac25c84SMarkus Armbruster{ 'struct': 'Memdev',
9198ac25c84SMarkus Armbruster  'data': {
9208ac25c84SMarkus Armbruster    '*id':        'str',
9218ac25c84SMarkus Armbruster    'size':       'size',
9228ac25c84SMarkus Armbruster    'merge':      'bool',
9238ac25c84SMarkus Armbruster    'dump':       'bool',
9248ac25c84SMarkus Armbruster    'prealloc':   'bool',
925d300fc54SDavid Hildenbrand    'share':      'bool',
92669647f9dSDavid Hildenbrand    '*reserve':    'bool',
9278ac25c84SMarkus Armbruster    'host-nodes': ['uint16'],
9288ac25c84SMarkus Armbruster    'policy':     'HostMemPolicy' }}
9298ac25c84SMarkus Armbruster
9308ac25c84SMarkus Armbruster##
9318ac25c84SMarkus Armbruster# @query-memdev:
9328ac25c84SMarkus Armbruster#
9338ac25c84SMarkus Armbruster# Returns information for all memory backends.
9348ac25c84SMarkus Armbruster#
9358ac25c84SMarkus Armbruster# Returns: a list of @Memdev.
9368ac25c84SMarkus Armbruster#
9378ac25c84SMarkus Armbruster# Since: 2.1
9388ac25c84SMarkus Armbruster#
93914b48aaaSJohn Snow# .. qmp-example::
9408ac25c84SMarkus Armbruster#
9418ac25c84SMarkus Armbruster#     -> { "execute": "query-memdev" }
9428ac25c84SMarkus Armbruster#     <- { "return": [
9438ac25c84SMarkus Armbruster#            {
9448ac25c84SMarkus Armbruster#              "id": "mem1",
9458ac25c84SMarkus Armbruster#              "size": 536870912,
9468ac25c84SMarkus Armbruster#              "merge": false,
9478ac25c84SMarkus Armbruster#              "dump": true,
9488ac25c84SMarkus Armbruster#              "prealloc": false,
9497c90031dSVictor Toso#              "share": false,
9508ac25c84SMarkus Armbruster#              "host-nodes": [0, 1],
9518ac25c84SMarkus Armbruster#              "policy": "bind"
9528ac25c84SMarkus Armbruster#            },
9538ac25c84SMarkus Armbruster#            {
9548ac25c84SMarkus Armbruster#              "size": 536870912,
9558ac25c84SMarkus Armbruster#              "merge": false,
9568ac25c84SMarkus Armbruster#              "dump": true,
9578ac25c84SMarkus Armbruster#              "prealloc": true,
9587c90031dSVictor Toso#              "share": false,
9598ac25c84SMarkus Armbruster#              "host-nodes": [2, 3],
9608ac25c84SMarkus Armbruster#              "policy": "preferred"
9618ac25c84SMarkus Armbruster#            }
9628ac25c84SMarkus Armbruster#          ]
9638ac25c84SMarkus Armbruster#        }
9648ac25c84SMarkus Armbruster##
9658ac25c84SMarkus Armbruster{ 'command': 'query-memdev', 'returns': ['Memdev'], 'allow-preconfig': true }
9668ac25c84SMarkus Armbruster
9678ac25c84SMarkus Armbruster##
9688ac25c84SMarkus Armbruster# @CpuInstanceProperties:
9698ac25c84SMarkus Armbruster#
970d07f0efcSMarkus Armbruster# Properties identifying a CPU.
9718ac25c84SMarkus Armbruster#
9723da4aef8SNina Schoetterl-Glausch# Which members are optional and which mandatory depends on the
9733da4aef8SNina Schoetterl-Glausch# architecture and board.
9743da4aef8SNina Schoetterl-Glausch#
9750d177cddSPierre Morel# For s390x see :ref:`cpu-topology-s390x`.
9760d177cddSPierre Morel#
9773da4aef8SNina Schoetterl-Glausch# The ids other than the node-id specify the position of the CPU
9783da4aef8SNina Schoetterl-Glausch# within the CPU topology (as defined by the machine property "smp",
9793da4aef8SNina Schoetterl-Glausch# thus see also type @SMPConfiguration)
9803da4aef8SNina Schoetterl-Glausch#
9818ac25c84SMarkus Armbruster# @node-id: NUMA node ID the CPU belongs to
982a937b6aaSMarkus Armbruster#
9835de1aff2SPierre Morel# @drawer-id: drawer number within CPU topology the CPU belongs to
9845de1aff2SPierre Morel#     (since 8.2)
9855de1aff2SPierre Morel#
9865de1aff2SPierre Morel# @book-id: book number within parent container the CPU belongs to
9875de1aff2SPierre Morel#     (since 8.2)
9885de1aff2SPierre Morel#
9895de1aff2SPierre Morel# @socket-id: socket number within parent container the CPU belongs to
990a937b6aaSMarkus Armbruster#
9913da4aef8SNina Schoetterl-Glausch# @die-id: die number within the parent container the CPU belongs to
9923da4aef8SNina Schoetterl-Glausch#     (since 4.1)
993a937b6aaSMarkus Armbruster#
9943da4aef8SNina Schoetterl-Glausch# @cluster-id: cluster number within the parent container the CPU
9953da4aef8SNina Schoetterl-Glausch#     belongs to (since 7.1)
996a937b6aaSMarkus Armbruster#
99701bed0ffSMarkus Armbruster# @module-id: module number within the parent container the CPU
99801bed0ffSMarkus Armbruster#    belongs to (since 9.1)
999989bb312SZhao Liu#
1000209e64d9SMarkus Armbruster# @core-id: core number within the parent container the CPU belongs to
1001a937b6aaSMarkus Armbruster#
10023da4aef8SNina Schoetterl-Glausch# @thread-id: thread number within the core the CPU  belongs to
10038ac25c84SMarkus Armbruster#
10048ac25c84SMarkus Armbruster# Since: 2.7
10058ac25c84SMarkus Armbruster##
10068ac25c84SMarkus Armbruster{ 'struct': 'CpuInstanceProperties',
10073da4aef8SNina Schoetterl-Glausch  # Keep these in sync with the properties device_add accepts
10088ac25c84SMarkus Armbruster  'data': { '*node-id': 'int',
10095de1aff2SPierre Morel            '*drawer-id': 'int',
10105de1aff2SPierre Morel            '*book-id': 'int',
10118ac25c84SMarkus Armbruster            '*socket-id': 'int',
1012176d2cdaSLike Xu            '*die-id': 'int',
10131dcf7001SGavin Shan            '*cluster-id': 'int',
1014989bb312SZhao Liu            '*module-id': 'int',
10158ac25c84SMarkus Armbruster            '*core-id': 'int',
10168ac25c84SMarkus Armbruster            '*thread-id': 'int'
10178ac25c84SMarkus Armbruster  }
10188ac25c84SMarkus Armbruster}
10198ac25c84SMarkus Armbruster
10208ac25c84SMarkus Armbruster##
10218ac25c84SMarkus Armbruster# @HotpluggableCPU:
10228ac25c84SMarkus Armbruster#
10238ac25c84SMarkus Armbruster# @type: CPU object type for usage with device_add command
1024a937b6aaSMarkus Armbruster#
1025d07f0efcSMarkus Armbruster# @props: list of properties to pass for hotplugging a CPU with
1026d07f0efcSMarkus Armbruster#     device_add
1027a937b6aaSMarkus Armbruster#
1028a937b6aaSMarkus Armbruster# @vcpus-count: number of logical VCPU threads @HotpluggableCPU
1029a937b6aaSMarkus Armbruster#     provides
1030a937b6aaSMarkus Armbruster#
1031a937b6aaSMarkus Armbruster# @qom-path: link to existing CPU object if CPU is present or omitted
1032a937b6aaSMarkus Armbruster#     if CPU is not present.
10338ac25c84SMarkus Armbruster#
1034d07f0efcSMarkus Armbruster# .. note:: Management should be prepared to pass through additional
1035d07f0efcSMarkus Armbruster#    properties with device_add.
1036d07f0efcSMarkus Armbruster#
10378ac25c84SMarkus Armbruster# Since: 2.7
10388ac25c84SMarkus Armbruster##
10398ac25c84SMarkus Armbruster{ 'struct': 'HotpluggableCPU',
10408ac25c84SMarkus Armbruster  'data': { 'type': 'str',
10418ac25c84SMarkus Armbruster            'vcpus-count': 'int',
10428ac25c84SMarkus Armbruster            'props': 'CpuInstanceProperties',
10438ac25c84SMarkus Armbruster            '*qom-path': 'str'
10448ac25c84SMarkus Armbruster          }
10458ac25c84SMarkus Armbruster}
10468ac25c84SMarkus Armbruster
10478ac25c84SMarkus Armbruster##
10488ac25c84SMarkus Armbruster# @query-hotpluggable-cpus:
10498ac25c84SMarkus Armbruster#
10508ac25c84SMarkus Armbruster# TODO: Better documentation; currently there is none.
10518ac25c84SMarkus Armbruster#
10528ac25c84SMarkus Armbruster# Returns: a list of HotpluggableCPU objects.
10538ac25c84SMarkus Armbruster#
10548ac25c84SMarkus Armbruster# Since: 2.7
10558ac25c84SMarkus Armbruster#
10566f07c59fSJohn Snow# .. qmp-example::
10576f07c59fSJohn Snow#    :annotated:
10588ac25c84SMarkus Armbruster#
10596f07c59fSJohn Snow#    For pseries machine type started with
10606f07c59fSJohn Snow#    ``-smp 2,cores=2,maxcpus=4 -cpu POWER8``::
10618ac25c84SMarkus Armbruster#
10628ac25c84SMarkus Armbruster#     -> { "execute": "query-hotpluggable-cpus" }
10638ac25c84SMarkus Armbruster#     <- {"return": [
1064b4c32cbfSVictor Toso#          { "props": { "core-id": 8 }, "type": "POWER8-spapr-cpu-core",
10658ac25c84SMarkus Armbruster#            "vcpus-count": 1 },
1066b4c32cbfSVictor Toso#          { "props": { "core-id": 0 }, "type": "POWER8-spapr-cpu-core",
10678ac25c84SMarkus Armbruster#            "vcpus-count": 1, "qom-path": "/machine/unattached/device[0]"}
10689f2b8488SJohn Snow#        ]}
10698ac25c84SMarkus Armbruster#
10706f07c59fSJohn Snow# .. qmp-example::
10716f07c59fSJohn Snow#    :annotated:
10726f07c59fSJohn Snow#
10736f07c59fSJohn Snow#    For pc machine type started with ``-smp 1,maxcpus=2``::
10748ac25c84SMarkus Armbruster#
10758ac25c84SMarkus Armbruster#     -> { "execute": "query-hotpluggable-cpus" }
10768ac25c84SMarkus Armbruster#     <- {"return": [
10778ac25c84SMarkus Armbruster#          {
10788ac25c84SMarkus Armbruster#             "type": "qemu64-x86_64-cpu", "vcpus-count": 1,
10798ac25c84SMarkus Armbruster#             "props": {"core-id": 0, "socket-id": 1, "thread-id": 0}
10808ac25c84SMarkus Armbruster#          },
10818ac25c84SMarkus Armbruster#          {
10828ac25c84SMarkus Armbruster#             "qom-path": "/machine/unattached/device[0]",
10838ac25c84SMarkus Armbruster#             "type": "qemu64-x86_64-cpu", "vcpus-count": 1,
10848ac25c84SMarkus Armbruster#             "props": {"core-id": 0, "socket-id": 0, "thread-id": 0}
10858ac25c84SMarkus Armbruster#          }
10868ac25c84SMarkus Armbruster#        ]}
10878ac25c84SMarkus Armbruster#
10886f07c59fSJohn Snow# .. qmp-example::
10896f07c59fSJohn Snow#    :annotated:
10906f07c59fSJohn Snow#
10916f07c59fSJohn Snow#    For s390x-virtio-ccw machine type started with
10926f07c59fSJohn Snow#    ``-smp 1,maxcpus=2 -cpu qemu`` (Since: 2.11)::
10938ac25c84SMarkus Armbruster#
10948ac25c84SMarkus Armbruster#     -> { "execute": "query-hotpluggable-cpus" }
10958ac25c84SMarkus Armbruster#     <- {"return": [
10968ac25c84SMarkus Armbruster#          {
10978ac25c84SMarkus Armbruster#             "type": "qemu-s390x-cpu", "vcpus-count": 1,
10988ac25c84SMarkus Armbruster#             "props": { "core-id": 1 }
10998ac25c84SMarkus Armbruster#          },
11008ac25c84SMarkus Armbruster#          {
11018ac25c84SMarkus Armbruster#             "qom-path": "/machine/unattached/device[0]",
11028ac25c84SMarkus Armbruster#             "type": "qemu-s390x-cpu", "vcpus-count": 1,
11038ac25c84SMarkus Armbruster#             "props": { "core-id": 0 }
11048ac25c84SMarkus Armbruster#          }
11058ac25c84SMarkus Armbruster#        ]}
11068ac25c84SMarkus Armbruster##
11078ac25c84SMarkus Armbruster{ 'command': 'query-hotpluggable-cpus', 'returns': ['HotpluggableCPU'],
11088ac25c84SMarkus Armbruster             'allow-preconfig': true }
11098ac25c84SMarkus Armbruster
11108ac25c84SMarkus Armbruster##
11118ac25c84SMarkus Armbruster# @set-numa-node:
11128ac25c84SMarkus Armbruster#
1113a937b6aaSMarkus Armbruster# Runtime equivalent of '-numa' CLI option, available at preconfigure
1114a937b6aaSMarkus Armbruster# stage to configure numa mapping before initializing machine.
11158ac25c84SMarkus Armbruster#
1116433a4fdcSMarkus Armbruster# Since: 3.0
11178ac25c84SMarkus Armbruster##
11188ac25c84SMarkus Armbruster{ 'command': 'set-numa-node', 'boxed': true,
11198ac25c84SMarkus Armbruster  'data': 'NumaOptions',
11208ac25c84SMarkus Armbruster  'allow-preconfig': true
11218ac25c84SMarkus Armbruster}
1122a83e24baSPhilippe Mathieu-Daudé
1123a83e24baSPhilippe Mathieu-Daudé##
1124a83e24baSPhilippe Mathieu-Daudé# @balloon:
1125a83e24baSPhilippe Mathieu-Daudé#
1126a83e24baSPhilippe Mathieu-Daudé# Request the balloon driver to change its balloon size.
1127a83e24baSPhilippe Mathieu-Daudé#
1128a937b6aaSMarkus Armbruster# @value: the target logical size of the VM in bytes.  We can deduce
1129a937b6aaSMarkus Armbruster#     the size of the balloon using this formula:
1130826bd069SPeter Maydell#
1131a83e24baSPhilippe Mathieu-Daudé#        logical_vm_size = vm_ram_size - balloon_size
1132826bd069SPeter Maydell#
1133a83e24baSPhilippe Mathieu-Daudé#     From it we have: balloon_size = vm_ram_size - @value
1134a83e24baSPhilippe Mathieu-Daudé#
11352746f060SMarkus Armbruster# Errors:
1136e6ab40feSMarkus Armbruster#     - If the balloon driver is enabled but not functional because
1137e6ab40feSMarkus Armbruster#       the KVM kernel module cannot support it, KVMMissingCap
1138a83e24baSPhilippe Mathieu-Daudé#     - If no balloon device is present, DeviceNotActive
1139a83e24baSPhilippe Mathieu-Daudé#
1140d461c279SJohn Snow# .. note:: This command just issues a request to the guest.  When it
114101bed0ffSMarkus Armbruster#    returns, the balloon size may not have changed.  A guest can
114201bed0ffSMarkus Armbruster#    change the balloon size independent of this command.
1143a83e24baSPhilippe Mathieu-Daudé#
11449bc6e893SMarkus Armbruster# Since: 0.14
1145a83e24baSPhilippe Mathieu-Daudé#
11466f07c59fSJohn Snow# .. qmp-example::
11476f07c59fSJohn Snow#    :annotated:
11486f07c59fSJohn Snow#
11496f07c59fSJohn Snow#    ::
1150a83e24baSPhilippe Mathieu-Daudé#
1151a83e24baSPhilippe Mathieu-Daudé#      -> { "execute": "balloon", "arguments": { "value": 536870912 } }
1152a83e24baSPhilippe Mathieu-Daudé#      <- { "return": {} }
1153a83e24baSPhilippe Mathieu-Daudé#
1154a83e24baSPhilippe Mathieu-Daudé#    With a 2.5GiB guest this command inflated the ballon to 3GiB.
1155a83e24baSPhilippe Mathieu-Daudé##
1156a83e24baSPhilippe Mathieu-Daudé{ 'command': 'balloon', 'data': {'value': 'int'} }
1157a83e24baSPhilippe Mathieu-Daudé
1158a83e24baSPhilippe Mathieu-Daudé##
1159a83e24baSPhilippe Mathieu-Daudé# @BalloonInfo:
1160a83e24baSPhilippe Mathieu-Daudé#
1161a83e24baSPhilippe Mathieu-Daudé# Information about the guest balloon device.
1162a83e24baSPhilippe Mathieu-Daudé#
1163a937b6aaSMarkus Armbruster# @actual: the logical size of the VM in bytes Formula used:
1164a937b6aaSMarkus Armbruster#     logical_vm_size = vm_ram_size - balloon_size
1165a83e24baSPhilippe Mathieu-Daudé#
11669bc6e893SMarkus Armbruster# Since: 0.14
1167a83e24baSPhilippe Mathieu-Daudé##
1168a83e24baSPhilippe Mathieu-Daudé{ 'struct': 'BalloonInfo', 'data': {'actual': 'int' } }
1169a83e24baSPhilippe Mathieu-Daudé
1170a83e24baSPhilippe Mathieu-Daudé##
1171a83e24baSPhilippe Mathieu-Daudé# @query-balloon:
1172a83e24baSPhilippe Mathieu-Daudé#
1173a83e24baSPhilippe Mathieu-Daudé# Return information about the balloon device.
1174a83e24baSPhilippe Mathieu-Daudé#
1175a937b6aaSMarkus Armbruster# Returns:
1176e2c1dcbcSMarkus Armbruster#     @BalloonInfo
11772746f060SMarkus Armbruster#
11782746f060SMarkus Armbruster# Errors:
1179e6ab40feSMarkus Armbruster#     - If the balloon driver is enabled but not functional because
1180e6ab40feSMarkus Armbruster#       the KVM kernel module cannot support it, KVMMissingCap
1181a83e24baSPhilippe Mathieu-Daudé#     - If no balloon device is present, DeviceNotActive
1182a83e24baSPhilippe Mathieu-Daudé#
11839bc6e893SMarkus Armbruster# Since: 0.14
1184a83e24baSPhilippe Mathieu-Daudé#
118514b48aaaSJohn Snow# .. qmp-example::
1186a83e24baSPhilippe Mathieu-Daudé#
1187a83e24baSPhilippe Mathieu-Daudé#     -> { "execute": "query-balloon" }
1188a83e24baSPhilippe Mathieu-Daudé#     <- { "return": {
11895d07159dSVictor Toso#              "actual": 1073741824
1190a83e24baSPhilippe Mathieu-Daudé#           }
1191a83e24baSPhilippe Mathieu-Daudé#        }
1192a83e24baSPhilippe Mathieu-Daudé##
1193a83e24baSPhilippe Mathieu-Daudé{ 'command': 'query-balloon', 'returns': 'BalloonInfo' }
1194a83e24baSPhilippe Mathieu-Daudé
1195a83e24baSPhilippe Mathieu-Daudé##
1196a83e24baSPhilippe Mathieu-Daudé# @BALLOON_CHANGE:
1197a83e24baSPhilippe Mathieu-Daudé#
1198a937b6aaSMarkus Armbruster# Emitted when the guest changes the actual BALLOON level.  This value
1199a937b6aaSMarkus Armbruster# is equivalent to the @actual field return by the 'query-balloon'
1200a937b6aaSMarkus Armbruster# command
1201a83e24baSPhilippe Mathieu-Daudé#
1202a937b6aaSMarkus Armbruster# @actual: the logical size of the VM in bytes Formula used:
1203a937b6aaSMarkus Armbruster#     logical_vm_size = vm_ram_size - balloon_size
1204a83e24baSPhilippe Mathieu-Daudé#
1205d461c279SJohn Snow# .. note:: This event is rate-limited.
1206a83e24baSPhilippe Mathieu-Daudé#
1207a83e24baSPhilippe Mathieu-Daudé# Since: 1.2
1208a83e24baSPhilippe Mathieu-Daudé#
120914b48aaaSJohn Snow# .. qmp-example::
1210a83e24baSPhilippe Mathieu-Daudé#
1211a83e24baSPhilippe Mathieu-Daudé#     <- { "event": "BALLOON_CHANGE",
1212a83e24baSPhilippe Mathieu-Daudé#          "data": { "actual": 944766976 },
1213a83e24baSPhilippe Mathieu-Daudé#          "timestamp": { "seconds": 1267020223, "microseconds": 435656 } }
1214a83e24baSPhilippe Mathieu-Daudé##
1215a83e24baSPhilippe Mathieu-Daudé{ 'event': 'BALLOON_CHANGE',
1216a83e24baSPhilippe Mathieu-Daudé  'data': { 'actual': 'int' } }
1217b495ec6cSPhilippe Mathieu-Daudé
1218b495ec6cSPhilippe Mathieu-Daudé##
1219259ebed4SMaciej S. Szmigiero# @HvBalloonInfo:
1220259ebed4SMaciej S. Szmigiero#
1221259ebed4SMaciej S. Szmigiero# hv-balloon guest-provided memory status information.
1222259ebed4SMaciej S. Szmigiero#
1223259ebed4SMaciej S. Szmigiero# @committed: the amount of memory in use inside the guest plus the
1224259ebed4SMaciej S. Szmigiero#     amount of the memory unusable inside the guest (ballooned out,
1225259ebed4SMaciej S. Szmigiero#     offline, etc.)
1226259ebed4SMaciej S. Szmigiero#
1227259ebed4SMaciej S. Szmigiero# @available: the amount of the memory inside the guest available for
1228259ebed4SMaciej S. Szmigiero#     new allocations ("free")
1229259ebed4SMaciej S. Szmigiero#
1230259ebed4SMaciej S. Szmigiero# Since: 8.2
1231259ebed4SMaciej S. Szmigiero##
1232259ebed4SMaciej S. Szmigiero{ 'struct': 'HvBalloonInfo',
1233259ebed4SMaciej S. Szmigiero  'data': { 'committed': 'size', 'available': 'size' } }
1234259ebed4SMaciej S. Szmigiero
1235259ebed4SMaciej S. Szmigiero##
1236259ebed4SMaciej S. Szmigiero# @query-hv-balloon-status-report:
1237259ebed4SMaciej S. Szmigiero#
1238209e64d9SMarkus Armbruster# Returns the hv-balloon driver data contained in the last received
1239209e64d9SMarkus Armbruster# "STATUS" message from the guest.
1240259ebed4SMaciej S. Szmigiero#
1241259ebed4SMaciej S. Szmigiero# Returns:
1242e2c1dcbcSMarkus Armbruster#     @HvBalloonInfo
12432746f060SMarkus Armbruster#
12442746f060SMarkus Armbruster# Errors:
1245e6ab40feSMarkus Armbruster#     - If no hv-balloon device is present, guest memory status
1246e6ab40feSMarkus Armbruster#       reporting is not enabled or no guest memory status report
1247e6ab40feSMarkus Armbruster#       received yet, GenericError
1248259ebed4SMaciej S. Szmigiero#
1249259ebed4SMaciej S. Szmigiero# Since: 8.2
1250259ebed4SMaciej S. Szmigiero#
125114b48aaaSJohn Snow# .. qmp-example::
1252259ebed4SMaciej S. Szmigiero#
1253259ebed4SMaciej S. Szmigiero#     -> { "execute": "query-hv-balloon-status-report" }
1254259ebed4SMaciej S. Szmigiero#     <- { "return": {
1255259ebed4SMaciej S. Szmigiero#              "committed": 816640000,
1256259ebed4SMaciej S. Szmigiero#              "available": 3333054464
1257259ebed4SMaciej S. Szmigiero#           }
1258259ebed4SMaciej S. Szmigiero#        }
1259259ebed4SMaciej S. Szmigiero##
1260259ebed4SMaciej S. Szmigiero{ 'command': 'query-hv-balloon-status-report', 'returns': 'HvBalloonInfo' }
1261259ebed4SMaciej S. Szmigiero
1262259ebed4SMaciej S. Szmigiero##
1263259ebed4SMaciej S. Szmigiero# @HV_BALLOON_STATUS_REPORT:
1264259ebed4SMaciej S. Szmigiero#
1265259ebed4SMaciej S. Szmigiero# Emitted when the hv-balloon driver receives a "STATUS" message from
1266259ebed4SMaciej S. Szmigiero# the guest.
1267259ebed4SMaciej S. Szmigiero#
1268d461c279SJohn Snow# .. note:: This event is rate-limited.
1269259ebed4SMaciej S. Szmigiero#
1270259ebed4SMaciej S. Szmigiero# Since: 8.2
1271259ebed4SMaciej S. Szmigiero#
127214b48aaaSJohn Snow# .. qmp-example::
1273259ebed4SMaciej S. Szmigiero#
1274259ebed4SMaciej S. Szmigiero#     <- { "event": "HV_BALLOON_STATUS_REPORT",
1275259ebed4SMaciej S. Szmigiero#          "data": { "committed": 816640000, "available": 3333054464 },
1276259ebed4SMaciej S. Szmigiero#          "timestamp": { "seconds": 1600295492, "microseconds": 661044 } }
1277259ebed4SMaciej S. Szmigiero##
1278259ebed4SMaciej S. Szmigiero{ 'event': 'HV_BALLOON_STATUS_REPORT',
1279259ebed4SMaciej S. Szmigiero  'data': 'HvBalloonInfo' }
1280259ebed4SMaciej S. Szmigiero
1281259ebed4SMaciej S. Szmigiero##
1282b495ec6cSPhilippe Mathieu-Daudé# @MemoryInfo:
1283b495ec6cSPhilippe Mathieu-Daudé#
1284b495ec6cSPhilippe Mathieu-Daudé# Actual memory information in bytes.
1285b495ec6cSPhilippe Mathieu-Daudé#
1286b495ec6cSPhilippe Mathieu-Daudé# @base-memory: size of "base" memory specified with command line
1287b495ec6cSPhilippe Mathieu-Daudé#     option -m.
1288b495ec6cSPhilippe Mathieu-Daudé#
1289a937b6aaSMarkus Armbruster# @plugged-memory: size of memory that can be hot-unplugged.  This
1290a937b6aaSMarkus Armbruster#     field is omitted if target doesn't support memory hotplug (i.e.
1291a937b6aaSMarkus Armbruster#     CONFIG_MEM_DEVICE not defined at build time).
1292b495ec6cSPhilippe Mathieu-Daudé#
12939bc6e893SMarkus Armbruster# Since: 2.11
1294b495ec6cSPhilippe Mathieu-Daudé##
1295b495ec6cSPhilippe Mathieu-Daudé{ 'struct': 'MemoryInfo',
1296b495ec6cSPhilippe Mathieu-Daudé  'data'  : { 'base-memory': 'size', '*plugged-memory': 'size' } }
1297b495ec6cSPhilippe Mathieu-Daudé
1298b495ec6cSPhilippe Mathieu-Daudé##
1299b495ec6cSPhilippe Mathieu-Daudé# @query-memory-size-summary:
1300b495ec6cSPhilippe Mathieu-Daudé#
1301a937b6aaSMarkus Armbruster# Return the amount of initially allocated and present hotpluggable
1302a937b6aaSMarkus Armbruster# (if enabled) memory in bytes.
1303b495ec6cSPhilippe Mathieu-Daudé#
130414b48aaaSJohn Snow# .. qmp-example::
1305b495ec6cSPhilippe Mathieu-Daudé#
1306b495ec6cSPhilippe Mathieu-Daudé#     -> { "execute": "query-memory-size-summary" }
1307b495ec6cSPhilippe Mathieu-Daudé#     <- { "return": { "base-memory": 4294967296, "plugged-memory": 0 } }
1308b495ec6cSPhilippe Mathieu-Daudé#
13099bc6e893SMarkus Armbruster# Since: 2.11
1310b495ec6cSPhilippe Mathieu-Daudé##
1311b495ec6cSPhilippe Mathieu-Daudé{ 'command': 'query-memory-size-summary', 'returns': 'MemoryInfo' }
1312b495ec6cSPhilippe Mathieu-Daudé
1313b495ec6cSPhilippe Mathieu-Daudé##
1314b495ec6cSPhilippe Mathieu-Daudé# @PCDIMMDeviceInfo:
1315b495ec6cSPhilippe Mathieu-Daudé#
1316b495ec6cSPhilippe Mathieu-Daudé# PCDIMMDevice state information
1317b495ec6cSPhilippe Mathieu-Daudé#
1318b495ec6cSPhilippe Mathieu-Daudé# @id: device's ID
1319b495ec6cSPhilippe Mathieu-Daudé#
1320b495ec6cSPhilippe Mathieu-Daudé# @addr: physical address, where device is mapped
1321b495ec6cSPhilippe Mathieu-Daudé#
1322b495ec6cSPhilippe Mathieu-Daudé# @size: size of memory that the device provides
1323b495ec6cSPhilippe Mathieu-Daudé#
1324b495ec6cSPhilippe Mathieu-Daudé# @slot: slot number at which device is plugged in
1325b495ec6cSPhilippe Mathieu-Daudé#
1326b495ec6cSPhilippe Mathieu-Daudé# @node: NUMA node number where device is plugged in
1327b495ec6cSPhilippe Mathieu-Daudé#
1328b495ec6cSPhilippe Mathieu-Daudé# @memdev: memory backend linked with device
1329b495ec6cSPhilippe Mathieu-Daudé#
1330b495ec6cSPhilippe Mathieu-Daudé# @hotplugged: true if device was hotplugged
1331b495ec6cSPhilippe Mathieu-Daudé#
1332a937b6aaSMarkus Armbruster# @hotpluggable: true if device if could be added/removed while
1333a937b6aaSMarkus Armbruster#     machine is running
1334b495ec6cSPhilippe Mathieu-Daudé#
1335b495ec6cSPhilippe Mathieu-Daudé# Since: 2.1
1336b495ec6cSPhilippe Mathieu-Daudé##
1337b495ec6cSPhilippe Mathieu-Daudé{ 'struct': 'PCDIMMDeviceInfo',
1338b495ec6cSPhilippe Mathieu-Daudé  'data': { '*id': 'str',
1339b495ec6cSPhilippe Mathieu-Daudé            'addr': 'int',
1340b495ec6cSPhilippe Mathieu-Daudé            'size': 'int',
1341b495ec6cSPhilippe Mathieu-Daudé            'slot': 'int',
1342b495ec6cSPhilippe Mathieu-Daudé            'node': 'int',
1343b495ec6cSPhilippe Mathieu-Daudé            'memdev': 'str',
1344b495ec6cSPhilippe Mathieu-Daudé            'hotplugged': 'bool',
1345b495ec6cSPhilippe Mathieu-Daudé            'hotpluggable': 'bool'
1346b495ec6cSPhilippe Mathieu-Daudé          }
1347b495ec6cSPhilippe Mathieu-Daudé}
1348b495ec6cSPhilippe Mathieu-Daudé
1349b495ec6cSPhilippe Mathieu-Daudé##
1350b495ec6cSPhilippe Mathieu-Daudé# @VirtioPMEMDeviceInfo:
1351b495ec6cSPhilippe Mathieu-Daudé#
1352b495ec6cSPhilippe Mathieu-Daudé# VirtioPMEM state information
1353b495ec6cSPhilippe Mathieu-Daudé#
1354b495ec6cSPhilippe Mathieu-Daudé# @id: device's ID
1355b495ec6cSPhilippe Mathieu-Daudé#
1356b495ec6cSPhilippe Mathieu-Daudé# @memaddr: physical address in memory, where device is mapped
1357b495ec6cSPhilippe Mathieu-Daudé#
1358b495ec6cSPhilippe Mathieu-Daudé# @size: size of memory that the device provides
1359b495ec6cSPhilippe Mathieu-Daudé#
1360b495ec6cSPhilippe Mathieu-Daudé# @memdev: memory backend linked with device
1361b495ec6cSPhilippe Mathieu-Daudé#
1362b495ec6cSPhilippe Mathieu-Daudé# Since: 4.1
1363b495ec6cSPhilippe Mathieu-Daudé##
1364b495ec6cSPhilippe Mathieu-Daudé{ 'struct': 'VirtioPMEMDeviceInfo',
1365b495ec6cSPhilippe Mathieu-Daudé  'data': { '*id': 'str',
1366b495ec6cSPhilippe Mathieu-Daudé            'memaddr': 'size',
1367b495ec6cSPhilippe Mathieu-Daudé            'size': 'size',
1368b495ec6cSPhilippe Mathieu-Daudé            'memdev': 'str'
1369b495ec6cSPhilippe Mathieu-Daudé          }
1370b495ec6cSPhilippe Mathieu-Daudé}
1371b495ec6cSPhilippe Mathieu-Daudé
1372b495ec6cSPhilippe Mathieu-Daudé##
1373b495ec6cSPhilippe Mathieu-Daudé# @VirtioMEMDeviceInfo:
1374b495ec6cSPhilippe Mathieu-Daudé#
1375b495ec6cSPhilippe Mathieu-Daudé# VirtioMEMDevice state information
1376b495ec6cSPhilippe Mathieu-Daudé#
1377b495ec6cSPhilippe Mathieu-Daudé# @id: device's ID
1378b495ec6cSPhilippe Mathieu-Daudé#
1379b495ec6cSPhilippe Mathieu-Daudé# @memaddr: physical address in memory, where device is mapped
1380b495ec6cSPhilippe Mathieu-Daudé#
1381b495ec6cSPhilippe Mathieu-Daudé# @requested-size: the user requested size of the device
1382b495ec6cSPhilippe Mathieu-Daudé#
1383b495ec6cSPhilippe Mathieu-Daudé# @size: the (current) size of memory that the device provides
1384b495ec6cSPhilippe Mathieu-Daudé#
1385b495ec6cSPhilippe Mathieu-Daudé# @max-size: the maximum size of memory that the device can provide
1386b495ec6cSPhilippe Mathieu-Daudé#
1387b495ec6cSPhilippe Mathieu-Daudé# @block-size: the block size of memory that the device provides
1388b495ec6cSPhilippe Mathieu-Daudé#
1389b495ec6cSPhilippe Mathieu-Daudé# @node: NUMA node number where device is assigned to
1390b495ec6cSPhilippe Mathieu-Daudé#
1391b495ec6cSPhilippe Mathieu-Daudé# @memdev: memory backend linked with the region
1392b495ec6cSPhilippe Mathieu-Daudé#
1393b495ec6cSPhilippe Mathieu-Daudé# Since: 5.1
1394b495ec6cSPhilippe Mathieu-Daudé##
1395b495ec6cSPhilippe Mathieu-Daudé{ 'struct': 'VirtioMEMDeviceInfo',
1396b495ec6cSPhilippe Mathieu-Daudé  'data': { '*id': 'str',
1397b495ec6cSPhilippe Mathieu-Daudé            'memaddr': 'size',
1398b495ec6cSPhilippe Mathieu-Daudé            'requested-size': 'size',
1399b495ec6cSPhilippe Mathieu-Daudé            'size': 'size',
1400b495ec6cSPhilippe Mathieu-Daudé            'max-size': 'size',
1401b495ec6cSPhilippe Mathieu-Daudé            'block-size': 'size',
1402b495ec6cSPhilippe Mathieu-Daudé            'node': 'int',
1403b495ec6cSPhilippe Mathieu-Daudé            'memdev': 'str'
1404b495ec6cSPhilippe Mathieu-Daudé          }
1405b495ec6cSPhilippe Mathieu-Daudé}
1406b495ec6cSPhilippe Mathieu-Daudé
1407b495ec6cSPhilippe Mathieu-Daudé##
1408a7c565a9SYang Zhong# @SgxEPCDeviceInfo:
1409a7c565a9SYang Zhong#
1410a7c565a9SYang Zhong# Sgx EPC state information
1411a7c565a9SYang Zhong#
1412a7c565a9SYang Zhong# @id: device's ID
1413a7c565a9SYang Zhong#
1414a7c565a9SYang Zhong# @memaddr: physical address in memory, where device is mapped
1415a7c565a9SYang Zhong#
1416a7c565a9SYang Zhong# @size: size of memory that the device provides
1417a7c565a9SYang Zhong#
1418a7c565a9SYang Zhong# @memdev: memory backend linked with device
1419a7c565a9SYang Zhong#
1420a66bd91fSYang Zhong# @node: the numa node (Since: 7.0)
142111058123SYang Zhong#
1422a7c565a9SYang Zhong# Since: 6.2
1423a7c565a9SYang Zhong##
1424a7c565a9SYang Zhong{ 'struct': 'SgxEPCDeviceInfo',
1425a7c565a9SYang Zhong  'data': { '*id': 'str',
1426a7c565a9SYang Zhong            'memaddr': 'size',
1427a7c565a9SYang Zhong            'size': 'size',
142811058123SYang Zhong            'node': 'int',
1429a7c565a9SYang Zhong            'memdev': 'str'
1430a7c565a9SYang Zhong          }
1431a7c565a9SYang Zhong}
1432a7c565a9SYang Zhong
1433a7c565a9SYang Zhong##
143416dff2f9SMaciej S. Szmigiero# @HvBalloonDeviceInfo:
143516dff2f9SMaciej S. Szmigiero#
143616dff2f9SMaciej S. Szmigiero# hv-balloon provided memory state information
143716dff2f9SMaciej S. Szmigiero#
143816dff2f9SMaciej S. Szmigiero# @id: device's ID
143916dff2f9SMaciej S. Szmigiero#
144016dff2f9SMaciej S. Szmigiero# @memaddr: physical address in memory, where device is mapped
144116dff2f9SMaciej S. Szmigiero#
144216dff2f9SMaciej S. Szmigiero# @max-size: the maximum size of memory that the device can provide
144316dff2f9SMaciej S. Szmigiero#
144416dff2f9SMaciej S. Szmigiero# @memdev: memory backend linked with device
144516dff2f9SMaciej S. Szmigiero#
144616dff2f9SMaciej S. Szmigiero# Since: 8.2
144716dff2f9SMaciej S. Szmigiero##
144816dff2f9SMaciej S. Szmigiero{ 'struct': 'HvBalloonDeviceInfo',
144916dff2f9SMaciej S. Szmigiero  'data': { '*id': 'str',
145016dff2f9SMaciej S. Szmigiero            '*memaddr': 'size',
145116dff2f9SMaciej S. Szmigiero            'max-size': 'size',
145216dff2f9SMaciej S. Szmigiero            '*memdev': 'str'
145316dff2f9SMaciej S. Szmigiero          }
145416dff2f9SMaciej S. Szmigiero}
145516dff2f9SMaciej S. Szmigiero
145616dff2f9SMaciej S. Szmigiero##
1457db6a252bSMarkus Armbruster# @MemoryDeviceInfoKind:
1458db6a252bSMarkus Armbruster#
145986bf13aeSMarkus Armbruster# @nvdimm: since 2.12
146086bf13aeSMarkus Armbruster#
146186bf13aeSMarkus Armbruster# @virtio-pmem: since 4.1
146286bf13aeSMarkus Armbruster#
146386bf13aeSMarkus Armbruster# @virtio-mem: since 5.1
146486bf13aeSMarkus Armbruster#
146586bf13aeSMarkus Armbruster# @sgx-epc: since 6.2.
146686bf13aeSMarkus Armbruster#
146716dff2f9SMaciej S. Szmigiero# @hv-balloon: since 8.2.
146816dff2f9SMaciej S. Szmigiero#
1469db6a252bSMarkus Armbruster# Since: 2.1
1470db6a252bSMarkus Armbruster##
1471db6a252bSMarkus Armbruster{ 'enum': 'MemoryDeviceInfoKind',
147216dff2f9SMaciej S. Szmigiero  'data': [ 'dimm', 'nvdimm', 'virtio-pmem', 'virtio-mem', 'sgx-epc',
147316dff2f9SMaciej S. Szmigiero            'hv-balloon' ] }
1474db6a252bSMarkus Armbruster
1475db6a252bSMarkus Armbruster##
1476db6a252bSMarkus Armbruster# @PCDIMMDeviceInfoWrapper:
1477db6a252bSMarkus Armbruster#
14782fecccbcSMarkus Armbruster# @data: PCDIMMDevice state information
14792fecccbcSMarkus Armbruster#
1480db6a252bSMarkus Armbruster# Since: 2.1
1481db6a252bSMarkus Armbruster##
1482db6a252bSMarkus Armbruster{ 'struct': 'PCDIMMDeviceInfoWrapper',
1483db6a252bSMarkus Armbruster  'data': { 'data': 'PCDIMMDeviceInfo' } }
1484db6a252bSMarkus Armbruster
1485db6a252bSMarkus Armbruster##
1486db6a252bSMarkus Armbruster# @VirtioPMEMDeviceInfoWrapper:
1487db6a252bSMarkus Armbruster#
14882fecccbcSMarkus Armbruster# @data: VirtioPMEM state information
14892fecccbcSMarkus Armbruster#
1490db6a252bSMarkus Armbruster# Since: 2.1
1491db6a252bSMarkus Armbruster##
1492db6a252bSMarkus Armbruster{ 'struct': 'VirtioPMEMDeviceInfoWrapper',
1493db6a252bSMarkus Armbruster  'data': { 'data': 'VirtioPMEMDeviceInfo' } }
1494db6a252bSMarkus Armbruster
1495db6a252bSMarkus Armbruster##
1496db6a252bSMarkus Armbruster# @VirtioMEMDeviceInfoWrapper:
1497db6a252bSMarkus Armbruster#
14982fecccbcSMarkus Armbruster# @data: VirtioMEMDevice state information
14992fecccbcSMarkus Armbruster#
1500db6a252bSMarkus Armbruster# Since: 2.1
1501db6a252bSMarkus Armbruster##
1502db6a252bSMarkus Armbruster{ 'struct': 'VirtioMEMDeviceInfoWrapper',
1503db6a252bSMarkus Armbruster  'data': { 'data': 'VirtioMEMDeviceInfo' } }
1504db6a252bSMarkus Armbruster
1505db6a252bSMarkus Armbruster##
1506a7c565a9SYang Zhong# @SgxEPCDeviceInfoWrapper:
1507a7c565a9SYang Zhong#
15082fecccbcSMarkus Armbruster# @data: Sgx EPC state information
15092fecccbcSMarkus Armbruster#
1510a7c565a9SYang Zhong# Since: 6.2
1511a7c565a9SYang Zhong##
1512a7c565a9SYang Zhong{ 'struct': 'SgxEPCDeviceInfoWrapper',
1513a7c565a9SYang Zhong  'data': { 'data': 'SgxEPCDeviceInfo' } }
1514a7c565a9SYang Zhong
1515b495ec6cSPhilippe Mathieu-Daudé##
151616dff2f9SMaciej S. Szmigiero# @HvBalloonDeviceInfoWrapper:
151716dff2f9SMaciej S. Szmigiero#
15182fecccbcSMarkus Armbruster# @data: hv-balloon provided memory state information
15192fecccbcSMarkus Armbruster#
152016dff2f9SMaciej S. Szmigiero# Since: 8.2
152116dff2f9SMaciej S. Szmigiero##
152216dff2f9SMaciej S. Szmigiero{ 'struct': 'HvBalloonDeviceInfoWrapper',
152316dff2f9SMaciej S. Szmigiero  'data': { 'data': 'HvBalloonDeviceInfo' } }
152416dff2f9SMaciej S. Szmigiero
152516dff2f9SMaciej S. Szmigiero##
1526b495ec6cSPhilippe Mathieu-Daudé# @MemoryDeviceInfo:
1527b495ec6cSPhilippe Mathieu-Daudé#
1528b495ec6cSPhilippe Mathieu-Daudé# Union containing information about a memory device
1529b495ec6cSPhilippe Mathieu-Daudé#
153089a2273bSMarkus Armbruster# @type: memory device type
153189a2273bSMarkus Armbruster#
1532b495ec6cSPhilippe Mathieu-Daudé# Since: 2.1
1533b495ec6cSPhilippe Mathieu-Daudé##
1534b495ec6cSPhilippe Mathieu-Daudé{ 'union': 'MemoryDeviceInfo',
1535db6a252bSMarkus Armbruster  'base': { 'type': 'MemoryDeviceInfoKind' },
1536db6a252bSMarkus Armbruster  'discriminator': 'type',
1537db6a252bSMarkus Armbruster  'data': { 'dimm': 'PCDIMMDeviceInfoWrapper',
1538db6a252bSMarkus Armbruster            'nvdimm': 'PCDIMMDeviceInfoWrapper',
1539db6a252bSMarkus Armbruster            'virtio-pmem': 'VirtioPMEMDeviceInfoWrapper',
1540a7c565a9SYang Zhong            'virtio-mem': 'VirtioMEMDeviceInfoWrapper',
154116dff2f9SMaciej S. Szmigiero            'sgx-epc': 'SgxEPCDeviceInfoWrapper',
154216dff2f9SMaciej S. Szmigiero            'hv-balloon': 'HvBalloonDeviceInfoWrapper'
1543b495ec6cSPhilippe Mathieu-Daudé          }
1544b495ec6cSPhilippe Mathieu-Daudé}
1545b495ec6cSPhilippe Mathieu-Daudé
1546b495ec6cSPhilippe Mathieu-Daudé##
1547dfce81f1SSean Christopherson# @SgxEPC:
1548dfce81f1SSean Christopherson#
1549dfce81f1SSean Christopherson# Sgx EPC cmdline information
1550dfce81f1SSean Christopherson#
1551dfce81f1SSean Christopherson# @memdev: memory backend linked with device
1552dfce81f1SSean Christopherson#
1553a66bd91fSYang Zhong# @node: the numa node (Since: 7.0)
155411058123SYang Zhong#
1555dfce81f1SSean Christopherson# Since: 6.2
1556dfce81f1SSean Christopherson##
1557dfce81f1SSean Christopherson{ 'struct': 'SgxEPC',
155811058123SYang Zhong  'data': { 'memdev': 'str',
155911058123SYang Zhong            'node': 'int'
156011058123SYang Zhong          }
156111058123SYang Zhong}
1562dfce81f1SSean Christopherson
1563dfce81f1SSean Christopherson##
1564dfce81f1SSean Christopherson# @SgxEPCProperties:
1565dfce81f1SSean Christopherson#
1566dfce81f1SSean Christopherson# SGX properties of machine types.
1567dfce81f1SSean Christopherson#
1568dfce81f1SSean Christopherson# @sgx-epc: list of ids of memory-backend-epc objects.
1569dfce81f1SSean Christopherson#
1570dfce81f1SSean Christopherson# Since: 6.2
1571dfce81f1SSean Christopherson##
1572dfce81f1SSean Christopherson{ 'struct': 'SgxEPCProperties',
1573dfce81f1SSean Christopherson  'data': { 'sgx-epc': ['SgxEPC'] }
1574dfce81f1SSean Christopherson}
1575dfce81f1SSean Christopherson
1576dfce81f1SSean Christopherson##
1577b495ec6cSPhilippe Mathieu-Daudé# @query-memory-devices:
1578b495ec6cSPhilippe Mathieu-Daudé#
1579b495ec6cSPhilippe Mathieu-Daudé# Lists available memory devices and their state
1580b495ec6cSPhilippe Mathieu-Daudé#
1581b495ec6cSPhilippe Mathieu-Daudé# Since: 2.1
1582b495ec6cSPhilippe Mathieu-Daudé#
158314b48aaaSJohn Snow# .. qmp-example::
1584b495ec6cSPhilippe Mathieu-Daudé#
1585b495ec6cSPhilippe Mathieu-Daudé#     -> { "execute": "query-memory-devices" }
1586b495ec6cSPhilippe Mathieu-Daudé#     <- { "return": [ { "data":
1587b495ec6cSPhilippe Mathieu-Daudé#                           { "addr": 5368709120,
1588b495ec6cSPhilippe Mathieu-Daudé#                             "hotpluggable": true,
1589b495ec6cSPhilippe Mathieu-Daudé#                             "hotplugged": true,
1590b495ec6cSPhilippe Mathieu-Daudé#                             "id": "d1",
1591b495ec6cSPhilippe Mathieu-Daudé#                             "memdev": "/objects/memX",
1592b495ec6cSPhilippe Mathieu-Daudé#                             "node": 0,
1593b495ec6cSPhilippe Mathieu-Daudé#                             "size": 1073741824,
1594b495ec6cSPhilippe Mathieu-Daudé#                             "slot": 0},
1595b495ec6cSPhilippe Mathieu-Daudé#                        "type": "dimm"
1596b495ec6cSPhilippe Mathieu-Daudé#                      } ] }
1597b495ec6cSPhilippe Mathieu-Daudé##
1598b495ec6cSPhilippe Mathieu-Daudé{ 'command': 'query-memory-devices', 'returns': ['MemoryDeviceInfo'] }
1599b495ec6cSPhilippe Mathieu-Daudé
1600b495ec6cSPhilippe Mathieu-Daudé##
1601b495ec6cSPhilippe Mathieu-Daudé# @MEMORY_DEVICE_SIZE_CHANGE:
1602b495ec6cSPhilippe Mathieu-Daudé#
1603a937b6aaSMarkus Armbruster# Emitted when the size of a memory device changes.  Only emitted for
1604a937b6aaSMarkus Armbruster# memory devices that can actually change the size (e.g., virtio-mem
1605a937b6aaSMarkus Armbruster# due to guest action).
1606b495ec6cSPhilippe Mathieu-Daudé#
1607b495ec6cSPhilippe Mathieu-Daudé# @id: device's ID
1608d89dd28fSDavid Hildenbrand#
1609b495ec6cSPhilippe Mathieu-Daudé# @size: the new size of memory that the device provides
1610b495ec6cSPhilippe Mathieu-Daudé#
1611d89dd28fSDavid Hildenbrand# @qom-path: path to the device object in the QOM tree (since 6.2)
1612d89dd28fSDavid Hildenbrand#
1613d461c279SJohn Snow# .. note:: This event is rate-limited.
1614b495ec6cSPhilippe Mathieu-Daudé#
1615b495ec6cSPhilippe Mathieu-Daudé# Since: 5.1
1616b495ec6cSPhilippe Mathieu-Daudé#
161714b48aaaSJohn Snow# .. qmp-example::
1618b495ec6cSPhilippe Mathieu-Daudé#
1619b495ec6cSPhilippe Mathieu-Daudé#     <- { "event": "MEMORY_DEVICE_SIZE_CHANGE",
1620dba673b9SVictor Toso#          "data": { "id": "vm0", "size": 1073741824,
1621dba673b9SVictor Toso#                    "qom-path": "/machine/unattached/device[2]" },
1622b495ec6cSPhilippe Mathieu-Daudé#          "timestamp": { "seconds": 1588168529, "microseconds": 201316 } }
1623b495ec6cSPhilippe Mathieu-Daudé##
1624b495ec6cSPhilippe Mathieu-Daudé{ 'event': 'MEMORY_DEVICE_SIZE_CHANGE',
1625d89dd28fSDavid Hildenbrand  'data': { '*id': 'str', 'size': 'size', 'qom-path' : 'str'} }
1626b495ec6cSPhilippe Mathieu-Daudé
1627b495ec6cSPhilippe Mathieu-Daudé##
162897ec4d21SPaolo Bonzini# @BootConfiguration:
162997ec4d21SPaolo Bonzini#
163097ec4d21SPaolo Bonzini# Schema for virtual machine boot configuration.
163197ec4d21SPaolo Bonzini#
163297ec4d21SPaolo Bonzini# @order: Boot order (a=floppy, c=hard disk, d=CD-ROM, n=network)
163397ec4d21SPaolo Bonzini#
163497ec4d21SPaolo Bonzini# @once: Boot order to apply on first boot
163597ec4d21SPaolo Bonzini#
163697ec4d21SPaolo Bonzini# @menu: Whether to show a boot menu
163797ec4d21SPaolo Bonzini#
1638a937b6aaSMarkus Armbruster# @splash: The name of the file to be passed to the firmware as logo
1639a937b6aaSMarkus Armbruster#     picture, if @menu is true.
164097ec4d21SPaolo Bonzini#
164197ec4d21SPaolo Bonzini# @splash-time: How long to show the logo picture, in milliseconds
164297ec4d21SPaolo Bonzini#
164397ec4d21SPaolo Bonzini# @reboot-timeout: Timeout before guest reboots after boot fails
164497ec4d21SPaolo Bonzini#
1645a937b6aaSMarkus Armbruster# @strict: Whether to attempt booting from devices not included in the
1646a937b6aaSMarkus Armbruster#     boot order
164797ec4d21SPaolo Bonzini#
164897ec4d21SPaolo Bonzini# Since: 7.1
164997ec4d21SPaolo Bonzini##
165097ec4d21SPaolo Bonzini{ 'struct': 'BootConfiguration', 'data': {
165197ec4d21SPaolo Bonzini     '*order': 'str',
165297ec4d21SPaolo Bonzini     '*once': 'str',
165397ec4d21SPaolo Bonzini     '*menu': 'bool',
165497ec4d21SPaolo Bonzini     '*splash': 'str',
165597ec4d21SPaolo Bonzini     '*splash-time': 'int',
165697ec4d21SPaolo Bonzini     '*reboot-timeout': 'int',
165797ec4d21SPaolo Bonzini     '*strict': 'bool' } }
165897ec4d21SPaolo Bonzini
165997ec4d21SPaolo Bonzini##
16601e63fe68SPaolo Bonzini# @SMPConfiguration:
16611e63fe68SPaolo Bonzini#
1662a937b6aaSMarkus Armbruster# Schema for CPU topology configuration.  A missing value lets QEMU
1663a937b6aaSMarkus Armbruster# figure out a suitable value based on the ones that are provided.
16641e63fe68SPaolo Bonzini#
16653da4aef8SNina Schoetterl-Glausch# The members other than @cpus and @maxcpus define a topology of
16663da4aef8SNina Schoetterl-Glausch# containers.
16673da4aef8SNina Schoetterl-Glausch#
166801bed0ffSMarkus Armbruster# The ordering from highest/coarsest to lowest/finest is: @drawers,
166901bed0ffSMarkus Armbruster# @books, @sockets, @dies, @clusters, @cores, @threads.
16703da4aef8SNina Schoetterl-Glausch#
16713da4aef8SNina Schoetterl-Glausch# Different architectures support different subsets of topology
16723da4aef8SNina Schoetterl-Glausch# containers.
16733da4aef8SNina Schoetterl-Glausch#
16743da4aef8SNina Schoetterl-Glausch# For example, s390x does not have clusters and dies, and the socket
16753da4aef8SNina Schoetterl-Glausch# is the parent container of cores.
16763da4aef8SNina Schoetterl-Glausch#
16771e63fe68SPaolo Bonzini# @cpus: number of virtual CPUs in the virtual machine
16781e63fe68SPaolo Bonzini#
1679a937b6aaSMarkus Armbruster# @maxcpus: maximum number of hotpluggable virtual CPUs in the virtual
1680a937b6aaSMarkus Armbruster#     machine
16811e63fe68SPaolo Bonzini#
16825de1aff2SPierre Morel# @drawers: number of drawers in the CPU topology (since 8.2)
16835de1aff2SPierre Morel#
16845de1aff2SPierre Morel# @books: number of books in the CPU topology (since 8.2)
16855de1aff2SPierre Morel#
16865de1aff2SPierre Morel# @sockets: number of sockets per parent container
16873da4aef8SNina Schoetterl-Glausch#
16883da4aef8SNina Schoetterl-Glausch# @dies: number of dies per parent container
16893da4aef8SNina Schoetterl-Glausch#
16903da4aef8SNina Schoetterl-Glausch# @clusters: number of clusters per parent container (since 7.0)
16913da4aef8SNina Schoetterl-Glausch#
16928ec0a463SZhao Liu# @modules: number of modules per parent container (since 9.1)
16938ec0a463SZhao Liu#
16943da4aef8SNina Schoetterl-Glausch# @cores: number of cores per parent container
16953da4aef8SNina Schoetterl-Glausch#
16963da4aef8SNina Schoetterl-Glausch# @threads: number of threads per core
16973da4aef8SNina Schoetterl-Glausch#
16981e63fe68SPaolo Bonzini# Since: 6.1
16991e63fe68SPaolo Bonzini##
17001e63fe68SPaolo Bonzini{ 'struct': 'SMPConfiguration', 'data': {
17011e63fe68SPaolo Bonzini     '*cpus': 'int',
17025de1aff2SPierre Morel     '*drawers': 'int',
17035de1aff2SPierre Morel     '*books': 'int',
17041e63fe68SPaolo Bonzini     '*sockets': 'int',
17051e63fe68SPaolo Bonzini     '*dies': 'int',
1706864c3b5cSYanan Wang     '*clusters': 'int',
17078ec0a463SZhao Liu     '*modules': 'int',
17081e63fe68SPaolo Bonzini     '*cores': 'int',
17091e63fe68SPaolo Bonzini     '*threads': 'int',
17101e63fe68SPaolo Bonzini     '*maxcpus': 'int' } }
1711dd98234cSDaniel P. Berrangé
1712dd98234cSDaniel P. Berrangé##
171391f2fa70SDaniel P. Berrangé# @x-query-irq:
171491f2fa70SDaniel P. Berrangé#
171591f2fa70SDaniel P. Berrangé# Query interrupt statistics
171691f2fa70SDaniel P. Berrangé#
17178c0bae5aSMarkus Armbruster# Features:
1718a937b6aaSMarkus Armbruster#
17198c0bae5aSMarkus Armbruster# @unstable: This command is meant for debugging.
17208c0bae5aSMarkus Armbruster#
172191f2fa70SDaniel P. Berrangé# Returns: interrupt statistics
172291f2fa70SDaniel P. Berrangé#
172391f2fa70SDaniel P. Berrangé# Since: 6.2
172491f2fa70SDaniel P. Berrangé##
172591f2fa70SDaniel P. Berrangé{ 'command': 'x-query-irq',
17268c0bae5aSMarkus Armbruster  'returns': 'HumanReadableText',
17278c0bae5aSMarkus Armbruster  'features': [ 'unstable' ] }
172891f2fa70SDaniel P. Berrangé
172991f2fa70SDaniel P. Berrangé##
17303a841ab5SDaniel P. Berrangé# @x-query-jit:
17313a841ab5SDaniel P. Berrangé#
17323a841ab5SDaniel P. Berrangé# Query TCG compiler statistics
17333a841ab5SDaniel P. Berrangé#
17348c0bae5aSMarkus Armbruster# Features:
1735a937b6aaSMarkus Armbruster#
17368c0bae5aSMarkus Armbruster# @unstable: This command is meant for debugging.
17378c0bae5aSMarkus Armbruster#
17383a841ab5SDaniel P. Berrangé# Returns: TCG compiler statistics
17393a841ab5SDaniel P. Berrangé#
17403a841ab5SDaniel P. Berrangé# Since: 6.2
17413a841ab5SDaniel P. Berrangé##
17423a841ab5SDaniel P. Berrangé{ 'command': 'x-query-jit',
17433a841ab5SDaniel P. Berrangé  'returns': 'HumanReadableText',
17448c0bae5aSMarkus Armbruster  'if': 'CONFIG_TCG',
17458c0bae5aSMarkus Armbruster  'features': [ 'unstable' ] }
17463a841ab5SDaniel P. Berrangé
17473a841ab5SDaniel P. Berrangé##
17481b8ae799SDaniel P. Berrangé# @x-query-numa:
17491b8ae799SDaniel P. Berrangé#
17501b8ae799SDaniel P. Berrangé# Query NUMA topology information
17511b8ae799SDaniel P. Berrangé#
17528c0bae5aSMarkus Armbruster# Features:
1753a937b6aaSMarkus Armbruster#
17548c0bae5aSMarkus Armbruster# @unstable: This command is meant for debugging.
17558c0bae5aSMarkus Armbruster#
17561b8ae799SDaniel P. Berrangé# Returns: topology information
17571b8ae799SDaniel P. Berrangé#
17581b8ae799SDaniel P. Berrangé# Since: 6.2
17591b8ae799SDaniel P. Berrangé##
17601b8ae799SDaniel P. Berrangé{ 'command': 'x-query-numa',
17618c0bae5aSMarkus Armbruster  'returns': 'HumanReadableText',
17628c0bae5aSMarkus Armbruster  'features': [ 'unstable' ] }
17631b8ae799SDaniel P. Berrangé
17641b8ae799SDaniel P. Berrangé##
1765b6a7f3e0SDaniel P. Berrangé# @x-query-opcount:
1766b6a7f3e0SDaniel P. Berrangé#
1767b6a7f3e0SDaniel P. Berrangé# Query TCG opcode counters
1768b6a7f3e0SDaniel P. Berrangé#
17698c0bae5aSMarkus Armbruster# Features:
1770a937b6aaSMarkus Armbruster#
17718c0bae5aSMarkus Armbruster# @unstable: This command is meant for debugging.
17728c0bae5aSMarkus Armbruster#
1773b6a7f3e0SDaniel P. Berrangé# Returns: TCG opcode counters
1774b6a7f3e0SDaniel P. Berrangé#
1775b6a7f3e0SDaniel P. Berrangé# Since: 6.2
1776b6a7f3e0SDaniel P. Berrangé##
1777b6a7f3e0SDaniel P. Berrangé{ 'command': 'x-query-opcount',
1778b6a7f3e0SDaniel P. Berrangé  'returns': 'HumanReadableText',
17798c0bae5aSMarkus Armbruster  'if': 'CONFIG_TCG',
17808c0bae5aSMarkus Armbruster  'features': [ 'unstable' ] }
1781b6a7f3e0SDaniel P. Berrangé
1782b6a7f3e0SDaniel P. Berrangé##
1783ca411b7cSDaniel P. Berrangé# @x-query-ramblock:
1784ca411b7cSDaniel P. Berrangé#
1785ca411b7cSDaniel P. Berrangé# Query system ramblock information
1786ca411b7cSDaniel P. Berrangé#
17878c0bae5aSMarkus Armbruster# Features:
1788a937b6aaSMarkus Armbruster#
17898c0bae5aSMarkus Armbruster# @unstable: This command is meant for debugging.
17908c0bae5aSMarkus Armbruster#
1791ca411b7cSDaniel P. Berrangé# Returns: system ramblock information
1792ca411b7cSDaniel P. Berrangé#
1793ca411b7cSDaniel P. Berrangé# Since: 6.2
1794ca411b7cSDaniel P. Berrangé##
1795ca411b7cSDaniel P. Berrangé{ 'command': 'x-query-ramblock',
17968c0bae5aSMarkus Armbruster  'returns': 'HumanReadableText',
17978c0bae5aSMarkus Armbruster  'features': [ 'unstable' ] }
1798ca411b7cSDaniel P. Berrangé
1799ca411b7cSDaniel P. Berrangé##
1800dd98234cSDaniel P. Berrangé# @x-query-roms:
1801dd98234cSDaniel P. Berrangé#
1802dd98234cSDaniel P. Berrangé# Query information on the registered ROMS
1803dd98234cSDaniel P. Berrangé#
18048c0bae5aSMarkus Armbruster# Features:
1805a937b6aaSMarkus Armbruster#
18068c0bae5aSMarkus Armbruster# @unstable: This command is meant for debugging.
18078c0bae5aSMarkus Armbruster#
1808dd98234cSDaniel P. Berrangé# Returns: registered ROMs
1809dd98234cSDaniel P. Berrangé#
1810dd98234cSDaniel P. Berrangé# Since: 6.2
1811dd98234cSDaniel P. Berrangé##
1812dd98234cSDaniel P. Berrangé{ 'command': 'x-query-roms',
18138c0bae5aSMarkus Armbruster  'returns': 'HumanReadableText',
18148c0bae5aSMarkus Armbruster  'features': [ 'unstable' ] }
1815fc309207SDaniel P. Berrangé
1816fc309207SDaniel P. Berrangé##
1817fc309207SDaniel P. Berrangé# @x-query-usb:
1818fc309207SDaniel P. Berrangé#
1819fc309207SDaniel P. Berrangé# Query information on the USB devices
1820fc309207SDaniel P. Berrangé#
18218c0bae5aSMarkus Armbruster# Features:
1822a937b6aaSMarkus Armbruster#
18238c0bae5aSMarkus Armbruster# @unstable: This command is meant for debugging.
18248c0bae5aSMarkus Armbruster#
1825fc309207SDaniel P. Berrangé# Returns: USB device information
1826fc309207SDaniel P. Berrangé#
1827fc309207SDaniel P. Berrangé# Since: 6.2
1828fc309207SDaniel P. Berrangé##
1829fc309207SDaniel P. Berrangé{ 'command': 'x-query-usb',
18308c0bae5aSMarkus Armbruster  'returns': 'HumanReadableText',
18318c0bae5aSMarkus Armbruster  'features': [ 'unstable' ] }
1832bdf54a9aSEduardo Habkost
1833bdf54a9aSEduardo Habkost##
1834bdf54a9aSEduardo Habkost# @SmbiosEntryPointType:
1835bdf54a9aSEduardo Habkost#
1836bdf54a9aSEduardo Habkost# @32: SMBIOS version 2.1 (32-bit) Entry Point
1837bdf54a9aSEduardo Habkost#
1838bdf54a9aSEduardo Habkost# @64: SMBIOS version 3.0 (64-bit) Entry Point
1839bdf54a9aSEduardo Habkost#
18404901b80eSIgor Mammedov# @auto: Either 2.x or 3.x SMBIOS version, 2.x if configuration can be
18414901b80eSIgor Mammedov#     described by it and 3.x otherwise (since: 9.0)
18424901b80eSIgor Mammedov#
1843bdf54a9aSEduardo Habkost# Since: 7.0
1844bdf54a9aSEduardo Habkost##
1845bdf54a9aSEduardo Habkost{ 'enum': 'SmbiosEntryPointType',
18464901b80eSIgor Mammedov  'data': [ '32', '64', 'auto' ] }
1847ce9d03fbSPaolo Bonzini
1848ce9d03fbSPaolo Bonzini##
1849ce9d03fbSPaolo Bonzini# @MemorySizeConfiguration:
1850ce9d03fbSPaolo Bonzini#
1851ce9d03fbSPaolo Bonzini# Schema for memory size configuration.
1852ce9d03fbSPaolo Bonzini#
1853ce9d03fbSPaolo Bonzini# @size: memory size in bytes
1854ce9d03fbSPaolo Bonzini#
1855ce9d03fbSPaolo Bonzini# @max-size: maximum hotpluggable memory size in bytes
1856ce9d03fbSPaolo Bonzini#
1857ce9d03fbSPaolo Bonzini# @slots: number of available memory slots for hotplug
1858ce9d03fbSPaolo Bonzini#
1859ce9d03fbSPaolo Bonzini# Since: 7.1
1860ce9d03fbSPaolo Bonzini##
1861ce9d03fbSPaolo Bonzini{ 'struct': 'MemorySizeConfiguration', 'data': {
1862ce9d03fbSPaolo Bonzini     '*size': 'size',
1863ce9d03fbSPaolo Bonzini     '*max-size': 'size',
1864ce9d03fbSPaolo Bonzini     '*slots': 'uint64' } }
1865bf353ad5SDaniel Henrique Barboza
1866bf353ad5SDaniel Henrique Barboza##
1867bf353ad5SDaniel Henrique Barboza# @dumpdtb:
1868bf353ad5SDaniel Henrique Barboza#
1869bf353ad5SDaniel Henrique Barboza# Save the FDT in dtb format.
1870bf353ad5SDaniel Henrique Barboza#
1871bf353ad5SDaniel Henrique Barboza# @filename: name of the dtb file to be created
1872bf353ad5SDaniel Henrique Barboza#
1873bf353ad5SDaniel Henrique Barboza# Since: 7.2
1874bf353ad5SDaniel Henrique Barboza#
187514b48aaaSJohn Snow# .. qmp-example::
1876a937b6aaSMarkus Armbruster#
187737fa48a4SMarkus Armbruster#     -> { "execute": "dumpdtb" }
1878bf353ad5SDaniel Henrique Barboza#          "arguments": { "filename": "fdt.dtb" } }
187937fa48a4SMarkus Armbruster#     <- { "return": {} }
1880bf353ad5SDaniel Henrique Barboza##
1881bf353ad5SDaniel Henrique Barboza{ 'command': 'dumpdtb',
1882bf353ad5SDaniel Henrique Barboza  'data': { 'filename': 'str' },
1883bf353ad5SDaniel Henrique Barboza  'if': 'CONFIG_FDT' }
1884795eaa62SPhilippe Mathieu-Daudé
1885795eaa62SPhilippe Mathieu-Daudé##
1886795eaa62SPhilippe Mathieu-Daudé# @x-query-interrupt-controllers:
1887795eaa62SPhilippe Mathieu-Daudé#
1888795eaa62SPhilippe Mathieu-Daudé# Query information on interrupt controller devices
1889795eaa62SPhilippe Mathieu-Daudé#
1890795eaa62SPhilippe Mathieu-Daudé# Features:
1891795eaa62SPhilippe Mathieu-Daudé#
1892795eaa62SPhilippe Mathieu-Daudé# @unstable: This command is meant for debugging.
1893795eaa62SPhilippe Mathieu-Daudé#
1894795eaa62SPhilippe Mathieu-Daudé# Returns: Interrupt controller devices information
1895795eaa62SPhilippe Mathieu-Daudé#
1896795eaa62SPhilippe Mathieu-Daudé# Since: 9.1
1897795eaa62SPhilippe Mathieu-Daudé##
1898795eaa62SPhilippe Mathieu-Daudé{ 'command': 'x-query-interrupt-controllers',
1899795eaa62SPhilippe Mathieu-Daudé  'returns': 'HumanReadableText',
1900795eaa62SPhilippe Mathieu-Daudé  'features': [ 'unstable' ]}
1901