master
json 1,455 lines 43.1 KB
Raw
1 # -*- Mode: Python -*-
2 # vim: filetype=python
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 { 'include': 'authz.json' }
8 { 'include': 'block-core.json' }
9 { 'include': 'common.json' }
10 { 'include': 'crypto.json' }
11
12 ##
13 # ***********************
14 # QEMU Object Model (QOM)
15 # ***********************
16 ##
17
18 ##
19 # @ObjectPropertyInfo:
20 #
21 # @name: the name of the property
22 #
23 # @type: the type of the property. This will typically come in one of
24 # four forms:
25 #
26 # 1) A primitive type such as 'u8', 'u16', 'bool', 'str', or
27 # 'double'. These types are mapped to the appropriate JSON
28 # type.
29 #
30 # 2) A child type in the form 'child<subtype>' where subtype is a
31 # qdev device type name. Child properties create the
32 # composition tree.
33 #
34 # 3) A link type in the form 'link<subtype>' where subtype is a
35 # qdev device type name. Link properties form the device model
36 # graph.
37 #
38 # @description: if specified, the description of the property.
39 #
40 # @default-value: the default value, if any (since 5.0)
41 #
42 # Since: 1.2
43 ##
44 { 'struct': 'ObjectPropertyInfo',
45 'data': { 'name': 'str',
46 'type': 'str',
47 '*description': 'str',
48 '*default-value': 'any' } }
49
50 ##
51 # @ObjectPropertyValue:
52 #
53 # @name: the name of the property.
54 #
55 # @type: the type of the property, as described in
56 # `ObjectPropertyInfo`.
57 #
58 # @value: the value of the property. Absent when the property cannot
59 # be read.
60 #
61 # Since: 10.1
62 ##
63 { 'struct': 'ObjectPropertyValue',
64 'data': { 'name': 'str',
65 'type': 'str',
66 '*value': 'any' } }
67
68 ##
69 # @ObjectPropertiesValues:
70 #
71 # @properties: a list of properties.
72 #
73 # Since: 10.1
74 ##
75 { 'struct': 'ObjectPropertiesValues',
76 'data': { 'properties': [ 'ObjectPropertyValue' ] }}
77
78 ##
79 # @qom-list:
80 #
81 # List properties of a object given a path in the object model.
82 #
83 # @path: the path within the object model. See `qom-get` for a
84 # description of this parameter.
85 #
86 # Returns: a list that describe the properties of the object.
87 #
88 # Since: 1.2
89 #
90 # .. qmp-example::
91 #
92 # -> { "execute": "qom-list",
93 # "arguments": { "path": "/chardevs" } }
94 # <- { "return": [ { "name": "type", "type": "string" },
95 # { "name": "parallel0", "type": "child<chardev-vc>" },
96 # { "name": "serial0", "type": "child<chardev-vc>" },
97 # { "name": "mon0", "type": "child<chardev-stdio>" } ] }
98 ##
99 { 'command': 'qom-list',
100 'data': { 'path': 'str' },
101 'returns': [ 'ObjectPropertyInfo' ],
102 'allow-preconfig': true }
103
104 ##
105 # @qom-get:
106 #
107 # Get a property value.
108 #
109 # @path: The path within the object model. There are two forms of
110 # supported paths--absolute and partial paths.
111 #
112 # Absolute paths are derived from the root object and can follow
113 # child<> or link<> properties. Since they can follow link<>
114 # properties, they can be arbitrarily long. Absolute paths look
115 # like absolute filenames and are prefixed with a leading slash.
116 #
117 # Partial paths look like relative filenames. They do not begin
118 # with a prefix. The matching rules for partial paths are subtle
119 # but designed to make specifying objects easy. At each level of
120 # the composition tree, the partial path is matched as an absolute
121 # path. The first match is not returned. At least two matches
122 # are searched for. A successful result is only returned if only
123 # one match is found. If more than one match is found, a flag is
124 # return to indicate that the match was ambiguous.
125 #
126 # @property: The property name to read
127 #
128 # Returns: The property value. The type depends on the property type.
129 # child<> and link<> properties are returned as #str pathnames.
130 # All integer property types (u8, u16, etc) are returned as #int.
131 #
132 # Since: 1.2
133 #
134 # .. qmp-example::
135 # :title: Use absolute path
136 #
137 # -> { "execute": "qom-get",
138 # "arguments": { "path": "/machine/unattached/device[0]",
139 # "property": "hotplugged" } }
140 # <- { "return": false }
141 #
142 # .. qmp-example::
143 # :title: Use partial path
144 #
145 # -> { "execute": "qom-get",
146 # "arguments": { "path": "unattached/sysbus",
147 # "property": "type" } }
148 # <- { "return": "System" }
149 ##
150 { 'command': 'qom-get',
151 'data': { 'path': 'str', 'property': 'str' },
152 'returns': 'any',
153 'allow-preconfig': true }
154
155 ##
156 # @qom-list-get:
157 #
158 # List properties and their values for each object path in the input
159 # list.
160 #
161 # @paths: The absolute or partial path for each object, as described
162 # in `qom-get`.
163 #
164 # Errors:
165 # - If any path is not valid or is ambiguous
166 #
167 # Returns: A list where each element is the result for the
168 # corresponding element of @paths.
169 #
170 # Since: 10.1
171 ##
172 { 'command': 'qom-list-get',
173 'data': { 'paths': [ 'str' ] },
174 'returns': [ 'ObjectPropertiesValues' ],
175 'allow-preconfig': true }
176
177 ##
178 # @qom-set:
179 #
180 # Set a property value.
181 #
182 # @path: see `qom-get` for a description of this parameter
183 #
184 # @property: the property name to set
185 #
186 # @value: a value who's type is appropriate for the property type.
187 # See `qom-get` for a description of type mapping.
188 #
189 # Since: 1.2
190 #
191 # .. qmp-example::
192 #
193 # -> { "execute": "qom-set",
194 # "arguments": { "path": "/machine",
195 # "property": "graphics",
196 # "value": false } }
197 # <- { "return": {} }
198 ##
199 { 'command': 'qom-set',
200 'data': { 'path': 'str', 'property': 'str', 'value': 'any' },
201 'allow-preconfig': true }
202
203 ##
204 # @ObjectTypeInfo:
205 #
206 # This structure describes a search result from `qom-list-types`
207 #
208 # @name: the type name found in the search
209 #
210 # @abstract: the type is abstract and can't be directly instantiated.
211 # Omitted if false. (since 2.10)
212 #
213 # @parent: Name of parent type, if any (since 2.10)
214 #
215 # Since: 1.1
216 ##
217 { 'struct': 'ObjectTypeInfo',
218 'data': { 'name': 'str', '*abstract': 'bool', '*parent': 'str' } }
219
220 ##
221 # @qom-list-types:
222 #
223 # Return a list of types given search parameters.
224 #
225 # @implements: if specified, only return types that implement this
226 # type name
227 #
228 # @abstract: if true, include abstract types in the results
229 #
230 # Returns: a list of types, or an empty list if no results are found
231 #
232 # Since: 1.1
233 ##
234 { 'command': 'qom-list-types',
235 'data': { '*implements': 'str', '*abstract': 'bool' },
236 'returns': [ 'ObjectTypeInfo' ],
237 'allow-preconfig': true }
238
239 ##
240 # @qom-list-properties:
241 #
242 # List properties associated with a QOM object.
243 #
244 # @typename: the type name of an object
245 #
246 # .. note:: Objects can create properties at runtime, for example to
247 # describe links between different devices and/or objects. These
248 # properties are not included in the output of this command.
249 #
250 # Returns: a list describing object properties
251 #
252 # Since: 2.12
253 ##
254 { 'command': 'qom-list-properties',
255 'data': { 'typename': 'str'},
256 'returns': [ 'ObjectPropertyInfo' ],
257 'allow-preconfig': true }
258
259 ##
260 # @CanHostSocketcanProperties:
261 #
262 # Properties for can-host-socketcan objects.
263 #
264 # @if: interface name of the host system CAN bus to connect to
265 #
266 # @canbus: object ID of the can-bus object to connect to the host
267 # interface
268 #
269 # Since: 2.12
270 ##
271 { 'struct': 'CanHostSocketcanProperties',
272 'data': { 'if': 'str',
273 'canbus': 'str' },
274 'if': 'CONFIG_LINUX' }
275
276 ##
277 # @ColoCompareProperties:
278 #
279 # Properties for colo-compare objects.
280 #
281 # @primary_in: name of the character device backend to use for the
282 # primary input (incoming packets are redirected to @outdev)
283 #
284 # @secondary_in: name of the character device backend to use for
285 # secondary input (incoming packets are only compared to the input
286 # on @primary_in and then dropped)
287 #
288 # @outdev: name of the character device backend to use for output
289 #
290 # @iothread: name of the iothread to run in
291 #
292 # @notify_dev: name of the character device backend to be used to
293 # communicate with the remote colo-frame (only for Xen COLO)
294 #
295 # @compare_timeout: the maximum time to hold a packet from @primary_in
296 # for comparison with an incoming packet on @secondary_in in
297 # milliseconds (default: 3000)
298 #
299 # @expired_scan_cycle: the interval at which colo-compare checks
300 # whether packets from @primary have timed out, in milliseconds
301 # (default: 3000)
302 #
303 # @max_queue_size: the maximum number of packets to keep in the queue
304 # for comparing with incoming packets from @secondary_in. If the
305 # queue is full and additional packets are received, the
306 # additional packets are dropped. (default: 1024)
307 #
308 # @vnet_hdr_support: if true, vnet header support is enabled
309 # (default: false)
310 #
311 # Since: 2.8
312 ##
313 { 'struct': 'ColoCompareProperties',
314 'data': { 'primary_in': 'str',
315 'secondary_in': 'str',
316 'outdev': 'str',
317 'iothread': 'str',
318 '*notify_dev': 'str',
319 '*compare_timeout': 'uint64',
320 '*expired_scan_cycle': 'uint32',
321 '*max_queue_size': 'uint32',
322 '*vnet_hdr_support': 'bool' } }
323
324 ##
325 # @CryptodevBackendProperties:
326 #
327 # Properties for cryptodev-backend and cryptodev-backend-builtin
328 # objects.
329 #
330 # @queues: the number of queues for the cryptodev backend. Ignored
331 # for cryptodev-backend and must be 1 for
332 # cryptodev-backend-builtin. (default: 1)
333 #
334 # @throttle-bps: limit total bytes per second (Since 8.0)
335 #
336 # @throttle-ops: limit total operations per second (Since 8.0)
337 #
338 # Since: 2.8
339 ##
340 { 'struct': 'CryptodevBackendProperties',
341 'data': { '*queues': 'uint32',
342 '*throttle-bps': 'uint64',
343 '*throttle-ops': 'uint64' } }
344
345 ##
346 # @CryptodevVhostUserProperties:
347 #
348 # Properties for cryptodev-vhost-user objects.
349 #
350 # @chardev: the name of a Unix domain socket character device that
351 # connects to the vhost-user server
352 #
353 # Since: 2.12
354 ##
355 { 'struct': 'CryptodevVhostUserProperties',
356 'base': 'CryptodevBackendProperties',
357 'data': { 'chardev': 'str' },
358 'if': 'CONFIG_VHOST_CRYPTO' }
359
360 ##
361 # @DBusVMStateProperties:
362 #
363 # Properties for dbus-vmstate objects.
364 #
365 # @addr: the name of the DBus bus to connect to
366 #
367 # @id-list: a comma separated list of DBus IDs of helpers whose data
368 # should be included in the VM state on migration
369 #
370 # Since: 5.0
371 ##
372 { 'struct': 'DBusVMStateProperties',
373 'data': { 'addr': 'str' ,
374 '*id-list': 'str' } }
375
376 ##
377 # @NetfilterInsert:
378 #
379 # Indicates where to insert a netfilter relative to a given other
380 # filter.
381 #
382 # @before: insert before the specified filter
383 #
384 # @behind: insert behind the specified filter
385 #
386 # Since: 5.0
387 ##
388 { 'enum': 'NetfilterInsert',
389 'data': [ 'before', 'behind' ] }
390
391 ##
392 # @NetfilterProperties:
393 #
394 # Properties for objects of classes derived from netfilter.
395 #
396 # @netdev: id of the network device backend to filter
397 #
398 # @queue: indicates which queue(s) to filter (default: all)
399 #
400 # @status: indicates whether the filter is enabled ("on") or disabled
401 # ("off") (default: "on")
402 #
403 # @position: specifies where the filter should be inserted in the
404 # filter list. "head" means the filter is inserted at the head of
405 # the filter list, before any existing filters. "tail" means the
406 # filter is inserted at the tail of the filter list, behind any
407 # existing filters (default). "id=<id>" means the filter is
408 # inserted before or behind the filter specified by <id>,
409 # depending on the @insert property. (default: "tail")
410 #
411 # @insert: where to insert the filter relative to the filter given in
412 # @position. Ignored if @position is "head" or "tail".
413 # (default: behind)
414 #
415 # Since: 2.5
416 ##
417 { 'struct': 'NetfilterProperties',
418 'data': { 'netdev': 'str',
419 '*queue': 'NetFilterDirection',
420 '*status': 'str',
421 '*position': 'str',
422 '*insert': 'NetfilterInsert' } }
423
424 ##
425 # @FilterBufferProperties:
426 #
427 # Properties for filter-buffer objects.
428 #
429 # @interval: a non-zero interval in microseconds. All packets
430 # arriving in the given interval are delayed until the end of the
431 # interval.
432 #
433 # Since: 2.5
434 ##
435 { 'struct': 'FilterBufferProperties',
436 'base': 'NetfilterProperties',
437 'data': { 'interval': 'uint32' } }
438
439 ##
440 # @FilterDumpProperties:
441 #
442 # Properties for filter-dump objects.
443 #
444 # @file: the filename where the dumped packets should be stored
445 #
446 # @maxlen: maximum number of bytes in a packet that are stored
447 # (default: 65536)
448 #
449 # Since: 2.5
450 ##
451 { 'struct': 'FilterDumpProperties',
452 'base': 'NetfilterProperties',
453 'data': { 'file': 'str',
454 '*maxlen': 'uint32' } }
455
456 ##
457 # @FilterMirrorProperties:
458 #
459 # Properties for filter-mirror objects.
460 #
461 # @outdev: the name of a character device backend to which all
462 # incoming packets are mirrored
463 #
464 # @vnet_hdr_support: if true, vnet header support is enabled
465 # (default: false)
466 #
467 # Since: 2.6
468 ##
469 { 'struct': 'FilterMirrorProperties',
470 'base': 'NetfilterProperties',
471 'data': { 'outdev': 'str',
472 '*vnet_hdr_support': 'bool' } }
473
474 ##
475 # @FilterRedirectorProperties:
476 #
477 # Properties for filter-redirector objects.
478 #
479 # At least one of @indev or @outdev must be present. If both are
480 # present, they must not refer to the same character device backend.
481 #
482 # @indev: the name of a character device backend from which packets
483 # are received and redirected to the filtered network device
484 #
485 # @outdev: the name of a character device backend to which all
486 # incoming packets are redirected
487 #
488 # @vnet_hdr_support: if true, vnet header support is enabled
489 # (default: false)
490 #
491 # Since: 2.6
492 ##
493 { 'struct': 'FilterRedirectorProperties',
494 'base': 'NetfilterProperties',
495 'data': { '*indev': 'str',
496 '*outdev': 'str',
497 '*vnet_hdr_support': 'bool' } }
498
499 ##
500 # @FilterRewriterProperties:
501 #
502 # Properties for filter-rewriter objects.
503 #
504 # @vnet_hdr_support: if true, vnet header support is enabled
505 # (default: false)
506 #
507 # Since: 2.8
508 ##
509 { 'struct': 'FilterRewriterProperties',
510 'base': 'NetfilterProperties',
511 'data': { '*vnet_hdr_support': 'bool' } }
512
513 ##
514 # @InputBarrierProperties:
515 #
516 # Properties for input-barrier objects.
517 #
518 # @name: the screen name as declared in the screens section of
519 # barrier.conf
520 #
521 # @server: hostname of the Barrier server (default: "localhost")
522 #
523 # @port: TCP port of the Barrier server (default: "24800")
524 #
525 # @x-origin: x coordinate of the leftmost pixel on the guest screen
526 # (default: "0")
527 #
528 # @y-origin: y coordinate of the topmost pixel on the guest screen
529 # (default: "0")
530 #
531 # @width: the width of secondary screen in pixels (default: "1920")
532 #
533 # @height: the height of secondary screen in pixels (default: "1080")
534 #
535 # Since: 4.2
536 ##
537 { 'struct': 'InputBarrierProperties',
538 'data': { 'name': 'str',
539 '*server': 'str',
540 '*port': 'str',
541 '*x-origin': 'str',
542 '*y-origin': 'str',
543 '*width': 'str',
544 '*height': 'str' } }
545
546 ##
547 # @InputLinuxProperties:
548 #
549 # Properties for input-linux objects.
550 #
551 # @evdev: the path of the host evdev device to use
552 #
553 # @grab_all: if true, grab is toggled for all devices (e.g. both
554 # keyboard and mouse) instead of just one device (default: false)
555 #
556 # @repeat: enables auto-repeat events (default: false)
557 #
558 # @grab-toggle: the key or key combination that toggles device grab
559 # (default: ctrl-ctrl)
560 #
561 # Since: 2.6
562 ##
563 { 'struct': 'InputLinuxProperties',
564 'data': { 'evdev': 'str',
565 '*grab_all': 'bool',
566 '*repeat': 'bool',
567 '*grab-toggle': 'GrabToggleKeys' },
568 'if': 'CONFIG_LINUX' }
569
570 ##
571 # @EventLoopBaseProperties:
572 #
573 # Common properties for event loops
574 #
575 # @aio-max-batch: maximum number of requests in a batch for the AIO
576 # engine, 0 means that the engine will use its default.
577 # (default: 0)
578 #
579 # @thread-pool-min: minimum number of threads reserved in the thread
580 # pool (default:0)
581 #
582 # @thread-pool-max: maximum number of threads the thread pool can
583 # contain (default:64)
584 #
585 # Since: 7.1
586 ##
587 { 'struct': 'EventLoopBaseProperties',
588 'data': { '*aio-max-batch': 'int',
589 '*thread-pool-min': 'int',
590 '*thread-pool-max': 'int' } }
591
592 ##
593 # @IothreadProperties:
594 #
595 # Properties for iothread objects.
596 #
597 # @poll-max-ns: the maximum number of nanoseconds to busy wait for
598 # events. 0 means polling is disabled (default: 32768 on POSIX
599 # hosts, 0 otherwise)
600 #
601 # @poll-grow: the multiplier used to increase the polling time when
602 # the algorithm detects it is missing events due to not polling
603 # long enough. 0 selects a default behaviour (default: 0)
604 #
605 # @poll-shrink: the divisor used to decrease the polling time when the
606 # algorithm detects it is spending too long polling without
607 # encountering events. 0 selects a default behaviour (default: 0)
608 #
609 # @poll-weight: the weight factor for adaptive polling. Determines
610 # how much the most recent event interval affects the next
611 # polling duration calculation. If set to 0, the system default
612 # value of 3 is used. Typical values: 1 (high weight on recent
613 # interval), 2-4 (moderate weight on recent interval).
614 # (default: 0) (since 11.1)
615 #
616 # The @aio-max-batch option is available since 6.1.
617 #
618 # Since: 2.0
619 ##
620 { 'struct': 'IothreadProperties',
621 'base': 'EventLoopBaseProperties',
622 'data': { '*poll-max-ns': 'int',
623 '*poll-grow': 'int',
624 '*poll-shrink': 'int',
625 '*poll-weight': 'int' } }
626
627 ##
628 # @MainLoopProperties:
629 #
630 # Properties for the main-loop object.
631 #
632 # Since: 7.1
633 ##
634 { 'struct': 'MainLoopProperties',
635 'base': 'EventLoopBaseProperties',
636 'data': {} }
637
638 ##
639 # @MemoryBackendProperties:
640 #
641 # Properties for objects of classes derived from memory-backend.
642 #
643 # @merge: if true, mark the memory as mergeable (default depends on
644 # the machine type)
645 #
646 # @dump: if true, include the memory in core dumps (default depends on
647 # the machine type)
648 #
649 # @host-nodes: the list of NUMA host nodes to bind the memory to
650 #
651 # @policy: the NUMA policy (default: 'default')
652 #
653 # @prealloc: if true, preallocate memory (default: false)
654 #
655 # @prealloc-threads: number of CPU threads to use for prealloc
656 # (default: 1)
657 #
658 # @prealloc-context: thread context to use for creation of
659 # preallocation threads (default: none) (since 7.2)
660 #
661 # @share: if false, the memory is private to QEMU; if true, it is
662 # shared (default false for backends memory-backend-file and
663 # memory-backend-ram, true for backends memory-backend-epc,
664 # memory-backend-memfd, and memory-backend-shm)
665 #
666 # @reserve: if true, reserve swap space (or huge pages) if applicable
667 # (default: true) (since 6.1)
668 #
669 # @size: size of the memory region in bytes
670 #
671 # @x-use-canonical-path-for-ramblock-id: if true, the canonical path
672 # is used for ramblock-id. Disable this for 4.0 machine types or
673 # older to allow migration with newer QEMU versions.
674 # (default: false generally, but true for machine types <= 4.0)
675 #
676 # .. note:: prealloc=true and reserve=false cannot be set at the same
677 # time. With reserve=true, the behavior depends on the operating
678 # system: for example, Linux will not reserve swap space for shared
679 # file mappings -- "not applicable". In contrast, reserve=false
680 # will bail out if it cannot be configured accordingly.
681 #
682 # Since: 2.1
683 ##
684 { 'struct': 'MemoryBackendProperties',
685 'data': { '*dump': 'bool',
686 '*host-nodes': ['uint16'],
687 '*merge': 'bool',
688 '*policy': 'HostMemPolicy',
689 '*prealloc': 'bool',
690 '*prealloc-threads': 'uint32',
691 '*prealloc-context': 'str',
692 '*share': 'bool',
693 '*reserve': 'bool',
694 'size': 'size',
695 '*x-use-canonical-path-for-ramblock-id': 'bool' } }
696
697 ##
698 # @MemoryBackendFileProperties:
699 #
700 # Properties for memory-backend-file objects.
701 #
702 # @align: the base address alignment when QEMU mmap(2)s @mem-path.
703 # Some backend stores specified by @mem-path require an alignment
704 # different than the default one used by QEMU, e.g. the device DAX
705 # /dev/dax0.0 requires 2M alignment rather than 4K. In such
706 # cases, users can specify the required alignment via this option.
707 # 0 selects a default alignment (currently the page size).
708 # (default: 0)
709 #
710 # @offset: the offset into the target file that the region starts at.
711 # You can use this option to back multiple regions with a single
712 # file. Must be a multiple of the page size.
713 # (default: 0) (since 8.1)
714 #
715 # @discard-data: if true, the file contents can be destroyed when QEMU
716 # exits, to avoid unnecessarily flushing data to the backing file.
717 # Note that @discard-data is only an optimization, and QEMU might
718 # not discard file contents if it aborts unexpectedly or is
719 # terminated using SIGKILL. (default: false)
720 #
721 # @mem-path: the path to either a shared memory or huge page
722 # filesystem mount
723 #
724 # @pmem: specifies whether the backing file specified by @mem-path is
725 # in host persistent memory that can be accessed using the SNIA
726 # NVM programming model (e.g. Intel NVDIMM).
727 #
728 # @readonly: if true, the backing file is opened read-only; if false,
729 # it is opened read-write. (default: false)
730 #
731 # @rom: whether to create Read Only Memory (ROM) that cannot be
732 # modified by the VM. Any write attempts to such ROM will be
733 # denied. Most use cases want writable RAM instead of ROM.
734 # However, selected use cases, like R/O NVDIMMs, can benefit from
735 # ROM. If set to 'on', create ROM; if set to 'off', create
736 # writable RAM; if set to 'auto', the value of the @readonly
737 # property is used. This property is primarily helpful when we
738 # want to have proper RAM in configurations that would
739 # traditionally create ROM before this property was introduced: VM
740 # templating, where we want to open a file readonly (@readonly set
741 # to true) and mark the memory to be private for QEMU (@share set
742 # to false). For this use case, we need writable RAM instead of
743 # ROM, and want to set this property to 'off'. (default: auto,
744 # since 8.2)
745 #
746 # Since: 2.1
747 ##
748 { 'struct': 'MemoryBackendFileProperties',
749 'base': 'MemoryBackendProperties',
750 'data': { '*align': 'size',
751 '*offset': 'size',
752 '*discard-data': 'bool',
753 'mem-path': 'str',
754 '*pmem': { 'type': 'bool', 'if': 'CONFIG_LIBPMEM' },
755 '*readonly': 'bool',
756 '*rom': 'OnOffAuto' } }
757
758 ##
759 # @MemoryBackendMemfdProperties:
760 #
761 # Properties for memory-backend-memfd objects.
762 #
763 # @hugetlb: if true, the file to be created resides in the hugetlbfs
764 # filesystem (default: false)
765 #
766 # @hugetlbsize: the hugetlb page size on systems that support multiple
767 # hugetlb page sizes (it must be a power of 2 value supported by
768 # the system). 0 selects a default page size. This option is
769 # ignored if @hugetlb is false. (default: 0)
770 #
771 # @seal: if true, create a sealed-file, which will block further
772 # resizing of the memory (default: true)
773 #
774 # Since: 2.12
775 ##
776 { 'struct': 'MemoryBackendMemfdProperties',
777 'base': 'MemoryBackendProperties',
778 'data': { '*hugetlb': 'bool',
779 '*hugetlbsize': 'size',
780 '*seal': 'bool' },
781 'if': 'CONFIG_LINUX' }
782
783 ##
784 # @MemoryBackendShmProperties:
785 #
786 # Properties for memory-backend-shm objects.
787 #
788 # This memory backend supports only shared memory, which is the
789 # default.
790 #
791 # Since: 9.1
792 ##
793 { 'struct': 'MemoryBackendShmProperties',
794 'base': 'MemoryBackendProperties',
795 'data': { },
796 'if': 'CONFIG_POSIX' }
797
798 ##
799 # @MemoryBackendEpcProperties:
800 #
801 # Properties for memory-backend-epc objects.
802 #
803 # The @merge boolean option is false by default with epc
804 #
805 # The @dump boolean option is false by default with epc
806 #
807 # Since: 6.2
808 ##
809 { 'struct': 'MemoryBackendEpcProperties',
810 'base': 'MemoryBackendProperties',
811 'data': {},
812 'if': 'CONFIG_LINUX' }
813
814 ##
815 # @PrManagerHelperProperties:
816 #
817 # Properties for pr-manager-helper objects.
818 #
819 # @path: the path to a Unix domain socket for connecting to the
820 # external helper
821 #
822 # Since: 2.11
823 ##
824 { 'struct': 'PrManagerHelperProperties',
825 'data': { 'path': 'str' },
826 'if': 'CONFIG_LINUX' }
827
828 ##
829 # @QtestProperties:
830 #
831 # Properties for qtest objects.
832 #
833 # @chardev: the chardev to be used to receive qtest commands on.
834 #
835 # @log: the path to a log file
836 #
837 # Since: 6.0
838 ##
839 { 'struct': 'QtestProperties',
840 'data': { 'chardev': 'str',
841 '*log': 'str' } }
842
843 ##
844 # @RemoteObjectProperties:
845 #
846 # Properties for x-remote-object objects.
847 #
848 # @fd: file descriptor name previously passed via `getfd` command
849 #
850 # @devid: the id of the device to be associated with the file
851 # descriptor
852 #
853 # Since: 6.0
854 ##
855 { 'struct': 'RemoteObjectProperties',
856 'data': { 'fd': 'str', 'devid': 'str' } }
857
858 ##
859 # @VfioUserServerProperties:
860 #
861 # Properties for x-vfio-user-server objects.
862 #
863 # @socket: socket to be used by the libvfio-user library
864 #
865 # @device: the ID of the device to be emulated at the server
866 #
867 # Since: 7.1
868 ##
869 { 'struct': 'VfioUserServerProperties',
870 'data': { 'socket': 'SocketAddress', 'device': 'str' } }
871
872 ##
873 # @IOMMUFDProperties:
874 #
875 # Properties for iommufd objects.
876 #
877 # @fd: file descriptor name previously passed via `getfd` command,
878 # which represents a pre-opened /dev/iommu. This allows the
879 # iommufd object to be shared across several subsystems (VFIO,
880 # VDPA, ...), and the file descriptor to be shared with other
881 # process, e.g. DPDK. (default: QEMU opens /dev/iommu by itself)
882 #
883 # Since: 9.0
884 ##
885 { 'struct': 'IOMMUFDProperties',
886 'data': { '*fd': 'str' } }
887
888 ##
889 # @AcpiGenericInitiatorProperties:
890 #
891 # Properties for acpi-generic-initiator objects.
892 #
893 # @pci-dev: PCI device ID to be associated with the node
894 #
895 # @node: NUMA node associated with the PCI device
896 #
897 # Since: 9.0
898 ##
899 { 'struct': 'AcpiGenericInitiatorProperties',
900 'data': { 'pci-dev': 'str',
901 'node': 'uint32' } }
902
903 ##
904 # @AcpiGenericPortProperties:
905 #
906 # Properties for acpi-generic-port objects.
907 #
908 # @pci-bus: QOM path of the PCI bus of the hostbridge associated with
909 # this SRAT Generic Port Affinity Structure. This is the same as
910 # the bus parameter for the root ports attached to this host
911 # bridge. The resulting SRAT Generic Port Affinity Structure will
912 # refer to the ACPI object in DSDT that represents the host bridge
913 # (e.g. ACPI0016 for CXL host bridges). See ACPI 6.5 Section
914 # 5.2.16.7 for more information.
915 #
916 # @node: Similar to a NUMA node ID, but instead of providing a
917 # reference point used for defining NUMA distances and access
918 # characteristics to memory or from an initiator (e.g. CPU), this
919 # node defines the boundary point between non-discoverable system
920 # buses which must be described by firmware, and a discoverable
921 # bus. NUMA distances and access characteristics are defined to
922 # and from that point. For system software to establish full
923 # initiator to target characteristics this information must be
924 # combined with information retrieved from the discoverable part
925 # of the path. An example would use CDAT (see UEFI.org)
926 # information read from devices and switches in conjunction with
927 # link characteristics read from PCIe Configuration space. To get
928 # the full path latency from CPU to CXL attached DRAM CXL device:
929 # Add the latency from CPU to Generic Port (from HMAT indexed via
930 # the node ID in this SRAT structure) to that for CXL bus links,
931 # the latency across intermediate switches and from the EP port to
932 # the actual memory. Bandwidth is more complex as there may be
933 # interleaving across multiple devices and shared links in the
934 # path.
935 #
936 # Since: 9.2
937 ##
938 { 'struct': 'AcpiGenericPortProperties',
939 'data': { 'pci-bus': 'str',
940 'node': 'uint32' } }
941
942 ##
943 # @RngProperties:
944 #
945 # Properties for objects of classes derived from rng.
946 #
947 # @opened: if true, the device is opened immediately when applying
948 # this option and will probably fail when processing the next
949 # option. Don't use; only provided for compatibility.
950 # (default: false)
951 #
952 # Features:
953 #
954 # @deprecated: Member @opened is deprecated. Setting true doesn't
955 # make sense, and false is already the default.
956 #
957 # Since: 1.3
958 ##
959 { 'struct': 'RngProperties',
960 'data': { '*opened': { 'type': 'bool', 'features': ['deprecated'] } } }
961
962 ##
963 # @RngEgdProperties:
964 #
965 # Properties for rng-egd objects.
966 #
967 # @chardev: the name of a character device backend that provides the
968 # connection to the RNG daemon
969 #
970 # Since: 1.3
971 ##
972 { 'struct': 'RngEgdProperties',
973 'base': 'RngProperties',
974 'data': { 'chardev': 'str' } }
975
976 ##
977 # @RngRandomProperties:
978 #
979 # Properties for rng-random objects.
980 #
981 # @filename: the filename of the device on the host to obtain entropy
982 # from (default: "/dev/urandom")
983 #
984 # Since: 1.3
985 ##
986 { 'struct': 'RngRandomProperties',
987 'base': 'RngProperties',
988 'data': { '*filename': 'str' },
989 'if': 'CONFIG_POSIX' }
990
991 ##
992 # @IgvmCfgProperties:
993 #
994 # Properties common to objects that handle IGVM files.
995 #
996 # @file: IGVM file to use to configure guest
997 #
998 # Since: 10.1
999 ##
1000 { 'struct': 'IgvmCfgProperties',
1001 'if': 'CONFIG_IGVM',
1002 'data': { 'file': 'str' } }
1003
1004 ##
1005 # @SevCommonProperties:
1006 #
1007 # Properties common to objects that are derivatives of sev-common.
1008 #
1009 # @sev-device: SEV device to use (default: "/dev/sev")
1010 #
1011 # @cbitpos: C-bit location in page table entry (default: 0)
1012 #
1013 # @reduced-phys-bits: number of bits in physical addresses that become
1014 # unavailable when SEV is enabled
1015 #
1016 # @kernel-hashes: if true, add hashes of kernel/initrd/cmdline to a
1017 # designated guest firmware page for measured boot with -kernel
1018 # (default: false) (since 6.2)
1019 #
1020 # @debug-swap: enable virtualization of debug registers,
1021 # only supported on SEV-ES and SEV-SNP guests
1022 # (default: false) (since 11.1)
1023 #
1024 # Features:
1025 #
1026 # @confidential-guest-reset: If present, the hypervisor supports
1027 # confidential guest resets (since 11.0).
1028 #
1029 # Since: 9.1
1030 ##
1031 { 'struct': 'SevCommonProperties',
1032 'data': { '*sev-device': 'str',
1033 '*cbitpos': 'uint32',
1034 'reduced-phys-bits': 'uint32',
1035 '*kernel-hashes': 'bool',
1036 '*debug-swap': 'bool' },
1037 'features': ['confidential-guest-reset']}
1038
1039 ##
1040 # @SevGuestProperties:
1041 #
1042 # Properties for sev-guest objects.
1043 #
1044 # @dh-cert-file: guest owners DH certificate (encoded with base64)
1045 #
1046 # @session-file: guest owners session parameters (encoded with base64)
1047 #
1048 # @policy: SEV policy value (default: 0x1)
1049 #
1050 # @handle: SEV firmware handle (default: 0)
1051 #
1052 # @legacy-vm-type: Use legacy KVM_SEV_INIT KVM interface for creating
1053 # the VM. The newer KVM_SEV_INIT2 interface, from Linux >= 6.10,
1054 # syncs additional vCPU state when initializing the VMSA
1055 # structures, which will result in a different guest measurement.
1056 # Set this to 'on' to force compatibility with older QEMU or kernel
1057 # versions that rely on legacy KVM_SEV_INIT behavior. 'auto' will
1058 # behave identically to 'on', but will automatically switch to
1059 # using KVM_SEV_INIT2 if the user specifies any additional options
1060 # that require it. If set to 'off', QEMU will require
1061 # KVM_SEV_INIT2 unconditionally. (default: off) (since 9.1)
1062 #
1063 # Since: 2.12
1064 ##
1065 { 'struct': 'SevGuestProperties',
1066 'base': 'SevCommonProperties',
1067 'data': { '*dh-cert-file': 'str',
1068 '*session-file': 'str',
1069 '*policy': 'uint32',
1070 '*handle': 'uint32',
1071 '*legacy-vm-type': 'OnOffAuto' } }
1072
1073 ##
1074 # @SevSnpGuestProperties:
1075 #
1076 # Properties for sev-snp-guest objects. Most of these are direct
1077 # arguments for the KVM_SNP_* interfaces documented in the Linux
1078 # kernel source under
1079 # Documentation/arch/x86/amd-memory-encryption.rst, which are in turn
1080 # closely coupled with the SNP_INIT/SNP_LAUNCH_* firmware commands
1081 # documented in the SEV-SNP Firmware ABI Specification (Rev 0.9).
1082 #
1083 # More usage information is also available in the QEMU source tree
1084 # under docs/amd-memory-encryption.
1085 #
1086 # @policy: the 'POLICY' parameter to the SNP_LAUNCH_START command, as
1087 # defined in the SEV-SNP firmware ABI (default: 0x30000)
1088 #
1089 # @guest-visible-workarounds: 16-byte, base64-encoded blob to report
1090 # hypervisor-defined workarounds, corresponding to the 'GOSVW'
1091 # parameter of the SNP_LAUNCH_START command defined in the SEV-SNP
1092 # firmware ABI (default: all-zero)
1093 #
1094 # @id-block: 96-byte, base64-encoded blob to provide the 'ID Block'
1095 # structure for the SNP_LAUNCH_FINISH command defined in the
1096 # SEV-SNP firmware ABI (default: all-zero)
1097 #
1098 # @id-auth: 4096-byte, base64-encoded blob to provide the 'ID
1099 # Authentication Information Structure' for the SNP_LAUNCH_FINISH
1100 # command defined in the SEV-SNP firmware ABI (default: all-zero)
1101 #
1102 # @author-key-enabled: true if 'id-auth' blob contains the
1103 # 'AUTHOR_KEY' field defined SEV-SNP firmware ABI (default: false)
1104 #
1105 # @host-data: 32-byte, base64-encoded, user-defined blob to provide to
1106 # the guest, as documented for the 'HOST_DATA' parameter of the
1107 # SNP_LAUNCH_FINISH command in the SEV-SNP firmware ABI (default:
1108 # all-zero)
1109 #
1110 # @vcek-disabled: Guests are by default allowed to choose between VLEK
1111 # (Versioned Loaded Endorsement Key) or VCEK (Versioned Chip
1112 # Endorsement Key) when requesting attestation reports from
1113 # firmware. Set this to true to disable the use of VCEK.
1114 # (default: false) (since: 9.1)
1115 #
1116 # @secure-tsc: enable Secure TSC
1117 # (default: false) (since 11.1)
1118 #
1119 # @tsc-frequency: set secure TSC frequency. Only valid if Secure TSC
1120 # is enabled (default: zero) (since 11.1)
1121 #
1122 # Since: 9.1
1123 ##
1124 { 'struct': 'SevSnpGuestProperties',
1125 'base': 'SevCommonProperties',
1126 'data': {
1127 '*policy': 'uint64',
1128 '*guest-visible-workarounds': 'str',
1129 '*id-block': 'str',
1130 '*id-auth': 'str',
1131 '*author-key-enabled': 'bool',
1132 '*host-data': 'str',
1133 '*vcek-disabled': 'bool',
1134 '*secure-tsc': 'bool',
1135 '*tsc-frequency': 'uint32' } }
1136
1137 ##
1138 # @TdxGuestProperties:
1139 #
1140 # Properties for tdx-guest objects.
1141 #
1142 # @attributes: The 'attributes' of a TD guest that is passed to
1143 # KVM_TDX_INIT_VM
1144 #
1145 # @sept-ve-disable: toggle bit 28 of TD attributes to control
1146 # disabling of EPT violation conversion to #VE on guest TD access
1147 # of PENDING pages. Some guest OS (e.g., Linux TD guest) may
1148 # require this to be set, otherwise they refuse to boot.
1149 #
1150 # @mrconfigid: ID for non-owner-defined configuration of the guest TD,
1151 # e.g., run-time or OS configuration (base64 encoded SHA384
1152 # digest). Defaults to all zeros.
1153 #
1154 # @mrowner: ID for the guest TD’s owner (base64 encoded SHA384
1155 # digest). Defaults to all zeros.
1156 #
1157 # @mrownerconfig: ID for owner-defined configuration of the guest TD,
1158 # e.g., specific to the workload rather than the run-time or OS
1159 # (base64 encoded SHA384 digest). Defaults to all zeros.
1160 #
1161 # @quote-generation-socket: socket address for Quote Generation
1162 # Service (QGS). QGS is a daemon running on the host. Without
1163 # it, the guest will not be able to get a TD quote for
1164 # attestation.
1165 #
1166 # Features:
1167 #
1168 # @confidential-guest-reset: If present, the hypervisor supports
1169 # confidential guest resets (since 11.0).
1170 #
1171 # Since: 10.1
1172 ##
1173 { 'struct': 'TdxGuestProperties',
1174 'data': { '*attributes': 'uint64',
1175 '*sept-ve-disable': 'bool',
1176 '*mrconfigid': 'str',
1177 '*mrowner': 'str',
1178 '*mrownerconfig': 'str',
1179 '*quote-generation-socket': 'SocketAddress' },
1180 'features': ['confidential-guest-reset']}
1181
1182 ##
1183 # @ThreadContextProperties:
1184 #
1185 # Properties for thread context objects.
1186 #
1187 # @cpu-affinity: the list of host CPU numbers used as CPU affinity for
1188 # all threads created in the thread context (default: QEMU main
1189 # thread CPU affinity)
1190 #
1191 # @node-affinity: the list of host node numbers that will be resolved
1192 # to a list of host CPU numbers used as CPU affinity. This is a
1193 # shortcut for specifying the list of host CPU numbers belonging
1194 # to the host nodes manually by setting @cpu-affinity.
1195 # (default: QEMU main thread affinity)
1196 #
1197 # Since: 7.2
1198 ##
1199 { 'struct': 'ThreadContextProperties',
1200 'data': { '*cpu-affinity': ['uint16'],
1201 '*node-affinity': ['uint16'] } }
1202
1203 ##
1204 # @MonitorProperties:
1205 #
1206 # Properties for all monitors
1207 #
1208 # @chardev: ID of the character device providing the monitor transport
1209 #
1210 # Since: 11.1
1211 ##
1212 { 'struct': 'MonitorProperties',
1213 'data': { 'chardev': 'str' }}
1214
1215 ##
1216 # @MonitorHMPProperties:
1217 #
1218 # Properties for the HMP monitor
1219 #
1220 # @readline: whether to enable readline for line editing
1221 # (default: true)
1222 #
1223 # Since: 11.1
1224 ##
1225 { 'struct': 'MonitorHMPProperties',
1226 'base': 'MonitorProperties',
1227 'data': { '*readline': 'bool' } }
1228
1229
1230 ##
1231 # @MonitorQMPCloseAction:
1232 #
1233 # Action to take when the character device backend is closed.
1234 #
1235 # @none: take no action
1236 #
1237 # @delete: delete both the 'monitor-qmp' object and its associated
1238 # character device backend object
1239 #
1240 # Since: 11.1
1241 ##
1242 { 'enum': 'MonitorQMPCloseAction',
1243 'data': ['none', 'delete'] }
1244
1245 ##
1246 # @MonitorQMPProperties:
1247 #
1248 # Properties for the QMP monitor
1249 #
1250 # @pretty: whether to pretty print JSON responses (default: false)
1251 #
1252 # @close-action: action to take when the character device backend is
1253 # closed (default: none)
1254 #
1255 # Since: 11.1
1256 ##
1257 { 'struct': 'MonitorQMPProperties',
1258 'base': 'MonitorProperties',
1259 'data': { '*pretty': 'bool',
1260 '*close-action': 'MonitorQMPCloseAction' } }
1261
1262 ##
1263 # @ObjectType:
1264 #
1265 # Features:
1266 #
1267 # @unstable: Members @x-remote-object and @x-vfio-user-server are
1268 # experimental.
1269 #
1270 # Since: 6.0
1271 ##
1272 { 'enum': 'ObjectType',
1273 'data': [
1274 'acpi-generic-initiator',
1275 'acpi-generic-port',
1276 'authz-list',
1277 'authz-listfile',
1278 'authz-pam',
1279 'authz-simple',
1280 'can-bus',
1281 { 'name': 'can-host-socketcan',
1282 'if': 'CONFIG_LINUX' },
1283 'colo-compare',
1284 'cryptodev-backend',
1285 'cryptodev-backend-builtin',
1286 'cryptodev-backend-lkcf',
1287 { 'name': 'cryptodev-vhost-user',
1288 'if': 'CONFIG_VHOST_CRYPTO' },
1289 'dbus-vmstate',
1290 'filter-buffer',
1291 'filter-dump',
1292 'filter-mirror',
1293 'filter-redirector',
1294 'filter-replay',
1295 'filter-rewriter',
1296 { 'name': 'igvm-cfg',
1297 'if': 'CONFIG_IGVM' },
1298 'input-barrier',
1299 { 'name': 'input-linux',
1300 'if': 'CONFIG_LINUX' },
1301 'iommufd',
1302 'iothread',
1303 'main-loop',
1304 { 'name': 'memory-backend-epc',
1305 'if': 'CONFIG_LINUX' },
1306 'memory-backend-file',
1307 { 'name': 'memory-backend-memfd',
1308 'if': 'CONFIG_LINUX' },
1309 'memory-backend-ram',
1310 { 'name': 'memory-backend-shm',
1311 'if': 'CONFIG_POSIX' },
1312 'monitor-hmp',
1313 'monitor-qmp',
1314 'pef-guest',
1315 { 'name': 'pr-manager-helper',
1316 'if': 'CONFIG_LINUX' },
1317 'qtest',
1318 'rng-builtin',
1319 'rng-egd',
1320 { 'name': 'rng-random',
1321 'if': 'CONFIG_POSIX' },
1322 'secret',
1323 { 'name': 'secret_keyring',
1324 'if': 'CONFIG_SECRET_KEYRING' },
1325 'sev-guest',
1326 'sev-snp-guest',
1327 'thread-context',
1328 's390-pv-guest',
1329 'tdx-guest',
1330 'throttle-group',
1331 'tls-creds-anon',
1332 'tls-creds-psk',
1333 'tls-creds-x509',
1334 'tls-cipher-suites',
1335 { 'name': 'x-remote-object', 'features': [ 'unstable' ] },
1336 { 'name': 'x-vfio-user-server', 'features': [ 'unstable' ] }
1337 ] }
1338
1339 ##
1340 # @ObjectOptions:
1341 #
1342 # Describes the options of a user creatable QOM object.
1343 #
1344 # @qom-type: the class name for the object to be created
1345 #
1346 # @id: the name of the new object
1347 #
1348 # Since: 6.0
1349 ##
1350 { 'union': 'ObjectOptions',
1351 'base': { 'qom-type': 'ObjectType',
1352 'id': 'str' },
1353 'discriminator': 'qom-type',
1354 'data': {
1355 'acpi-generic-initiator': 'AcpiGenericInitiatorProperties',
1356 'acpi-generic-port': 'AcpiGenericPortProperties',
1357 'authz-list': 'AuthZListProperties',
1358 'authz-listfile': 'AuthZListFileProperties',
1359 'authz-pam': 'AuthZPAMProperties',
1360 'authz-simple': 'AuthZSimpleProperties',
1361 'can-host-socketcan': { 'type': 'CanHostSocketcanProperties',
1362 'if': 'CONFIG_LINUX' },
1363 'colo-compare': 'ColoCompareProperties',
1364 'cryptodev-backend': 'CryptodevBackendProperties',
1365 'cryptodev-backend-builtin': 'CryptodevBackendProperties',
1366 'cryptodev-backend-lkcf': 'CryptodevBackendProperties',
1367 'cryptodev-vhost-user': { 'type': 'CryptodevVhostUserProperties',
1368 'if': 'CONFIG_VHOST_CRYPTO' },
1369 'dbus-vmstate': 'DBusVMStateProperties',
1370 'filter-buffer': 'FilterBufferProperties',
1371 'filter-dump': 'FilterDumpProperties',
1372 'filter-mirror': 'FilterMirrorProperties',
1373 'filter-redirector': 'FilterRedirectorProperties',
1374 'filter-replay': 'NetfilterProperties',
1375 'filter-rewriter': 'FilterRewriterProperties',
1376 'igvm-cfg': { 'type': 'IgvmCfgProperties',
1377 'if': 'CONFIG_IGVM' },
1378 'input-barrier': 'InputBarrierProperties',
1379 'input-linux': { 'type': 'InputLinuxProperties',
1380 'if': 'CONFIG_LINUX' },
1381 'iommufd': 'IOMMUFDProperties',
1382 'iothread': 'IothreadProperties',
1383 'main-loop': 'MainLoopProperties',
1384 'memory-backend-epc': { 'type': 'MemoryBackendEpcProperties',
1385 'if': 'CONFIG_LINUX' },
1386 'memory-backend-file': 'MemoryBackendFileProperties',
1387 'memory-backend-memfd': { 'type': 'MemoryBackendMemfdProperties',
1388 'if': 'CONFIG_LINUX' },
1389 'memory-backend-ram': 'MemoryBackendProperties',
1390 'memory-backend-shm': { 'type': 'MemoryBackendShmProperties',
1391 'if': 'CONFIG_POSIX' },
1392 'monitor-hmp': 'MonitorHMPProperties',
1393 'monitor-qmp': 'MonitorQMPProperties',
1394 'pr-manager-helper': { 'type': 'PrManagerHelperProperties',
1395 'if': 'CONFIG_LINUX' },
1396 'qtest': 'QtestProperties',
1397 'rng-builtin': 'RngProperties',
1398 'rng-egd': 'RngEgdProperties',
1399 'rng-random': { 'type': 'RngRandomProperties',
1400 'if': 'CONFIG_POSIX' },
1401 'secret': 'SecretProperties',
1402 'secret_keyring': { 'type': 'SecretKeyringProperties',
1403 'if': 'CONFIG_SECRET_KEYRING' },
1404 'sev-guest': 'SevGuestProperties',
1405 'sev-snp-guest': 'SevSnpGuestProperties',
1406 'tdx-guest': 'TdxGuestProperties',
1407 'thread-context': 'ThreadContextProperties',
1408 'throttle-group': 'ThrottleGroupProperties',
1409 'tls-creds-anon': 'TlsCredsAnonProperties',
1410 'tls-creds-psk': 'TlsCredsPskProperties',
1411 'tls-creds-x509': 'TlsCredsX509Properties',
1412 'tls-cipher-suites': 'TlsCredsProperties',
1413 'x-remote-object': 'RemoteObjectProperties',
1414 'x-vfio-user-server': 'VfioUserServerProperties'
1415 } }
1416
1417 ##
1418 # @object-add:
1419 #
1420 # Create a QOM object.
1421 #
1422 # Errors:
1423 # - If @qom-type is not a valid class name
1424 #
1425 # Since: 2.0
1426 #
1427 # .. qmp-example::
1428 #
1429 # -> { "execute": "object-add",
1430 # "arguments": { "qom-type": "rng-random", "id": "rng1",
1431 # "filename": "/dev/hwrng" } }
1432 # <- { "return": {} }
1433 ##
1434 { 'command': 'object-add', 'data': 'ObjectOptions', 'boxed': true,
1435 'allow-preconfig': true }
1436
1437 ##
1438 # @object-del:
1439 #
1440 # Remove a QOM object.
1441 #
1442 # @id: the name of the QOM object to remove
1443 #
1444 # Errors:
1445 # - If @id is not a valid id for a QOM object
1446 #
1447 # Since: 2.0
1448 #
1449 # .. qmp-example::
1450 #
1451 # -> { "execute": "object-del", "arguments": { "id": "rng1" } }
1452 # <- { "return": {} }
1453 ##
1454 { 'command': 'object-del', 'data': {'id': 'str'},
1455 'allow-preconfig': true }