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