]> git.proxmox.com Git - mirror_qemu.git/blame - qapi/machine.json
qapi: Fix comment indentation
[mirror_qemu.git] / qapi / machine.json
CommitLineData
8ac25c84 1# -*- Mode: Python -*-
f7160f32 2# vim: filetype=python
8ac25c84
MA
3#
4# This work is licensed under the terms of the GNU GPL, version 2 or later.
5# See the COPYING file in the top-level directory.
6
7##
8# = Machines
9##
10
913d9063
KW
11{ 'include': 'common.json' }
12
ffaee83b
MA
13##
14# @SysEmuTarget:
15#
16# The comprehensive enumeration of QEMU system emulation ("softmmu")
17# targets. Run "./configure --help" in the project root directory, and
44e12af7 18# look for the \*-softmmu targets near the "--target-list" option. The
ffaee83b
MA
19# individual target constants are not documented here, for the time
20# being.
21#
c8c35e5f 22# @rx: since 5.0
42f3ff00 23# @avr: since 5.1
c8c35e5f 24#
ffaee83b
MA
25# Notes: The resulting QMP strings can be appended to the "qemu-system-"
26# prefix to produce the corresponding QEMU executable name. This
27# is true even for "qemu-system-x86_64".
28#
ffaee83b
MA
29# Since: 3.0
30##
31{ 'enum' : 'SysEmuTarget',
9d49bcf6 32 'data' : [ 'aarch64', 'alpha', 'arm', 'avr', 'cris', 'hppa', 'i386',
ffaee83b 33 'm68k', 'microblaze', 'microblazeel', 'mips', 'mips64',
875bb7e3 34 'mips64el', 'mipsel', 'nios2', 'or1k', 'ppc',
c8c35e5f 35 'ppc64', 'riscv32', 'riscv64', 'rx', 's390x', 'sh4',
43692239 36 'sh4eb', 'sparc', 'sparc64', 'tricore',
ffaee83b 37 'x86_64', 'xtensa', 'xtensaeb' ] }
8ac25c84 38
8ac25c84
MA
39##
40# @CpuS390State:
41#
42# An enumeration of cpu states that can be assumed by a virtual
43# S390 CPU
44#
45# Since: 2.12
46##
47{ 'enum': 'CpuS390State',
48 'prefix': 'S390_CPU_STATE',
49 'data': [ 'uninitialized', 'stopped', 'check-stop', 'operating', 'load' ] }
50
51##
52# @CpuInfoS390:
53#
54# Additional information about a virtual S390 CPU
55#
56# @cpu-state: the virtual CPU's state
57#
58# Since: 2.12
59##
60{ 'struct': 'CpuInfoS390', 'data': { 'cpu-state': 'CpuS390State' } }
61
8ac25c84
MA
62##
63# @CpuInfoFast:
64#
65# Information about a virtual CPU
66#
67# @cpu-index: index of the virtual CPU
68#
69# @qom-path: path to the CPU object in the QOM tree
70#
71# @thread-id: ID of the underlying host thread
72#
73# @props: properties describing to which node/socket/core/thread
74# virtual CPU belongs to, provided if supported by board
75#
8ac25c84
MA
76# @target: the QEMU system emulation target, which determines which
77# additional fields will be listed (since 3.0)
78#
79# Since: 2.12
80#
81##
82{ 'union' : 'CpuInfoFast',
83 'base' : { 'cpu-index' : 'int',
84 'qom-path' : 'str',
85 'thread-id' : 'int',
86 '*props' : 'CpuInstanceProperties',
8ac25c84
MA
87 'target' : 'SysEmuTarget' },
88 'discriminator' : 'target',
89 'data' : { 's390x' : 'CpuInfoS390' } }
90
91##
92# @query-cpus-fast:
93#
8af54b91 94# Returns information about all virtual CPUs.
8ac25c84
MA
95#
96# Returns: list of @CpuInfoFast
97#
98# Since: 2.12
99#
100# Example:
101#
102# -> { "execute": "query-cpus-fast" }
103# <- { "return": [
104# {
105# "thread-id": 25627,
106# "props": {
107# "core-id": 0,
108# "thread-id": 0,
109# "socket-id": 0
110# },
111# "qom-path": "/machine/unattached/device[0]",
8ac25c84
MA
112# "target":"x86_64",
113# "cpu-index": 0
114# },
115# {
116# "thread-id": 25628,
117# "props": {
118# "core-id": 0,
119# "thread-id": 0,
120# "socket-id": 1
121# },
122# "qom-path": "/machine/unattached/device[2]",
8ac25c84
MA
123# "target":"x86_64",
124# "cpu-index": 1
125# }
126# ]
127# }
128##
129{ 'command': 'query-cpus-fast', 'returns': [ 'CpuInfoFast' ] }
130
8ac25c84
MA
131##
132# @MachineInfo:
133#
134# Information describing a machine.
135#
136# @name: the name of the machine
137#
138# @alias: an alias for the machine name
139#
140# @is-default: whether the machine is default
141#
142# @cpu-max: maximum number of CPUs supported by the machine type
9bc6e893 143# (since 1.5)
8ac25c84 144#
9bc6e893 145# @hotpluggable-cpus: cpu hotplug via -device is supported (since 2.7)
8ac25c84 146#
cd5ff833
IM
147# @numa-mem-supported: true if '-numa node,mem' option is supported by
148# the machine type and false otherwise (since 4.1)
149#
79974027
EH
150# @deprecated: if true, the machine type is deprecated and may be removed
151# in future versions of QEMU according to the QEMU deprecation
9bc6e893 152# policy (since 4.1)
79974027 153#
04109957
DB
154# @default-cpu-type: default CPU model typename if none is requested via
155# the -cpu argument. (since 4.2)
156#
c5566005
MP
157# @default-ram-id: the default ID of initial RAM memory backend (since 5.2)
158#
9bc6e893 159# Since: 1.2
8ac25c84
MA
160##
161{ 'struct': 'MachineInfo',
162 'data': { 'name': 'str', '*alias': 'str',
163 '*is-default': 'bool', 'cpu-max': 'int',
79974027 164 'hotpluggable-cpus': 'bool', 'numa-mem-supported': 'bool',
c5566005
MP
165 'deprecated': 'bool', '*default-cpu-type': 'str',
166 '*default-ram-id': 'str' } }
8ac25c84
MA
167
168##
169# @query-machines:
170#
171# Return a list of supported machines
172#
173# Returns: a list of MachineInfo
174#
9bc6e893 175# Since: 1.2
8ac25c84
MA
176##
177{ 'command': 'query-machines', 'returns': ['MachineInfo'] }
178
179##
180# @CurrentMachineParams:
181#
182# Information describing the running machine parameters.
183#
184# @wakeup-suspend-support: true if the machine supports wake up from
185# suspend
186#
187# Since: 4.0
188##
189{ 'struct': 'CurrentMachineParams',
190 'data': { 'wakeup-suspend-support': 'bool'} }
191
192##
193# @query-current-machine:
194#
195# Return information on the current virtual machine.
196#
197# Returns: CurrentMachineParams
198#
199# Since: 4.0
200##
201{ 'command': 'query-current-machine', 'returns': 'CurrentMachineParams' }
202
ffaee83b
MA
203##
204# @TargetInfo:
205#
206# Information describing the QEMU target.
207#
208# @arch: the target architecture
209#
9bc6e893 210# Since: 1.2
ffaee83b
MA
211##
212{ 'struct': 'TargetInfo',
213 'data': { 'arch': 'SysEmuTarget' } }
214
215##
216# @query-target:
217#
218# Return information about the target for this QEMU
219#
220# Returns: TargetInfo
221#
9bc6e893 222# Since: 1.2
ffaee83b
MA
223##
224{ 'command': 'query-target', 'returns': 'TargetInfo' }
225
f68c0147
PMD
226##
227# @UuidInfo:
228#
229# Guest UUID information (Universally Unique Identifier).
230#
231# @UUID: the UUID of the guest
232#
9bc6e893 233# Since: 0.14
f68c0147
PMD
234#
235# Notes: If no UUID was specified for the guest, a null UUID is returned.
236##
237{ 'struct': 'UuidInfo', 'data': {'UUID': 'str'} }
238
239##
240# @query-uuid:
241#
242# Query the guest UUID information.
243#
244# Returns: The @UuidInfo for the guest
245#
9bc6e893 246# Since: 0.14
f68c0147
PMD
247#
248# Example:
249#
250# -> { "execute": "query-uuid" }
251# <- { "return": { "UUID": "550e8400-e29b-41d4-a716-446655440000" } }
252#
253##
254{ 'command': 'query-uuid', 'returns': 'UuidInfo', 'allow-preconfig': true }
255
db0f08df
PMD
256##
257# @GuidInfo:
258#
259# GUID information.
260#
261# @guid: the globally unique identifier
262#
263# Since: 2.9
264##
265{ 'struct': 'GuidInfo', 'data': {'guid': 'str'} }
266
267##
268# @query-vm-generation-id:
269#
270# Show Virtual Machine Generation ID
271#
272# Since: 2.9
273##
274{ 'command': 'query-vm-generation-id', 'returns': 'GuidInfo' }
275
90f8c0f9
PMD
276##
277# @system_reset:
278#
279# Performs a hard reset of a guest.
280#
9bc6e893 281# Since: 0.14
90f8c0f9
PMD
282#
283# Example:
284#
285# -> { "execute": "system_reset" }
286# <- { "return": {} }
287#
288##
289{ 'command': 'system_reset' }
290
291##
292# @system_powerdown:
293#
294# Requests that a guest perform a powerdown operation.
295#
9bc6e893 296# Since: 0.14
90f8c0f9
PMD
297#
298# Notes: A guest may or may not respond to this command. This command
299# returning does not indicate that a guest has accepted the request or
300# that it has shut down. Many guests will respond to this command by
301# prompting the user in some way.
302# Example:
303#
304# -> { "execute": "system_powerdown" }
305# <- { "return": {} }
306#
307##
308{ 'command': 'system_powerdown' }
309
310##
311# @system_wakeup:
312#
313# Wake up guest from suspend. If the guest has wake-up from suspend
314# support enabled (wakeup-suspend-support flag from
315# query-current-machine), wake-up guest from suspend if the guest is
316# in SUSPENDED state. Return an error otherwise.
317#
318# Since: 1.1
319#
320# Returns: nothing.
321#
322# Note: prior to 4.0, this command does nothing in case the guest
323# isn't suspended.
324#
325# Example:
326#
327# -> { "execute": "system_wakeup" }
328# <- { "return": {} }
329#
330##
331{ 'command': 'system_wakeup' }
332
8dc007d3
PMD
333##
334# @LostTickPolicy:
335#
336# Policy for handling lost ticks in timer devices. Ticks end up getting
337# lost when, for example, the guest is paused.
338#
339# @discard: throw away the missed ticks and continue with future injection
340# normally. The guest OS will see the timer jump ahead by a
341# potentially quite significant amount all at once, as if the
342# intervening chunk of time had simply not existed; needless to
343# say, such a sudden jump can easily confuse a guest OS which is
344# not specifically prepared to deal with it. Assuming the guest
345# OS can deal correctly with the time jump, the time in the guest
346# and in the host should now match.
347#
348# @delay: continue to deliver ticks at the normal rate. The guest OS will
349# not notice anything is amiss, as from its point of view time will
350# have continued to flow normally. The time in the guest should now
351# be behind the time in the host by exactly the amount of time during
352# which ticks have been missed.
353#
354# @slew: deliver ticks at a higher rate to catch up with the missed ticks.
355# The guest OS will not notice anything is amiss, as from its point
356# of view time will have continued to flow normally. Once the timer
357# has managed to catch up with all the missing ticks, the time in
358# the guest and in the host should match.
359#
360# Since: 2.0
361##
362{ 'enum': 'LostTickPolicy',
363 'data': ['discard', 'delay', 'slew' ] }
364
df7a1f48
PMD
365##
366# @inject-nmi:
367#
368# Injects a Non-Maskable Interrupt into the default CPU (x86/s390) or all CPUs (ppc64).
369# The command fails when the guest doesn't support injecting.
370#
371# Returns: If successful, nothing
372#
9bc6e893 373# Since: 0.14
df7a1f48
PMD
374#
375# Note: prior to 2.1, this command was only supported for x86 and s390 VMs
376#
377# Example:
378#
379# -> { "execute": "inject-nmi" }
380# <- { "return": {} }
381#
382##
383{ 'command': 'inject-nmi' }
384
81dddc1b
PMD
385##
386# @KvmInfo:
387#
388# Information about support for KVM acceleration
389#
390# @enabled: true if KVM acceleration is active
391#
392# @present: true if KVM acceleration is built into this executable
393#
9bc6e893 394# Since: 0.14
81dddc1b
PMD
395##
396{ 'struct': 'KvmInfo', 'data': {'enabled': 'bool', 'present': 'bool'} }
397
398##
399# @query-kvm:
400#
401# Returns information about KVM acceleration
402#
403# Returns: @KvmInfo
404#
9bc6e893 405# Since: 0.14
81dddc1b
PMD
406#
407# Example:
408#
409# -> { "execute": "query-kvm" }
410# <- { "return": { "enabled": true, "present": true } }
411#
412##
413{ 'command': 'query-kvm', 'returns': 'KvmInfo' }
414
8ac25c84
MA
415##
416# @NumaOptionsType:
417#
418# @node: NUMA nodes configuration
419#
420# @dist: NUMA distance configuration (since 2.10)
421#
422# @cpu: property based CPU(s) to node mapping (Since: 2.10)
423#
9b12dfa0
LJ
424# @hmat-lb: memory latency and bandwidth information (Since: 5.0)
425#
c412a48d
LJ
426# @hmat-cache: memory side cache information (Since: 5.0)
427#
8ac25c84
MA
428# Since: 2.1
429##
430{ 'enum': 'NumaOptionsType',
c412a48d 431 'data': [ 'node', 'dist', 'cpu', 'hmat-lb', 'hmat-cache' ] }
8ac25c84
MA
432
433##
434# @NumaOptions:
435#
436# A discriminated record of NUMA options. (for OptsVisitor)
437#
438# Since: 2.1
439##
440{ 'union': 'NumaOptions',
441 'base': { 'type': 'NumaOptionsType' },
442 'discriminator': 'type',
443 'data': {
444 'node': 'NumaNodeOptions',
445 'dist': 'NumaDistOptions',
9b12dfa0 446 'cpu': 'NumaCpuOptions',
c412a48d
LJ
447 'hmat-lb': 'NumaHmatLBOptions',
448 'hmat-cache': 'NumaHmatCacheOptions' }}
8ac25c84
MA
449
450##
451# @NumaNodeOptions:
452#
453# Create a guest NUMA node. (for OptsVisitor)
454#
455# @nodeid: NUMA node ID (increase by 1 from 0 if omitted)
456#
457# @cpus: VCPUs belonging to this node (assign VCPUS round-robin
458# if omitted)
459#
460# @mem: memory size of this node; mutually exclusive with @memdev.
461# Equally divide total memory among nodes if both @mem and @memdev are
462# omitted.
463#
464# @memdev: memory backend object. If specified for one node,
465# it must be specified for all nodes.
466#
244b3f44
TX
467# @initiator: defined in ACPI 6.3 Chapter 5.2.27.3 Table 5-145,
468# points to the nodeid which has the memory controller
469# responsible for this NUMA node. This field provides
470# additional information as to the initiator node that
471# is closest (as in directly attached) to this node, and
472# therefore has the best performance (since 5.0)
473#
8ac25c84
MA
474# Since: 2.1
475##
476{ 'struct': 'NumaNodeOptions',
477 'data': {
478 '*nodeid': 'uint16',
479 '*cpus': ['uint16'],
480 '*mem': 'size',
244b3f44
TX
481 '*memdev': 'str',
482 '*initiator': 'uint16' }}
8ac25c84
MA
483
484##
485# @NumaDistOptions:
486#
487# Set the distance between 2 NUMA nodes.
488#
489# @src: source NUMA node.
490#
491# @dst: destination NUMA node.
492#
493# @val: NUMA distance from source node to destination node.
494# When a node is unreachable from another node, set the distance
495# between them to 255.
496#
497# Since: 2.10
498##
499{ 'struct': 'NumaDistOptions',
500 'data': {
501 'src': 'uint16',
502 'dst': 'uint16',
503 'val': 'uint8' }}
504
505##
506# @X86CPURegister32:
507#
508# A X86 32-bit register
509#
510# Since: 1.5
511##
512{ 'enum': 'X86CPURegister32',
513 'data': [ 'EAX', 'EBX', 'ECX', 'EDX', 'ESP', 'EBP', 'ESI', 'EDI' ] }
514
515##
516# @X86CPUFeatureWordInfo:
517#
518# Information about a X86 CPU feature word
519#
520# @cpuid-input-eax: Input EAX value for CPUID instruction for that feature word
521#
522# @cpuid-input-ecx: Input ECX value for CPUID instruction for that
523# feature word
524#
525# @cpuid-register: Output register containing the feature bits
526#
527# @features: value of output register, containing the feature bits
528#
529# Since: 1.5
530##
531{ 'struct': 'X86CPUFeatureWordInfo',
532 'data': { 'cpuid-input-eax': 'int',
533 '*cpuid-input-ecx': 'int',
534 'cpuid-register': 'X86CPURegister32',
535 'features': 'int' } }
536
537##
538# @DummyForceArrays:
539#
540# Not used by QMP; hack to let us use X86CPUFeatureWordInfoList internally
541#
542# Since: 2.5
543##
544{ 'struct': 'DummyForceArrays',
545 'data': { 'unused': ['X86CPUFeatureWordInfo'] } }
546
547##
548# @NumaCpuOptions:
549#
550# Option "-numa cpu" overrides default cpu to node mapping.
551# It accepts the same set of cpu properties as returned by
552# query-hotpluggable-cpus[].props, where node-id could be used to
553# override default node mapping.
554#
555# Since: 2.10
556##
557{ 'struct': 'NumaCpuOptions',
558 'base': 'CpuInstanceProperties',
559 'data' : {} }
560
9b12dfa0
LJ
561##
562# @HmatLBMemoryHierarchy:
563#
564# The memory hierarchy in the System Locality Latency and Bandwidth
565# Information Structure of HMAT (Heterogeneous Memory Attribute Table)
566#
567# For more information about @HmatLBMemoryHierarchy, see chapter
568# 5.2.27.4: Table 5-146: Field "Flags" of ACPI 6.3 spec.
569#
570# @memory: the structure represents the memory performance
571#
572# @first-level: first level of memory side cache
573#
574# @second-level: second level of memory side cache
575#
576# @third-level: third level of memory side cache
577#
578# Since: 5.0
579##
580{ 'enum': 'HmatLBMemoryHierarchy',
581 'data': [ 'memory', 'first-level', 'second-level', 'third-level' ] }
582
583##
584# @HmatLBDataType:
585#
586# Data type in the System Locality Latency and Bandwidth
587# Information Structure of HMAT (Heterogeneous Memory Attribute Table)
588#
589# For more information about @HmatLBDataType, see chapter
590# 5.2.27.4: Table 5-146: Field "Data Type" of ACPI 6.3 spec.
591#
592# @access-latency: access latency (nanoseconds)
593#
594# @read-latency: read latency (nanoseconds)
595#
596# @write-latency: write latency (nanoseconds)
597#
598# @access-bandwidth: access bandwidth (Bytes per second)
599#
600# @read-bandwidth: read bandwidth (Bytes per second)
601#
602# @write-bandwidth: write bandwidth (Bytes per second)
603#
604# Since: 5.0
605##
606{ 'enum': 'HmatLBDataType',
607 'data': [ 'access-latency', 'read-latency', 'write-latency',
608 'access-bandwidth', 'read-bandwidth', 'write-bandwidth' ] }
609
610##
611# @NumaHmatLBOptions:
612#
613# Set the system locality latency and bandwidth information
614# between Initiator and Target proximity Domains.
615#
616# For more information about @NumaHmatLBOptions, see chapter
617# 5.2.27.4: Table 5-146 of ACPI 6.3 spec.
618#
619# @initiator: the Initiator Proximity Domain.
620#
621# @target: the Target Proximity Domain.
622#
623# @hierarchy: the Memory Hierarchy. Indicates the performance
624# of memory or side cache.
625#
626# @data-type: presents the type of data, access/read/write
627# latency or hit latency.
628#
629# @latency: the value of latency from @initiator to @target
630# proximity domain, the latency unit is "ns(nanosecond)".
631#
632# @bandwidth: the value of bandwidth between @initiator and @target
633# proximity domain, the bandwidth unit is
634# "Bytes per second".
635#
636# Since: 5.0
637##
638{ 'struct': 'NumaHmatLBOptions',
639 'data': {
640 'initiator': 'uint16',
641 'target': 'uint16',
642 'hierarchy': 'HmatLBMemoryHierarchy',
643 'data-type': 'HmatLBDataType',
644 '*latency': 'uint64',
645 '*bandwidth': 'size' }}
646
c412a48d
LJ
647##
648# @HmatCacheAssociativity:
649#
650# Cache associativity in the Memory Side Cache Information Structure
651# of HMAT
652#
653# For more information of @HmatCacheAssociativity, see chapter
654# 5.2.27.5: Table 5-147 of ACPI 6.3 spec.
655#
656# @none: None (no memory side cache in this proximity domain,
657# or cache associativity unknown)
658#
659# @direct: Direct Mapped
660#
661# @complex: Complex Cache Indexing (implementation specific)
662#
663# Since: 5.0
664##
665{ 'enum': 'HmatCacheAssociativity',
666 'data': [ 'none', 'direct', 'complex' ] }
667
668##
669# @HmatCacheWritePolicy:
670#
671# Cache write policy in the Memory Side Cache Information Structure
672# of HMAT
673#
674# For more information of @HmatCacheWritePolicy, see chapter
675# 5.2.27.5: Table 5-147: Field "Cache Attributes" of ACPI 6.3 spec.
676#
677# @none: None (no memory side cache in this proximity domain,
26ec4e53 678# or cache write policy unknown)
c412a48d
LJ
679#
680# @write-back: Write Back (WB)
681#
682# @write-through: Write Through (WT)
683#
684# Since: 5.0
685##
686{ 'enum': 'HmatCacheWritePolicy',
687 'data': [ 'none', 'write-back', 'write-through' ] }
688
689##
690# @NumaHmatCacheOptions:
691#
692# Set the memory side cache information for a given memory domain.
693#
694# For more information of @NumaHmatCacheOptions, see chapter
695# 5.2.27.5: Table 5-147: Field "Cache Attributes" of ACPI 6.3 spec.
696#
697# @node-id: the memory proximity domain to which the memory belongs.
698#
699# @size: the size of memory side cache in bytes.
700#
701# @level: the cache level described in this structure.
702#
703# @associativity: the cache associativity,
26ec4e53 704# none/direct-mapped/complex(complex cache indexing).
c412a48d
LJ
705#
706# @policy: the write policy, none/write-back/write-through.
707#
708# @line: the cache Line size in bytes.
709#
710# Since: 5.0
711##
712{ 'struct': 'NumaHmatCacheOptions',
713 'data': {
714 'node-id': 'uint32',
715 'size': 'size',
716 'level': 'uint8',
717 'associativity': 'HmatCacheAssociativity',
718 'policy': 'HmatCacheWritePolicy',
719 'line': 'uint16' }}
720
d4130cbf
PMD
721##
722# @memsave:
723#
724# Save a portion of guest memory to a file.
725#
726# @val: the virtual address of the guest to start from
727#
728# @size: the size of memory region to save
729#
730# @filename: the file to save the memory to as binary data
731#
732# @cpu-index: the index of the virtual CPU to use for translating the
733# virtual address (defaults to CPU 0)
734#
735# Returns: Nothing on success
736#
9bc6e893 737# Since: 0.14
d4130cbf
PMD
738#
739# Notes: Errors were not reliably returned until 1.1
740#
741# Example:
742#
743# -> { "execute": "memsave",
744# "arguments": { "val": 10,
745# "size": 100,
746# "filename": "/tmp/virtual-mem-dump" } }
747# <- { "return": {} }
748#
749##
750{ 'command': 'memsave',
751 'data': {'val': 'int', 'size': 'int', 'filename': 'str', '*cpu-index': 'int'} }
752
753##
754# @pmemsave:
755#
756# Save a portion of guest physical memory to a file.
757#
758# @val: the physical address of the guest to start from
759#
760# @size: the size of memory region to save
761#
762# @filename: the file to save the memory to as binary data
763#
764# Returns: Nothing on success
765#
9bc6e893 766# Since: 0.14
d4130cbf
PMD
767#
768# Notes: Errors were not reliably returned until 1.1
769#
770# Example:
771#
772# -> { "execute": "pmemsave",
773# "arguments": { "val": 10,
774# "size": 100,
775# "filename": "/tmp/physical-mem-dump" } }
776# <- { "return": {} }
777#
778##
779{ 'command': 'pmemsave',
780 'data': {'val': 'int', 'size': 'int', 'filename': 'str'} }
781
8ac25c84
MA
782##
783# @Memdev:
784#
785# Information about memory backend
786#
787# @id: backend's ID if backend has 'id' property (since 2.9)
788#
789# @size: memory backend size
790#
157cfaf9 791# @merge: whether memory merge support is enabled
8ac25c84 792#
157cfaf9 793# @dump: whether memory backend's memory is included in a core dump
8ac25c84 794#
157cfaf9 795# @prealloc: whether memory was preallocated
8ac25c84 796#
d300fc54
DH
797# @share: whether memory is private to QEMU or shared (since 6.1)
798#
69647f9d
DH
799# @reserve: whether swap space (or huge pages) was reserved if applicable.
800# This corresponds to the user configuration and not the actual
801# behavior implemented in the OS to perform the reservation.
802# For example, Linux will never reserve swap space for shared
803# file mappings. (since 6.1)
804#
8ac25c84
MA
805# @host-nodes: host nodes for its memory policy
806#
807# @policy: memory policy of memory backend
808#
809# Since: 2.1
810##
811{ 'struct': 'Memdev',
812 'data': {
813 '*id': 'str',
814 'size': 'size',
815 'merge': 'bool',
816 'dump': 'bool',
817 'prealloc': 'bool',
d300fc54 818 'share': 'bool',
69647f9d 819 '*reserve': 'bool',
8ac25c84
MA
820 'host-nodes': ['uint16'],
821 'policy': 'HostMemPolicy' }}
822
823##
824# @query-memdev:
825#
826# Returns information for all memory backends.
827#
828# Returns: a list of @Memdev.
829#
830# Since: 2.1
831#
832# Example:
833#
834# -> { "execute": "query-memdev" }
835# <- { "return": [
836# {
837# "id": "mem1",
838# "size": 536870912,
839# "merge": false,
840# "dump": true,
841# "prealloc": false,
7c90031d 842# "share": false,
8ac25c84
MA
843# "host-nodes": [0, 1],
844# "policy": "bind"
845# },
846# {
847# "size": 536870912,
848# "merge": false,
849# "dump": true,
850# "prealloc": true,
7c90031d 851# "share": false,
8ac25c84
MA
852# "host-nodes": [2, 3],
853# "policy": "preferred"
854# }
855# ]
856# }
857#
858##
859{ 'command': 'query-memdev', 'returns': ['Memdev'], 'allow-preconfig': true }
860
861##
862# @CpuInstanceProperties:
863#
864# List of properties to be used for hotplugging a CPU instance,
865# it should be passed by management with device_add command when
866# a CPU is being hotplugged.
867#
868# @node-id: NUMA node ID the CPU belongs to
869# @socket-id: socket number within node/board the CPU belongs to
226fad73 870# @die-id: die number within socket the CPU belongs to (since 4.1)
1dcf7001
GS
871# @cluster-id: cluster number within die the CPU belongs to (since 7.1)
872# @core-id: core number within cluster the CPU belongs to
6ac3f1e7 873# @thread-id: thread number within core the CPU belongs to
8ac25c84 874#
1dcf7001 875# Note: currently there are 6 properties that could be present
26ec4e53
PM
876# but management should be prepared to pass through other
877# properties with device_add command to allow for future
878# interface extension. This also requires the filed names to be kept in
879# sync with the properties passed to -device/device_add.
8ac25c84
MA
880#
881# Since: 2.7
882##
883{ 'struct': 'CpuInstanceProperties',
884 'data': { '*node-id': 'int',
885 '*socket-id': 'int',
176d2cda 886 '*die-id': 'int',
1dcf7001 887 '*cluster-id': 'int',
8ac25c84
MA
888 '*core-id': 'int',
889 '*thread-id': 'int'
890 }
891}
892
893##
894# @HotpluggableCPU:
895#
896# @type: CPU object type for usage with device_add command
897# @props: list of properties to be used for hotplugging CPU
898# @vcpus-count: number of logical VCPU threads @HotpluggableCPU provides
899# @qom-path: link to existing CPU object if CPU is present or
900# omitted if CPU is not present.
901#
902# Since: 2.7
903##
904{ 'struct': 'HotpluggableCPU',
905 'data': { 'type': 'str',
906 'vcpus-count': 'int',
907 'props': 'CpuInstanceProperties',
908 '*qom-path': 'str'
909 }
910}
911
912##
913# @query-hotpluggable-cpus:
914#
915# TODO: Better documentation; currently there is none.
916#
917# Returns: a list of HotpluggableCPU objects.
918#
919# Since: 2.7
920#
921# Example:
922#
923# For pseries machine type started with -smp 2,cores=2,maxcpus=4 -cpu POWER8:
924#
925# -> { "execute": "query-hotpluggable-cpus" }
926# <- {"return": [
927# { "props": { "core": 8 }, "type": "POWER8-spapr-cpu-core",
928# "vcpus-count": 1 },
929# { "props": { "core": 0 }, "type": "POWER8-spapr-cpu-core",
930# "vcpus-count": 1, "qom-path": "/machine/unattached/device[0]"}
931# ]}'
932#
933# For pc machine type started with -smp 1,maxcpus=2:
934#
935# -> { "execute": "query-hotpluggable-cpus" }
936# <- {"return": [
937# {
938# "type": "qemu64-x86_64-cpu", "vcpus-count": 1,
939# "props": {"core-id": 0, "socket-id": 1, "thread-id": 0}
940# },
941# {
942# "qom-path": "/machine/unattached/device[0]",
943# "type": "qemu64-x86_64-cpu", "vcpus-count": 1,
944# "props": {"core-id": 0, "socket-id": 0, "thread-id": 0}
945# }
946# ]}
947#
948# For s390x-virtio-ccw machine type started with -smp 1,maxcpus=2 -cpu qemu
949# (Since: 2.11):
950#
951# -> { "execute": "query-hotpluggable-cpus" }
952# <- {"return": [
953# {
954# "type": "qemu-s390x-cpu", "vcpus-count": 1,
955# "props": { "core-id": 1 }
956# },
957# {
958# "qom-path": "/machine/unattached/device[0]",
959# "type": "qemu-s390x-cpu", "vcpus-count": 1,
960# "props": { "core-id": 0 }
961# }
962# ]}
963#
964##
965{ 'command': 'query-hotpluggable-cpus', 'returns': ['HotpluggableCPU'],
966 'allow-preconfig': true }
967
968##
969# @set-numa-node:
970#
971# Runtime equivalent of '-numa' CLI option, available at
972# preconfigure stage to configure numa mapping before initializing
973# machine.
974#
433a4fdc 975# Since: 3.0
8ac25c84
MA
976##
977{ 'command': 'set-numa-node', 'boxed': true,
978 'data': 'NumaOptions',
979 'allow-preconfig': true
980}
a83e24ba
PMD
981
982##
983# @balloon:
984#
985# Request the balloon driver to change its balloon size.
986#
826bd069 987# @value: the target logical size of the VM in bytes.
a83e24ba 988# We can deduce the size of the balloon using this formula:
826bd069 989#
a83e24ba 990# logical_vm_size = vm_ram_size - balloon_size
826bd069 991#
a83e24ba
PMD
992# From it we have: balloon_size = vm_ram_size - @value
993#
994# Returns: - Nothing on success
995# - If the balloon driver is enabled but not functional because the KVM
996# kernel module cannot support it, KvmMissingCap
997# - If no balloon device is present, DeviceNotActive
998#
999# Notes: This command just issues a request to the guest. When it returns,
1000# the balloon size may not have changed. A guest can change the balloon
1001# size independent of this command.
1002#
9bc6e893 1003# Since: 0.14
a83e24ba
PMD
1004#
1005# Example:
1006#
1007# -> { "execute": "balloon", "arguments": { "value": 536870912 } }
1008# <- { "return": {} }
1009#
1010# With a 2.5GiB guest this command inflated the ballon to 3GiB.
1011#
1012##
1013{ 'command': 'balloon', 'data': {'value': 'int'} }
1014
1015##
1016# @BalloonInfo:
1017#
1018# Information about the guest balloon device.
1019#
1020# @actual: the logical size of the VM in bytes
1021# Formula used: logical_vm_size = vm_ram_size - balloon_size
1022#
9bc6e893 1023# Since: 0.14
a83e24ba
PMD
1024#
1025##
1026{ 'struct': 'BalloonInfo', 'data': {'actual': 'int' } }
1027
1028##
1029# @query-balloon:
1030#
1031# Return information about the balloon device.
1032#
1033# Returns: - @BalloonInfo on success
1034# - If the balloon driver is enabled but not functional because the KVM
1035# kernel module cannot support it, KvmMissingCap
1036# - If no balloon device is present, DeviceNotActive
1037#
9bc6e893 1038# Since: 0.14
a83e24ba
PMD
1039#
1040# Example:
1041#
1042# -> { "execute": "query-balloon" }
1043# <- { "return": {
1044# "actual": 1073741824,
1045# }
1046# }
1047#
1048##
1049{ 'command': 'query-balloon', 'returns': 'BalloonInfo' }
1050
1051##
1052# @BALLOON_CHANGE:
1053#
1054# Emitted when the guest changes the actual BALLOON level. This value is
1055# equivalent to the @actual field return by the 'query-balloon' command
1056#
1057# @actual: the logical size of the VM in bytes
1058# Formula used: logical_vm_size = vm_ram_size - balloon_size
1059#
1060# Note: this event is rate-limited.
1061#
1062# Since: 1.2
1063#
1064# Example:
1065#
1066# <- { "event": "BALLOON_CHANGE",
1067# "data": { "actual": 944766976 },
1068# "timestamp": { "seconds": 1267020223, "microseconds": 435656 } }
1069#
1070##
1071{ 'event': 'BALLOON_CHANGE',
1072 'data': { 'actual': 'int' } }
b495ec6c
PMD
1073
1074##
1075# @MemoryInfo:
1076#
1077# Actual memory information in bytes.
1078#
1079# @base-memory: size of "base" memory specified with command line
1080# option -m.
1081#
1082# @plugged-memory: size of memory that can be hot-unplugged. This field
1083# is omitted if target doesn't support memory hotplug
1084# (i.e. CONFIG_MEM_DEVICE not defined at build time).
1085#
9bc6e893 1086# Since: 2.11
b495ec6c
PMD
1087##
1088{ 'struct': 'MemoryInfo',
1089 'data' : { 'base-memory': 'size', '*plugged-memory': 'size' } }
1090
1091##
1092# @query-memory-size-summary:
1093#
1094# Return the amount of initially allocated and present hotpluggable (if
1095# enabled) memory in bytes.
1096#
1097# Example:
1098#
1099# -> { "execute": "query-memory-size-summary" }
1100# <- { "return": { "base-memory": 4294967296, "plugged-memory": 0 } }
1101#
9bc6e893 1102# Since: 2.11
b495ec6c
PMD
1103##
1104{ 'command': 'query-memory-size-summary', 'returns': 'MemoryInfo' }
1105
1106##
1107# @PCDIMMDeviceInfo:
1108#
1109# PCDIMMDevice state information
1110#
1111# @id: device's ID
1112#
1113# @addr: physical address, where device is mapped
1114#
1115# @size: size of memory that the device provides
1116#
1117# @slot: slot number at which device is plugged in
1118#
1119# @node: NUMA node number where device is plugged in
1120#
1121# @memdev: memory backend linked with device
1122#
1123# @hotplugged: true if device was hotplugged
1124#
1125# @hotpluggable: true if device if could be added/removed while machine is running
1126#
1127# Since: 2.1
1128##
1129{ 'struct': 'PCDIMMDeviceInfo',
1130 'data': { '*id': 'str',
1131 'addr': 'int',
1132 'size': 'int',
1133 'slot': 'int',
1134 'node': 'int',
1135 'memdev': 'str',
1136 'hotplugged': 'bool',
1137 'hotpluggable': 'bool'
1138 }
1139}
1140
1141##
1142# @VirtioPMEMDeviceInfo:
1143#
1144# VirtioPMEM state information
1145#
1146# @id: device's ID
1147#
1148# @memaddr: physical address in memory, where device is mapped
1149#
1150# @size: size of memory that the device provides
1151#
1152# @memdev: memory backend linked with device
1153#
1154# Since: 4.1
1155##
1156{ 'struct': 'VirtioPMEMDeviceInfo',
1157 'data': { '*id': 'str',
1158 'memaddr': 'size',
1159 'size': 'size',
1160 'memdev': 'str'
1161 }
1162}
1163
1164##
1165# @VirtioMEMDeviceInfo:
1166#
1167# VirtioMEMDevice state information
1168#
1169# @id: device's ID
1170#
1171# @memaddr: physical address in memory, where device is mapped
1172#
1173# @requested-size: the user requested size of the device
1174#
1175# @size: the (current) size of memory that the device provides
1176#
1177# @max-size: the maximum size of memory that the device can provide
1178#
1179# @block-size: the block size of memory that the device provides
1180#
1181# @node: NUMA node number where device is assigned to
1182#
1183# @memdev: memory backend linked with the region
1184#
1185# Since: 5.1
1186##
1187{ 'struct': 'VirtioMEMDeviceInfo',
1188 'data': { '*id': 'str',
1189 'memaddr': 'size',
1190 'requested-size': 'size',
1191 'size': 'size',
1192 'max-size': 'size',
1193 'block-size': 'size',
1194 'node': 'int',
1195 'memdev': 'str'
1196 }
1197}
1198
a7c565a9
YZ
1199##
1200# @SgxEPCDeviceInfo:
1201#
1202# Sgx EPC state information
1203#
1204# @id: device's ID
1205#
1206# @memaddr: physical address in memory, where device is mapped
1207#
1208# @size: size of memory that the device provides
1209#
1210# @memdev: memory backend linked with device
1211#
a66bd91f 1212# @node: the numa node (Since: 7.0)
11058123 1213#
a7c565a9
YZ
1214# Since: 6.2
1215##
1216{ 'struct': 'SgxEPCDeviceInfo',
1217 'data': { '*id': 'str',
1218 'memaddr': 'size',
1219 'size': 'size',
11058123 1220 'node': 'int',
a7c565a9
YZ
1221 'memdev': 'str'
1222 }
1223}
1224
db6a252b
MA
1225##
1226# @MemoryDeviceInfoKind:
1227#
1228# Since: 2.1
1229##
1230{ 'enum': 'MemoryDeviceInfoKind',
a7c565a9 1231 'data': [ 'dimm', 'nvdimm', 'virtio-pmem', 'virtio-mem', 'sgx-epc' ] }
db6a252b
MA
1232
1233##
1234# @PCDIMMDeviceInfoWrapper:
1235#
1236# Since: 2.1
1237##
1238{ 'struct': 'PCDIMMDeviceInfoWrapper',
1239 'data': { 'data': 'PCDIMMDeviceInfo' } }
1240
1241##
1242# @VirtioPMEMDeviceInfoWrapper:
1243#
1244# Since: 2.1
1245##
1246{ 'struct': 'VirtioPMEMDeviceInfoWrapper',
1247 'data': { 'data': 'VirtioPMEMDeviceInfo' } }
1248
1249##
1250# @VirtioMEMDeviceInfoWrapper:
1251#
1252# Since: 2.1
1253##
1254{ 'struct': 'VirtioMEMDeviceInfoWrapper',
1255 'data': { 'data': 'VirtioMEMDeviceInfo' } }
1256
a7c565a9
YZ
1257##
1258# @SgxEPCDeviceInfoWrapper:
1259#
1260# Since: 6.2
1261##
1262{ 'struct': 'SgxEPCDeviceInfoWrapper',
1263 'data': { 'data': 'SgxEPCDeviceInfo' } }
1264
b495ec6c
PMD
1265##
1266# @MemoryDeviceInfo:
1267#
1268# Union containing information about a memory device
1269#
1270# nvdimm is included since 2.12. virtio-pmem is included since 4.1.
a7c565a9 1271# virtio-mem is included since 5.1. sgx-epc is included since 6.2.
b495ec6c
PMD
1272#
1273# Since: 2.1
1274##
1275{ 'union': 'MemoryDeviceInfo',
db6a252b
MA
1276 'base': { 'type': 'MemoryDeviceInfoKind' },
1277 'discriminator': 'type',
1278 'data': { 'dimm': 'PCDIMMDeviceInfoWrapper',
1279 'nvdimm': 'PCDIMMDeviceInfoWrapper',
1280 'virtio-pmem': 'VirtioPMEMDeviceInfoWrapper',
a7c565a9
YZ
1281 'virtio-mem': 'VirtioMEMDeviceInfoWrapper',
1282 'sgx-epc': 'SgxEPCDeviceInfoWrapper'
b495ec6c
PMD
1283 }
1284}
1285
dfce81f1
SC
1286##
1287# @SgxEPC:
1288#
1289# Sgx EPC cmdline information
1290#
1291# @memdev: memory backend linked with device
1292#
a66bd91f 1293# @node: the numa node (Since: 7.0)
11058123 1294#
dfce81f1
SC
1295# Since: 6.2
1296##
1297{ 'struct': 'SgxEPC',
11058123
YZ
1298 'data': { 'memdev': 'str',
1299 'node': 'int'
1300 }
1301}
dfce81f1
SC
1302
1303##
1304# @SgxEPCProperties:
1305#
1306# SGX properties of machine types.
1307#
1308# @sgx-epc: list of ids of memory-backend-epc objects.
1309#
1310# Since: 6.2
1311##
1312{ 'struct': 'SgxEPCProperties',
1313 'data': { 'sgx-epc': ['SgxEPC'] }
1314}
1315
b495ec6c
PMD
1316##
1317# @query-memory-devices:
1318#
1319# Lists available memory devices and their state
1320#
1321# Since: 2.1
1322#
1323# Example:
1324#
1325# -> { "execute": "query-memory-devices" }
1326# <- { "return": [ { "data":
1327# { "addr": 5368709120,
1328# "hotpluggable": true,
1329# "hotplugged": true,
1330# "id": "d1",
1331# "memdev": "/objects/memX",
1332# "node": 0,
1333# "size": 1073741824,
1334# "slot": 0},
1335# "type": "dimm"
1336# } ] }
1337#
1338##
1339{ 'command': 'query-memory-devices', 'returns': ['MemoryDeviceInfo'] }
1340
1341##
1342# @MEMORY_DEVICE_SIZE_CHANGE:
1343#
1344# Emitted when the size of a memory device changes. Only emitted for memory
1345# devices that can actually change the size (e.g., virtio-mem due to guest
1346# action).
1347#
1348# @id: device's ID
d89dd28f 1349#
b495ec6c
PMD
1350# @size: the new size of memory that the device provides
1351#
d89dd28f
DH
1352# @qom-path: path to the device object in the QOM tree (since 6.2)
1353#
b495ec6c
PMD
1354# Note: this event is rate-limited.
1355#
1356# Since: 5.1
1357#
1358# Example:
1359#
1360# <- { "event": "MEMORY_DEVICE_SIZE_CHANGE",
dba673b9
VT
1361# "data": { "id": "vm0", "size": 1073741824,
1362# "qom-path": "/machine/unattached/device[2]" },
b495ec6c
PMD
1363# "timestamp": { "seconds": 1588168529, "microseconds": 201316 } }
1364#
1365##
1366{ 'event': 'MEMORY_DEVICE_SIZE_CHANGE',
d89dd28f 1367 'data': { '*id': 'str', 'size': 'size', 'qom-path' : 'str'} }
b495ec6c
PMD
1368
1369
1370##
1371# @MEM_UNPLUG_ERROR:
1372#
1373# Emitted when memory hot unplug error occurs.
1374#
1375# @device: device name
1376#
1377# @msg: Informative message
1378#
d43f1670
DHB
1379# Features:
1380# @deprecated: This event is deprecated. Use @DEVICE_UNPLUG_GUEST_ERROR
1381# instead.
1382#
b495ec6c
PMD
1383# Since: 2.4
1384#
1385# Example:
1386#
1387# <- { "event": "MEM_UNPLUG_ERROR"
1388# "data": { "device": "dimm1",
1389# "msg": "acpi: device unplug for unsupported device"
1390# },
1391# "timestamp": { "seconds": 1265044230, "microseconds": 450486 } }
1392#
1393##
1394{ 'event': 'MEM_UNPLUG_ERROR',
d43f1670
DHB
1395 'data': { 'device': 'str', 'msg': 'str' },
1396 'features': ['deprecated'] }
1e63fe68 1397
97ec4d21
PB
1398##
1399# @BootConfiguration:
1400#
1401# Schema for virtual machine boot configuration.
1402#
1403# @order: Boot order (a=floppy, c=hard disk, d=CD-ROM, n=network)
1404#
1405# @once: Boot order to apply on first boot
1406#
1407# @menu: Whether to show a boot menu
1408#
1409# @splash: The name of the file to be passed to the firmware as logo picture, if @menu is true.
1410#
1411# @splash-time: How long to show the logo picture, in milliseconds
1412#
1413# @reboot-timeout: Timeout before guest reboots after boot fails
1414#
1415# @strict: Whether to attempt booting from devices not included in the boot order
1416#
1417# Since: 7.1
1418##
1419{ 'struct': 'BootConfiguration', 'data': {
1420 '*order': 'str',
1421 '*once': 'str',
1422 '*menu': 'bool',
1423 '*splash': 'str',
1424 '*splash-time': 'int',
1425 '*reboot-timeout': 'int',
1426 '*strict': 'bool' } }
1427
1e63fe68
PB
1428##
1429# @SMPConfiguration:
1430#
0572edc5 1431# Schema for CPU topology configuration. A missing value lets
1e63fe68
PB
1432# QEMU figure out a suitable value based on the ones that are provided.
1433#
1434# @cpus: number of virtual CPUs in the virtual machine
1435#
1436# @sockets: number of sockets in the CPU topology
1437#
1438# @dies: number of dies per socket in the CPU topology
1439#
864c3b5c
YW
1440# @clusters: number of clusters per die in the CPU topology (since 7.0)
1441#
1442# @cores: number of cores per cluster in the CPU topology
1e63fe68
PB
1443#
1444# @threads: number of threads per core in the CPU topology
1445#
1446# @maxcpus: maximum number of hotpluggable virtual CPUs in the virtual machine
1447#
1448# Since: 6.1
1449##
1450{ 'struct': 'SMPConfiguration', 'data': {
1451 '*cpus': 'int',
1452 '*sockets': 'int',
1453 '*dies': 'int',
864c3b5c 1454 '*clusters': 'int',
1e63fe68
PB
1455 '*cores': 'int',
1456 '*threads': 'int',
1457 '*maxcpus': 'int' } }
dd98234c 1458
91f2fa70
DB
1459##
1460# @x-query-irq:
1461#
1462# Query interrupt statistics
1463#
8c0bae5a
MA
1464# Features:
1465# @unstable: This command is meant for debugging.
1466#
91f2fa70
DB
1467# Returns: interrupt statistics
1468#
1469# Since: 6.2
1470##
1471{ 'command': 'x-query-irq',
8c0bae5a
MA
1472 'returns': 'HumanReadableText',
1473 'features': [ 'unstable' ] }
91f2fa70 1474
3a841ab5
DB
1475##
1476# @x-query-jit:
1477#
1478# Query TCG compiler statistics
1479#
8c0bae5a
MA
1480# Features:
1481# @unstable: This command is meant for debugging.
1482#
3a841ab5
DB
1483# Returns: TCG compiler statistics
1484#
1485# Since: 6.2
1486##
1487{ 'command': 'x-query-jit',
1488 'returns': 'HumanReadableText',
8c0bae5a
MA
1489 'if': 'CONFIG_TCG',
1490 'features': [ 'unstable' ] }
3a841ab5 1491
1b8ae799
DB
1492##
1493# @x-query-numa:
1494#
1495# Query NUMA topology information
1496#
8c0bae5a
MA
1497# Features:
1498# @unstable: This command is meant for debugging.
1499#
1b8ae799
DB
1500# Returns: topology information
1501#
1502# Since: 6.2
1503##
1504{ 'command': 'x-query-numa',
8c0bae5a
MA
1505 'returns': 'HumanReadableText',
1506 'features': [ 'unstable' ] }
1b8ae799 1507
b6a7f3e0
DB
1508##
1509# @x-query-opcount:
1510#
1511# Query TCG opcode counters
1512#
8c0bae5a
MA
1513# Features:
1514# @unstable: This command is meant for debugging.
1515#
b6a7f3e0
DB
1516# Returns: TCG opcode counters
1517#
1518# Since: 6.2
1519##
1520{ 'command': 'x-query-opcount',
1521 'returns': 'HumanReadableText',
8c0bae5a
MA
1522 'if': 'CONFIG_TCG',
1523 'features': [ 'unstable' ] }
b6a7f3e0 1524
37087fde
DB
1525##
1526# @x-query-profile:
1527#
1528# Query TCG profiling information
1529#
8c0bae5a
MA
1530# Features:
1531# @unstable: This command is meant for debugging.
1532#
37087fde
DB
1533# Returns: profile information
1534#
1535# Since: 6.2
1536##
1537{ 'command': 'x-query-profile',
8c0bae5a 1538 'returns': 'HumanReadableText',
92e28c03 1539 'if': 'CONFIG_TCG',
8c0bae5a 1540 'features': [ 'unstable' ] }
37087fde 1541
ca411b7c
DB
1542##
1543# @x-query-ramblock:
1544#
1545# Query system ramblock information
1546#
8c0bae5a
MA
1547# Features:
1548# @unstable: This command is meant for debugging.
1549#
ca411b7c
DB
1550# Returns: system ramblock information
1551#
1552# Since: 6.2
1553##
1554{ 'command': 'x-query-ramblock',
8c0bae5a
MA
1555 'returns': 'HumanReadableText',
1556 'features': [ 'unstable' ] }
ca411b7c 1557
8dbbca5c
DB
1558##
1559# @x-query-rdma:
1560#
1561# Query RDMA state
1562#
8c0bae5a
MA
1563# Features:
1564# @unstable: This command is meant for debugging.
1565#
8dbbca5c
DB
1566# Returns: RDMA state
1567#
1568# Since: 6.2
1569##
1570{ 'command': 'x-query-rdma',
8c0bae5a
MA
1571 'returns': 'HumanReadableText',
1572 'features': [ 'unstable' ] }
8dbbca5c 1573
dd98234c
DB
1574##
1575# @x-query-roms:
1576#
1577# Query information on the registered ROMS
1578#
8c0bae5a
MA
1579# Features:
1580# @unstable: This command is meant for debugging.
1581#
dd98234c
DB
1582# Returns: registered ROMs
1583#
1584# Since: 6.2
1585##
1586{ 'command': 'x-query-roms',
8c0bae5a
MA
1587 'returns': 'HumanReadableText',
1588 'features': [ 'unstable' ] }
fc309207
DB
1589
1590##
1591# @x-query-usb:
1592#
1593# Query information on the USB devices
1594#
8c0bae5a
MA
1595# Features:
1596# @unstable: This command is meant for debugging.
1597#
fc309207
DB
1598# Returns: USB device information
1599#
1600# Since: 6.2
1601##
1602{ 'command': 'x-query-usb',
8c0bae5a
MA
1603 'returns': 'HumanReadableText',
1604 'features': [ 'unstable' ] }
bdf54a9a
EH
1605
1606##
1607# @SmbiosEntryPointType:
1608#
1609# @32: SMBIOS version 2.1 (32-bit) Entry Point
1610#
1611# @64: SMBIOS version 3.0 (64-bit) Entry Point
1612#
1613# Since: 7.0
1614##
1615{ 'enum': 'SmbiosEntryPointType',
1616 'data': [ '32', '64' ] }
ce9d03fb
PB
1617
1618##
1619# @MemorySizeConfiguration:
1620#
1621# Schema for memory size configuration.
1622#
1623# @size: memory size in bytes
1624#
1625# @max-size: maximum hotpluggable memory size in bytes
1626#
1627# @slots: number of available memory slots for hotplug
1628#
1629# Since: 7.1
1630##
1631{ 'struct': 'MemorySizeConfiguration', 'data': {
1632 '*size': 'size',
1633 '*max-size': 'size',
1634 '*slots': 'uint64' } }