xref: /qemu/qapi/machine.json (revision 989bb312)
18ac25c84SMarkus Armbruster# -*- Mode: Python -*-
2f7160f32SAndrea Bolognani# vim: filetype=python
38ac25c84SMarkus Armbruster#
48ac25c84SMarkus Armbruster# This work is licensed under the terms of the GNU GPL, version 2 or later.
58ac25c84SMarkus Armbruster# See the COPYING file in the top-level directory.
68ac25c84SMarkus Armbruster
78ac25c84SMarkus Armbruster##
88ac25c84SMarkus Armbruster# = Machines
98ac25c84SMarkus Armbruster##
108ac25c84SMarkus Armbruster
11913d9063SKevin Wolf{ 'include': 'common.json' }
125de1aff2SPierre Morel{ 'include': 'machine-common.json' }
13913d9063SKevin Wolf
14ffaee83bSMarkus Armbruster##
15ffaee83bSMarkus Armbruster# @SysEmuTarget:
16ffaee83bSMarkus Armbruster#
17ffaee83bSMarkus Armbruster# The comprehensive enumeration of QEMU system emulation ("softmmu")
18a937b6aaSMarkus Armbruster# targets.  Run "./configure --help" in the project root directory,
19a937b6aaSMarkus Armbruster# and look for the \*-softmmu targets near the "--target-list" option.
20a937b6aaSMarkus Armbruster# The individual target constants are not documented here, for the
21a937b6aaSMarkus Armbruster# time being.
22ffaee83bSMarkus Armbruster#
23c8c35e5fSYoshinori Sato# @rx: since 5.0
24a937b6aaSMarkus Armbruster#
2542f3ff00SMichael Rolnik# @avr: since 5.1
26c8c35e5fSYoshinori Sato#
27a937b6aaSMarkus Armbruster# Notes: The resulting QMP strings can be appended to the
28a937b6aaSMarkus Armbruster#     "qemu-system-" prefix to produce the corresponding QEMU
29a937b6aaSMarkus Armbruster#     executable name.  This is true even for "qemu-system-x86_64".
30ffaee83bSMarkus Armbruster#
31ffaee83bSMarkus Armbruster# Since: 3.0
32ffaee83bSMarkus Armbruster##
33ffaee83bSMarkus Armbruster{ 'enum' : 'SysEmuTarget',
349d49bcf6SMarkus Armbruster  'data' : [ 'aarch64', 'alpha', 'arm', 'avr', 'cris', 'hppa', 'i386',
35a8a506c3SXiaojuan Yang             'loongarch64', 'm68k', 'microblaze', 'microblazeel', 'mips', 'mips64',
366c301485SPhilippe Mathieu-Daudé             'mips64el', 'mipsel', 'or1k', 'ppc',
37c8c35e5fSYoshinori Sato             'ppc64', 'riscv32', 'riscv64', 'rx', 's390x', 'sh4',
3843692239SMarkus Armbruster             'sh4eb', 'sparc', 'sparc64', 'tricore',
39ffaee83bSMarkus Armbruster             'x86_64', 'xtensa', 'xtensaeb' ] }
408ac25c84SMarkus Armbruster
418ac25c84SMarkus Armbruster##
428ac25c84SMarkus Armbruster# @CpuS390State:
438ac25c84SMarkus Armbruster#
44a937b6aaSMarkus Armbruster# An enumeration of cpu states that can be assumed by a virtual S390
45a937b6aaSMarkus Armbruster# CPU
468ac25c84SMarkus Armbruster#
478ac25c84SMarkus Armbruster# Since: 2.12
488ac25c84SMarkus Armbruster##
498ac25c84SMarkus Armbruster{ 'enum': 'CpuS390State',
508ac25c84SMarkus Armbruster  'prefix': 'S390_CPU_STATE',
518ac25c84SMarkus Armbruster  'data': [ 'uninitialized', 'stopped', 'check-stop', 'operating', 'load' ] }
528ac25c84SMarkus Armbruster
538ac25c84SMarkus Armbruster##
548ac25c84SMarkus Armbruster# @CpuInfoS390:
558ac25c84SMarkus Armbruster#
568ac25c84SMarkus Armbruster# Additional information about a virtual S390 CPU
578ac25c84SMarkus Armbruster#
588ac25c84SMarkus Armbruster# @cpu-state: the virtual CPU's state
598ac25c84SMarkus Armbruster#
60ad2d1afcSPierre Morel# @dedicated: the virtual CPU's dedication (since 8.2)
61ad2d1afcSPierre Morel#
62ad2d1afcSPierre Morel# @entitlement: the virtual CPU's entitlement (since 8.2)
63ad2d1afcSPierre Morel#
648ac25c84SMarkus Armbruster# Since: 2.12
658ac25c84SMarkus Armbruster##
66ad2d1afcSPierre Morel{ 'struct': 'CpuInfoS390',
67ad2d1afcSPierre Morel  'data': { 'cpu-state': 'CpuS390State',
68ad2d1afcSPierre Morel            '*dedicated': 'bool',
69ad2d1afcSPierre Morel            '*entitlement': 'CpuS390Entitlement' } }
708ac25c84SMarkus Armbruster
718ac25c84SMarkus Armbruster##
728ac25c84SMarkus Armbruster# @CpuInfoFast:
738ac25c84SMarkus Armbruster#
748ac25c84SMarkus Armbruster# Information about a virtual CPU
758ac25c84SMarkus Armbruster#
768ac25c84SMarkus Armbruster# @cpu-index: index of the virtual CPU
778ac25c84SMarkus Armbruster#
788ac25c84SMarkus Armbruster# @qom-path: path to the CPU object in the QOM tree
798ac25c84SMarkus Armbruster#
808ac25c84SMarkus Armbruster# @thread-id: ID of the underlying host thread
818ac25c84SMarkus Armbruster#
823da4aef8SNina Schoetterl-Glausch# @props: properties associated with a virtual CPU, e.g. the socket id
838ac25c84SMarkus Armbruster#
848ac25c84SMarkus Armbruster# @target: the QEMU system emulation target, which determines which
858ac25c84SMarkus Armbruster#     additional fields will be listed (since 3.0)
868ac25c84SMarkus Armbruster#
878ac25c84SMarkus Armbruster# Since: 2.12
888ac25c84SMarkus Armbruster##
898ac25c84SMarkus Armbruster{ 'union'         : 'CpuInfoFast',
908ac25c84SMarkus Armbruster  'base'          : { 'cpu-index'    : 'int',
918ac25c84SMarkus Armbruster                      'qom-path'     : 'str',
928ac25c84SMarkus Armbruster                      'thread-id'    : 'int',
938ac25c84SMarkus Armbruster                      '*props'       : 'CpuInstanceProperties',
948ac25c84SMarkus Armbruster                      'target'       : 'SysEmuTarget' },
958ac25c84SMarkus Armbruster  'discriminator' : 'target',
968ac25c84SMarkus Armbruster  'data'          : { 's390x'        : 'CpuInfoS390' } }
978ac25c84SMarkus Armbruster
988ac25c84SMarkus Armbruster##
998ac25c84SMarkus Armbruster# @query-cpus-fast:
1008ac25c84SMarkus Armbruster#
1018af54b91SDaniel P. Berrangé# Returns information about all virtual CPUs.
1028ac25c84SMarkus Armbruster#
1038ac25c84SMarkus Armbruster# Returns: list of @CpuInfoFast
1048ac25c84SMarkus Armbruster#
1058ac25c84SMarkus Armbruster# Since: 2.12
1068ac25c84SMarkus Armbruster#
1078ac25c84SMarkus Armbruster# Example:
1088ac25c84SMarkus Armbruster#
1098ac25c84SMarkus Armbruster#     -> { "execute": "query-cpus-fast" }
1108ac25c84SMarkus Armbruster#     <- { "return": [
1118ac25c84SMarkus Armbruster#             {
1128ac25c84SMarkus Armbruster#                 "thread-id": 25627,
1138ac25c84SMarkus Armbruster#                 "props": {
1148ac25c84SMarkus Armbruster#                     "core-id": 0,
1158ac25c84SMarkus Armbruster#                     "thread-id": 0,
1168ac25c84SMarkus Armbruster#                     "socket-id": 0
1178ac25c84SMarkus Armbruster#                 },
1188ac25c84SMarkus Armbruster#                 "qom-path": "/machine/unattached/device[0]",
1198ac25c84SMarkus Armbruster#                 "target":"x86_64",
1208ac25c84SMarkus Armbruster#                 "cpu-index": 0
1218ac25c84SMarkus Armbruster#             },
1228ac25c84SMarkus Armbruster#             {
1238ac25c84SMarkus Armbruster#                 "thread-id": 25628,
1248ac25c84SMarkus Armbruster#                 "props": {
1258ac25c84SMarkus Armbruster#                     "core-id": 0,
1268ac25c84SMarkus Armbruster#                     "thread-id": 0,
1278ac25c84SMarkus Armbruster#                     "socket-id": 1
1288ac25c84SMarkus Armbruster#                 },
1298ac25c84SMarkus Armbruster#                 "qom-path": "/machine/unattached/device[2]",
1308ac25c84SMarkus Armbruster#                 "target":"x86_64",
1318ac25c84SMarkus Armbruster#                 "cpu-index": 1
1328ac25c84SMarkus Armbruster#             }
1338ac25c84SMarkus Armbruster#         ]
1348ac25c84SMarkus Armbruster#     }
1358ac25c84SMarkus Armbruster##
1368ac25c84SMarkus Armbruster{ 'command': 'query-cpus-fast', 'returns': [ 'CpuInfoFast' ] }
1378ac25c84SMarkus Armbruster
1388ac25c84SMarkus Armbruster##
139236e9397SMaksim Davydov# @CompatProperty:
140236e9397SMaksim Davydov#
141236e9397SMaksim Davydov# Property default values specific to a machine type, for use by
142236e9397SMaksim Davydov# scripts/compare-machine-types.
143236e9397SMaksim Davydov#
144236e9397SMaksim Davydov# @qom-type: name of the QOM type to which the default applies
145236e9397SMaksim Davydov#
146236e9397SMaksim Davydov# @property: name of its property to which the default applies
147236e9397SMaksim Davydov#
148236e9397SMaksim Davydov# @value: the default value (machine-specific default can overwrite
149236e9397SMaksim Davydov#     the "default" default, to avoid this use -machine none)
150236e9397SMaksim Davydov#
151236e9397SMaksim Davydov# Since: 9.1
152236e9397SMaksim Davydov##
153236e9397SMaksim Davydov{ 'struct': 'CompatProperty',
154236e9397SMaksim Davydov  'data': { 'qom-type': 'str',
155236e9397SMaksim Davydov            'property': 'str',
156236e9397SMaksim Davydov            'value': 'str' } }
157236e9397SMaksim Davydov
158236e9397SMaksim Davydov##
1598ac25c84SMarkus Armbruster# @MachineInfo:
1608ac25c84SMarkus Armbruster#
1618ac25c84SMarkus Armbruster# Information describing a machine.
1628ac25c84SMarkus Armbruster#
1638ac25c84SMarkus Armbruster# @name: the name of the machine
1648ac25c84SMarkus Armbruster#
1658ac25c84SMarkus Armbruster# @alias: an alias for the machine name
1668ac25c84SMarkus Armbruster#
1678ac25c84SMarkus Armbruster# @is-default: whether the machine is default
1688ac25c84SMarkus Armbruster#
1698ac25c84SMarkus Armbruster# @cpu-max: maximum number of CPUs supported by the machine type
1709bc6e893SMarkus Armbruster#     (since 1.5)
1718ac25c84SMarkus Armbruster#
1729bc6e893SMarkus Armbruster# @hotpluggable-cpus: cpu hotplug via -device is supported (since 2.7)
1738ac25c84SMarkus Armbruster#
174cd5ff833SIgor Mammedov# @numa-mem-supported: true if '-numa node,mem' option is supported by
175cd5ff833SIgor Mammedov#     the machine type and false otherwise (since 4.1)
176cd5ff833SIgor Mammedov#
177a937b6aaSMarkus Armbruster# @deprecated: if true, the machine type is deprecated and may be
178a937b6aaSMarkus Armbruster#     removed in future versions of QEMU according to the QEMU
179a937b6aaSMarkus Armbruster#     deprecation policy (since 4.1)
18079974027SEduardo Habkost#
181a937b6aaSMarkus Armbruster# @default-cpu-type: default CPU model typename if none is requested
182a937b6aaSMarkus Armbruster#     via the -cpu argument.  (since 4.2)
18304109957SDaniel P. Berrangé#
184a937b6aaSMarkus Armbruster# @default-ram-id: the default ID of initial RAM memory backend (since
185a937b6aaSMarkus Armbruster#     5.2)
186c5566005SMichal Privoznik#
187b97f3147SPeter Krempa# @acpi: machine type supports ACPI (since 8.0)
188b97f3147SPeter Krempa#
189236e9397SMaksim Davydov# @compat-props: The machine type's compatibility properties.  Only
190236e9397SMaksim Davydov#     present when query-machines argument @compat-props is true.
191236e9397SMaksim Davydov#     (since 9.1)
192236e9397SMaksim Davydov#
193236e9397SMaksim Davydov# Features:
194236e9397SMaksim Davydov#
195236e9397SMaksim Davydov# @unstable: Member @compat-props is experimental.
196236e9397SMaksim Davydov#
1979bc6e893SMarkus Armbruster# Since: 1.2
1988ac25c84SMarkus Armbruster##
1998ac25c84SMarkus Armbruster{ 'struct': 'MachineInfo',
2008ac25c84SMarkus Armbruster  'data': { 'name': 'str', '*alias': 'str',
2018ac25c84SMarkus Armbruster            '*is-default': 'bool', 'cpu-max': 'int',
20279974027SEduardo Habkost            'hotpluggable-cpus': 'bool',  'numa-mem-supported': 'bool',
203c5566005SMichal Privoznik            'deprecated': 'bool', '*default-cpu-type': 'str',
204236e9397SMaksim Davydov            '*default-ram-id': 'str', 'acpi': 'bool',
205236e9397SMaksim Davydov            '*compat-props': { 'type': ['CompatProperty'],
206236e9397SMaksim Davydov                               'features': ['unstable'] } } }
2078ac25c84SMarkus Armbruster
2088ac25c84SMarkus Armbruster##
2098ac25c84SMarkus Armbruster# @query-machines:
2108ac25c84SMarkus Armbruster#
2118ac25c84SMarkus Armbruster# Return a list of supported machines
2128ac25c84SMarkus Armbruster#
213236e9397SMaksim Davydov# @compat-props: if true, also return compatibility properties.
214236e9397SMaksim Davydov#     (default: false) (since 9.1)
215236e9397SMaksim Davydov#
216236e9397SMaksim Davydov# Features:
217236e9397SMaksim Davydov#
218236e9397SMaksim Davydov# @unstable: Argument @compat-props is experimental.
219236e9397SMaksim Davydov#
2208ac25c84SMarkus Armbruster# Returns: a list of MachineInfo
2218ac25c84SMarkus Armbruster#
2229bc6e893SMarkus Armbruster# Since: 1.2
223236e9397SMaksim Davydov#
224236e9397SMaksim Davydov# Example:
225236e9397SMaksim Davydov#
226236e9397SMaksim Davydov#     -> { "execute": "query-machines", "arguments": { "compat-props": true } }
227236e9397SMaksim Davydov#     <- { "return": [
228236e9397SMaksim Davydov#               {
229236e9397SMaksim Davydov#                  "hotpluggable-cpus": true,
230236e9397SMaksim Davydov#                  "name": "pc-q35-6.2",
231236e9397SMaksim Davydov#                  "compat-props": [
232236e9397SMaksim Davydov#                       {
233236e9397SMaksim Davydov#                          "qom-type": "virtio-mem",
234236e9397SMaksim Davydov#                          "property": "unplugged-inaccessible",
235236e9397SMaksim Davydov#                          "value": "off"
236236e9397SMaksim Davydov#                       }
237236e9397SMaksim Davydov#                   ],
238236e9397SMaksim Davydov#                   "numa-mem-supported": false,
239236e9397SMaksim Davydov#                   "default-cpu-type": "qemu64-x86_64-cpu",
240236e9397SMaksim Davydov#                   "cpu-max": 288,
241236e9397SMaksim Davydov#                   "deprecated": false,
242236e9397SMaksim Davydov#                   "default-ram-id": "pc.ram"
243236e9397SMaksim Davydov#               },
244236e9397SMaksim Davydov#               ...
245236e9397SMaksim Davydov#        }
2468ac25c84SMarkus Armbruster##
247236e9397SMaksim Davydov{ 'command': 'query-machines',
248236e9397SMaksim Davydov  'data': { '*compat-props': { 'type': 'bool',
249236e9397SMaksim Davydov                               'features': [ 'unstable' ] } },
250236e9397SMaksim Davydov  'returns': ['MachineInfo'] }
2518ac25c84SMarkus Armbruster
2528ac25c84SMarkus Armbruster##
2538ac25c84SMarkus Armbruster# @CurrentMachineParams:
2548ac25c84SMarkus Armbruster#
2558ac25c84SMarkus Armbruster# Information describing the running machine parameters.
2568ac25c84SMarkus Armbruster#
2578ac25c84SMarkus Armbruster# @wakeup-suspend-support: true if the machine supports wake up from
2588ac25c84SMarkus Armbruster#     suspend
2598ac25c84SMarkus Armbruster#
2608ac25c84SMarkus Armbruster# Since: 4.0
2618ac25c84SMarkus Armbruster##
2628ac25c84SMarkus Armbruster{ 'struct': 'CurrentMachineParams',
2638ac25c84SMarkus Armbruster  'data': { 'wakeup-suspend-support': 'bool'} }
2648ac25c84SMarkus Armbruster
2658ac25c84SMarkus Armbruster##
2668ac25c84SMarkus Armbruster# @query-current-machine:
2678ac25c84SMarkus Armbruster#
2688ac25c84SMarkus Armbruster# Return information on the current virtual machine.
2698ac25c84SMarkus Armbruster#
2708ac25c84SMarkus Armbruster# Returns: CurrentMachineParams
2718ac25c84SMarkus Armbruster#
2728ac25c84SMarkus Armbruster# Since: 4.0
2738ac25c84SMarkus Armbruster##
2748ac25c84SMarkus Armbruster{ 'command': 'query-current-machine', 'returns': 'CurrentMachineParams' }
2758ac25c84SMarkus Armbruster
2768ac25c84SMarkus Armbruster##
277ffaee83bSMarkus Armbruster# @TargetInfo:
278ffaee83bSMarkus Armbruster#
279ffaee83bSMarkus Armbruster# Information describing the QEMU target.
280ffaee83bSMarkus Armbruster#
281ffaee83bSMarkus Armbruster# @arch: the target architecture
282ffaee83bSMarkus Armbruster#
2839bc6e893SMarkus Armbruster# Since: 1.2
284ffaee83bSMarkus Armbruster##
285ffaee83bSMarkus Armbruster{ 'struct': 'TargetInfo',
286ffaee83bSMarkus Armbruster  'data': { 'arch': 'SysEmuTarget' } }
287ffaee83bSMarkus Armbruster
288ffaee83bSMarkus Armbruster##
289ffaee83bSMarkus Armbruster# @query-target:
290ffaee83bSMarkus Armbruster#
291ffaee83bSMarkus Armbruster# Return information about the target for this QEMU
292ffaee83bSMarkus Armbruster#
293ffaee83bSMarkus Armbruster# Returns: TargetInfo
294ffaee83bSMarkus Armbruster#
2959bc6e893SMarkus Armbruster# Since: 1.2
296ffaee83bSMarkus Armbruster##
297ffaee83bSMarkus Armbruster{ 'command': 'query-target', 'returns': 'TargetInfo' }
298ffaee83bSMarkus Armbruster
299ffaee83bSMarkus Armbruster##
300f68c0147SPhilippe Mathieu-Daudé# @UuidInfo:
301f68c0147SPhilippe Mathieu-Daudé#
302f68c0147SPhilippe Mathieu-Daudé# Guest UUID information (Universally Unique Identifier).
303f68c0147SPhilippe Mathieu-Daudé#
304f68c0147SPhilippe Mathieu-Daudé# @UUID: the UUID of the guest
305f68c0147SPhilippe Mathieu-Daudé#
3069bc6e893SMarkus Armbruster# Since: 0.14
307f68c0147SPhilippe Mathieu-Daudé#
308a937b6aaSMarkus Armbruster# Notes: If no UUID was specified for the guest, a null UUID is
309a937b6aaSMarkus Armbruster#     returned.
310f68c0147SPhilippe Mathieu-Daudé##
311f68c0147SPhilippe Mathieu-Daudé{ 'struct': 'UuidInfo', 'data': {'UUID': 'str'} }
312f68c0147SPhilippe Mathieu-Daudé
313f68c0147SPhilippe Mathieu-Daudé##
314f68c0147SPhilippe Mathieu-Daudé# @query-uuid:
315f68c0147SPhilippe Mathieu-Daudé#
316f68c0147SPhilippe Mathieu-Daudé# Query the guest UUID information.
317f68c0147SPhilippe Mathieu-Daudé#
318f68c0147SPhilippe Mathieu-Daudé# Returns: The @UuidInfo for the guest
319f68c0147SPhilippe Mathieu-Daudé#
3209bc6e893SMarkus Armbruster# Since: 0.14
321f68c0147SPhilippe Mathieu-Daudé#
322f68c0147SPhilippe Mathieu-Daudé# Example:
323f68c0147SPhilippe Mathieu-Daudé#
324f68c0147SPhilippe Mathieu-Daudé#     -> { "execute": "query-uuid" }
325f68c0147SPhilippe Mathieu-Daudé#     <- { "return": { "UUID": "550e8400-e29b-41d4-a716-446655440000" } }
326f68c0147SPhilippe Mathieu-Daudé##
327f68c0147SPhilippe Mathieu-Daudé{ 'command': 'query-uuid', 'returns': 'UuidInfo', 'allow-preconfig': true }
328f68c0147SPhilippe Mathieu-Daudé
329f68c0147SPhilippe Mathieu-Daudé##
330db0f08dfSPhilippe Mathieu-Daudé# @GuidInfo:
331db0f08dfSPhilippe Mathieu-Daudé#
332db0f08dfSPhilippe Mathieu-Daudé# GUID information.
333db0f08dfSPhilippe Mathieu-Daudé#
334db0f08dfSPhilippe Mathieu-Daudé# @guid: the globally unique identifier
335db0f08dfSPhilippe Mathieu-Daudé#
336db0f08dfSPhilippe Mathieu-Daudé# Since: 2.9
337db0f08dfSPhilippe Mathieu-Daudé##
338db0f08dfSPhilippe Mathieu-Daudé{ 'struct': 'GuidInfo', 'data': {'guid': 'str'} }
339db0f08dfSPhilippe Mathieu-Daudé
340db0f08dfSPhilippe Mathieu-Daudé##
341db0f08dfSPhilippe Mathieu-Daudé# @query-vm-generation-id:
342db0f08dfSPhilippe Mathieu-Daudé#
343db0f08dfSPhilippe Mathieu-Daudé# Show Virtual Machine Generation ID
344db0f08dfSPhilippe Mathieu-Daudé#
345db0f08dfSPhilippe Mathieu-Daudé# Since: 2.9
346db0f08dfSPhilippe Mathieu-Daudé##
347db0f08dfSPhilippe Mathieu-Daudé{ 'command': 'query-vm-generation-id', 'returns': 'GuidInfo' }
348db0f08dfSPhilippe Mathieu-Daudé
349db0f08dfSPhilippe Mathieu-Daudé##
35090f8c0f9SPhilippe Mathieu-Daudé# @system_reset:
35190f8c0f9SPhilippe Mathieu-Daudé#
35290f8c0f9SPhilippe Mathieu-Daudé# Performs a hard reset of a guest.
35390f8c0f9SPhilippe Mathieu-Daudé#
3549bc6e893SMarkus Armbruster# Since: 0.14
35590f8c0f9SPhilippe Mathieu-Daudé#
35690f8c0f9SPhilippe Mathieu-Daudé# Example:
35790f8c0f9SPhilippe Mathieu-Daudé#
35890f8c0f9SPhilippe Mathieu-Daudé#     -> { "execute": "system_reset" }
35990f8c0f9SPhilippe Mathieu-Daudé#     <- { "return": {} }
36090f8c0f9SPhilippe Mathieu-Daudé##
36190f8c0f9SPhilippe Mathieu-Daudé{ 'command': 'system_reset' }
36290f8c0f9SPhilippe Mathieu-Daudé
36390f8c0f9SPhilippe Mathieu-Daudé##
36490f8c0f9SPhilippe Mathieu-Daudé# @system_powerdown:
36590f8c0f9SPhilippe Mathieu-Daudé#
36690f8c0f9SPhilippe Mathieu-Daudé# Requests that a guest perform a powerdown operation.
36790f8c0f9SPhilippe Mathieu-Daudé#
3689bc6e893SMarkus Armbruster# Since: 0.14
36990f8c0f9SPhilippe Mathieu-Daudé#
37090f8c0f9SPhilippe Mathieu-Daudé# Notes: A guest may or may not respond to this command.  This command
371a937b6aaSMarkus Armbruster#     returning does not indicate that a guest has accepted the
372a937b6aaSMarkus Armbruster#     request or that it has shut down.  Many guests will respond to
373a937b6aaSMarkus Armbruster#     this command by prompting the user in some way.
3744ae65a52SAndrea Bolognani#
37590f8c0f9SPhilippe Mathieu-Daudé# Example:
37690f8c0f9SPhilippe Mathieu-Daudé#
37790f8c0f9SPhilippe Mathieu-Daudé#     -> { "execute": "system_powerdown" }
37890f8c0f9SPhilippe Mathieu-Daudé#     <- { "return": {} }
37990f8c0f9SPhilippe Mathieu-Daudé##
38090f8c0f9SPhilippe Mathieu-Daudé{ 'command': 'system_powerdown' }
38190f8c0f9SPhilippe Mathieu-Daudé
38290f8c0f9SPhilippe Mathieu-Daudé##
38390f8c0f9SPhilippe Mathieu-Daudé# @system_wakeup:
38490f8c0f9SPhilippe Mathieu-Daudé#
38590f8c0f9SPhilippe Mathieu-Daudé# Wake up guest from suspend.  If the guest has wake-up from suspend
38690f8c0f9SPhilippe Mathieu-Daudé# support enabled (wakeup-suspend-support flag from
38790f8c0f9SPhilippe Mathieu-Daudé# query-current-machine), wake-up guest from suspend if the guest is
38890f8c0f9SPhilippe Mathieu-Daudé# in SUSPENDED state.  Return an error otherwise.
38990f8c0f9SPhilippe Mathieu-Daudé#
39090f8c0f9SPhilippe Mathieu-Daudé# Since: 1.1
39190f8c0f9SPhilippe Mathieu-Daudé#
39290f8c0f9SPhilippe Mathieu-Daudé# Note: prior to 4.0, this command does nothing in case the guest
39390f8c0f9SPhilippe Mathieu-Daudé#     isn't suspended.
39490f8c0f9SPhilippe Mathieu-Daudé#
39590f8c0f9SPhilippe Mathieu-Daudé# Example:
39690f8c0f9SPhilippe Mathieu-Daudé#
39790f8c0f9SPhilippe Mathieu-Daudé#     -> { "execute": "system_wakeup" }
39890f8c0f9SPhilippe Mathieu-Daudé#     <- { "return": {} }
39990f8c0f9SPhilippe Mathieu-Daudé##
40090f8c0f9SPhilippe Mathieu-Daudé{ 'command': 'system_wakeup' }
40190f8c0f9SPhilippe Mathieu-Daudé
40290f8c0f9SPhilippe Mathieu-Daudé##
4038dc007d3SPhilippe Mathieu-Daudé# @LostTickPolicy:
4048dc007d3SPhilippe Mathieu-Daudé#
405a937b6aaSMarkus Armbruster# Policy for handling lost ticks in timer devices.  Ticks end up
406a937b6aaSMarkus Armbruster# getting lost when, for example, the guest is paused.
4078dc007d3SPhilippe Mathieu-Daudé#
408a937b6aaSMarkus Armbruster# @discard: throw away the missed ticks and continue with future
409a937b6aaSMarkus Armbruster#     injection normally.  The guest OS will see the timer jump ahead
410a937b6aaSMarkus Armbruster#     by a potentially quite significant amount all at once, as if the
4118dc007d3SPhilippe Mathieu-Daudé#     intervening chunk of time had simply not existed; needless to
4128dc007d3SPhilippe Mathieu-Daudé#     say, such a sudden jump can easily confuse a guest OS which is
4138dc007d3SPhilippe Mathieu-Daudé#     not specifically prepared to deal with it.  Assuming the guest
4148dc007d3SPhilippe Mathieu-Daudé#     OS can deal correctly with the time jump, the time in the guest
4158dc007d3SPhilippe Mathieu-Daudé#     and in the host should now match.
4168dc007d3SPhilippe Mathieu-Daudé#
417a937b6aaSMarkus Armbruster# @delay: continue to deliver ticks at the normal rate.  The guest OS
418a937b6aaSMarkus Armbruster#     will not notice anything is amiss, as from its point of view
419a937b6aaSMarkus Armbruster#     time will have continued to flow normally.  The time in the
420a937b6aaSMarkus Armbruster#     guest should now be behind the time in the host by exactly the
421a937b6aaSMarkus Armbruster#     amount of time during which ticks have been missed.
4228dc007d3SPhilippe Mathieu-Daudé#
423a937b6aaSMarkus Armbruster# @slew: deliver ticks at a higher rate to catch up with the missed
424a937b6aaSMarkus Armbruster#     ticks.  The guest OS will not notice anything is amiss, as from
425a937b6aaSMarkus Armbruster#     its point of view time will have continued to flow normally.
426a937b6aaSMarkus Armbruster#     Once the timer has managed to catch up with all the missing
427a937b6aaSMarkus Armbruster#     ticks, the time in the guest and in the host should match.
4288dc007d3SPhilippe Mathieu-Daudé#
4298dc007d3SPhilippe Mathieu-Daudé# Since: 2.0
4308dc007d3SPhilippe Mathieu-Daudé##
4318dc007d3SPhilippe Mathieu-Daudé{ 'enum': 'LostTickPolicy',
4328dc007d3SPhilippe Mathieu-Daudé  'data': ['discard', 'delay', 'slew' ] }
4338dc007d3SPhilippe Mathieu-Daudé
4348dc007d3SPhilippe Mathieu-Daudé##
435df7a1f48SPhilippe Mathieu-Daudé# @inject-nmi:
436df7a1f48SPhilippe Mathieu-Daudé#
437a937b6aaSMarkus Armbruster# Injects a Non-Maskable Interrupt into the default CPU (x86/s390) or
438a937b6aaSMarkus Armbruster# all CPUs (ppc64). The command fails when the guest doesn't support
439a937b6aaSMarkus Armbruster# injecting.
440df7a1f48SPhilippe Mathieu-Daudé#
4419bc6e893SMarkus Armbruster# Since: 0.14
442df7a1f48SPhilippe Mathieu-Daudé#
443a937b6aaSMarkus Armbruster# Note: prior to 2.1, this command was only supported for x86 and s390
444a937b6aaSMarkus Armbruster#     VMs
445df7a1f48SPhilippe Mathieu-Daudé#
446df7a1f48SPhilippe Mathieu-Daudé# Example:
447df7a1f48SPhilippe Mathieu-Daudé#
448df7a1f48SPhilippe Mathieu-Daudé#     -> { "execute": "inject-nmi" }
449df7a1f48SPhilippe Mathieu-Daudé#     <- { "return": {} }
450df7a1f48SPhilippe Mathieu-Daudé##
451df7a1f48SPhilippe Mathieu-Daudé{ 'command': 'inject-nmi' }
452df7a1f48SPhilippe Mathieu-Daudé
453df7a1f48SPhilippe Mathieu-Daudé##
45481dddc1bSPhilippe Mathieu-Daudé# @KvmInfo:
45581dddc1bSPhilippe Mathieu-Daudé#
45681dddc1bSPhilippe Mathieu-Daudé# Information about support for KVM acceleration
45781dddc1bSPhilippe Mathieu-Daudé#
45881dddc1bSPhilippe Mathieu-Daudé# @enabled: true if KVM acceleration is active
45981dddc1bSPhilippe Mathieu-Daudé#
46081dddc1bSPhilippe Mathieu-Daudé# @present: true if KVM acceleration is built into this executable
46181dddc1bSPhilippe Mathieu-Daudé#
4629bc6e893SMarkus Armbruster# Since: 0.14
46381dddc1bSPhilippe Mathieu-Daudé##
46481dddc1bSPhilippe Mathieu-Daudé{ 'struct': 'KvmInfo', 'data': {'enabled': 'bool', 'present': 'bool'} }
46581dddc1bSPhilippe Mathieu-Daudé
46681dddc1bSPhilippe Mathieu-Daudé##
46781dddc1bSPhilippe Mathieu-Daudé# @query-kvm:
46881dddc1bSPhilippe Mathieu-Daudé#
46981dddc1bSPhilippe Mathieu-Daudé# Returns information about KVM acceleration
47081dddc1bSPhilippe Mathieu-Daudé#
47181dddc1bSPhilippe Mathieu-Daudé# Returns: @KvmInfo
47281dddc1bSPhilippe Mathieu-Daudé#
4739bc6e893SMarkus Armbruster# Since: 0.14
47481dddc1bSPhilippe Mathieu-Daudé#
47581dddc1bSPhilippe Mathieu-Daudé# Example:
47681dddc1bSPhilippe Mathieu-Daudé#
47781dddc1bSPhilippe Mathieu-Daudé#     -> { "execute": "query-kvm" }
47881dddc1bSPhilippe Mathieu-Daudé#     <- { "return": { "enabled": true, "present": true } }
47981dddc1bSPhilippe Mathieu-Daudé##
48081dddc1bSPhilippe Mathieu-Daudé{ 'command': 'query-kvm', 'returns': 'KvmInfo' }
48181dddc1bSPhilippe Mathieu-Daudé
48281dddc1bSPhilippe Mathieu-Daudé##
4838ac25c84SMarkus Armbruster# @NumaOptionsType:
4848ac25c84SMarkus Armbruster#
4858ac25c84SMarkus Armbruster# @node: NUMA nodes configuration
4868ac25c84SMarkus Armbruster#
4878ac25c84SMarkus Armbruster# @dist: NUMA distance configuration (since 2.10)
4888ac25c84SMarkus Armbruster#
4898ac25c84SMarkus Armbruster# @cpu: property based CPU(s) to node mapping (Since: 2.10)
4908ac25c84SMarkus Armbruster#
4919b12dfa0SLiu Jingqi# @hmat-lb: memory latency and bandwidth information (Since: 5.0)
4929b12dfa0SLiu Jingqi#
493c412a48dSLiu Jingqi# @hmat-cache: memory side cache information (Since: 5.0)
494c412a48dSLiu Jingqi#
4958ac25c84SMarkus Armbruster# Since: 2.1
4968ac25c84SMarkus Armbruster##
4978ac25c84SMarkus Armbruster{ 'enum': 'NumaOptionsType',
498c412a48dSLiu Jingqi  'data': [ 'node', 'dist', 'cpu', 'hmat-lb', 'hmat-cache' ] }
4998ac25c84SMarkus Armbruster
5008ac25c84SMarkus Armbruster##
5018ac25c84SMarkus Armbruster# @NumaOptions:
5028ac25c84SMarkus Armbruster#
5038ac25c84SMarkus Armbruster# A discriminated record of NUMA options.  (for OptsVisitor)
5048ac25c84SMarkus Armbruster#
50589a2273bSMarkus Armbruster# @type: NUMA option type
50689a2273bSMarkus Armbruster#
5078ac25c84SMarkus Armbruster# Since: 2.1
5088ac25c84SMarkus Armbruster##
5098ac25c84SMarkus Armbruster{ 'union': 'NumaOptions',
5108ac25c84SMarkus Armbruster  'base': { 'type': 'NumaOptionsType' },
5118ac25c84SMarkus Armbruster  'discriminator': 'type',
5128ac25c84SMarkus Armbruster  'data': {
5138ac25c84SMarkus Armbruster    'node': 'NumaNodeOptions',
5148ac25c84SMarkus Armbruster    'dist': 'NumaDistOptions',
5159b12dfa0SLiu Jingqi    'cpu': 'NumaCpuOptions',
516c412a48dSLiu Jingqi    'hmat-lb': 'NumaHmatLBOptions',
517c412a48dSLiu Jingqi    'hmat-cache': 'NumaHmatCacheOptions' }}
5188ac25c84SMarkus Armbruster
5198ac25c84SMarkus Armbruster##
5208ac25c84SMarkus Armbruster# @NumaNodeOptions:
5218ac25c84SMarkus Armbruster#
5228ac25c84SMarkus Armbruster# Create a guest NUMA node.  (for OptsVisitor)
5238ac25c84SMarkus Armbruster#
5248ac25c84SMarkus Armbruster# @nodeid: NUMA node ID (increase by 1 from 0 if omitted)
5258ac25c84SMarkus Armbruster#
526a937b6aaSMarkus Armbruster# @cpus: VCPUs belonging to this node (assign VCPUS round-robin if
527a937b6aaSMarkus Armbruster#     omitted)
5288ac25c84SMarkus Armbruster#
5298ac25c84SMarkus Armbruster# @mem: memory size of this node; mutually exclusive with @memdev.
530a937b6aaSMarkus Armbruster#     Equally divide total memory among nodes if both @mem and @memdev
531a937b6aaSMarkus Armbruster#     are omitted.
5328ac25c84SMarkus Armbruster#
533a937b6aaSMarkus Armbruster# @memdev: memory backend object.  If specified for one node, it must
534a937b6aaSMarkus Armbruster#     be specified for all nodes.
5358ac25c84SMarkus Armbruster#
536a937b6aaSMarkus Armbruster# @initiator: defined in ACPI 6.3 Chapter 5.2.27.3 Table 5-145, points
537a937b6aaSMarkus Armbruster#     to the nodeid which has the memory controller responsible for
538a937b6aaSMarkus Armbruster#     this NUMA node.  This field provides additional information as
539a937b6aaSMarkus Armbruster#     to the initiator node that is closest (as in directly attached)
540a937b6aaSMarkus Armbruster#     to this node, and therefore has the best performance (since 5.0)
541244b3f44STao Xu#
5428ac25c84SMarkus Armbruster# Since: 2.1
5438ac25c84SMarkus Armbruster##
5448ac25c84SMarkus Armbruster{ 'struct': 'NumaNodeOptions',
5458ac25c84SMarkus Armbruster  'data': {
5468ac25c84SMarkus Armbruster   '*nodeid': 'uint16',
5478ac25c84SMarkus Armbruster   '*cpus':   ['uint16'],
5488ac25c84SMarkus Armbruster   '*mem':    'size',
549244b3f44STao Xu   '*memdev': 'str',
550244b3f44STao Xu   '*initiator': 'uint16' }}
5518ac25c84SMarkus Armbruster
5528ac25c84SMarkus Armbruster##
5538ac25c84SMarkus Armbruster# @NumaDistOptions:
5548ac25c84SMarkus Armbruster#
5558ac25c84SMarkus Armbruster# Set the distance between 2 NUMA nodes.
5568ac25c84SMarkus Armbruster#
5578ac25c84SMarkus Armbruster# @src: source NUMA node.
5588ac25c84SMarkus Armbruster#
5598ac25c84SMarkus Armbruster# @dst: destination NUMA node.
5608ac25c84SMarkus Armbruster#
561a937b6aaSMarkus Armbruster# @val: NUMA distance from source node to destination node.  When a
562a937b6aaSMarkus Armbruster#     node is unreachable from another node, set the distance between
563a937b6aaSMarkus Armbruster#     them to 255.
5648ac25c84SMarkus Armbruster#
5658ac25c84SMarkus Armbruster# Since: 2.10
5668ac25c84SMarkus Armbruster##
5678ac25c84SMarkus Armbruster{ 'struct': 'NumaDistOptions',
5688ac25c84SMarkus Armbruster  'data': {
5698ac25c84SMarkus Armbruster   'src': 'uint16',
5708ac25c84SMarkus Armbruster   'dst': 'uint16',
5718ac25c84SMarkus Armbruster   'val': 'uint8' }}
5728ac25c84SMarkus Armbruster
5738ac25c84SMarkus Armbruster##
574aadfe320SJonathan Cameron# @CXLFixedMemoryWindowOptions:
575aadfe320SJonathan Cameron#
576aadfe320SJonathan Cameron# Create a CXL Fixed Memory Window
577aadfe320SJonathan Cameron#
578aadfe320SJonathan Cameron# @size: Size of the Fixed Memory Window in bytes.  Must be a multiple
579aadfe320SJonathan Cameron#     of 256MiB.
580a937b6aaSMarkus Armbruster#
581aadfe320SJonathan Cameron# @interleave-granularity: Number of contiguous bytes for which
582a937b6aaSMarkus Armbruster#     accesses will go to a given interleave target.  Accepted values
583a937b6aaSMarkus Armbruster#     [256, 512, 1k, 2k, 4k, 8k, 16k]
584a937b6aaSMarkus Armbruster#
585a937b6aaSMarkus Armbruster# @targets: Target root bridge IDs from -device ...,id=<ID> for each
586a937b6aaSMarkus Armbruster#     root bridge.
587aadfe320SJonathan Cameron#
5887c3def93SMarkus Armbruster# Since: 7.1
589aadfe320SJonathan Cameron##
590aadfe320SJonathan Cameron{ 'struct': 'CXLFixedMemoryWindowOptions',
591aadfe320SJonathan Cameron  'data': {
592aadfe320SJonathan Cameron      'size': 'size',
593aadfe320SJonathan Cameron      '*interleave-granularity': 'size',
594aadfe320SJonathan Cameron      'targets': ['str'] }}
595aadfe320SJonathan Cameron
596aadfe320SJonathan Cameron##
59703b39fcfSJonathan Cameron# @CXLFMWProperties:
59803b39fcfSJonathan Cameron#
59903b39fcfSJonathan Cameron# List of CXL Fixed Memory Windows.
60003b39fcfSJonathan Cameron#
60103b39fcfSJonathan Cameron# @cxl-fmw: List of CXLFixedMemoryWindowOptions
60203b39fcfSJonathan Cameron#
6037c3def93SMarkus Armbruster# Since: 7.1
60403b39fcfSJonathan Cameron##
60503b39fcfSJonathan Cameron{ 'struct' : 'CXLFMWProperties',
60603b39fcfSJonathan Cameron  'data': { 'cxl-fmw': ['CXLFixedMemoryWindowOptions'] }
60703b39fcfSJonathan Cameron}
60803b39fcfSJonathan Cameron
60903b39fcfSJonathan Cameron##
6108ac25c84SMarkus Armbruster# @X86CPURegister32:
6118ac25c84SMarkus Armbruster#
6128ac25c84SMarkus Armbruster# A X86 32-bit register
6138ac25c84SMarkus Armbruster#
6148ac25c84SMarkus Armbruster# Since: 1.5
6158ac25c84SMarkus Armbruster##
6168ac25c84SMarkus Armbruster{ 'enum': 'X86CPURegister32',
6178ac25c84SMarkus Armbruster  'data': [ 'EAX', 'EBX', 'ECX', 'EDX', 'ESP', 'EBP', 'ESI', 'EDI' ] }
6188ac25c84SMarkus Armbruster
6198ac25c84SMarkus Armbruster##
6208ac25c84SMarkus Armbruster# @X86CPUFeatureWordInfo:
6218ac25c84SMarkus Armbruster#
6228ac25c84SMarkus Armbruster# Information about a X86 CPU feature word
6238ac25c84SMarkus Armbruster#
624a937b6aaSMarkus Armbruster# @cpuid-input-eax: Input EAX value for CPUID instruction for that
625a937b6aaSMarkus Armbruster#     feature word
6268ac25c84SMarkus Armbruster#
6278ac25c84SMarkus Armbruster# @cpuid-input-ecx: Input ECX value for CPUID instruction for that
6288ac25c84SMarkus Armbruster#     feature word
6298ac25c84SMarkus Armbruster#
6308ac25c84SMarkus Armbruster# @cpuid-register: Output register containing the feature bits
6318ac25c84SMarkus Armbruster#
6328ac25c84SMarkus Armbruster# @features: value of output register, containing the feature bits
6338ac25c84SMarkus Armbruster#
6348ac25c84SMarkus Armbruster# Since: 1.5
6358ac25c84SMarkus Armbruster##
6368ac25c84SMarkus Armbruster{ 'struct': 'X86CPUFeatureWordInfo',
6378ac25c84SMarkus Armbruster  'data': { 'cpuid-input-eax': 'int',
6388ac25c84SMarkus Armbruster            '*cpuid-input-ecx': 'int',
6398ac25c84SMarkus Armbruster            'cpuid-register': 'X86CPURegister32',
6408ac25c84SMarkus Armbruster            'features': 'int' } }
6418ac25c84SMarkus Armbruster
6428ac25c84SMarkus Armbruster##
6438ac25c84SMarkus Armbruster# @DummyForceArrays:
6448ac25c84SMarkus Armbruster#
645a937b6aaSMarkus Armbruster# Not used by QMP; hack to let us use X86CPUFeatureWordInfoList
646a937b6aaSMarkus Armbruster# internally
6478ac25c84SMarkus Armbruster#
6488ac25c84SMarkus Armbruster# Since: 2.5
6498ac25c84SMarkus Armbruster##
6508ac25c84SMarkus Armbruster{ 'struct': 'DummyForceArrays',
6518ac25c84SMarkus Armbruster  'data': { 'unused': ['X86CPUFeatureWordInfo'] } }
6528ac25c84SMarkus Armbruster
6538ac25c84SMarkus Armbruster##
6548ac25c84SMarkus Armbruster# @NumaCpuOptions:
6558ac25c84SMarkus Armbruster#
656a937b6aaSMarkus Armbruster# Option "-numa cpu" overrides default cpu to node mapping.  It
657a937b6aaSMarkus Armbruster# accepts the same set of cpu properties as returned by
6588ac25c84SMarkus Armbruster# query-hotpluggable-cpus[].props, where node-id could be used to
6598ac25c84SMarkus Armbruster# override default node mapping.
6608ac25c84SMarkus Armbruster#
6618ac25c84SMarkus Armbruster# Since: 2.10
6628ac25c84SMarkus Armbruster##
6638ac25c84SMarkus Armbruster{ 'struct': 'NumaCpuOptions',
6648ac25c84SMarkus Armbruster   'base': 'CpuInstanceProperties',
6658ac25c84SMarkus Armbruster   'data' : {} }
6668ac25c84SMarkus Armbruster
6678ac25c84SMarkus Armbruster##
6689b12dfa0SLiu Jingqi# @HmatLBMemoryHierarchy:
6699b12dfa0SLiu Jingqi#
6709b12dfa0SLiu Jingqi# The memory hierarchy in the System Locality Latency and Bandwidth
6719b12dfa0SLiu Jingqi# Information Structure of HMAT (Heterogeneous Memory Attribute Table)
6729b12dfa0SLiu Jingqi#
6739b12dfa0SLiu Jingqi# For more information about @HmatLBMemoryHierarchy, see chapter
6749b12dfa0SLiu Jingqi# 5.2.27.4: Table 5-146: Field "Flags" of ACPI 6.3 spec.
6759b12dfa0SLiu Jingqi#
6769b12dfa0SLiu Jingqi# @memory: the structure represents the memory performance
6779b12dfa0SLiu Jingqi#
6789b12dfa0SLiu Jingqi# @first-level: first level of memory side cache
6799b12dfa0SLiu Jingqi#
6809b12dfa0SLiu Jingqi# @second-level: second level of memory side cache
6819b12dfa0SLiu Jingqi#
6829b12dfa0SLiu Jingqi# @third-level: third level of memory side cache
6839b12dfa0SLiu Jingqi#
6849b12dfa0SLiu Jingqi# Since: 5.0
6859b12dfa0SLiu Jingqi##
6869b12dfa0SLiu Jingqi{ 'enum': 'HmatLBMemoryHierarchy',
6879b12dfa0SLiu Jingqi  'data': [ 'memory', 'first-level', 'second-level', 'third-level' ] }
6889b12dfa0SLiu Jingqi
6899b12dfa0SLiu Jingqi##
6909b12dfa0SLiu Jingqi# @HmatLBDataType:
6919b12dfa0SLiu Jingqi#
692a937b6aaSMarkus Armbruster# Data type in the System Locality Latency and Bandwidth Information
693a937b6aaSMarkus Armbruster# Structure of HMAT (Heterogeneous Memory Attribute Table)
6949b12dfa0SLiu Jingqi#
695a937b6aaSMarkus Armbruster# For more information about @HmatLBDataType, see chapter 5.2.27.4:
696a937b6aaSMarkus Armbruster# Table 5-146:  Field "Data Type" of ACPI 6.3 spec.
6979b12dfa0SLiu Jingqi#
6989b12dfa0SLiu Jingqi# @access-latency: access latency (nanoseconds)
6999b12dfa0SLiu Jingqi#
7009b12dfa0SLiu Jingqi# @read-latency: read latency (nanoseconds)
7019b12dfa0SLiu Jingqi#
7029b12dfa0SLiu Jingqi# @write-latency: write latency (nanoseconds)
7039b12dfa0SLiu Jingqi#
7049b12dfa0SLiu Jingqi# @access-bandwidth: access bandwidth (Bytes per second)
7059b12dfa0SLiu Jingqi#
7069b12dfa0SLiu Jingqi# @read-bandwidth: read bandwidth (Bytes per second)
7079b12dfa0SLiu Jingqi#
7089b12dfa0SLiu Jingqi# @write-bandwidth: write bandwidth (Bytes per second)
7099b12dfa0SLiu Jingqi#
7109b12dfa0SLiu Jingqi# Since: 5.0
7119b12dfa0SLiu Jingqi##
7129b12dfa0SLiu Jingqi{ 'enum': 'HmatLBDataType',
7139b12dfa0SLiu Jingqi  'data': [ 'access-latency', 'read-latency', 'write-latency',
7149b12dfa0SLiu Jingqi            'access-bandwidth', 'read-bandwidth', 'write-bandwidth' ] }
7159b12dfa0SLiu Jingqi
7169b12dfa0SLiu Jingqi##
7179b12dfa0SLiu Jingqi# @NumaHmatLBOptions:
7189b12dfa0SLiu Jingqi#
719a937b6aaSMarkus Armbruster# Set the system locality latency and bandwidth information between
720a937b6aaSMarkus Armbruster# Initiator and Target proximity Domains.
7219b12dfa0SLiu Jingqi#
722a937b6aaSMarkus Armbruster# For more information about @NumaHmatLBOptions, see chapter 5.2.27.4:
723a937b6aaSMarkus Armbruster# Table 5-146 of ACPI 6.3 spec.
7249b12dfa0SLiu Jingqi#
7259b12dfa0SLiu Jingqi# @initiator: the Initiator Proximity Domain.
7269b12dfa0SLiu Jingqi#
7279b12dfa0SLiu Jingqi# @target: the Target Proximity Domain.
7289b12dfa0SLiu Jingqi#
729a937b6aaSMarkus Armbruster# @hierarchy: the Memory Hierarchy.  Indicates the performance of
730a937b6aaSMarkus Armbruster#     memory or side cache.
7319b12dfa0SLiu Jingqi#
732a937b6aaSMarkus Armbruster# @data-type: presents the type of data, access/read/write latency or
733a937b6aaSMarkus Armbruster#     hit latency.
7349b12dfa0SLiu Jingqi#
735a937b6aaSMarkus Armbruster# @latency: the value of latency from @initiator to @target proximity
736a937b6aaSMarkus Armbruster#     domain, the latency unit is "ns(nanosecond)".
7379b12dfa0SLiu Jingqi#
7389b12dfa0SLiu Jingqi# @bandwidth: the value of bandwidth between @initiator and @target
739a937b6aaSMarkus Armbruster#     proximity domain, the bandwidth unit is "Bytes per second".
7409b12dfa0SLiu Jingqi#
7419b12dfa0SLiu Jingqi# Since: 5.0
7429b12dfa0SLiu Jingqi##
7439b12dfa0SLiu Jingqi{ 'struct': 'NumaHmatLBOptions',
7449b12dfa0SLiu Jingqi    'data': {
7459b12dfa0SLiu Jingqi    'initiator': 'uint16',
7469b12dfa0SLiu Jingqi    'target': 'uint16',
7479b12dfa0SLiu Jingqi    'hierarchy': 'HmatLBMemoryHierarchy',
7489b12dfa0SLiu Jingqi    'data-type': 'HmatLBDataType',
7499b12dfa0SLiu Jingqi    '*latency': 'uint64',
7509b12dfa0SLiu Jingqi    '*bandwidth': 'size' }}
7519b12dfa0SLiu Jingqi
7529b12dfa0SLiu Jingqi##
753c412a48dSLiu Jingqi# @HmatCacheAssociativity:
754c412a48dSLiu Jingqi#
755c412a48dSLiu Jingqi# Cache associativity in the Memory Side Cache Information Structure
756c412a48dSLiu Jingqi# of HMAT
757c412a48dSLiu Jingqi#
758c412a48dSLiu Jingqi# For more information of @HmatCacheAssociativity, see chapter
759c412a48dSLiu Jingqi# 5.2.27.5: Table 5-147 of ACPI 6.3 spec.
760c412a48dSLiu Jingqi#
761a937b6aaSMarkus Armbruster# @none: None (no memory side cache in this proximity domain, or cache
762a937b6aaSMarkus Armbruster#     associativity unknown)
763c412a48dSLiu Jingqi#
764c412a48dSLiu Jingqi# @direct: Direct Mapped
765c412a48dSLiu Jingqi#
766c412a48dSLiu Jingqi# @complex: Complex Cache Indexing (implementation specific)
767c412a48dSLiu Jingqi#
768c412a48dSLiu Jingqi# Since: 5.0
769c412a48dSLiu Jingqi##
770c412a48dSLiu Jingqi{ 'enum': 'HmatCacheAssociativity',
771c412a48dSLiu Jingqi  'data': [ 'none', 'direct', 'complex' ] }
772c412a48dSLiu Jingqi
773c412a48dSLiu Jingqi##
774c412a48dSLiu Jingqi# @HmatCacheWritePolicy:
775c412a48dSLiu Jingqi#
776a937b6aaSMarkus Armbruster# Cache write policy in the Memory Side Cache Information Structure of
777a937b6aaSMarkus Armbruster# HMAT
778c412a48dSLiu Jingqi#
779a937b6aaSMarkus Armbruster# For more information of @HmatCacheWritePolicy, see chapter 5.2.27.5:
780a937b6aaSMarkus Armbruster# Table 5-147: Field "Cache Attributes" of ACPI 6.3 spec.
781c412a48dSLiu Jingqi#
782a937b6aaSMarkus Armbruster# @none: None (no memory side cache in this proximity domain, or cache
783a937b6aaSMarkus Armbruster#     write policy unknown)
784c412a48dSLiu Jingqi#
785c412a48dSLiu Jingqi# @write-back: Write Back (WB)
786c412a48dSLiu Jingqi#
787c412a48dSLiu Jingqi# @write-through: Write Through (WT)
788c412a48dSLiu Jingqi#
789c412a48dSLiu Jingqi# Since: 5.0
790c412a48dSLiu Jingqi##
791c412a48dSLiu Jingqi{ 'enum': 'HmatCacheWritePolicy',
792c412a48dSLiu Jingqi  'data': [ 'none', 'write-back', 'write-through' ] }
793c412a48dSLiu Jingqi
794c412a48dSLiu Jingqi##
795c412a48dSLiu Jingqi# @NumaHmatCacheOptions:
796c412a48dSLiu Jingqi#
797c412a48dSLiu Jingqi# Set the memory side cache information for a given memory domain.
798c412a48dSLiu Jingqi#
799a937b6aaSMarkus Armbruster# For more information of @NumaHmatCacheOptions, see chapter 5.2.27.5:
800a937b6aaSMarkus Armbruster# Table 5-147: Field "Cache Attributes" of ACPI 6.3 spec.
801c412a48dSLiu Jingqi#
802c412a48dSLiu Jingqi# @node-id: the memory proximity domain to which the memory belongs.
803c412a48dSLiu Jingqi#
804c412a48dSLiu Jingqi# @size: the size of memory side cache in bytes.
805c412a48dSLiu Jingqi#
806c412a48dSLiu Jingqi# @level: the cache level described in this structure.
807c412a48dSLiu Jingqi#
808c412a48dSLiu Jingqi# @associativity: the cache associativity,
809c412a48dSLiu Jingqi#     none/direct-mapped/complex(complex cache indexing).
810c412a48dSLiu Jingqi#
811c412a48dSLiu Jingqi# @policy: the write policy, none/write-back/write-through.
812c412a48dSLiu Jingqi#
813c412a48dSLiu Jingqi# @line: the cache Line size in bytes.
814c412a48dSLiu Jingqi#
815c412a48dSLiu Jingqi# Since: 5.0
816c412a48dSLiu Jingqi##
817c412a48dSLiu Jingqi{ 'struct': 'NumaHmatCacheOptions',
818c412a48dSLiu Jingqi  'data': {
819c412a48dSLiu Jingqi   'node-id': 'uint32',
820c412a48dSLiu Jingqi   'size': 'size',
821c412a48dSLiu Jingqi   'level': 'uint8',
822c412a48dSLiu Jingqi   'associativity': 'HmatCacheAssociativity',
823c412a48dSLiu Jingqi   'policy': 'HmatCacheWritePolicy',
824c412a48dSLiu Jingqi   'line': 'uint16' }}
825c412a48dSLiu Jingqi
826c412a48dSLiu Jingqi##
827d4130cbfSPhilippe Mathieu-Daudé# @memsave:
828d4130cbfSPhilippe Mathieu-Daudé#
829d4130cbfSPhilippe Mathieu-Daudé# Save a portion of guest memory to a file.
830d4130cbfSPhilippe Mathieu-Daudé#
831d4130cbfSPhilippe Mathieu-Daudé# @val: the virtual address of the guest to start from
832d4130cbfSPhilippe Mathieu-Daudé#
833d4130cbfSPhilippe Mathieu-Daudé# @size: the size of memory region to save
834d4130cbfSPhilippe Mathieu-Daudé#
835d4130cbfSPhilippe Mathieu-Daudé# @filename: the file to save the memory to as binary data
836d4130cbfSPhilippe Mathieu-Daudé#
837d4130cbfSPhilippe Mathieu-Daudé# @cpu-index: the index of the virtual CPU to use for translating the
838d4130cbfSPhilippe Mathieu-Daudé#     virtual address (defaults to CPU 0)
839d4130cbfSPhilippe Mathieu-Daudé#
8409bc6e893SMarkus Armbruster# Since: 0.14
841d4130cbfSPhilippe Mathieu-Daudé#
842d4130cbfSPhilippe Mathieu-Daudé# Notes: Errors were not reliably returned until 1.1
843d4130cbfSPhilippe Mathieu-Daudé#
844d4130cbfSPhilippe Mathieu-Daudé# Example:
845d4130cbfSPhilippe Mathieu-Daudé#
846d4130cbfSPhilippe Mathieu-Daudé#     -> { "execute": "memsave",
847d4130cbfSPhilippe Mathieu-Daudé#          "arguments": { "val": 10,
848d4130cbfSPhilippe Mathieu-Daudé#                         "size": 100,
849d4130cbfSPhilippe Mathieu-Daudé#                         "filename": "/tmp/virtual-mem-dump" } }
850d4130cbfSPhilippe Mathieu-Daudé#     <- { "return": {} }
851d4130cbfSPhilippe Mathieu-Daudé##
852d4130cbfSPhilippe Mathieu-Daudé{ 'command': 'memsave',
853d4130cbfSPhilippe Mathieu-Daudé  'data': {'val': 'int', 'size': 'int', 'filename': 'str', '*cpu-index': 'int'} }
854d4130cbfSPhilippe Mathieu-Daudé
855d4130cbfSPhilippe Mathieu-Daudé##
856d4130cbfSPhilippe Mathieu-Daudé# @pmemsave:
857d4130cbfSPhilippe Mathieu-Daudé#
858d4130cbfSPhilippe Mathieu-Daudé# Save a portion of guest physical memory to a file.
859d4130cbfSPhilippe Mathieu-Daudé#
860d4130cbfSPhilippe Mathieu-Daudé# @val: the physical address of the guest to start from
861d4130cbfSPhilippe Mathieu-Daudé#
862d4130cbfSPhilippe Mathieu-Daudé# @size: the size of memory region to save
863d4130cbfSPhilippe Mathieu-Daudé#
864d4130cbfSPhilippe Mathieu-Daudé# @filename: the file to save the memory to as binary data
865d4130cbfSPhilippe Mathieu-Daudé#
8669bc6e893SMarkus Armbruster# Since: 0.14
867d4130cbfSPhilippe Mathieu-Daudé#
868d4130cbfSPhilippe Mathieu-Daudé# Notes: Errors were not reliably returned until 1.1
869d4130cbfSPhilippe Mathieu-Daudé#
870d4130cbfSPhilippe Mathieu-Daudé# Example:
871d4130cbfSPhilippe Mathieu-Daudé#
872d4130cbfSPhilippe Mathieu-Daudé#     -> { "execute": "pmemsave",
873d4130cbfSPhilippe Mathieu-Daudé#          "arguments": { "val": 10,
874d4130cbfSPhilippe Mathieu-Daudé#                         "size": 100,
875d4130cbfSPhilippe Mathieu-Daudé#                         "filename": "/tmp/physical-mem-dump" } }
876d4130cbfSPhilippe Mathieu-Daudé#     <- { "return": {} }
877d4130cbfSPhilippe Mathieu-Daudé##
878d4130cbfSPhilippe Mathieu-Daudé{ 'command': 'pmemsave',
879d4130cbfSPhilippe Mathieu-Daudé  'data': {'val': 'int', 'size': 'int', 'filename': 'str'} }
880d4130cbfSPhilippe Mathieu-Daudé
881d4130cbfSPhilippe Mathieu-Daudé##
8828ac25c84SMarkus Armbruster# @Memdev:
8838ac25c84SMarkus Armbruster#
8848ac25c84SMarkus Armbruster# Information about memory backend
8858ac25c84SMarkus Armbruster#
8868ac25c84SMarkus Armbruster# @id: backend's ID if backend has 'id' property (since 2.9)
8878ac25c84SMarkus Armbruster#
8888ac25c84SMarkus Armbruster# @size: memory backend size
8898ac25c84SMarkus Armbruster#
890157cfaf9SDavid Hildenbrand# @merge: whether memory merge support is enabled
8918ac25c84SMarkus Armbruster#
892157cfaf9SDavid Hildenbrand# @dump: whether memory backend's memory is included in a core dump
8938ac25c84SMarkus Armbruster#
894157cfaf9SDavid Hildenbrand# @prealloc: whether memory was preallocated
8958ac25c84SMarkus Armbruster#
896d300fc54SDavid Hildenbrand# @share: whether memory is private to QEMU or shared (since 6.1)
897d300fc54SDavid Hildenbrand#
898a937b6aaSMarkus Armbruster# @reserve: whether swap space (or huge pages) was reserved if
899a937b6aaSMarkus Armbruster#     applicable.  This corresponds to the user configuration and not
900a937b6aaSMarkus Armbruster#     the actual behavior implemented in the OS to perform the
901a937b6aaSMarkus Armbruster#     reservation.  For example, Linux will never reserve swap space
902a937b6aaSMarkus Armbruster#     for shared file mappings.  (since 6.1)
90369647f9dSDavid Hildenbrand#
9048ac25c84SMarkus Armbruster# @host-nodes: host nodes for its memory policy
9058ac25c84SMarkus Armbruster#
9068ac25c84SMarkus Armbruster# @policy: memory policy of memory backend
9078ac25c84SMarkus Armbruster#
9088ac25c84SMarkus Armbruster# Since: 2.1
9098ac25c84SMarkus Armbruster##
9108ac25c84SMarkus Armbruster{ 'struct': 'Memdev',
9118ac25c84SMarkus Armbruster  'data': {
9128ac25c84SMarkus Armbruster    '*id':        'str',
9138ac25c84SMarkus Armbruster    'size':       'size',
9148ac25c84SMarkus Armbruster    'merge':      'bool',
9158ac25c84SMarkus Armbruster    'dump':       'bool',
9168ac25c84SMarkus Armbruster    'prealloc':   'bool',
917d300fc54SDavid Hildenbrand    'share':      'bool',
91869647f9dSDavid Hildenbrand    '*reserve':    'bool',
9198ac25c84SMarkus Armbruster    'host-nodes': ['uint16'],
9208ac25c84SMarkus Armbruster    'policy':     'HostMemPolicy' }}
9218ac25c84SMarkus Armbruster
9228ac25c84SMarkus Armbruster##
9238ac25c84SMarkus Armbruster# @query-memdev:
9248ac25c84SMarkus Armbruster#
9258ac25c84SMarkus Armbruster# Returns information for all memory backends.
9268ac25c84SMarkus Armbruster#
9278ac25c84SMarkus Armbruster# Returns: a list of @Memdev.
9288ac25c84SMarkus Armbruster#
9298ac25c84SMarkus Armbruster# Since: 2.1
9308ac25c84SMarkus Armbruster#
9318ac25c84SMarkus Armbruster# Example:
9328ac25c84SMarkus Armbruster#
9338ac25c84SMarkus Armbruster#     -> { "execute": "query-memdev" }
9348ac25c84SMarkus Armbruster#     <- { "return": [
9358ac25c84SMarkus Armbruster#            {
9368ac25c84SMarkus Armbruster#              "id": "mem1",
9378ac25c84SMarkus Armbruster#              "size": 536870912,
9388ac25c84SMarkus Armbruster#              "merge": false,
9398ac25c84SMarkus Armbruster#              "dump": true,
9408ac25c84SMarkus Armbruster#              "prealloc": false,
9417c90031dSVictor Toso#              "share": false,
9428ac25c84SMarkus Armbruster#              "host-nodes": [0, 1],
9438ac25c84SMarkus Armbruster#              "policy": "bind"
9448ac25c84SMarkus Armbruster#            },
9458ac25c84SMarkus Armbruster#            {
9468ac25c84SMarkus Armbruster#              "size": 536870912,
9478ac25c84SMarkus Armbruster#              "merge": false,
9488ac25c84SMarkus Armbruster#              "dump": true,
9498ac25c84SMarkus Armbruster#              "prealloc": true,
9507c90031dSVictor Toso#              "share": false,
9518ac25c84SMarkus Armbruster#              "host-nodes": [2, 3],
9528ac25c84SMarkus Armbruster#              "policy": "preferred"
9538ac25c84SMarkus Armbruster#            }
9548ac25c84SMarkus Armbruster#          ]
9558ac25c84SMarkus Armbruster#        }
9568ac25c84SMarkus Armbruster##
9578ac25c84SMarkus Armbruster{ 'command': 'query-memdev', 'returns': ['Memdev'], 'allow-preconfig': true }
9588ac25c84SMarkus Armbruster
9598ac25c84SMarkus Armbruster##
9608ac25c84SMarkus Armbruster# @CpuInstanceProperties:
9618ac25c84SMarkus Armbruster#
962a937b6aaSMarkus Armbruster# List of properties to be used for hotplugging a CPU instance, it
963a937b6aaSMarkus Armbruster# should be passed by management with device_add command when a CPU is
964a937b6aaSMarkus Armbruster# being hotplugged.
9658ac25c84SMarkus Armbruster#
9663da4aef8SNina Schoetterl-Glausch# Which members are optional and which mandatory depends on the
9673da4aef8SNina Schoetterl-Glausch# architecture and board.
9683da4aef8SNina Schoetterl-Glausch#
9690d177cddSPierre Morel# For s390x see :ref:`cpu-topology-s390x`.
9700d177cddSPierre Morel#
9713da4aef8SNina Schoetterl-Glausch# The ids other than the node-id specify the position of the CPU
9723da4aef8SNina Schoetterl-Glausch# within the CPU topology (as defined by the machine property "smp",
9733da4aef8SNina Schoetterl-Glausch# thus see also type @SMPConfiguration)
9743da4aef8SNina Schoetterl-Glausch#
9758ac25c84SMarkus Armbruster# @node-id: NUMA node ID the CPU belongs to
976a937b6aaSMarkus Armbruster#
9775de1aff2SPierre Morel# @drawer-id: drawer number within CPU topology the CPU belongs to
9785de1aff2SPierre Morel#     (since 8.2)
9795de1aff2SPierre Morel#
9805de1aff2SPierre Morel# @book-id: book number within parent container the CPU belongs to
9815de1aff2SPierre Morel#     (since 8.2)
9825de1aff2SPierre Morel#
9835de1aff2SPierre Morel# @socket-id: socket number within parent container the CPU belongs to
984a937b6aaSMarkus Armbruster#
9853da4aef8SNina Schoetterl-Glausch# @die-id: die number within the parent container the CPU belongs to
9863da4aef8SNina Schoetterl-Glausch#     (since 4.1)
987a937b6aaSMarkus Armbruster#
9883da4aef8SNina Schoetterl-Glausch# @cluster-id: cluster number within the parent container the CPU
9893da4aef8SNina Schoetterl-Glausch#     belongs to (since 7.1)
990a937b6aaSMarkus Armbruster#
991989bb312SZhao Liu# @module-id: module number within the parent container the CPU belongs
992989bb312SZhao Liu#     to (since 9.1)
993989bb312SZhao Liu#
994209e64d9SMarkus Armbruster# @core-id: core number within the parent container the CPU belongs to
995a937b6aaSMarkus Armbruster#
9963da4aef8SNina Schoetterl-Glausch# @thread-id: thread number within the core the CPU  belongs to
9978ac25c84SMarkus Armbruster#
9983da4aef8SNina Schoetterl-Glausch# Note: management should be prepared to pass through additional
9993da4aef8SNina Schoetterl-Glausch#     properties with device_add.
10008ac25c84SMarkus Armbruster#
10018ac25c84SMarkus Armbruster# Since: 2.7
10028ac25c84SMarkus Armbruster##
10038ac25c84SMarkus Armbruster{ 'struct': 'CpuInstanceProperties',
10043da4aef8SNina Schoetterl-Glausch  # Keep these in sync with the properties device_add accepts
10058ac25c84SMarkus Armbruster  'data': { '*node-id': 'int',
10065de1aff2SPierre Morel            '*drawer-id': 'int',
10075de1aff2SPierre Morel            '*book-id': 'int',
10088ac25c84SMarkus Armbruster            '*socket-id': 'int',
1009176d2cdaSLike Xu            '*die-id': 'int',
10101dcf7001SGavin Shan            '*cluster-id': 'int',
1011989bb312SZhao Liu            '*module-id': 'int',
10128ac25c84SMarkus Armbruster            '*core-id': 'int',
10138ac25c84SMarkus Armbruster            '*thread-id': 'int'
10148ac25c84SMarkus Armbruster  }
10158ac25c84SMarkus Armbruster}
10168ac25c84SMarkus Armbruster
10178ac25c84SMarkus Armbruster##
10188ac25c84SMarkus Armbruster# @HotpluggableCPU:
10198ac25c84SMarkus Armbruster#
10208ac25c84SMarkus Armbruster# @type: CPU object type for usage with device_add command
1021a937b6aaSMarkus Armbruster#
10228ac25c84SMarkus Armbruster# @props: list of properties to be used for hotplugging CPU
1023a937b6aaSMarkus Armbruster#
1024a937b6aaSMarkus Armbruster# @vcpus-count: number of logical VCPU threads @HotpluggableCPU
1025a937b6aaSMarkus Armbruster#     provides
1026a937b6aaSMarkus Armbruster#
1027a937b6aaSMarkus Armbruster# @qom-path: link to existing CPU object if CPU is present or omitted
1028a937b6aaSMarkus Armbruster#     if CPU is not present.
10298ac25c84SMarkus Armbruster#
10308ac25c84SMarkus Armbruster# Since: 2.7
10318ac25c84SMarkus Armbruster##
10328ac25c84SMarkus Armbruster{ 'struct': 'HotpluggableCPU',
10338ac25c84SMarkus Armbruster  'data': { 'type': 'str',
10348ac25c84SMarkus Armbruster            'vcpus-count': 'int',
10358ac25c84SMarkus Armbruster            'props': 'CpuInstanceProperties',
10368ac25c84SMarkus Armbruster            '*qom-path': 'str'
10378ac25c84SMarkus Armbruster          }
10388ac25c84SMarkus Armbruster}
10398ac25c84SMarkus Armbruster
10408ac25c84SMarkus Armbruster##
10418ac25c84SMarkus Armbruster# @query-hotpluggable-cpus:
10428ac25c84SMarkus Armbruster#
10438ac25c84SMarkus Armbruster# TODO: Better documentation; currently there is none.
10448ac25c84SMarkus Armbruster#
10458ac25c84SMarkus Armbruster# Returns: a list of HotpluggableCPU objects.
10468ac25c84SMarkus Armbruster#
10478ac25c84SMarkus Armbruster# Since: 2.7
10488ac25c84SMarkus Armbruster#
104937fa48a4SMarkus Armbruster# Examples:
10508ac25c84SMarkus Armbruster#
1051209e64d9SMarkus Armbruster#     For pseries machine type started with -smp 2,cores=2,maxcpus=4
1052209e64d9SMarkus Armbruster#     -cpu POWER8:
10538ac25c84SMarkus Armbruster#
10548ac25c84SMarkus Armbruster#     -> { "execute": "query-hotpluggable-cpus" }
10558ac25c84SMarkus Armbruster#     <- {"return": [
1056b4c32cbfSVictor Toso#          { "props": { "core-id": 8 }, "type": "POWER8-spapr-cpu-core",
10578ac25c84SMarkus Armbruster#            "vcpus-count": 1 },
1058b4c32cbfSVictor Toso#          { "props": { "core-id": 0 }, "type": "POWER8-spapr-cpu-core",
10598ac25c84SMarkus Armbruster#            "vcpus-count": 1, "qom-path": "/machine/unattached/device[0]"}
10608ac25c84SMarkus Armbruster#        ]}'
10618ac25c84SMarkus Armbruster#
10628ac25c84SMarkus Armbruster#     For pc machine type started with -smp 1,maxcpus=2:
10638ac25c84SMarkus Armbruster#
10648ac25c84SMarkus Armbruster#     -> { "execute": "query-hotpluggable-cpus" }
10658ac25c84SMarkus Armbruster#     <- {"return": [
10668ac25c84SMarkus Armbruster#          {
10678ac25c84SMarkus Armbruster#             "type": "qemu64-x86_64-cpu", "vcpus-count": 1,
10688ac25c84SMarkus Armbruster#             "props": {"core-id": 0, "socket-id": 1, "thread-id": 0}
10698ac25c84SMarkus Armbruster#          },
10708ac25c84SMarkus Armbruster#          {
10718ac25c84SMarkus Armbruster#             "qom-path": "/machine/unattached/device[0]",
10728ac25c84SMarkus Armbruster#             "type": "qemu64-x86_64-cpu", "vcpus-count": 1,
10738ac25c84SMarkus Armbruster#             "props": {"core-id": 0, "socket-id": 0, "thread-id": 0}
10748ac25c84SMarkus Armbruster#          }
10758ac25c84SMarkus Armbruster#        ]}
10768ac25c84SMarkus Armbruster#
1077209e64d9SMarkus Armbruster#     For s390x-virtio-ccw machine type started with -smp 1,maxcpus=2
1078209e64d9SMarkus Armbruster#     -cpu qemu (Since: 2.11):
10798ac25c84SMarkus Armbruster#
10808ac25c84SMarkus Armbruster#     -> { "execute": "query-hotpluggable-cpus" }
10818ac25c84SMarkus Armbruster#     <- {"return": [
10828ac25c84SMarkus Armbruster#          {
10838ac25c84SMarkus Armbruster#             "type": "qemu-s390x-cpu", "vcpus-count": 1,
10848ac25c84SMarkus Armbruster#             "props": { "core-id": 1 }
10858ac25c84SMarkus Armbruster#          },
10868ac25c84SMarkus Armbruster#          {
10878ac25c84SMarkus Armbruster#             "qom-path": "/machine/unattached/device[0]",
10888ac25c84SMarkus Armbruster#             "type": "qemu-s390x-cpu", "vcpus-count": 1,
10898ac25c84SMarkus Armbruster#             "props": { "core-id": 0 }
10908ac25c84SMarkus Armbruster#          }
10918ac25c84SMarkus Armbruster#        ]}
10928ac25c84SMarkus Armbruster##
10938ac25c84SMarkus Armbruster{ 'command': 'query-hotpluggable-cpus', 'returns': ['HotpluggableCPU'],
10948ac25c84SMarkus Armbruster             'allow-preconfig': true }
10958ac25c84SMarkus Armbruster
10968ac25c84SMarkus Armbruster##
10978ac25c84SMarkus Armbruster# @set-numa-node:
10988ac25c84SMarkus Armbruster#
1099a937b6aaSMarkus Armbruster# Runtime equivalent of '-numa' CLI option, available at preconfigure
1100a937b6aaSMarkus Armbruster# stage to configure numa mapping before initializing machine.
11018ac25c84SMarkus Armbruster#
1102433a4fdcSMarkus Armbruster# Since: 3.0
11038ac25c84SMarkus Armbruster##
11048ac25c84SMarkus Armbruster{ 'command': 'set-numa-node', 'boxed': true,
11058ac25c84SMarkus Armbruster  'data': 'NumaOptions',
11068ac25c84SMarkus Armbruster  'allow-preconfig': true
11078ac25c84SMarkus Armbruster}
1108a83e24baSPhilippe Mathieu-Daudé
1109a83e24baSPhilippe Mathieu-Daudé##
1110a83e24baSPhilippe Mathieu-Daudé# @balloon:
1111a83e24baSPhilippe Mathieu-Daudé#
1112a83e24baSPhilippe Mathieu-Daudé# Request the balloon driver to change its balloon size.
1113a83e24baSPhilippe Mathieu-Daudé#
1114a937b6aaSMarkus Armbruster# @value: the target logical size of the VM in bytes.  We can deduce
1115a937b6aaSMarkus Armbruster#     the size of the balloon using this formula:
1116826bd069SPeter Maydell#
1117a83e24baSPhilippe Mathieu-Daudé#        logical_vm_size = vm_ram_size - balloon_size
1118826bd069SPeter Maydell#
1119a83e24baSPhilippe Mathieu-Daudé#     From it we have: balloon_size = vm_ram_size - @value
1120a83e24baSPhilippe Mathieu-Daudé#
11212746f060SMarkus Armbruster# Errors:
1122e6ab40feSMarkus Armbruster#     - If the balloon driver is enabled but not functional because
1123e6ab40feSMarkus Armbruster#       the KVM kernel module cannot support it, KVMMissingCap
1124a83e24baSPhilippe Mathieu-Daudé#     - If no balloon device is present, DeviceNotActive
1125a83e24baSPhilippe Mathieu-Daudé#
1126a937b6aaSMarkus Armbruster# Notes: This command just issues a request to the guest.  When it
1127a937b6aaSMarkus Armbruster#     returns, the balloon size may not have changed.  A guest can
1128a937b6aaSMarkus Armbruster#     change the balloon size independent of this command.
1129a83e24baSPhilippe Mathieu-Daudé#
11309bc6e893SMarkus Armbruster# Since: 0.14
1131a83e24baSPhilippe Mathieu-Daudé#
1132a83e24baSPhilippe Mathieu-Daudé# Example:
1133a83e24baSPhilippe Mathieu-Daudé#
1134a83e24baSPhilippe Mathieu-Daudé#     -> { "execute": "balloon", "arguments": { "value": 536870912 } }
1135a83e24baSPhilippe Mathieu-Daudé#     <- { "return": {} }
1136a83e24baSPhilippe Mathieu-Daudé#
1137a83e24baSPhilippe Mathieu-Daudé#     With a 2.5GiB guest this command inflated the ballon to 3GiB.
1138a83e24baSPhilippe Mathieu-Daudé##
1139a83e24baSPhilippe Mathieu-Daudé{ 'command': 'balloon', 'data': {'value': 'int'} }
1140a83e24baSPhilippe Mathieu-Daudé
1141a83e24baSPhilippe Mathieu-Daudé##
1142a83e24baSPhilippe Mathieu-Daudé# @BalloonInfo:
1143a83e24baSPhilippe Mathieu-Daudé#
1144a83e24baSPhilippe Mathieu-Daudé# Information about the guest balloon device.
1145a83e24baSPhilippe Mathieu-Daudé#
1146a937b6aaSMarkus Armbruster# @actual: the logical size of the VM in bytes Formula used:
1147a937b6aaSMarkus Armbruster#     logical_vm_size = vm_ram_size - balloon_size
1148a83e24baSPhilippe Mathieu-Daudé#
11499bc6e893SMarkus Armbruster# Since: 0.14
1150a83e24baSPhilippe Mathieu-Daudé##
1151a83e24baSPhilippe Mathieu-Daudé{ 'struct': 'BalloonInfo', 'data': {'actual': 'int' } }
1152a83e24baSPhilippe Mathieu-Daudé
1153a83e24baSPhilippe Mathieu-Daudé##
1154a83e24baSPhilippe Mathieu-Daudé# @query-balloon:
1155a83e24baSPhilippe Mathieu-Daudé#
1156a83e24baSPhilippe Mathieu-Daudé# Return information about the balloon device.
1157a83e24baSPhilippe Mathieu-Daudé#
1158a937b6aaSMarkus Armbruster# Returns:
1159e2c1dcbcSMarkus Armbruster#     @BalloonInfo
11602746f060SMarkus Armbruster#
11612746f060SMarkus Armbruster# Errors:
1162e6ab40feSMarkus Armbruster#     - If the balloon driver is enabled but not functional because
1163e6ab40feSMarkus Armbruster#       the KVM kernel module cannot support it, KVMMissingCap
1164a83e24baSPhilippe Mathieu-Daudé#     - If no balloon device is present, DeviceNotActive
1165a83e24baSPhilippe Mathieu-Daudé#
11669bc6e893SMarkus Armbruster# Since: 0.14
1167a83e24baSPhilippe Mathieu-Daudé#
1168a83e24baSPhilippe Mathieu-Daudé# Example:
1169a83e24baSPhilippe Mathieu-Daudé#
1170a83e24baSPhilippe Mathieu-Daudé#     -> { "execute": "query-balloon" }
1171a83e24baSPhilippe Mathieu-Daudé#     <- { "return": {
11725d07159dSVictor Toso#              "actual": 1073741824
1173a83e24baSPhilippe Mathieu-Daudé#           }
1174a83e24baSPhilippe Mathieu-Daudé#        }
1175a83e24baSPhilippe Mathieu-Daudé##
1176a83e24baSPhilippe Mathieu-Daudé{ 'command': 'query-balloon', 'returns': 'BalloonInfo' }
1177a83e24baSPhilippe Mathieu-Daudé
1178a83e24baSPhilippe Mathieu-Daudé##
1179a83e24baSPhilippe Mathieu-Daudé# @BALLOON_CHANGE:
1180a83e24baSPhilippe Mathieu-Daudé#
1181a937b6aaSMarkus Armbruster# Emitted when the guest changes the actual BALLOON level.  This value
1182a937b6aaSMarkus Armbruster# is equivalent to the @actual field return by the 'query-balloon'
1183a937b6aaSMarkus Armbruster# command
1184a83e24baSPhilippe Mathieu-Daudé#
1185a937b6aaSMarkus Armbruster# @actual: the logical size of the VM in bytes Formula used:
1186a937b6aaSMarkus Armbruster#     logical_vm_size = vm_ram_size - balloon_size
1187a83e24baSPhilippe Mathieu-Daudé#
1188a83e24baSPhilippe Mathieu-Daudé# Note: this event is rate-limited.
1189a83e24baSPhilippe Mathieu-Daudé#
1190a83e24baSPhilippe Mathieu-Daudé# Since: 1.2
1191a83e24baSPhilippe Mathieu-Daudé#
1192a83e24baSPhilippe Mathieu-Daudé# Example:
1193a83e24baSPhilippe Mathieu-Daudé#
1194a83e24baSPhilippe Mathieu-Daudé#     <- { "event": "BALLOON_CHANGE",
1195a83e24baSPhilippe Mathieu-Daudé#          "data": { "actual": 944766976 },
1196a83e24baSPhilippe Mathieu-Daudé#          "timestamp": { "seconds": 1267020223, "microseconds": 435656 } }
1197a83e24baSPhilippe Mathieu-Daudé##
1198a83e24baSPhilippe Mathieu-Daudé{ 'event': 'BALLOON_CHANGE',
1199a83e24baSPhilippe Mathieu-Daudé  'data': { 'actual': 'int' } }
1200b495ec6cSPhilippe Mathieu-Daudé
1201b495ec6cSPhilippe Mathieu-Daudé##
1202259ebed4SMaciej S. Szmigiero# @HvBalloonInfo:
1203259ebed4SMaciej S. Szmigiero#
1204259ebed4SMaciej S. Szmigiero# hv-balloon guest-provided memory status information.
1205259ebed4SMaciej S. Szmigiero#
1206259ebed4SMaciej S. Szmigiero# @committed: the amount of memory in use inside the guest plus the
1207259ebed4SMaciej S. Szmigiero#     amount of the memory unusable inside the guest (ballooned out,
1208259ebed4SMaciej S. Szmigiero#     offline, etc.)
1209259ebed4SMaciej S. Szmigiero#
1210259ebed4SMaciej S. Szmigiero# @available: the amount of the memory inside the guest available for
1211259ebed4SMaciej S. Szmigiero#     new allocations ("free")
1212259ebed4SMaciej S. Szmigiero#
1213259ebed4SMaciej S. Szmigiero# Since: 8.2
1214259ebed4SMaciej S. Szmigiero##
1215259ebed4SMaciej S. Szmigiero{ 'struct': 'HvBalloonInfo',
1216259ebed4SMaciej S. Szmigiero  'data': { 'committed': 'size', 'available': 'size' } }
1217259ebed4SMaciej S. Szmigiero
1218259ebed4SMaciej S. Szmigiero##
1219259ebed4SMaciej S. Szmigiero# @query-hv-balloon-status-report:
1220259ebed4SMaciej S. Szmigiero#
1221209e64d9SMarkus Armbruster# Returns the hv-balloon driver data contained in the last received
1222209e64d9SMarkus Armbruster# "STATUS" message from the guest.
1223259ebed4SMaciej S. Szmigiero#
1224259ebed4SMaciej S. Szmigiero# Returns:
1225e2c1dcbcSMarkus Armbruster#     @HvBalloonInfo
12262746f060SMarkus Armbruster#
12272746f060SMarkus Armbruster# Errors:
1228e6ab40feSMarkus Armbruster#     - If no hv-balloon device is present, guest memory status
1229e6ab40feSMarkus Armbruster#       reporting is not enabled or no guest memory status report
1230e6ab40feSMarkus Armbruster#       received yet, GenericError
1231259ebed4SMaciej S. Szmigiero#
1232259ebed4SMaciej S. Szmigiero# Since: 8.2
1233259ebed4SMaciej S. Szmigiero#
1234259ebed4SMaciej S. Szmigiero# Example:
1235259ebed4SMaciej S. Szmigiero#
1236259ebed4SMaciej S. Szmigiero#     -> { "execute": "query-hv-balloon-status-report" }
1237259ebed4SMaciej S. Szmigiero#     <- { "return": {
1238259ebed4SMaciej S. Szmigiero#              "committed": 816640000,
1239259ebed4SMaciej S. Szmigiero#              "available": 3333054464
1240259ebed4SMaciej S. Szmigiero#           }
1241259ebed4SMaciej S. Szmigiero#        }
1242259ebed4SMaciej S. Szmigiero##
1243259ebed4SMaciej S. Szmigiero{ 'command': 'query-hv-balloon-status-report', 'returns': 'HvBalloonInfo' }
1244259ebed4SMaciej S. Szmigiero
1245259ebed4SMaciej S. Szmigiero##
1246259ebed4SMaciej S. Szmigiero# @HV_BALLOON_STATUS_REPORT:
1247259ebed4SMaciej S. Szmigiero#
1248259ebed4SMaciej S. Szmigiero# Emitted when the hv-balloon driver receives a "STATUS" message from
1249259ebed4SMaciej S. Szmigiero# the guest.
1250259ebed4SMaciej S. Szmigiero#
1251259ebed4SMaciej S. Szmigiero# Note: this event is rate-limited.
1252259ebed4SMaciej S. Szmigiero#
1253259ebed4SMaciej S. Szmigiero# Since: 8.2
1254259ebed4SMaciej S. Szmigiero#
1255259ebed4SMaciej S. Szmigiero# Example:
1256259ebed4SMaciej S. Szmigiero#
1257259ebed4SMaciej S. Szmigiero#     <- { "event": "HV_BALLOON_STATUS_REPORT",
1258259ebed4SMaciej S. Szmigiero#          "data": { "committed": 816640000, "available": 3333054464 },
1259259ebed4SMaciej S. Szmigiero#          "timestamp": { "seconds": 1600295492, "microseconds": 661044 } }
1260259ebed4SMaciej S. Szmigiero##
1261259ebed4SMaciej S. Szmigiero{ 'event': 'HV_BALLOON_STATUS_REPORT',
1262259ebed4SMaciej S. Szmigiero  'data': 'HvBalloonInfo' }
1263259ebed4SMaciej S. Szmigiero
1264259ebed4SMaciej S. Szmigiero##
1265b495ec6cSPhilippe Mathieu-Daudé# @MemoryInfo:
1266b495ec6cSPhilippe Mathieu-Daudé#
1267b495ec6cSPhilippe Mathieu-Daudé# Actual memory information in bytes.
1268b495ec6cSPhilippe Mathieu-Daudé#
1269b495ec6cSPhilippe Mathieu-Daudé# @base-memory: size of "base" memory specified with command line
1270b495ec6cSPhilippe Mathieu-Daudé#     option -m.
1271b495ec6cSPhilippe Mathieu-Daudé#
1272a937b6aaSMarkus Armbruster# @plugged-memory: size of memory that can be hot-unplugged.  This
1273a937b6aaSMarkus Armbruster#     field is omitted if target doesn't support memory hotplug (i.e.
1274a937b6aaSMarkus Armbruster#     CONFIG_MEM_DEVICE not defined at build time).
1275b495ec6cSPhilippe Mathieu-Daudé#
12769bc6e893SMarkus Armbruster# Since: 2.11
1277b495ec6cSPhilippe Mathieu-Daudé##
1278b495ec6cSPhilippe Mathieu-Daudé{ 'struct': 'MemoryInfo',
1279b495ec6cSPhilippe Mathieu-Daudé  'data'  : { 'base-memory': 'size', '*plugged-memory': 'size' } }
1280b495ec6cSPhilippe Mathieu-Daudé
1281b495ec6cSPhilippe Mathieu-Daudé##
1282b495ec6cSPhilippe Mathieu-Daudé# @query-memory-size-summary:
1283b495ec6cSPhilippe Mathieu-Daudé#
1284a937b6aaSMarkus Armbruster# Return the amount of initially allocated and present hotpluggable
1285a937b6aaSMarkus Armbruster# (if enabled) memory in bytes.
1286b495ec6cSPhilippe Mathieu-Daudé#
1287b495ec6cSPhilippe Mathieu-Daudé# Example:
1288b495ec6cSPhilippe Mathieu-Daudé#
1289b495ec6cSPhilippe Mathieu-Daudé#     -> { "execute": "query-memory-size-summary" }
1290b495ec6cSPhilippe Mathieu-Daudé#     <- { "return": { "base-memory": 4294967296, "plugged-memory": 0 } }
1291b495ec6cSPhilippe Mathieu-Daudé#
12929bc6e893SMarkus Armbruster# Since: 2.11
1293b495ec6cSPhilippe Mathieu-Daudé##
1294b495ec6cSPhilippe Mathieu-Daudé{ 'command': 'query-memory-size-summary', 'returns': 'MemoryInfo' }
1295b495ec6cSPhilippe Mathieu-Daudé
1296b495ec6cSPhilippe Mathieu-Daudé##
1297b495ec6cSPhilippe Mathieu-Daudé# @PCDIMMDeviceInfo:
1298b495ec6cSPhilippe Mathieu-Daudé#
1299b495ec6cSPhilippe Mathieu-Daudé# PCDIMMDevice state information
1300b495ec6cSPhilippe Mathieu-Daudé#
1301b495ec6cSPhilippe Mathieu-Daudé# @id: device's ID
1302b495ec6cSPhilippe Mathieu-Daudé#
1303b495ec6cSPhilippe Mathieu-Daudé# @addr: physical address, where device is mapped
1304b495ec6cSPhilippe Mathieu-Daudé#
1305b495ec6cSPhilippe Mathieu-Daudé# @size: size of memory that the device provides
1306b495ec6cSPhilippe Mathieu-Daudé#
1307b495ec6cSPhilippe Mathieu-Daudé# @slot: slot number at which device is plugged in
1308b495ec6cSPhilippe Mathieu-Daudé#
1309b495ec6cSPhilippe Mathieu-Daudé# @node: NUMA node number where device is plugged in
1310b495ec6cSPhilippe Mathieu-Daudé#
1311b495ec6cSPhilippe Mathieu-Daudé# @memdev: memory backend linked with device
1312b495ec6cSPhilippe Mathieu-Daudé#
1313b495ec6cSPhilippe Mathieu-Daudé# @hotplugged: true if device was hotplugged
1314b495ec6cSPhilippe Mathieu-Daudé#
1315a937b6aaSMarkus Armbruster# @hotpluggable: true if device if could be added/removed while
1316a937b6aaSMarkus Armbruster#     machine is running
1317b495ec6cSPhilippe Mathieu-Daudé#
1318b495ec6cSPhilippe Mathieu-Daudé# Since: 2.1
1319b495ec6cSPhilippe Mathieu-Daudé##
1320b495ec6cSPhilippe Mathieu-Daudé{ 'struct': 'PCDIMMDeviceInfo',
1321b495ec6cSPhilippe Mathieu-Daudé  'data': { '*id': 'str',
1322b495ec6cSPhilippe Mathieu-Daudé            'addr': 'int',
1323b495ec6cSPhilippe Mathieu-Daudé            'size': 'int',
1324b495ec6cSPhilippe Mathieu-Daudé            'slot': 'int',
1325b495ec6cSPhilippe Mathieu-Daudé            'node': 'int',
1326b495ec6cSPhilippe Mathieu-Daudé            'memdev': 'str',
1327b495ec6cSPhilippe Mathieu-Daudé            'hotplugged': 'bool',
1328b495ec6cSPhilippe Mathieu-Daudé            'hotpluggable': 'bool'
1329b495ec6cSPhilippe Mathieu-Daudé          }
1330b495ec6cSPhilippe Mathieu-Daudé}
1331b495ec6cSPhilippe Mathieu-Daudé
1332b495ec6cSPhilippe Mathieu-Daudé##
1333b495ec6cSPhilippe Mathieu-Daudé# @VirtioPMEMDeviceInfo:
1334b495ec6cSPhilippe Mathieu-Daudé#
1335b495ec6cSPhilippe Mathieu-Daudé# VirtioPMEM state information
1336b495ec6cSPhilippe Mathieu-Daudé#
1337b495ec6cSPhilippe Mathieu-Daudé# @id: device's ID
1338b495ec6cSPhilippe Mathieu-Daudé#
1339b495ec6cSPhilippe Mathieu-Daudé# @memaddr: physical address in memory, where device is mapped
1340b495ec6cSPhilippe Mathieu-Daudé#
1341b495ec6cSPhilippe Mathieu-Daudé# @size: size of memory that the device provides
1342b495ec6cSPhilippe Mathieu-Daudé#
1343b495ec6cSPhilippe Mathieu-Daudé# @memdev: memory backend linked with device
1344b495ec6cSPhilippe Mathieu-Daudé#
1345b495ec6cSPhilippe Mathieu-Daudé# Since: 4.1
1346b495ec6cSPhilippe Mathieu-Daudé##
1347b495ec6cSPhilippe Mathieu-Daudé{ 'struct': 'VirtioPMEMDeviceInfo',
1348b495ec6cSPhilippe Mathieu-Daudé  'data': { '*id': 'str',
1349b495ec6cSPhilippe Mathieu-Daudé            'memaddr': 'size',
1350b495ec6cSPhilippe Mathieu-Daudé            'size': 'size',
1351b495ec6cSPhilippe Mathieu-Daudé            'memdev': 'str'
1352b495ec6cSPhilippe Mathieu-Daudé          }
1353b495ec6cSPhilippe Mathieu-Daudé}
1354b495ec6cSPhilippe Mathieu-Daudé
1355b495ec6cSPhilippe Mathieu-Daudé##
1356b495ec6cSPhilippe Mathieu-Daudé# @VirtioMEMDeviceInfo:
1357b495ec6cSPhilippe Mathieu-Daudé#
1358b495ec6cSPhilippe Mathieu-Daudé# VirtioMEMDevice state information
1359b495ec6cSPhilippe Mathieu-Daudé#
1360b495ec6cSPhilippe Mathieu-Daudé# @id: device's ID
1361b495ec6cSPhilippe Mathieu-Daudé#
1362b495ec6cSPhilippe Mathieu-Daudé# @memaddr: physical address in memory, where device is mapped
1363b495ec6cSPhilippe Mathieu-Daudé#
1364b495ec6cSPhilippe Mathieu-Daudé# @requested-size: the user requested size of the device
1365b495ec6cSPhilippe Mathieu-Daudé#
1366b495ec6cSPhilippe Mathieu-Daudé# @size: the (current) size of memory that the device provides
1367b495ec6cSPhilippe Mathieu-Daudé#
1368b495ec6cSPhilippe Mathieu-Daudé# @max-size: the maximum size of memory that the device can provide
1369b495ec6cSPhilippe Mathieu-Daudé#
1370b495ec6cSPhilippe Mathieu-Daudé# @block-size: the block size of memory that the device provides
1371b495ec6cSPhilippe Mathieu-Daudé#
1372b495ec6cSPhilippe Mathieu-Daudé# @node: NUMA node number where device is assigned to
1373b495ec6cSPhilippe Mathieu-Daudé#
1374b495ec6cSPhilippe Mathieu-Daudé# @memdev: memory backend linked with the region
1375b495ec6cSPhilippe Mathieu-Daudé#
1376b495ec6cSPhilippe Mathieu-Daudé# Since: 5.1
1377b495ec6cSPhilippe Mathieu-Daudé##
1378b495ec6cSPhilippe Mathieu-Daudé{ 'struct': 'VirtioMEMDeviceInfo',
1379b495ec6cSPhilippe Mathieu-Daudé  'data': { '*id': 'str',
1380b495ec6cSPhilippe Mathieu-Daudé            'memaddr': 'size',
1381b495ec6cSPhilippe Mathieu-Daudé            'requested-size': 'size',
1382b495ec6cSPhilippe Mathieu-Daudé            'size': 'size',
1383b495ec6cSPhilippe Mathieu-Daudé            'max-size': 'size',
1384b495ec6cSPhilippe Mathieu-Daudé            'block-size': 'size',
1385b495ec6cSPhilippe Mathieu-Daudé            'node': 'int',
1386b495ec6cSPhilippe Mathieu-Daudé            'memdev': 'str'
1387b495ec6cSPhilippe Mathieu-Daudé          }
1388b495ec6cSPhilippe Mathieu-Daudé}
1389b495ec6cSPhilippe Mathieu-Daudé
1390b495ec6cSPhilippe Mathieu-Daudé##
1391a7c565a9SYang Zhong# @SgxEPCDeviceInfo:
1392a7c565a9SYang Zhong#
1393a7c565a9SYang Zhong# Sgx EPC state information
1394a7c565a9SYang Zhong#
1395a7c565a9SYang Zhong# @id: device's ID
1396a7c565a9SYang Zhong#
1397a7c565a9SYang Zhong# @memaddr: physical address in memory, where device is mapped
1398a7c565a9SYang Zhong#
1399a7c565a9SYang Zhong# @size: size of memory that the device provides
1400a7c565a9SYang Zhong#
1401a7c565a9SYang Zhong# @memdev: memory backend linked with device
1402a7c565a9SYang Zhong#
1403a66bd91fSYang Zhong# @node: the numa node (Since: 7.0)
140411058123SYang Zhong#
1405a7c565a9SYang Zhong# Since: 6.2
1406a7c565a9SYang Zhong##
1407a7c565a9SYang Zhong{ 'struct': 'SgxEPCDeviceInfo',
1408a7c565a9SYang Zhong  'data': { '*id': 'str',
1409a7c565a9SYang Zhong            'memaddr': 'size',
1410a7c565a9SYang Zhong            'size': 'size',
141111058123SYang Zhong            'node': 'int',
1412a7c565a9SYang Zhong            'memdev': 'str'
1413a7c565a9SYang Zhong          }
1414a7c565a9SYang Zhong}
1415a7c565a9SYang Zhong
1416a7c565a9SYang Zhong##
141716dff2f9SMaciej S. Szmigiero# @HvBalloonDeviceInfo:
141816dff2f9SMaciej S. Szmigiero#
141916dff2f9SMaciej S. Szmigiero# hv-balloon provided memory state information
142016dff2f9SMaciej S. Szmigiero#
142116dff2f9SMaciej S. Szmigiero# @id: device's ID
142216dff2f9SMaciej S. Szmigiero#
142316dff2f9SMaciej S. Szmigiero# @memaddr: physical address in memory, where device is mapped
142416dff2f9SMaciej S. Szmigiero#
142516dff2f9SMaciej S. Szmigiero# @max-size: the maximum size of memory that the device can provide
142616dff2f9SMaciej S. Szmigiero#
142716dff2f9SMaciej S. Szmigiero# @memdev: memory backend linked with device
142816dff2f9SMaciej S. Szmigiero#
142916dff2f9SMaciej S. Szmigiero# Since: 8.2
143016dff2f9SMaciej S. Szmigiero##
143116dff2f9SMaciej S. Szmigiero{ 'struct': 'HvBalloonDeviceInfo',
143216dff2f9SMaciej S. Szmigiero  'data': { '*id': 'str',
143316dff2f9SMaciej S. Szmigiero            '*memaddr': 'size',
143416dff2f9SMaciej S. Szmigiero            'max-size': 'size',
143516dff2f9SMaciej S. Szmigiero            '*memdev': 'str'
143616dff2f9SMaciej S. Szmigiero          }
143716dff2f9SMaciej S. Szmigiero}
143816dff2f9SMaciej S. Szmigiero
143916dff2f9SMaciej S. Szmigiero##
1440db6a252bSMarkus Armbruster# @MemoryDeviceInfoKind:
1441db6a252bSMarkus Armbruster#
144286bf13aeSMarkus Armbruster# @nvdimm: since 2.12
144386bf13aeSMarkus Armbruster#
144486bf13aeSMarkus Armbruster# @virtio-pmem: since 4.1
144586bf13aeSMarkus Armbruster#
144686bf13aeSMarkus Armbruster# @virtio-mem: since 5.1
144786bf13aeSMarkus Armbruster#
144886bf13aeSMarkus Armbruster# @sgx-epc: since 6.2.
144986bf13aeSMarkus Armbruster#
145016dff2f9SMaciej S. Szmigiero# @hv-balloon: since 8.2.
145116dff2f9SMaciej S. Szmigiero#
1452db6a252bSMarkus Armbruster# Since: 2.1
1453db6a252bSMarkus Armbruster##
1454db6a252bSMarkus Armbruster{ 'enum': 'MemoryDeviceInfoKind',
145516dff2f9SMaciej S. Szmigiero  'data': [ 'dimm', 'nvdimm', 'virtio-pmem', 'virtio-mem', 'sgx-epc',
145616dff2f9SMaciej S. Szmigiero            'hv-balloon' ] }
1457db6a252bSMarkus Armbruster
1458db6a252bSMarkus Armbruster##
1459db6a252bSMarkus Armbruster# @PCDIMMDeviceInfoWrapper:
1460db6a252bSMarkus Armbruster#
14612fecccbcSMarkus Armbruster# @data: PCDIMMDevice state information
14622fecccbcSMarkus Armbruster#
1463db6a252bSMarkus Armbruster# Since: 2.1
1464db6a252bSMarkus Armbruster##
1465db6a252bSMarkus Armbruster{ 'struct': 'PCDIMMDeviceInfoWrapper',
1466db6a252bSMarkus Armbruster  'data': { 'data': 'PCDIMMDeviceInfo' } }
1467db6a252bSMarkus Armbruster
1468db6a252bSMarkus Armbruster##
1469db6a252bSMarkus Armbruster# @VirtioPMEMDeviceInfoWrapper:
1470db6a252bSMarkus Armbruster#
14712fecccbcSMarkus Armbruster# @data: VirtioPMEM state information
14722fecccbcSMarkus Armbruster#
1473db6a252bSMarkus Armbruster# Since: 2.1
1474db6a252bSMarkus Armbruster##
1475db6a252bSMarkus Armbruster{ 'struct': 'VirtioPMEMDeviceInfoWrapper',
1476db6a252bSMarkus Armbruster  'data': { 'data': 'VirtioPMEMDeviceInfo' } }
1477db6a252bSMarkus Armbruster
1478db6a252bSMarkus Armbruster##
1479db6a252bSMarkus Armbruster# @VirtioMEMDeviceInfoWrapper:
1480db6a252bSMarkus Armbruster#
14812fecccbcSMarkus Armbruster# @data: VirtioMEMDevice state information
14822fecccbcSMarkus Armbruster#
1483db6a252bSMarkus Armbruster# Since: 2.1
1484db6a252bSMarkus Armbruster##
1485db6a252bSMarkus Armbruster{ 'struct': 'VirtioMEMDeviceInfoWrapper',
1486db6a252bSMarkus Armbruster  'data': { 'data': 'VirtioMEMDeviceInfo' } }
1487db6a252bSMarkus Armbruster
1488db6a252bSMarkus Armbruster##
1489a7c565a9SYang Zhong# @SgxEPCDeviceInfoWrapper:
1490a7c565a9SYang Zhong#
14912fecccbcSMarkus Armbruster# @data: Sgx EPC state information
14922fecccbcSMarkus Armbruster#
1493a7c565a9SYang Zhong# Since: 6.2
1494a7c565a9SYang Zhong##
1495a7c565a9SYang Zhong{ 'struct': 'SgxEPCDeviceInfoWrapper',
1496a7c565a9SYang Zhong  'data': { 'data': 'SgxEPCDeviceInfo' } }
1497a7c565a9SYang Zhong
1498b495ec6cSPhilippe Mathieu-Daudé##
149916dff2f9SMaciej S. Szmigiero# @HvBalloonDeviceInfoWrapper:
150016dff2f9SMaciej S. Szmigiero#
15012fecccbcSMarkus Armbruster# @data: hv-balloon provided memory state information
15022fecccbcSMarkus Armbruster#
150316dff2f9SMaciej S. Szmigiero# Since: 8.2
150416dff2f9SMaciej S. Szmigiero##
150516dff2f9SMaciej S. Szmigiero{ 'struct': 'HvBalloonDeviceInfoWrapper',
150616dff2f9SMaciej S. Szmigiero  'data': { 'data': 'HvBalloonDeviceInfo' } }
150716dff2f9SMaciej S. Szmigiero
150816dff2f9SMaciej S. Szmigiero##
1509b495ec6cSPhilippe Mathieu-Daudé# @MemoryDeviceInfo:
1510b495ec6cSPhilippe Mathieu-Daudé#
1511b495ec6cSPhilippe Mathieu-Daudé# Union containing information about a memory device
1512b495ec6cSPhilippe Mathieu-Daudé#
151389a2273bSMarkus Armbruster# @type: memory device type
151489a2273bSMarkus Armbruster#
1515b495ec6cSPhilippe Mathieu-Daudé# Since: 2.1
1516b495ec6cSPhilippe Mathieu-Daudé##
1517b495ec6cSPhilippe Mathieu-Daudé{ 'union': 'MemoryDeviceInfo',
1518db6a252bSMarkus Armbruster  'base': { 'type': 'MemoryDeviceInfoKind' },
1519db6a252bSMarkus Armbruster  'discriminator': 'type',
1520db6a252bSMarkus Armbruster  'data': { 'dimm': 'PCDIMMDeviceInfoWrapper',
1521db6a252bSMarkus Armbruster            'nvdimm': 'PCDIMMDeviceInfoWrapper',
1522db6a252bSMarkus Armbruster            'virtio-pmem': 'VirtioPMEMDeviceInfoWrapper',
1523a7c565a9SYang Zhong            'virtio-mem': 'VirtioMEMDeviceInfoWrapper',
152416dff2f9SMaciej S. Szmigiero            'sgx-epc': 'SgxEPCDeviceInfoWrapper',
152516dff2f9SMaciej S. Szmigiero            'hv-balloon': 'HvBalloonDeviceInfoWrapper'
1526b495ec6cSPhilippe Mathieu-Daudé          }
1527b495ec6cSPhilippe Mathieu-Daudé}
1528b495ec6cSPhilippe Mathieu-Daudé
1529b495ec6cSPhilippe Mathieu-Daudé##
1530dfce81f1SSean Christopherson# @SgxEPC:
1531dfce81f1SSean Christopherson#
1532dfce81f1SSean Christopherson# Sgx EPC cmdline information
1533dfce81f1SSean Christopherson#
1534dfce81f1SSean Christopherson# @memdev: memory backend linked with device
1535dfce81f1SSean Christopherson#
1536a66bd91fSYang Zhong# @node: the numa node (Since: 7.0)
153711058123SYang Zhong#
1538dfce81f1SSean Christopherson# Since: 6.2
1539dfce81f1SSean Christopherson##
1540dfce81f1SSean Christopherson{ 'struct': 'SgxEPC',
154111058123SYang Zhong  'data': { 'memdev': 'str',
154211058123SYang Zhong            'node': 'int'
154311058123SYang Zhong          }
154411058123SYang Zhong}
1545dfce81f1SSean Christopherson
1546dfce81f1SSean Christopherson##
1547dfce81f1SSean Christopherson# @SgxEPCProperties:
1548dfce81f1SSean Christopherson#
1549dfce81f1SSean Christopherson# SGX properties of machine types.
1550dfce81f1SSean Christopherson#
1551dfce81f1SSean Christopherson# @sgx-epc: list of ids of memory-backend-epc objects.
1552dfce81f1SSean Christopherson#
1553dfce81f1SSean Christopherson# Since: 6.2
1554dfce81f1SSean Christopherson##
1555dfce81f1SSean Christopherson{ 'struct': 'SgxEPCProperties',
1556dfce81f1SSean Christopherson  'data': { 'sgx-epc': ['SgxEPC'] }
1557dfce81f1SSean Christopherson}
1558dfce81f1SSean Christopherson
1559dfce81f1SSean Christopherson##
1560b495ec6cSPhilippe Mathieu-Daudé# @query-memory-devices:
1561b495ec6cSPhilippe Mathieu-Daudé#
1562b495ec6cSPhilippe Mathieu-Daudé# Lists available memory devices and their state
1563b495ec6cSPhilippe Mathieu-Daudé#
1564b495ec6cSPhilippe Mathieu-Daudé# Since: 2.1
1565b495ec6cSPhilippe Mathieu-Daudé#
1566b495ec6cSPhilippe Mathieu-Daudé# Example:
1567b495ec6cSPhilippe Mathieu-Daudé#
1568b495ec6cSPhilippe Mathieu-Daudé#     -> { "execute": "query-memory-devices" }
1569b495ec6cSPhilippe Mathieu-Daudé#     <- { "return": [ { "data":
1570b495ec6cSPhilippe Mathieu-Daudé#                           { "addr": 5368709120,
1571b495ec6cSPhilippe Mathieu-Daudé#                             "hotpluggable": true,
1572b495ec6cSPhilippe Mathieu-Daudé#                             "hotplugged": true,
1573b495ec6cSPhilippe Mathieu-Daudé#                             "id": "d1",
1574b495ec6cSPhilippe Mathieu-Daudé#                             "memdev": "/objects/memX",
1575b495ec6cSPhilippe Mathieu-Daudé#                             "node": 0,
1576b495ec6cSPhilippe Mathieu-Daudé#                             "size": 1073741824,
1577b495ec6cSPhilippe Mathieu-Daudé#                             "slot": 0},
1578b495ec6cSPhilippe Mathieu-Daudé#                        "type": "dimm"
1579b495ec6cSPhilippe Mathieu-Daudé#                      } ] }
1580b495ec6cSPhilippe Mathieu-Daudé##
1581b495ec6cSPhilippe Mathieu-Daudé{ 'command': 'query-memory-devices', 'returns': ['MemoryDeviceInfo'] }
1582b495ec6cSPhilippe Mathieu-Daudé
1583b495ec6cSPhilippe Mathieu-Daudé##
1584b495ec6cSPhilippe Mathieu-Daudé# @MEMORY_DEVICE_SIZE_CHANGE:
1585b495ec6cSPhilippe Mathieu-Daudé#
1586a937b6aaSMarkus Armbruster# Emitted when the size of a memory device changes.  Only emitted for
1587a937b6aaSMarkus Armbruster# memory devices that can actually change the size (e.g., virtio-mem
1588a937b6aaSMarkus Armbruster# due to guest action).
1589b495ec6cSPhilippe Mathieu-Daudé#
1590b495ec6cSPhilippe Mathieu-Daudé# @id: device's ID
1591d89dd28fSDavid Hildenbrand#
1592b495ec6cSPhilippe Mathieu-Daudé# @size: the new size of memory that the device provides
1593b495ec6cSPhilippe Mathieu-Daudé#
1594d89dd28fSDavid Hildenbrand# @qom-path: path to the device object in the QOM tree (since 6.2)
1595d89dd28fSDavid Hildenbrand#
1596b495ec6cSPhilippe Mathieu-Daudé# Note: this event is rate-limited.
1597b495ec6cSPhilippe Mathieu-Daudé#
1598b495ec6cSPhilippe Mathieu-Daudé# Since: 5.1
1599b495ec6cSPhilippe Mathieu-Daudé#
1600b495ec6cSPhilippe Mathieu-Daudé# Example:
1601b495ec6cSPhilippe Mathieu-Daudé#
1602b495ec6cSPhilippe Mathieu-Daudé#     <- { "event": "MEMORY_DEVICE_SIZE_CHANGE",
1603dba673b9SVictor Toso#          "data": { "id": "vm0", "size": 1073741824,
1604dba673b9SVictor Toso#                    "qom-path": "/machine/unattached/device[2]" },
1605b495ec6cSPhilippe Mathieu-Daudé#          "timestamp": { "seconds": 1588168529, "microseconds": 201316 } }
1606b495ec6cSPhilippe Mathieu-Daudé##
1607b495ec6cSPhilippe Mathieu-Daudé{ 'event': 'MEMORY_DEVICE_SIZE_CHANGE',
1608d89dd28fSDavid Hildenbrand  'data': { '*id': 'str', 'size': 'size', 'qom-path' : 'str'} }
1609b495ec6cSPhilippe Mathieu-Daudé
1610b495ec6cSPhilippe Mathieu-Daudé##
1611b495ec6cSPhilippe Mathieu-Daudé# @MEM_UNPLUG_ERROR:
1612b495ec6cSPhilippe Mathieu-Daudé#
1613b495ec6cSPhilippe Mathieu-Daudé# Emitted when memory hot unplug error occurs.
1614b495ec6cSPhilippe Mathieu-Daudé#
1615b495ec6cSPhilippe Mathieu-Daudé# @device: device name
1616b495ec6cSPhilippe Mathieu-Daudé#
1617b495ec6cSPhilippe Mathieu-Daudé# @msg: Informative message
1618b495ec6cSPhilippe Mathieu-Daudé#
1619d43f1670SDaniel Henrique Barboza# Features:
1620a937b6aaSMarkus Armbruster#
1621a937b6aaSMarkus Armbruster# @deprecated: This event is deprecated.  Use
1622a937b6aaSMarkus Armbruster#     @DEVICE_UNPLUG_GUEST_ERROR instead.
1623d43f1670SDaniel Henrique Barboza#
1624b495ec6cSPhilippe Mathieu-Daudé# Since: 2.4
1625b495ec6cSPhilippe Mathieu-Daudé#
1626b495ec6cSPhilippe Mathieu-Daudé# Example:
1627b495ec6cSPhilippe Mathieu-Daudé#
1628e8796ac4SVictor Toso#     <- { "event": "MEM_UNPLUG_ERROR",
1629b495ec6cSPhilippe Mathieu-Daudé#          "data": { "device": "dimm1",
1630b495ec6cSPhilippe Mathieu-Daudé#                    "msg": "acpi: device unplug for unsupported device"
1631b495ec6cSPhilippe Mathieu-Daudé#          },
1632b495ec6cSPhilippe Mathieu-Daudé#          "timestamp": { "seconds": 1265044230, "microseconds": 450486 } }
1633b495ec6cSPhilippe Mathieu-Daudé##
1634b495ec6cSPhilippe Mathieu-Daudé{ 'event': 'MEM_UNPLUG_ERROR',
1635d43f1670SDaniel Henrique Barboza  'data': { 'device': 'str', 'msg': 'str' },
1636d43f1670SDaniel Henrique Barboza  'features': ['deprecated'] }
16371e63fe68SPaolo Bonzini
16381e63fe68SPaolo Bonzini##
163997ec4d21SPaolo Bonzini# @BootConfiguration:
164097ec4d21SPaolo Bonzini#
164197ec4d21SPaolo Bonzini# Schema for virtual machine boot configuration.
164297ec4d21SPaolo Bonzini#
164397ec4d21SPaolo Bonzini# @order: Boot order (a=floppy, c=hard disk, d=CD-ROM, n=network)
164497ec4d21SPaolo Bonzini#
164597ec4d21SPaolo Bonzini# @once: Boot order to apply on first boot
164697ec4d21SPaolo Bonzini#
164797ec4d21SPaolo Bonzini# @menu: Whether to show a boot menu
164897ec4d21SPaolo Bonzini#
1649a937b6aaSMarkus Armbruster# @splash: The name of the file to be passed to the firmware as logo
1650a937b6aaSMarkus Armbruster#     picture, if @menu is true.
165197ec4d21SPaolo Bonzini#
165297ec4d21SPaolo Bonzini# @splash-time: How long to show the logo picture, in milliseconds
165397ec4d21SPaolo Bonzini#
165497ec4d21SPaolo Bonzini# @reboot-timeout: Timeout before guest reboots after boot fails
165597ec4d21SPaolo Bonzini#
1656a937b6aaSMarkus Armbruster# @strict: Whether to attempt booting from devices not included in the
1657a937b6aaSMarkus Armbruster#     boot order
165897ec4d21SPaolo Bonzini#
165997ec4d21SPaolo Bonzini# Since: 7.1
166097ec4d21SPaolo Bonzini##
166197ec4d21SPaolo Bonzini{ 'struct': 'BootConfiguration', 'data': {
166297ec4d21SPaolo Bonzini     '*order': 'str',
166397ec4d21SPaolo Bonzini     '*once': 'str',
166497ec4d21SPaolo Bonzini     '*menu': 'bool',
166597ec4d21SPaolo Bonzini     '*splash': 'str',
166697ec4d21SPaolo Bonzini     '*splash-time': 'int',
166797ec4d21SPaolo Bonzini     '*reboot-timeout': 'int',
166897ec4d21SPaolo Bonzini     '*strict': 'bool' } }
166997ec4d21SPaolo Bonzini
167097ec4d21SPaolo Bonzini##
16711e63fe68SPaolo Bonzini# @SMPConfiguration:
16721e63fe68SPaolo Bonzini#
1673a937b6aaSMarkus Armbruster# Schema for CPU topology configuration.  A missing value lets QEMU
1674a937b6aaSMarkus Armbruster# figure out a suitable value based on the ones that are provided.
16751e63fe68SPaolo Bonzini#
16763da4aef8SNina Schoetterl-Glausch# The members other than @cpus and @maxcpus define a topology of
16773da4aef8SNina Schoetterl-Glausch# containers.
16783da4aef8SNina Schoetterl-Glausch#
16793da4aef8SNina Schoetterl-Glausch# The ordering from highest/coarsest to lowest/finest is:
16805de1aff2SPierre Morel# @drawers, @books, @sockets, @dies, @clusters, @cores, @threads.
16813da4aef8SNina Schoetterl-Glausch#
16823da4aef8SNina Schoetterl-Glausch# Different architectures support different subsets of topology
16833da4aef8SNina Schoetterl-Glausch# containers.
16843da4aef8SNina Schoetterl-Glausch#
16853da4aef8SNina Schoetterl-Glausch# For example, s390x does not have clusters and dies, and the socket
16863da4aef8SNina Schoetterl-Glausch# is the parent container of cores.
16873da4aef8SNina Schoetterl-Glausch#
16881e63fe68SPaolo Bonzini# @cpus: number of virtual CPUs in the virtual machine
16891e63fe68SPaolo Bonzini#
1690a937b6aaSMarkus Armbruster# @maxcpus: maximum number of hotpluggable virtual CPUs in the virtual
1691a937b6aaSMarkus Armbruster#     machine
16921e63fe68SPaolo Bonzini#
16935de1aff2SPierre Morel# @drawers: number of drawers in the CPU topology (since 8.2)
16945de1aff2SPierre Morel#
16955de1aff2SPierre Morel# @books: number of books in the CPU topology (since 8.2)
16965de1aff2SPierre Morel#
16975de1aff2SPierre Morel# @sockets: number of sockets per parent container
16983da4aef8SNina Schoetterl-Glausch#
16993da4aef8SNina Schoetterl-Glausch# @dies: number of dies per parent container
17003da4aef8SNina Schoetterl-Glausch#
17013da4aef8SNina Schoetterl-Glausch# @clusters: number of clusters per parent container (since 7.0)
17023da4aef8SNina Schoetterl-Glausch#
17038ec0a463SZhao Liu# @modules: number of modules per parent container (since 9.1)
17048ec0a463SZhao Liu#
17053da4aef8SNina Schoetterl-Glausch# @cores: number of cores per parent container
17063da4aef8SNina Schoetterl-Glausch#
17073da4aef8SNina Schoetterl-Glausch# @threads: number of threads per core
17083da4aef8SNina Schoetterl-Glausch#
17091e63fe68SPaolo Bonzini# Since: 6.1
17101e63fe68SPaolo Bonzini##
17111e63fe68SPaolo Bonzini{ 'struct': 'SMPConfiguration', 'data': {
17121e63fe68SPaolo Bonzini     '*cpus': 'int',
17135de1aff2SPierre Morel     '*drawers': 'int',
17145de1aff2SPierre Morel     '*books': 'int',
17151e63fe68SPaolo Bonzini     '*sockets': 'int',
17161e63fe68SPaolo Bonzini     '*dies': 'int',
1717864c3b5cSYanan Wang     '*clusters': 'int',
17188ec0a463SZhao Liu     '*modules': 'int',
17191e63fe68SPaolo Bonzini     '*cores': 'int',
17201e63fe68SPaolo Bonzini     '*threads': 'int',
17211e63fe68SPaolo Bonzini     '*maxcpus': 'int' } }
1722dd98234cSDaniel P. Berrangé
1723dd98234cSDaniel P. Berrangé##
172491f2fa70SDaniel P. Berrangé# @x-query-irq:
172591f2fa70SDaniel P. Berrangé#
172691f2fa70SDaniel P. Berrangé# Query interrupt statistics
172791f2fa70SDaniel P. Berrangé#
17288c0bae5aSMarkus Armbruster# Features:
1729a937b6aaSMarkus Armbruster#
17308c0bae5aSMarkus Armbruster# @unstable: This command is meant for debugging.
17318c0bae5aSMarkus Armbruster#
173291f2fa70SDaniel P. Berrangé# Returns: interrupt statistics
173391f2fa70SDaniel P. Berrangé#
173491f2fa70SDaniel P. Berrangé# Since: 6.2
173591f2fa70SDaniel P. Berrangé##
173691f2fa70SDaniel P. Berrangé{ 'command': 'x-query-irq',
17378c0bae5aSMarkus Armbruster  'returns': 'HumanReadableText',
17388c0bae5aSMarkus Armbruster  'features': [ 'unstable' ] }
173991f2fa70SDaniel P. Berrangé
174091f2fa70SDaniel P. Berrangé##
17413a841ab5SDaniel P. Berrangé# @x-query-jit:
17423a841ab5SDaniel P. Berrangé#
17433a841ab5SDaniel P. Berrangé# Query TCG compiler statistics
17443a841ab5SDaniel P. Berrangé#
17458c0bae5aSMarkus Armbruster# Features:
1746a937b6aaSMarkus Armbruster#
17478c0bae5aSMarkus Armbruster# @unstable: This command is meant for debugging.
17488c0bae5aSMarkus Armbruster#
17493a841ab5SDaniel P. Berrangé# Returns: TCG compiler statistics
17503a841ab5SDaniel P. Berrangé#
17513a841ab5SDaniel P. Berrangé# Since: 6.2
17523a841ab5SDaniel P. Berrangé##
17533a841ab5SDaniel P. Berrangé{ 'command': 'x-query-jit',
17543a841ab5SDaniel P. Berrangé  'returns': 'HumanReadableText',
17558c0bae5aSMarkus Armbruster  'if': 'CONFIG_TCG',
17568c0bae5aSMarkus Armbruster  'features': [ 'unstable' ] }
17573a841ab5SDaniel P. Berrangé
17583a841ab5SDaniel P. Berrangé##
17591b8ae799SDaniel P. Berrangé# @x-query-numa:
17601b8ae799SDaniel P. Berrangé#
17611b8ae799SDaniel P. Berrangé# Query NUMA topology information
17621b8ae799SDaniel P. Berrangé#
17638c0bae5aSMarkus Armbruster# Features:
1764a937b6aaSMarkus Armbruster#
17658c0bae5aSMarkus Armbruster# @unstable: This command is meant for debugging.
17668c0bae5aSMarkus Armbruster#
17671b8ae799SDaniel P. Berrangé# Returns: topology information
17681b8ae799SDaniel P. Berrangé#
17691b8ae799SDaniel P. Berrangé# Since: 6.2
17701b8ae799SDaniel P. Berrangé##
17711b8ae799SDaniel P. Berrangé{ 'command': 'x-query-numa',
17728c0bae5aSMarkus Armbruster  'returns': 'HumanReadableText',
17738c0bae5aSMarkus Armbruster  'features': [ 'unstable' ] }
17741b8ae799SDaniel P. Berrangé
17751b8ae799SDaniel P. Berrangé##
1776b6a7f3e0SDaniel P. Berrangé# @x-query-opcount:
1777b6a7f3e0SDaniel P. Berrangé#
1778b6a7f3e0SDaniel P. Berrangé# Query TCG opcode counters
1779b6a7f3e0SDaniel P. Berrangé#
17808c0bae5aSMarkus Armbruster# Features:
1781a937b6aaSMarkus Armbruster#
17828c0bae5aSMarkus Armbruster# @unstable: This command is meant for debugging.
17838c0bae5aSMarkus Armbruster#
1784b6a7f3e0SDaniel P. Berrangé# Returns: TCG opcode counters
1785b6a7f3e0SDaniel P. Berrangé#
1786b6a7f3e0SDaniel P. Berrangé# Since: 6.2
1787b6a7f3e0SDaniel P. Berrangé##
1788b6a7f3e0SDaniel P. Berrangé{ 'command': 'x-query-opcount',
1789b6a7f3e0SDaniel P. Berrangé  'returns': 'HumanReadableText',
17908c0bae5aSMarkus Armbruster  'if': 'CONFIG_TCG',
17918c0bae5aSMarkus Armbruster  'features': [ 'unstable' ] }
1792b6a7f3e0SDaniel P. Berrangé
1793b6a7f3e0SDaniel P. Berrangé##
1794ca411b7cSDaniel P. Berrangé# @x-query-ramblock:
1795ca411b7cSDaniel P. Berrangé#
1796ca411b7cSDaniel P. Berrangé# Query system ramblock information
1797ca411b7cSDaniel P. Berrangé#
17988c0bae5aSMarkus Armbruster# Features:
1799a937b6aaSMarkus Armbruster#
18008c0bae5aSMarkus Armbruster# @unstable: This command is meant for debugging.
18018c0bae5aSMarkus Armbruster#
1802ca411b7cSDaniel P. Berrangé# Returns: system ramblock information
1803ca411b7cSDaniel P. Berrangé#
1804ca411b7cSDaniel P. Berrangé# Since: 6.2
1805ca411b7cSDaniel P. Berrangé##
1806ca411b7cSDaniel P. Berrangé{ 'command': 'x-query-ramblock',
18078c0bae5aSMarkus Armbruster  'returns': 'HumanReadableText',
18088c0bae5aSMarkus Armbruster  'features': [ 'unstable' ] }
1809ca411b7cSDaniel P. Berrangé
1810ca411b7cSDaniel P. Berrangé##
1811dd98234cSDaniel P. Berrangé# @x-query-roms:
1812dd98234cSDaniel P. Berrangé#
1813dd98234cSDaniel P. Berrangé# Query information on the registered ROMS
1814dd98234cSDaniel P. Berrangé#
18158c0bae5aSMarkus Armbruster# Features:
1816a937b6aaSMarkus Armbruster#
18178c0bae5aSMarkus Armbruster# @unstable: This command is meant for debugging.
18188c0bae5aSMarkus Armbruster#
1819dd98234cSDaniel P. Berrangé# Returns: registered ROMs
1820dd98234cSDaniel P. Berrangé#
1821dd98234cSDaniel P. Berrangé# Since: 6.2
1822dd98234cSDaniel P. Berrangé##
1823dd98234cSDaniel P. Berrangé{ 'command': 'x-query-roms',
18248c0bae5aSMarkus Armbruster  'returns': 'HumanReadableText',
18258c0bae5aSMarkus Armbruster  'features': [ 'unstable' ] }
1826fc309207SDaniel P. Berrangé
1827fc309207SDaniel P. Berrangé##
1828fc309207SDaniel P. Berrangé# @x-query-usb:
1829fc309207SDaniel P. Berrangé#
1830fc309207SDaniel P. Berrangé# Query information on the USB devices
1831fc309207SDaniel P. Berrangé#
18328c0bae5aSMarkus Armbruster# Features:
1833a937b6aaSMarkus Armbruster#
18348c0bae5aSMarkus Armbruster# @unstable: This command is meant for debugging.
18358c0bae5aSMarkus Armbruster#
1836fc309207SDaniel P. Berrangé# Returns: USB device information
1837fc309207SDaniel P. Berrangé#
1838fc309207SDaniel P. Berrangé# Since: 6.2
1839fc309207SDaniel P. Berrangé##
1840fc309207SDaniel P. Berrangé{ 'command': 'x-query-usb',
18418c0bae5aSMarkus Armbruster  'returns': 'HumanReadableText',
18428c0bae5aSMarkus Armbruster  'features': [ 'unstable' ] }
1843bdf54a9aSEduardo Habkost
1844bdf54a9aSEduardo Habkost##
1845bdf54a9aSEduardo Habkost# @SmbiosEntryPointType:
1846bdf54a9aSEduardo Habkost#
1847bdf54a9aSEduardo Habkost# @32: SMBIOS version 2.1 (32-bit) Entry Point
1848bdf54a9aSEduardo Habkost#
1849bdf54a9aSEduardo Habkost# @64: SMBIOS version 3.0 (64-bit) Entry Point
1850bdf54a9aSEduardo Habkost#
18514901b80eSIgor Mammedov# @auto: Either 2.x or 3.x SMBIOS version, 2.x if configuration can be
18524901b80eSIgor Mammedov#     described by it and 3.x otherwise (since: 9.0)
18534901b80eSIgor Mammedov#
1854bdf54a9aSEduardo Habkost# Since: 7.0
1855bdf54a9aSEduardo Habkost##
1856bdf54a9aSEduardo Habkost{ 'enum': 'SmbiosEntryPointType',
18574901b80eSIgor Mammedov  'data': [ '32', '64', 'auto' ] }
1858ce9d03fbSPaolo Bonzini
1859ce9d03fbSPaolo Bonzini##
1860ce9d03fbSPaolo Bonzini# @MemorySizeConfiguration:
1861ce9d03fbSPaolo Bonzini#
1862ce9d03fbSPaolo Bonzini# Schema for memory size configuration.
1863ce9d03fbSPaolo Bonzini#
1864ce9d03fbSPaolo Bonzini# @size: memory size in bytes
1865ce9d03fbSPaolo Bonzini#
1866ce9d03fbSPaolo Bonzini# @max-size: maximum hotpluggable memory size in bytes
1867ce9d03fbSPaolo Bonzini#
1868ce9d03fbSPaolo Bonzini# @slots: number of available memory slots for hotplug
1869ce9d03fbSPaolo Bonzini#
1870ce9d03fbSPaolo Bonzini# Since: 7.1
1871ce9d03fbSPaolo Bonzini##
1872ce9d03fbSPaolo Bonzini{ 'struct': 'MemorySizeConfiguration', 'data': {
1873ce9d03fbSPaolo Bonzini     '*size': 'size',
1874ce9d03fbSPaolo Bonzini     '*max-size': 'size',
1875ce9d03fbSPaolo Bonzini     '*slots': 'uint64' } }
1876bf353ad5SDaniel Henrique Barboza
1877bf353ad5SDaniel Henrique Barboza##
1878bf353ad5SDaniel Henrique Barboza# @dumpdtb:
1879bf353ad5SDaniel Henrique Barboza#
1880bf353ad5SDaniel Henrique Barboza# Save the FDT in dtb format.
1881bf353ad5SDaniel Henrique Barboza#
1882bf353ad5SDaniel Henrique Barboza# @filename: name of the dtb file to be created
1883bf353ad5SDaniel Henrique Barboza#
1884bf353ad5SDaniel Henrique Barboza# Since: 7.2
1885bf353ad5SDaniel Henrique Barboza#
1886bf353ad5SDaniel Henrique Barboza# Example:
1887a937b6aaSMarkus Armbruster#
188837fa48a4SMarkus Armbruster#     -> { "execute": "dumpdtb" }
1889bf353ad5SDaniel Henrique Barboza#          "arguments": { "filename": "fdt.dtb" } }
189037fa48a4SMarkus Armbruster#     <- { "return": {} }
1891bf353ad5SDaniel Henrique Barboza##
1892bf353ad5SDaniel Henrique Barboza{ 'command': 'dumpdtb',
1893bf353ad5SDaniel Henrique Barboza  'data': { 'filename': 'str' },
1894bf353ad5SDaniel Henrique Barboza  'if': 'CONFIG_FDT' }
1895