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