1c577ff62SMarkus Armbruster# -*- Mode: Python -*- 2f7160f32SAndrea Bolognani# vim: filetype=python 3c577ff62SMarkus Armbruster# 4c577ff62SMarkus Armbruster# This work is licensed under the terms of the GNU GPL, version 2 or later. 5c577ff62SMarkus Armbruster# See the COPYING file in the top-level directory. 6c577ff62SMarkus Armbruster 78825587bSKevin Wolf{ 'include': 'authz.json' } 8381bd744SKevin Wolf{ 'include': 'block-core.json' } 9913d9063SKevin Wolf{ 'include': 'common.json' } 1039c4c27dSKevin Wolf{ 'include': 'crypto.json' } 118825587bSKevin Wolf 12c577ff62SMarkus Armbruster## 13c577ff62SMarkus Armbruster# = QEMU Object Model (QOM) 14c577ff62SMarkus Armbruster## 15c577ff62SMarkus Armbruster 16c577ff62SMarkus Armbruster## 17c577ff62SMarkus Armbruster# @ObjectPropertyInfo: 18c577ff62SMarkus Armbruster# 19c577ff62SMarkus Armbruster# @name: the name of the property 20c577ff62SMarkus Armbruster# 21a937b6aaSMarkus Armbruster# @type: the type of the property. This will typically come in one of 22a937b6aaSMarkus Armbruster# four forms: 23c577ff62SMarkus Armbruster# 24a937b6aaSMarkus Armbruster# 1) A primitive type such as 'u8', 'u16', 'bool', 'str', or 25a937b6aaSMarkus Armbruster# 'double'. These types are mapped to the appropriate JSON 26a937b6aaSMarkus Armbruster# type. 27c577ff62SMarkus Armbruster# 28a937b6aaSMarkus Armbruster# 2) A child type in the form 'child<subtype>' where subtype is a 29a937b6aaSMarkus Armbruster# qdev device type name. Child properties create the 30a937b6aaSMarkus Armbruster# composition tree. 31c577ff62SMarkus Armbruster# 32a937b6aaSMarkus Armbruster# 3) A link type in the form 'link<subtype>' where subtype is a 33a937b6aaSMarkus Armbruster# qdev device type name. Link properties form the device model 34a937b6aaSMarkus Armbruster# graph. 35c577ff62SMarkus Armbruster# 36c577ff62SMarkus Armbruster# @description: if specified, the description of the property. 37c577ff62SMarkus Armbruster# 381bb3d7d9SMarc-André Lureau# @default-value: the default value, if any (since 5.0) 391bb3d7d9SMarc-André Lureau# 40c577ff62SMarkus Armbruster# Since: 1.2 41c577ff62SMarkus Armbruster## 42c577ff62SMarkus Armbruster{ 'struct': 'ObjectPropertyInfo', 431bb3d7d9SMarc-André Lureau 'data': { 'name': 'str', 441bb3d7d9SMarc-André Lureau 'type': 'str', 451bb3d7d9SMarc-André Lureau '*description': 'str', 461bb3d7d9SMarc-André Lureau '*default-value': 'any' } } 47c577ff62SMarkus Armbruster 48c577ff62SMarkus Armbruster## 49c577ff62SMarkus Armbruster# @qom-list: 50c577ff62SMarkus Armbruster# 51a937b6aaSMarkus Armbruster# This command will list any properties of a object given a path in 52a937b6aaSMarkus Armbruster# the object model. 53c577ff62SMarkus Armbruster# 54a937b6aaSMarkus Armbruster# @path: the path within the object model. See @qom-get for a 55a937b6aaSMarkus Armbruster# description of this parameter. 56c577ff62SMarkus Armbruster# 57a937b6aaSMarkus Armbruster# Returns: a list of @ObjectPropertyInfo that describe the properties 58a937b6aaSMarkus Armbruster# of the object. 59c577ff62SMarkus Armbruster# 60c577ff62SMarkus Armbruster# Since: 1.2 61c577ff62SMarkus Armbruster# 6214b48aaaSJohn Snow# .. qmp-example:: 63c577ff62SMarkus Armbruster# 64c577ff62SMarkus Armbruster# -> { "execute": "qom-list", 65c577ff62SMarkus Armbruster# "arguments": { "path": "/chardevs" } } 66c577ff62SMarkus Armbruster# <- { "return": [ { "name": "type", "type": "string" }, 67c577ff62SMarkus Armbruster# { "name": "parallel0", "type": "child<chardev-vc>" }, 68c577ff62SMarkus Armbruster# { "name": "serial0", "type": "child<chardev-vc>" }, 69c577ff62SMarkus Armbruster# { "name": "mon0", "type": "child<chardev-stdio>" } ] } 70c577ff62SMarkus Armbruster## 71c577ff62SMarkus Armbruster{ 'command': 'qom-list', 72c577ff62SMarkus Armbruster 'data': { 'path': 'str' }, 73c577ff62SMarkus Armbruster 'returns': [ 'ObjectPropertyInfo' ], 74c577ff62SMarkus Armbruster 'allow-preconfig': true } 75c577ff62SMarkus Armbruster 76c577ff62SMarkus Armbruster## 77c577ff62SMarkus Armbruster# @qom-get: 78c577ff62SMarkus Armbruster# 79a937b6aaSMarkus Armbruster# This command will get a property from a object model path and return 80a937b6aaSMarkus Armbruster# the value. 81c577ff62SMarkus Armbruster# 82a937b6aaSMarkus Armbruster# @path: The path within the object model. There are two forms of 83a937b6aaSMarkus Armbruster# supported paths--absolute and partial paths. 84c577ff62SMarkus Armbruster# 85a937b6aaSMarkus Armbruster# Absolute paths are derived from the root object and can follow 86a937b6aaSMarkus Armbruster# child<> or link<> properties. Since they can follow link<> 87a937b6aaSMarkus Armbruster# properties, they can be arbitrarily long. Absolute paths look 88a937b6aaSMarkus Armbruster# like absolute filenames and are prefixed with a leading slash. 89c577ff62SMarkus Armbruster# 90c577ff62SMarkus Armbruster# Partial paths look like relative filenames. They do not begin 91a937b6aaSMarkus Armbruster# with a prefix. The matching rules for partial paths are subtle 92a937b6aaSMarkus Armbruster# but designed to make specifying objects easy. At each level of 93a937b6aaSMarkus Armbruster# the composition tree, the partial path is matched as an absolute 94a937b6aaSMarkus Armbruster# path. The first match is not returned. At least two matches 95a937b6aaSMarkus Armbruster# are searched for. A successful result is only returned if only 96a937b6aaSMarkus Armbruster# one match is found. If more than one match is found, a flag is 97a937b6aaSMarkus Armbruster# return to indicate that the match was ambiguous. 98c577ff62SMarkus Armbruster# 99c577ff62SMarkus Armbruster# @property: The property name to read 100c577ff62SMarkus Armbruster# 101a937b6aaSMarkus Armbruster# Returns: The property value. The type depends on the property type. 102a937b6aaSMarkus Armbruster# child<> and link<> properties are returned as #str pathnames. 103a937b6aaSMarkus Armbruster# All integer property types (u8, u16, etc) are returned as #int. 104c577ff62SMarkus Armbruster# 105c577ff62SMarkus Armbruster# Since: 1.2 106c577ff62SMarkus Armbruster# 107a9eab6e2SJohn Snow# .. qmp-example:: 108a9eab6e2SJohn Snow# :title: Use absolute path 109c577ff62SMarkus Armbruster# 110c577ff62SMarkus Armbruster# -> { "execute": "qom-get", 111c577ff62SMarkus Armbruster# "arguments": { "path": "/machine/unattached/device[0]", 112c577ff62SMarkus Armbruster# "property": "hotplugged" } } 113c577ff62SMarkus Armbruster# <- { "return": false } 114c577ff62SMarkus Armbruster# 115a9eab6e2SJohn Snow# .. qmp-example:: 116a9eab6e2SJohn Snow# :title: Use partial path 117c577ff62SMarkus Armbruster# 118c577ff62SMarkus Armbruster# -> { "execute": "qom-get", 119c577ff62SMarkus Armbruster# "arguments": { "path": "unattached/sysbus", 120c577ff62SMarkus Armbruster# "property": "type" } } 121c577ff62SMarkus Armbruster# <- { "return": "System" } 122c577ff62SMarkus Armbruster## 123c577ff62SMarkus Armbruster{ 'command': 'qom-get', 124c577ff62SMarkus Armbruster 'data': { 'path': 'str', 'property': 'str' }, 125c577ff62SMarkus Armbruster 'returns': 'any', 126c577ff62SMarkus Armbruster 'allow-preconfig': true } 127c577ff62SMarkus Armbruster 128c577ff62SMarkus Armbruster## 129c577ff62SMarkus Armbruster# @qom-set: 130c577ff62SMarkus Armbruster# 131c577ff62SMarkus Armbruster# This command will set a property from a object model path. 132c577ff62SMarkus Armbruster# 133c577ff62SMarkus Armbruster# @path: see @qom-get for a description of this parameter 134c577ff62SMarkus Armbruster# 135c577ff62SMarkus Armbruster# @property: the property name to set 136c577ff62SMarkus Armbruster# 137a937b6aaSMarkus Armbruster# @value: a value who's type is appropriate for the property type. 138a937b6aaSMarkus Armbruster# See @qom-get for a description of type mapping. 139c577ff62SMarkus Armbruster# 140c577ff62SMarkus Armbruster# Since: 1.2 141c577ff62SMarkus Armbruster# 14214b48aaaSJohn Snow# .. qmp-example:: 143c577ff62SMarkus Armbruster# 144c577ff62SMarkus Armbruster# -> { "execute": "qom-set", 145c577ff62SMarkus Armbruster# "arguments": { "path": "/machine", 146c577ff62SMarkus Armbruster# "property": "graphics", 147c577ff62SMarkus Armbruster# "value": false } } 148c577ff62SMarkus Armbruster# <- { "return": {} } 149c577ff62SMarkus Armbruster## 150c577ff62SMarkus Armbruster{ 'command': 'qom-set', 151c577ff62SMarkus Armbruster 'data': { 'path': 'str', 'property': 'str', 'value': 'any' }, 152c577ff62SMarkus Armbruster 'allow-preconfig': true } 153c577ff62SMarkus Armbruster 154c577ff62SMarkus Armbruster## 155c577ff62SMarkus Armbruster# @ObjectTypeInfo: 156c577ff62SMarkus Armbruster# 157c577ff62SMarkus Armbruster# This structure describes a search result from @qom-list-types 158c577ff62SMarkus Armbruster# 159c577ff62SMarkus Armbruster# @name: the type name found in the search 160c577ff62SMarkus Armbruster# 161c577ff62SMarkus Armbruster# @abstract: the type is abstract and can't be directly instantiated. 162c577ff62SMarkus Armbruster# Omitted if false. (since 2.10) 163c577ff62SMarkus Armbruster# 164c577ff62SMarkus Armbruster# @parent: Name of parent type, if any (since 2.10) 165c577ff62SMarkus Armbruster# 166c577ff62SMarkus Armbruster# Since: 1.1 167c577ff62SMarkus Armbruster## 168c577ff62SMarkus Armbruster{ 'struct': 'ObjectTypeInfo', 169c577ff62SMarkus Armbruster 'data': { 'name': 'str', '*abstract': 'bool', '*parent': 'str' } } 170c577ff62SMarkus Armbruster 171c577ff62SMarkus Armbruster## 172c577ff62SMarkus Armbruster# @qom-list-types: 173c577ff62SMarkus Armbruster# 174c577ff62SMarkus Armbruster# This command will return a list of types given search parameters 175c577ff62SMarkus Armbruster# 176a937b6aaSMarkus Armbruster# @implements: if specified, only return types that implement this 177a937b6aaSMarkus Armbruster# type name 178c577ff62SMarkus Armbruster# 179c577ff62SMarkus Armbruster# @abstract: if true, include abstract types in the results 180c577ff62SMarkus Armbruster# 181a937b6aaSMarkus Armbruster# Returns: a list of @ObjectTypeInfo or an empty list if no results 182a937b6aaSMarkus Armbruster# are found 183c577ff62SMarkus Armbruster# 184c577ff62SMarkus Armbruster# Since: 1.1 185c577ff62SMarkus Armbruster## 186c577ff62SMarkus Armbruster{ 'command': 'qom-list-types', 187c577ff62SMarkus Armbruster 'data': { '*implements': 'str', '*abstract': 'bool' }, 188c577ff62SMarkus Armbruster 'returns': [ 'ObjectTypeInfo' ], 189c577ff62SMarkus Armbruster 'allow-preconfig': true } 190c577ff62SMarkus Armbruster 191c577ff62SMarkus Armbruster## 192c577ff62SMarkus Armbruster# @qom-list-properties: 193c577ff62SMarkus Armbruster# 194c577ff62SMarkus Armbruster# List properties associated with a QOM object. 195c577ff62SMarkus Armbruster# 196c577ff62SMarkus Armbruster# @typename: the type name of an object 197c577ff62SMarkus Armbruster# 198d461c279SJohn Snow# .. note:: Objects can create properties at runtime, for example to 199a937b6aaSMarkus Armbruster# describe links between different devices and/or objects. These 200a937b6aaSMarkus Armbruster# properties are not included in the output of this command. 201c577ff62SMarkus Armbruster# 202c577ff62SMarkus Armbruster# Returns: a list of ObjectPropertyInfo describing object properties 203c577ff62SMarkus Armbruster# 204c577ff62SMarkus Armbruster# Since: 2.12 205c577ff62SMarkus Armbruster## 206c577ff62SMarkus Armbruster{ 'command': 'qom-list-properties', 207c577ff62SMarkus Armbruster 'data': { 'typename': 'str'}, 208c577ff62SMarkus Armbruster 'returns': [ 'ObjectPropertyInfo' ], 209c577ff62SMarkus Armbruster 'allow-preconfig': true } 210c577ff62SMarkus Armbruster 211c577ff62SMarkus Armbruster## 212f3189b91SKevin Wolf# @CanHostSocketcanProperties: 213f3189b91SKevin Wolf# 214f3189b91SKevin Wolf# Properties for can-host-socketcan objects. 215f3189b91SKevin Wolf# 216f3189b91SKevin Wolf# @if: interface name of the host system CAN bus to connect to 217f3189b91SKevin Wolf# 218a937b6aaSMarkus Armbruster# @canbus: object ID of the can-bus object to connect to the host 219a937b6aaSMarkus Armbruster# interface 220f3189b91SKevin Wolf# 221f3189b91SKevin Wolf# Since: 2.12 222f3189b91SKevin Wolf## 223f3189b91SKevin Wolf{ 'struct': 'CanHostSocketcanProperties', 224f3189b91SKevin Wolf 'data': { 'if': 'str', 225657ea58bSStefano Garzarella 'canbus': 'str' }, 226657ea58bSStefano Garzarella 'if': 'CONFIG_LINUX' } 227f3189b91SKevin Wolf 228f3189b91SKevin Wolf## 2293d0d3c30SKevin Wolf# @ColoCompareProperties: 2303d0d3c30SKevin Wolf# 2313d0d3c30SKevin Wolf# Properties for colo-compare objects. 2323d0d3c30SKevin Wolf# 233a937b6aaSMarkus Armbruster# @primary_in: name of the character device backend to use for the 234a937b6aaSMarkus Armbruster# primary input (incoming packets are redirected to @outdev) 2353d0d3c30SKevin Wolf# 236a937b6aaSMarkus Armbruster# @secondary_in: name of the character device backend to use for 237a937b6aaSMarkus Armbruster# secondary input (incoming packets are only compared to the input 238a937b6aaSMarkus Armbruster# on @primary_in and then dropped) 2393d0d3c30SKevin Wolf# 2403d0d3c30SKevin Wolf# @outdev: name of the character device backend to use for output 2413d0d3c30SKevin Wolf# 2423d0d3c30SKevin Wolf# @iothread: name of the iothread to run in 2433d0d3c30SKevin Wolf# 244a937b6aaSMarkus Armbruster# @notify_dev: name of the character device backend to be used to 245a937b6aaSMarkus Armbruster# communicate with the remote colo-frame (only for Xen COLO) 2463d0d3c30SKevin Wolf# 247a937b6aaSMarkus Armbruster# @compare_timeout: the maximum time to hold a packet from @primary_in 248a937b6aaSMarkus Armbruster# for comparison with an incoming packet on @secondary_in in 2493d0d3c30SKevin Wolf# milliseconds (default: 3000) 2503d0d3c30SKevin Wolf# 251a937b6aaSMarkus Armbruster# @expired_scan_cycle: the interval at which colo-compare checks 252a937b6aaSMarkus Armbruster# whether packets from @primary have timed out, in milliseconds 2533d0d3c30SKevin Wolf# (default: 3000) 2543d0d3c30SKevin Wolf# 255a937b6aaSMarkus Armbruster# @max_queue_size: the maximum number of packets to keep in the queue 256a937b6aaSMarkus Armbruster# for comparing with incoming packets from @secondary_in. If the 25709ceb330SMichael Tokarev# queue is full and additional packets are received, the 25809ceb330SMichael Tokarev# additional packets are dropped. (default: 1024) 2593d0d3c30SKevin Wolf# 260a937b6aaSMarkus Armbruster# @vnet_hdr_support: if true, vnet header support is enabled 261a937b6aaSMarkus Armbruster# (default: false) 2623d0d3c30SKevin Wolf# 2633d0d3c30SKevin Wolf# Since: 2.8 2643d0d3c30SKevin Wolf## 2653d0d3c30SKevin Wolf{ 'struct': 'ColoCompareProperties', 2663d0d3c30SKevin Wolf 'data': { 'primary_in': 'str', 2673d0d3c30SKevin Wolf 'secondary_in': 'str', 2683d0d3c30SKevin Wolf 'outdev': 'str', 2693d0d3c30SKevin Wolf 'iothread': 'str', 2703d0d3c30SKevin Wolf '*notify_dev': 'str', 2713d0d3c30SKevin Wolf '*compare_timeout': 'uint64', 2723d0d3c30SKevin Wolf '*expired_scan_cycle': 'uint32', 2733d0d3c30SKevin Wolf '*max_queue_size': 'uint32', 2743d0d3c30SKevin Wolf '*vnet_hdr_support': 'bool' } } 2753d0d3c30SKevin Wolf 2763d0d3c30SKevin Wolf## 277a68d909eSKevin Wolf# @CryptodevBackendProperties: 278a68d909eSKevin Wolf# 279a937b6aaSMarkus Armbruster# Properties for cryptodev-backend and cryptodev-backend-builtin 280a937b6aaSMarkus Armbruster# objects. 281a68d909eSKevin Wolf# 282a937b6aaSMarkus Armbruster# @queues: the number of queues for the cryptodev backend. Ignored 283a937b6aaSMarkus Armbruster# for cryptodev-backend and must be 1 for 284a937b6aaSMarkus Armbruster# cryptodev-backend-builtin. (default: 1) 285a68d909eSKevin Wolf# 2862580b452Szhenwei pi# @throttle-bps: limit total bytes per second (Since 8.0) 2872580b452Szhenwei pi# 2882580b452Szhenwei pi# @throttle-ops: limit total operations per second (Since 8.0) 2892580b452Szhenwei pi# 290a68d909eSKevin Wolf# Since: 2.8 291a68d909eSKevin Wolf## 292a68d909eSKevin Wolf{ 'struct': 'CryptodevBackendProperties', 2932580b452Szhenwei pi 'data': { '*queues': 'uint32', 2942580b452Szhenwei pi '*throttle-bps': 'uint64', 2952580b452Szhenwei pi '*throttle-ops': 'uint64' } } 296a68d909eSKevin Wolf 297a68d909eSKevin Wolf## 298a68d909eSKevin Wolf# @CryptodevVhostUserProperties: 299a68d909eSKevin Wolf# 300a68d909eSKevin Wolf# Properties for cryptodev-vhost-user objects. 301a68d909eSKevin Wolf# 302a937b6aaSMarkus Armbruster# @chardev: the name of a Unix domain socket character device that 303a937b6aaSMarkus Armbruster# connects to the vhost-user server 304a68d909eSKevin Wolf# 305a68d909eSKevin Wolf# Since: 2.12 306a68d909eSKevin Wolf## 307a68d909eSKevin Wolf{ 'struct': 'CryptodevVhostUserProperties', 308a68d909eSKevin Wolf 'base': 'CryptodevBackendProperties', 309657ea58bSStefano Garzarella 'data': { 'chardev': 'str' }, 310657ea58bSStefano Garzarella 'if': 'CONFIG_VHOST_CRYPTO' } 311a68d909eSKevin Wolf 312a68d909eSKevin Wolf## 313d7ef29c4SKevin Wolf# @DBusVMStateProperties: 314d7ef29c4SKevin Wolf# 315d7ef29c4SKevin Wolf# Properties for dbus-vmstate objects. 316d7ef29c4SKevin Wolf# 317d7ef29c4SKevin Wolf# @addr: the name of the DBus bus to connect to 318d7ef29c4SKevin Wolf# 319a937b6aaSMarkus Armbruster# @id-list: a comma separated list of DBus IDs of helpers whose data 320a937b6aaSMarkus Armbruster# should be included in the VM state on migration 321d7ef29c4SKevin Wolf# 322d7ef29c4SKevin Wolf# Since: 5.0 323d7ef29c4SKevin Wolf## 324d7ef29c4SKevin Wolf{ 'struct': 'DBusVMStateProperties', 325d7ef29c4SKevin Wolf 'data': { 'addr': 'str' , 326d7ef29c4SKevin Wolf '*id-list': 'str' } } 327d7ef29c4SKevin Wolf 328d7ef29c4SKevin Wolf## 3291156a675SKevin Wolf# @NetfilterInsert: 3301156a675SKevin Wolf# 331a937b6aaSMarkus Armbruster# Indicates where to insert a netfilter relative to a given other 332a937b6aaSMarkus Armbruster# filter. 3331156a675SKevin Wolf# 3341156a675SKevin Wolf# @before: insert before the specified filter 3351156a675SKevin Wolf# 3361156a675SKevin Wolf# @behind: insert behind the specified filter 3371156a675SKevin Wolf# 3381156a675SKevin Wolf# Since: 5.0 3391156a675SKevin Wolf## 3401156a675SKevin Wolf{ 'enum': 'NetfilterInsert', 3411156a675SKevin Wolf 'data': [ 'before', 'behind' ] } 3421156a675SKevin Wolf 3431156a675SKevin Wolf## 3441156a675SKevin Wolf# @NetfilterProperties: 3451156a675SKevin Wolf# 3461156a675SKevin Wolf# Properties for objects of classes derived from netfilter. 3471156a675SKevin Wolf# 3481156a675SKevin Wolf# @netdev: id of the network device backend to filter 3491156a675SKevin Wolf# 3501156a675SKevin Wolf# @queue: indicates which queue(s) to filter (default: all) 3511156a675SKevin Wolf# 352a937b6aaSMarkus Armbruster# @status: indicates whether the filter is enabled ("on") or disabled 353a937b6aaSMarkus Armbruster# ("off") (default: "on") 3541156a675SKevin Wolf# 355a937b6aaSMarkus Armbruster# @position: specifies where the filter should be inserted in the 356a937b6aaSMarkus Armbruster# filter list. "head" means the filter is inserted at the head of 357a937b6aaSMarkus Armbruster# the filter list, before any existing filters. "tail" means the 358a937b6aaSMarkus Armbruster# filter is inserted at the tail of the filter list, behind any 359a937b6aaSMarkus Armbruster# existing filters (default). "id=<id>" means the filter is 360a937b6aaSMarkus Armbruster# inserted before or behind the filter specified by <id>, 361a937b6aaSMarkus Armbruster# depending on the @insert property. (default: "tail") 3621156a675SKevin Wolf# 363a937b6aaSMarkus Armbruster# @insert: where to insert the filter relative to the filter given in 364a937b6aaSMarkus Armbruster# @position. Ignored if @position is "head" or "tail". 365a937b6aaSMarkus Armbruster# (default: behind) 3661156a675SKevin Wolf# 3671156a675SKevin Wolf# Since: 2.5 3681156a675SKevin Wolf## 3691156a675SKevin Wolf{ 'struct': 'NetfilterProperties', 3701156a675SKevin Wolf 'data': { 'netdev': 'str', 3711156a675SKevin Wolf '*queue': 'NetFilterDirection', 3721156a675SKevin Wolf '*status': 'str', 3731156a675SKevin Wolf '*position': 'str', 3741156a675SKevin Wolf '*insert': 'NetfilterInsert' } } 3751156a675SKevin Wolf 3761156a675SKevin Wolf## 3771156a675SKevin Wolf# @FilterBufferProperties: 3781156a675SKevin Wolf# 3791156a675SKevin Wolf# Properties for filter-buffer objects. 3801156a675SKevin Wolf# 381a937b6aaSMarkus Armbruster# @interval: a non-zero interval in microseconds. All packets 382a937b6aaSMarkus Armbruster# arriving in the given interval are delayed until the end of the 383a937b6aaSMarkus Armbruster# interval. 3841156a675SKevin Wolf# 3851156a675SKevin Wolf# Since: 2.5 3861156a675SKevin Wolf## 3871156a675SKevin Wolf{ 'struct': 'FilterBufferProperties', 3881156a675SKevin Wolf 'base': 'NetfilterProperties', 3891156a675SKevin Wolf 'data': { 'interval': 'uint32' } } 3901156a675SKevin Wolf 3911156a675SKevin Wolf## 3921156a675SKevin Wolf# @FilterDumpProperties: 3931156a675SKevin Wolf# 3941156a675SKevin Wolf# Properties for filter-dump objects. 3951156a675SKevin Wolf# 3961156a675SKevin Wolf# @file: the filename where the dumped packets should be stored 3971156a675SKevin Wolf# 398a937b6aaSMarkus Armbruster# @maxlen: maximum number of bytes in a packet that are stored 399a937b6aaSMarkus Armbruster# (default: 65536) 4001156a675SKevin Wolf# 4011156a675SKevin Wolf# Since: 2.5 4021156a675SKevin Wolf## 4031156a675SKevin Wolf{ 'struct': 'FilterDumpProperties', 4041156a675SKevin Wolf 'base': 'NetfilterProperties', 4051156a675SKevin Wolf 'data': { 'file': 'str', 4061156a675SKevin Wolf '*maxlen': 'uint32' } } 4071156a675SKevin Wolf 4081156a675SKevin Wolf## 4091156a675SKevin Wolf# @FilterMirrorProperties: 4101156a675SKevin Wolf# 4111156a675SKevin Wolf# Properties for filter-mirror objects. 4121156a675SKevin Wolf# 413a937b6aaSMarkus Armbruster# @outdev: the name of a character device backend to which all 414a937b6aaSMarkus Armbruster# incoming packets are mirrored 4151156a675SKevin Wolf# 416a937b6aaSMarkus Armbruster# @vnet_hdr_support: if true, vnet header support is enabled 417a937b6aaSMarkus Armbruster# (default: false) 4181156a675SKevin Wolf# 4191156a675SKevin Wolf# Since: 2.6 4201156a675SKevin Wolf## 4211156a675SKevin Wolf{ 'struct': 'FilterMirrorProperties', 4221156a675SKevin Wolf 'base': 'NetfilterProperties', 4231156a675SKevin Wolf 'data': { 'outdev': 'str', 4241156a675SKevin Wolf '*vnet_hdr_support': 'bool' } } 4251156a675SKevin Wolf 4261156a675SKevin Wolf## 4271156a675SKevin Wolf# @FilterRedirectorProperties: 4281156a675SKevin Wolf# 4291156a675SKevin Wolf# Properties for filter-redirector objects. 4301156a675SKevin Wolf# 431a937b6aaSMarkus Armbruster# At least one of @indev or @outdev must be present. If both are 432a937b6aaSMarkus Armbruster# present, they must not refer to the same character device backend. 4331156a675SKevin Wolf# 434a937b6aaSMarkus Armbruster# @indev: the name of a character device backend from which packets 435a937b6aaSMarkus Armbruster# are received and redirected to the filtered network device 4361156a675SKevin Wolf# 437a937b6aaSMarkus Armbruster# @outdev: the name of a character device backend to which all 438a937b6aaSMarkus Armbruster# incoming packets are redirected 4391156a675SKevin Wolf# 440a937b6aaSMarkus Armbruster# @vnet_hdr_support: if true, vnet header support is enabled 441a937b6aaSMarkus Armbruster# (default: false) 4421156a675SKevin Wolf# 4431156a675SKevin Wolf# Since: 2.6 4441156a675SKevin Wolf## 4451156a675SKevin Wolf{ 'struct': 'FilterRedirectorProperties', 4461156a675SKevin Wolf 'base': 'NetfilterProperties', 4471156a675SKevin Wolf 'data': { '*indev': 'str', 4481156a675SKevin Wolf '*outdev': 'str', 4491156a675SKevin Wolf '*vnet_hdr_support': 'bool' } } 4501156a675SKevin Wolf 4511156a675SKevin Wolf## 4521156a675SKevin Wolf# @FilterRewriterProperties: 4531156a675SKevin Wolf# 4541156a675SKevin Wolf# Properties for filter-rewriter objects. 4551156a675SKevin Wolf# 456a937b6aaSMarkus Armbruster# @vnet_hdr_support: if true, vnet header support is enabled 457a937b6aaSMarkus Armbruster# (default: false) 4581156a675SKevin Wolf# 4591156a675SKevin Wolf# Since: 2.8 4601156a675SKevin Wolf## 4611156a675SKevin Wolf{ 'struct': 'FilterRewriterProperties', 4621156a675SKevin Wolf 'base': 'NetfilterProperties', 4631156a675SKevin Wolf 'data': { '*vnet_hdr_support': 'bool' } } 4641156a675SKevin Wolf 4651156a675SKevin Wolf## 46630e863e5SKevin Wolf# @InputBarrierProperties: 46730e863e5SKevin Wolf# 46830e863e5SKevin Wolf# Properties for input-barrier objects. 46930e863e5SKevin Wolf# 470a937b6aaSMarkus Armbruster# @name: the screen name as declared in the screens section of 471a937b6aaSMarkus Armbruster# barrier.conf 47230e863e5SKevin Wolf# 47330e863e5SKevin Wolf# @server: hostname of the Barrier server (default: "localhost") 47430e863e5SKevin Wolf# 47530e863e5SKevin Wolf# @port: TCP port of the Barrier server (default: "24800") 47630e863e5SKevin Wolf# 47730e863e5SKevin Wolf# @x-origin: x coordinate of the leftmost pixel on the guest screen 47830e863e5SKevin Wolf# (default: "0") 47930e863e5SKevin Wolf# 48030e863e5SKevin Wolf# @y-origin: y coordinate of the topmost pixel on the guest screen 48130e863e5SKevin Wolf# (default: "0") 48230e863e5SKevin Wolf# 48330e863e5SKevin Wolf# @width: the width of secondary screen in pixels (default: "1920") 48430e863e5SKevin Wolf# 48530e863e5SKevin Wolf# @height: the height of secondary screen in pixels (default: "1080") 48630e863e5SKevin Wolf# 48730e863e5SKevin Wolf# Since: 4.2 48830e863e5SKevin Wolf## 48930e863e5SKevin Wolf{ 'struct': 'InputBarrierProperties', 49030e863e5SKevin Wolf 'data': { 'name': 'str', 49130e863e5SKevin Wolf '*server': 'str', 49230e863e5SKevin Wolf '*port': 'str', 49330e863e5SKevin Wolf '*x-origin': 'str', 49430e863e5SKevin Wolf '*y-origin': 'str', 49530e863e5SKevin Wolf '*width': 'str', 49630e863e5SKevin Wolf '*height': 'str' } } 49730e863e5SKevin Wolf 49830e863e5SKevin Wolf## 49930e863e5SKevin Wolf# @InputLinuxProperties: 50030e863e5SKevin Wolf# 50130e863e5SKevin Wolf# Properties for input-linux objects. 50230e863e5SKevin Wolf# 50330e863e5SKevin Wolf# @evdev: the path of the host evdev device to use 50430e863e5SKevin Wolf# 505a937b6aaSMarkus Armbruster# @grab_all: if true, grab is toggled for all devices (e.g. both 506a937b6aaSMarkus Armbruster# keyboard and mouse) instead of just one device (default: false) 50730e863e5SKevin Wolf# 50830e863e5SKevin Wolf# @repeat: enables auto-repeat events (default: false) 50930e863e5SKevin Wolf# 51030e863e5SKevin Wolf# @grab-toggle: the key or key combination that toggles device grab 51130e863e5SKevin Wolf# (default: ctrl-ctrl) 51230e863e5SKevin Wolf# 51330e863e5SKevin Wolf# Since: 2.6 51430e863e5SKevin Wolf## 51530e863e5SKevin Wolf{ 'struct': 'InputLinuxProperties', 51630e863e5SKevin Wolf 'data': { 'evdev': 'str', 51730e863e5SKevin Wolf '*grab_all': 'bool', 51830e863e5SKevin Wolf '*repeat': 'bool', 519657ea58bSStefano Garzarella '*grab-toggle': 'GrabToggleKeys' }, 520657ea58bSStefano Garzarella 'if': 'CONFIG_LINUX' } 52130e863e5SKevin Wolf 52230e863e5SKevin Wolf## 5237d5983e3SNicolas Saenz Julienne# @EventLoopBaseProperties: 5247d5983e3SNicolas Saenz Julienne# 5257d5983e3SNicolas Saenz Julienne# Common properties for event loops 5267d5983e3SNicolas Saenz Julienne# 527a937b6aaSMarkus Armbruster# @aio-max-batch: maximum number of requests in a batch for the AIO 528a937b6aaSMarkus Armbruster# engine, 0 means that the engine will use its default. 5297d5983e3SNicolas Saenz Julienne# (default: 0) 5307d5983e3SNicolas Saenz Julienne# 531a937b6aaSMarkus Armbruster# @thread-pool-min: minimum number of threads reserved in the thread 532a937b6aaSMarkus Armbruster# pool (default:0) 53371ad4713SNicolas Saenz Julienne# 534a937b6aaSMarkus Armbruster# @thread-pool-max: maximum number of threads the thread pool can 535a937b6aaSMarkus Armbruster# contain (default:64) 53671ad4713SNicolas Saenz Julienne# 5377d5983e3SNicolas Saenz Julienne# Since: 7.1 5387d5983e3SNicolas Saenz Julienne## 5397d5983e3SNicolas Saenz Julienne{ 'struct': 'EventLoopBaseProperties', 54071ad4713SNicolas Saenz Julienne 'data': { '*aio-max-batch': 'int', 54171ad4713SNicolas Saenz Julienne '*thread-pool-min': 'int', 54271ad4713SNicolas Saenz Julienne '*thread-pool-max': 'int' } } 5437d5983e3SNicolas Saenz Julienne 5447d5983e3SNicolas Saenz Julienne## 5452273b241SKevin Wolf# @IothreadProperties: 5462273b241SKevin Wolf# 5472273b241SKevin Wolf# Properties for iothread objects. 5482273b241SKevin Wolf# 549a937b6aaSMarkus Armbruster# @poll-max-ns: the maximum number of nanoseconds to busy wait for 550a937b6aaSMarkus Armbruster# events. 0 means polling is disabled (default: 32768 on POSIX 551a937b6aaSMarkus Armbruster# hosts, 0 otherwise) 5522273b241SKevin Wolf# 553a937b6aaSMarkus Armbruster# @poll-grow: the multiplier used to increase the polling time when 554a937b6aaSMarkus Armbruster# the algorithm detects it is missing events due to not polling 555a937b6aaSMarkus Armbruster# long enough. 0 selects a default behaviour (default: 0) 5562273b241SKevin Wolf# 5572273b241SKevin Wolf# @poll-shrink: the divisor used to decrease the polling time when the 5582273b241SKevin Wolf# algorithm detects it is spending too long polling without 5592273b241SKevin Wolf# encountering events. 0 selects a default behaviour (default: 0) 5602273b241SKevin Wolf# 5617d5983e3SNicolas Saenz Julienne# The @aio-max-batch option is available since 6.1. 5621793ad02SStefano Garzarella# 5632273b241SKevin Wolf# Since: 2.0 5642273b241SKevin Wolf## 5652273b241SKevin Wolf{ 'struct': 'IothreadProperties', 5667d5983e3SNicolas Saenz Julienne 'base': 'EventLoopBaseProperties', 5672273b241SKevin Wolf 'data': { '*poll-max-ns': 'int', 5682273b241SKevin Wolf '*poll-grow': 'int', 5697d5983e3SNicolas Saenz Julienne '*poll-shrink': 'int' } } 5702273b241SKevin Wolf 5712273b241SKevin Wolf## 57270ac26b9SNicolas Saenz Julienne# @MainLoopProperties: 57370ac26b9SNicolas Saenz Julienne# 57470ac26b9SNicolas Saenz Julienne# Properties for the main-loop object. 57570ac26b9SNicolas Saenz Julienne# 57670ac26b9SNicolas Saenz Julienne# Since: 7.1 57770ac26b9SNicolas Saenz Julienne## 57870ac26b9SNicolas Saenz Julienne{ 'struct': 'MainLoopProperties', 57970ac26b9SNicolas Saenz Julienne 'base': 'EventLoopBaseProperties', 58070ac26b9SNicolas Saenz Julienne 'data': {} } 58170ac26b9SNicolas Saenz Julienne 58270ac26b9SNicolas Saenz Julienne## 583913d9063SKevin Wolf# @MemoryBackendProperties: 584913d9063SKevin Wolf# 585913d9063SKevin Wolf# Properties for objects of classes derived from memory-backend. 586913d9063SKevin Wolf# 587a937b6aaSMarkus Armbruster# @merge: if true, mark the memory as mergeable (default depends on 588a937b6aaSMarkus Armbruster# the machine type) 589913d9063SKevin Wolf# 590a937b6aaSMarkus Armbruster# @dump: if true, include the memory in core dumps (default depends on 591a937b6aaSMarkus Armbruster# the machine type) 592913d9063SKevin Wolf# 593913d9063SKevin Wolf# @host-nodes: the list of NUMA host nodes to bind the memory to 594913d9063SKevin Wolf# 595913d9063SKevin Wolf# @policy: the NUMA policy (default: 'default') 596913d9063SKevin Wolf# 597913d9063SKevin Wolf# @prealloc: if true, preallocate memory (default: false) 598913d9063SKevin Wolf# 599a937b6aaSMarkus Armbruster# @prealloc-threads: number of CPU threads to use for prealloc 600a937b6aaSMarkus Armbruster# (default: 1) 601913d9063SKevin Wolf# 602a937b6aaSMarkus Armbruster# @prealloc-context: thread context to use for creation of 603a937b6aaSMarkus Armbruster# preallocation threads (default: none) (since 7.2) 604e6816458SDavid Hildenbrand# 605a937b6aaSMarkus Armbruster# @share: if false, the memory is private to QEMU; if true, it is 6060aa7f10cSStefano Garzarella# shared (default false for backends memory-backend-file and 6074e647fa0SStefano Garzarella# memory-backend-ram, true for backends memory-backend-epc, 6084e647fa0SStefano Garzarella# memory-backend-memfd, and memory-backend-shm) 609913d9063SKevin Wolf# 6109181fb70SDavid Hildenbrand# @reserve: if true, reserve swap space (or huge pages) if applicable 6119181fb70SDavid Hildenbrand# (default: true) (since 6.1) 6129181fb70SDavid Hildenbrand# 613913d9063SKevin Wolf# @size: size of the memory region in bytes 614913d9063SKevin Wolf# 615a937b6aaSMarkus Armbruster# @x-use-canonical-path-for-ramblock-id: if true, the canonical path 616a937b6aaSMarkus Armbruster# is used for ramblock-id. Disable this for 4.0 machine types or 617a937b6aaSMarkus Armbruster# older to allow migration with newer QEMU versions. 618a937b6aaSMarkus Armbruster# (default: false generally, but true for machine types <= 4.0) 619913d9063SKevin Wolf# 620d461c279SJohn Snow# .. note:: prealloc=true and reserve=false cannot be set at the same 621a937b6aaSMarkus Armbruster# time. With reserve=true, the behavior depends on the operating 622d461c279SJohn Snow# system: for example, Linux will not reserve swap space for shared 62301bed0ffSMarkus Armbruster# file mappings -- "not applicable". In contrast, reserve=false 62401bed0ffSMarkus Armbruster# will bail out if it cannot be configured accordingly. 6259181fb70SDavid Hildenbrand# 626913d9063SKevin Wolf# Since: 2.1 627913d9063SKevin Wolf## 628913d9063SKevin Wolf{ 'struct': 'MemoryBackendProperties', 629913d9063SKevin Wolf 'data': { '*dump': 'bool', 630913d9063SKevin Wolf '*host-nodes': ['uint16'], 631913d9063SKevin Wolf '*merge': 'bool', 632913d9063SKevin Wolf '*policy': 'HostMemPolicy', 633913d9063SKevin Wolf '*prealloc': 'bool', 634913d9063SKevin Wolf '*prealloc-threads': 'uint32', 635e6816458SDavid Hildenbrand '*prealloc-context': 'str', 636913d9063SKevin Wolf '*share': 'bool', 6379181fb70SDavid Hildenbrand '*reserve': 'bool', 638913d9063SKevin Wolf 'size': 'size', 639913d9063SKevin Wolf '*x-use-canonical-path-for-ramblock-id': 'bool' } } 640913d9063SKevin Wolf 641913d9063SKevin Wolf## 642913d9063SKevin Wolf# @MemoryBackendFileProperties: 643913d9063SKevin Wolf# 644913d9063SKevin Wolf# Properties for memory-backend-file objects. 645913d9063SKevin Wolf# 646a937b6aaSMarkus Armbruster# @align: the base address alignment when QEMU mmap(2)s @mem-path. 647a937b6aaSMarkus Armbruster# Some backend stores specified by @mem-path require an alignment 648a937b6aaSMarkus Armbruster# different than the default one used by QEMU, e.g. the device DAX 64901bed0ffSMarkus Armbruster# /dev/dax0.0 requires 2M alignment rather than 4K. In such 65001bed0ffSMarkus Armbruster# cases, users can specify the required alignment via this option. 65101bed0ffSMarkus Armbruster# 0 selects a default alignment (currently the page size). 652a937b6aaSMarkus Armbruster# (default: 0) 653913d9063SKevin Wolf# 6549e272073SMarkus Armbruster# @offset: the offset into the target file that the region starts at. 6559e272073SMarkus Armbruster# You can use this option to back multiple regions with a single 6569e272073SMarkus Armbruster# file. Must be a multiple of the page size. 6579e272073SMarkus Armbruster# (default: 0) (since 8.1) 6584b870dc4SAlexander Graf# 659a937b6aaSMarkus Armbruster# @discard-data: if true, the file contents can be destroyed when QEMU 660a937b6aaSMarkus Armbruster# exits, to avoid unnecessarily flushing data to the backing file. 661a937b6aaSMarkus Armbruster# Note that @discard-data is only an optimization, and QEMU might 662913d9063SKevin Wolf# not discard file contents if it aborts unexpectedly or is 663913d9063SKevin Wolf# terminated using SIGKILL. (default: false) 664913d9063SKevin Wolf# 665a937b6aaSMarkus Armbruster# @mem-path: the path to either a shared memory or huge page 666a937b6aaSMarkus Armbruster# filesystem mount 667913d9063SKevin Wolf# 668a937b6aaSMarkus Armbruster# @pmem: specifies whether the backing file specified by @mem-path is 669a937b6aaSMarkus Armbruster# in host persistent memory that can be accessed using the SNIA 670a937b6aaSMarkus Armbruster# NVM programming model (e.g. Intel NVDIMM). 671913d9063SKevin Wolf# 672a937b6aaSMarkus Armbruster# @readonly: if true, the backing file is opened read-only; if false, 673a937b6aaSMarkus Armbruster# it is opened read-write. (default: false) 674913d9063SKevin Wolf# 675209e64d9SMarkus Armbruster# @rom: whether to create Read Only Memory (ROM) that cannot be 676209e64d9SMarkus Armbruster# modified by the VM. Any write attempts to such ROM will be 677209e64d9SMarkus Armbruster# denied. Most use cases want writable RAM instead of ROM. 678209e64d9SMarkus Armbruster# However, selected use cases, like R/O NVDIMMs, can benefit from 679209e64d9SMarkus Armbruster# ROM. If set to 'on', create ROM; if set to 'off', create 680209e64d9SMarkus Armbruster# writable RAM; if set to 'auto', the value of the @readonly 681209e64d9SMarkus Armbruster# property is used. This property is primarily helpful when we 682209e64d9SMarkus Armbruster# want to have proper RAM in configurations that would 683209e64d9SMarkus Armbruster# traditionally create ROM before this property was introduced: VM 684209e64d9SMarkus Armbruster# templating, where we want to open a file readonly (@readonly set 685209e64d9SMarkus Armbruster# to true) and mark the memory to be private for QEMU (@share set 686209e64d9SMarkus Armbruster# to false). For this use case, we need writable RAM instead of 687209e64d9SMarkus Armbruster# ROM, and want to set this property to 'off'. (default: auto, 688209e64d9SMarkus Armbruster# since 8.2) 689e92666b0SDavid Hildenbrand# 690913d9063SKevin Wolf# Since: 2.1 691913d9063SKevin Wolf## 692913d9063SKevin Wolf{ 'struct': 'MemoryBackendFileProperties', 693913d9063SKevin Wolf 'base': 'MemoryBackendProperties', 694913d9063SKevin Wolf 'data': { '*align': 'size', 6954b870dc4SAlexander Graf '*offset': 'size', 696913d9063SKevin Wolf '*discard-data': 'bool', 697913d9063SKevin Wolf 'mem-path': 'str', 6988a9f1e1dSMarc-André Lureau '*pmem': { 'type': 'bool', 'if': 'CONFIG_LIBPMEM' }, 699e92666b0SDavid Hildenbrand '*readonly': 'bool', 700e92666b0SDavid Hildenbrand '*rom': 'OnOffAuto' } } 701913d9063SKevin Wolf 702913d9063SKevin Wolf## 703913d9063SKevin Wolf# @MemoryBackendMemfdProperties: 704913d9063SKevin Wolf# 705913d9063SKevin Wolf# Properties for memory-backend-memfd objects. 706913d9063SKevin Wolf# 707a937b6aaSMarkus Armbruster# @hugetlb: if true, the file to be created resides in the hugetlbfs 708a937b6aaSMarkus Armbruster# filesystem (default: false) 709913d9063SKevin Wolf# 710a937b6aaSMarkus Armbruster# @hugetlbsize: the hugetlb page size on systems that support multiple 711a937b6aaSMarkus Armbruster# hugetlb page sizes (it must be a power of 2 value supported by 712a937b6aaSMarkus Armbruster# the system). 0 selects a default page size. This option is 713a937b6aaSMarkus Armbruster# ignored if @hugetlb is false. (default: 0) 714913d9063SKevin Wolf# 715a937b6aaSMarkus Armbruster# @seal: if true, create a sealed-file, which will block further 716a937b6aaSMarkus Armbruster# resizing of the memory (default: true) 717913d9063SKevin Wolf# 718913d9063SKevin Wolf# Since: 2.12 719913d9063SKevin Wolf## 720913d9063SKevin Wolf{ 'struct': 'MemoryBackendMemfdProperties', 721913d9063SKevin Wolf 'base': 'MemoryBackendProperties', 722913d9063SKevin Wolf 'data': { '*hugetlb': 'bool', 723913d9063SKevin Wolf '*hugetlbsize': 'size', 724657ea58bSStefano Garzarella '*seal': 'bool' }, 725657ea58bSStefano Garzarella 'if': 'CONFIG_LINUX' } 726913d9063SKevin Wolf 727913d9063SKevin Wolf## 7284e647fa0SStefano Garzarella# @MemoryBackendShmProperties: 7294e647fa0SStefano Garzarella# 7304e647fa0SStefano Garzarella# Properties for memory-backend-shm objects. 7314e647fa0SStefano Garzarella# 7324e647fa0SStefano Garzarella# This memory backend supports only shared memory, which is the 7334e647fa0SStefano Garzarella# default. 7344e647fa0SStefano Garzarella# 7354e647fa0SStefano Garzarella# Since: 9.1 7364e647fa0SStefano Garzarella## 7374e647fa0SStefano Garzarella{ 'struct': 'MemoryBackendShmProperties', 7384e647fa0SStefano Garzarella 'base': 'MemoryBackendProperties', 7394e647fa0SStefano Garzarella 'data': { }, 7404e647fa0SStefano Garzarella 'if': 'CONFIG_POSIX' } 7414e647fa0SStefano Garzarella 7424e647fa0SStefano Garzarella## 74346a1d21dSYang Zhong# @MemoryBackendEpcProperties: 74446a1d21dSYang Zhong# 74546a1d21dSYang Zhong# Properties for memory-backend-epc objects. 74646a1d21dSYang Zhong# 74746a1d21dSYang Zhong# The @merge boolean option is false by default with epc 74846a1d21dSYang Zhong# 74946a1d21dSYang Zhong# The @dump boolean option is false by default with epc 75046a1d21dSYang Zhong# 75146a1d21dSYang Zhong# Since: 6.2 75246a1d21dSYang Zhong## 75346a1d21dSYang Zhong{ 'struct': 'MemoryBackendEpcProperties', 75446a1d21dSYang Zhong 'base': 'MemoryBackendProperties', 755657ea58bSStefano Garzarella 'data': {}, 756657ea58bSStefano Garzarella 'if': 'CONFIG_LINUX' } 75746a1d21dSYang Zhong 75846a1d21dSYang Zhong## 759b9e479d0SKevin Wolf# @PrManagerHelperProperties: 760b9e479d0SKevin Wolf# 761b9e479d0SKevin Wolf# Properties for pr-manager-helper objects. 762b9e479d0SKevin Wolf# 763a937b6aaSMarkus Armbruster# @path: the path to a Unix domain socket for connecting to the 764a937b6aaSMarkus Armbruster# external helper 765b9e479d0SKevin Wolf# 766b9e479d0SKevin Wolf# Since: 2.11 767b9e479d0SKevin Wolf## 768b9e479d0SKevin Wolf{ 'struct': 'PrManagerHelperProperties', 769657ea58bSStefano Garzarella 'data': { 'path': 'str' }, 770657ea58bSStefano Garzarella 'if': 'CONFIG_LINUX' } 771b9e479d0SKevin Wolf 772b9e479d0SKevin Wolf## 7736ba7ada3SPaolo Bonzini# @QtestProperties: 7746ba7ada3SPaolo Bonzini# 7756ba7ada3SPaolo Bonzini# Properties for qtest objects. 7766ba7ada3SPaolo Bonzini# 7776ba7ada3SPaolo Bonzini# @chardev: the chardev to be used to receive qtest commands on. 7786ba7ada3SPaolo Bonzini# 7796ba7ada3SPaolo Bonzini# @log: the path to a log file 7806ba7ada3SPaolo Bonzini# 7816ba7ada3SPaolo Bonzini# Since: 6.0 7826ba7ada3SPaolo Bonzini## 7836ba7ada3SPaolo Bonzini{ 'struct': 'QtestProperties', 7846ba7ada3SPaolo Bonzini 'data': { 'chardev': 'str', 7856ba7ada3SPaolo Bonzini '*log': 'str' } } 7866ba7ada3SPaolo Bonzini 7876ba7ada3SPaolo Bonzini## 78817422da0SKevin Wolf# @RemoteObjectProperties: 78917422da0SKevin Wolf# 79017422da0SKevin Wolf# Properties for x-remote-object objects. 79117422da0SKevin Wolf# 79217422da0SKevin Wolf# @fd: file descriptor name previously passed via 'getfd' command 79317422da0SKevin Wolf# 794a937b6aaSMarkus Armbruster# @devid: the id of the device to be associated with the file 795a937b6aaSMarkus Armbruster# descriptor 79617422da0SKevin Wolf# 79717422da0SKevin Wolf# Since: 6.0 79817422da0SKevin Wolf## 79917422da0SKevin Wolf{ 'struct': 'RemoteObjectProperties', 80017422da0SKevin Wolf 'data': { 'fd': 'str', 'devid': 'str' } } 80117422da0SKevin Wolf 80217422da0SKevin Wolf## 8038f9a9259SJagannathan Raman# @VfioUserServerProperties: 8048f9a9259SJagannathan Raman# 8058f9a9259SJagannathan Raman# Properties for x-vfio-user-server objects. 8068f9a9259SJagannathan Raman# 8078f9a9259SJagannathan Raman# @socket: socket to be used by the libvfio-user library 8088f9a9259SJagannathan Raman# 8098f9a9259SJagannathan Raman# @device: the ID of the device to be emulated at the server 8108f9a9259SJagannathan Raman# 8118f9a9259SJagannathan Raman# Since: 7.1 8128f9a9259SJagannathan Raman## 8138f9a9259SJagannathan Raman{ 'struct': 'VfioUserServerProperties', 8148f9a9259SJagannathan Raman 'data': { 'socket': 'SocketAddress', 'device': 'str' } } 8158f9a9259SJagannathan Raman 8168f9a9259SJagannathan Raman## 8176e6d8ac6SEric Auger# @IOMMUFDProperties: 8186e6d8ac6SEric Auger# 8196e6d8ac6SEric Auger# Properties for iommufd objects. 8206e6d8ac6SEric Auger# 8216e6d8ac6SEric Auger# @fd: file descriptor name previously passed via 'getfd' command, 8226e6d8ac6SEric Auger# which represents a pre-opened /dev/iommu. This allows the 823f6822feeSStefan Weil# iommufd object to be shared across several subsystems (VFIO, 824209e64d9SMarkus Armbruster# VDPA, ...), and the file descriptor to be shared with other 825209e64d9SMarkus Armbruster# process, e.g. DPDK. (default: QEMU opens /dev/iommu by itself) 8266e6d8ac6SEric Auger# 8276e6d8ac6SEric Auger# Since: 9.0 8286e6d8ac6SEric Auger## 8296e6d8ac6SEric Auger{ 'struct': 'IOMMUFDProperties', 8306e6d8ac6SEric Auger 'data': { '*fd': 'str' } } 8316e6d8ac6SEric Auger 8326e6d8ac6SEric Auger## 833b64b7ed8SAnkit Agrawal# @AcpiGenericInitiatorProperties: 834b64b7ed8SAnkit Agrawal# 835b64b7ed8SAnkit Agrawal# Properties for acpi-generic-initiator objects. 836b64b7ed8SAnkit Agrawal# 837b64b7ed8SAnkit Agrawal# @pci-dev: PCI device ID to be associated with the node 838b64b7ed8SAnkit Agrawal# 839b64b7ed8SAnkit Agrawal# @node: NUMA node associated with the PCI device 840b64b7ed8SAnkit Agrawal# 841b64b7ed8SAnkit Agrawal# Since: 9.0 842b64b7ed8SAnkit Agrawal## 843b64b7ed8SAnkit Agrawal{ 'struct': 'AcpiGenericInitiatorProperties', 844b64b7ed8SAnkit Agrawal 'data': { 'pci-dev': 'str', 845b64b7ed8SAnkit Agrawal 'node': 'uint32' } } 846b64b7ed8SAnkit Agrawal 847b64b7ed8SAnkit Agrawal## 848a82fe829SJonathan Cameron# @AcpiGenericPortProperties: 849a82fe829SJonathan Cameron# 850a82fe829SJonathan Cameron# Properties for acpi-generic-port objects. 851a82fe829SJonathan Cameron# 852a82fe829SJonathan Cameron# @pci-bus: QOM path of the PCI bus of the hostbridge associated with 853a82fe829SJonathan Cameron# this SRAT Generic Port Affinity Structure. This is the same as 854a82fe829SJonathan Cameron# the bus parameter for the root ports attached to this host 855a82fe829SJonathan Cameron# bridge. The resulting SRAT Generic Port Affinity Structure will 856a82fe829SJonathan Cameron# refer to the ACPI object in DSDT that represents the host bridge 857a82fe829SJonathan Cameron# (e.g. ACPI0016 for CXL host bridges). See ACPI 6.5 Section 858a82fe829SJonathan Cameron# 5.2.16.7 for more information. 859a82fe829SJonathan Cameron# 860a82fe829SJonathan Cameron# @node: Similar to a NUMA node ID, but instead of providing a 861a82fe829SJonathan Cameron# reference point used for defining NUMA distances and access 862a82fe829SJonathan Cameron# characteristics to memory or from an initiator (e.g. CPU), this 863a82fe829SJonathan Cameron# node defines the boundary point between non-discoverable system 864a82fe829SJonathan Cameron# buses which must be described by firmware, and a discoverable 865a82fe829SJonathan Cameron# bus. NUMA distances and access characteristics are defined to 866a82fe829SJonathan Cameron# and from that point. For system software to establish full 867a82fe829SJonathan Cameron# initiator to target characteristics this information must be 868a82fe829SJonathan Cameron# combined with information retrieved from the discoverable part 869a82fe829SJonathan Cameron# of the path. An example would use CDAT (see UEFI.org) 870a82fe829SJonathan Cameron# information read from devices and switches in conjunction with 871a82fe829SJonathan Cameron# link characteristics read from PCIe Configuration space. 872a82fe829SJonathan Cameron# To get the full path latency from CPU to CXL attached DRAM 873a82fe829SJonathan Cameron# CXL device: Add the latency from CPU to Generic Port (from 874a82fe829SJonathan Cameron# HMAT indexed via the the node ID in this SRAT structure) to 875a82fe829SJonathan Cameron# that for CXL bus links, the latency across intermediate switches 876a82fe829SJonathan Cameron# and from the EP port to the actual memory. Bandwidth is more 877a82fe829SJonathan Cameron# complex as there may be interleaving across multiple devices 878a82fe829SJonathan Cameron# and shared links in the path. 879a82fe829SJonathan Cameron# 880*37a14f24SJonathan Cameron# Since: 9.2 881a82fe829SJonathan Cameron## 882a82fe829SJonathan Cameron{ 'struct': 'AcpiGenericPortProperties', 883a82fe829SJonathan Cameron 'data': { 'pci-bus': 'str', 884a82fe829SJonathan Cameron 'node': 'uint32' } } 885a82fe829SJonathan Cameron 886a82fe829SJonathan Cameron## 8876815bc1dSKevin Wolf# @RngProperties: 8886815bc1dSKevin Wolf# 8896815bc1dSKevin Wolf# Properties for objects of classes derived from rng. 8906815bc1dSKevin Wolf# 891a937b6aaSMarkus Armbruster# @opened: if true, the device is opened immediately when applying 892a937b6aaSMarkus Armbruster# this option and will probably fail when processing the next 893a937b6aaSMarkus Armbruster# option. Don't use; only provided for compatibility. 894a937b6aaSMarkus Armbruster# (default: false) 8956815bc1dSKevin Wolf# 8966815bc1dSKevin Wolf# Features: 897a937b6aaSMarkus Armbruster# 898a937b6aaSMarkus Armbruster# @deprecated: Member @opened is deprecated. Setting true doesn't 899a937b6aaSMarkus Armbruster# make sense, and false is already the default. 9006815bc1dSKevin Wolf# 9016815bc1dSKevin Wolf# Since: 1.3 9026815bc1dSKevin Wolf## 9036815bc1dSKevin Wolf{ 'struct': 'RngProperties', 9046815bc1dSKevin Wolf 'data': { '*opened': { 'type': 'bool', 'features': ['deprecated'] } } } 9056815bc1dSKevin Wolf 9066815bc1dSKevin Wolf## 9076815bc1dSKevin Wolf# @RngEgdProperties: 9086815bc1dSKevin Wolf# 9096815bc1dSKevin Wolf# Properties for rng-egd objects. 9106815bc1dSKevin Wolf# 911a937b6aaSMarkus Armbruster# @chardev: the name of a character device backend that provides the 912a937b6aaSMarkus Armbruster# connection to the RNG daemon 9136815bc1dSKevin Wolf# 9146815bc1dSKevin Wolf# Since: 1.3 9156815bc1dSKevin Wolf## 9166815bc1dSKevin Wolf{ 'struct': 'RngEgdProperties', 9176815bc1dSKevin Wolf 'base': 'RngProperties', 9186815bc1dSKevin Wolf 'data': { 'chardev': 'str' } } 9196815bc1dSKevin Wolf 9206815bc1dSKevin Wolf## 9216815bc1dSKevin Wolf# @RngRandomProperties: 9226815bc1dSKevin Wolf# 9236815bc1dSKevin Wolf# Properties for rng-random objects. 9246815bc1dSKevin Wolf# 925a937b6aaSMarkus Armbruster# @filename: the filename of the device on the host to obtain entropy 926a937b6aaSMarkus Armbruster# from (default: "/dev/urandom") 9276815bc1dSKevin Wolf# 9286815bc1dSKevin Wolf# Since: 1.3 9296815bc1dSKevin Wolf## 9306815bc1dSKevin Wolf{ 'struct': 'RngRandomProperties', 9316815bc1dSKevin Wolf 'base': 'RngProperties', 932657ea58bSStefano Garzarella 'data': { '*filename': 'str' }, 933657ea58bSStefano Garzarella 'if': 'CONFIG_POSIX' } 9346815bc1dSKevin Wolf 9356815bc1dSKevin Wolf## 93616dcf200SMichael Roth# @SevCommonProperties: 937590466f0SKevin Wolf# 93816dcf200SMichael Roth# Properties common to objects that are derivatives of sev-common. 939590466f0SKevin Wolf# 940590466f0SKevin Wolf# @sev-device: SEV device to use (default: "/dev/sev") 941590466f0SKevin Wolf# 942590466f0SKevin Wolf# @cbitpos: C-bit location in page table entry (default: 0) 943590466f0SKevin Wolf# 944590466f0SKevin Wolf# @reduced-phys-bits: number of bits in physical addresses that become 945590466f0SKevin Wolf# unavailable when SEV is enabled 946590466f0SKevin Wolf# 94755cdf566SDov Murik# @kernel-hashes: if true, add hashes of kernel/initrd/cmdline to a 948a937b6aaSMarkus Armbruster# designated guest firmware page for measured boot with -kernel 949a937b6aaSMarkus Armbruster# (default: false) (since 6.2) 95055cdf566SDov Murik# 95116dcf200SMichael Roth# Since: 9.1 95216dcf200SMichael Roth## 95316dcf200SMichael Roth{ 'struct': 'SevCommonProperties', 95416dcf200SMichael Roth 'data': { '*sev-device': 'str', 95516dcf200SMichael Roth '*cbitpos': 'uint32', 95616dcf200SMichael Roth 'reduced-phys-bits': 'uint32', 95716dcf200SMichael Roth '*kernel-hashes': 'bool' } } 95816dcf200SMichael Roth 95916dcf200SMichael Roth## 96016dcf200SMichael Roth# @SevGuestProperties: 96116dcf200SMichael Roth# 96216dcf200SMichael Roth# Properties for sev-guest objects. 96316dcf200SMichael Roth# 96416dcf200SMichael Roth# @dh-cert-file: guest owners DH certificate (encoded with base64) 96516dcf200SMichael Roth# 96616dcf200SMichael Roth# @session-file: guest owners session parameters (encoded with base64) 96716dcf200SMichael Roth# 96816dcf200SMichael Roth# @policy: SEV policy value (default: 0x1) 96916dcf200SMichael Roth# 97016dcf200SMichael Roth# @handle: SEV firmware handle (default: 0) 97116dcf200SMichael Roth# 97201bed0ffSMarkus Armbruster# @legacy-vm-type: Use legacy KVM_SEV_INIT KVM interface for creating 97301bed0ffSMarkus Armbruster# the VM. The newer KVM_SEV_INIT2 interface, from Linux >= 6.10, 97401bed0ffSMarkus Armbruster# syncs additional vCPU state when initializing the VMSA 97501bed0ffSMarkus Armbruster# structures, which will result in a different guest measurement. 97601bed0ffSMarkus Armbruster# Set this to 'on' to force compatibility with older QEMU or kernel 97701bed0ffSMarkus Armbruster# versions that rely on legacy KVM_SEV_INIT behavior. 'auto' will 97801bed0ffSMarkus Armbruster# behave identically to 'on', but will automatically switch to 97901bed0ffSMarkus Armbruster# using KVM_SEV_INIT2 if the user specifies any additional options 98001bed0ffSMarkus Armbruster# that require it. If set to 'off', QEMU will require 98101bed0ffSMarkus Armbruster# KVM_SEV_INIT2 unconditionally. 9829d38d9dcSMichael Roth# (default: off) (since 9.1) 98302326733SMichael Roth# 984590466f0SKevin Wolf# Since: 2.12 985590466f0SKevin Wolf## 986590466f0SKevin Wolf{ 'struct': 'SevGuestProperties', 98716dcf200SMichael Roth 'base': 'SevCommonProperties', 98816dcf200SMichael Roth 'data': { '*dh-cert-file': 'str', 989590466f0SKevin Wolf '*session-file': 'str', 990590466f0SKevin Wolf '*policy': 'uint32', 991590466f0SKevin Wolf '*handle': 'uint32', 9929d38d9dcSMichael Roth '*legacy-vm-type': 'OnOffAuto' } } 993590466f0SKevin Wolf 994590466f0SKevin Wolf## 9957b34df44SBrijesh Singh# @SevSnpGuestProperties: 9967b34df44SBrijesh Singh# 9977b34df44SBrijesh Singh# Properties for sev-snp-guest objects. Most of these are direct 9987b34df44SBrijesh Singh# arguments for the KVM_SNP_* interfaces documented in the Linux 9997b34df44SBrijesh Singh# kernel source under 10007b34df44SBrijesh Singh# Documentation/arch/x86/amd-memory-encryption.rst, which are in turn 10017b34df44SBrijesh Singh# closely coupled with the SNP_INIT/SNP_LAUNCH_* firmware commands 10027b34df44SBrijesh Singh# documented in the SEV-SNP Firmware ABI Specification (Rev 0.9). 10037b34df44SBrijesh Singh# 10047b34df44SBrijesh Singh# More usage information is also available in the QEMU source tree 10057b34df44SBrijesh Singh# under docs/amd-memory-encryption. 10067b34df44SBrijesh Singh# 10077b34df44SBrijesh Singh# @policy: the 'POLICY' parameter to the SNP_LAUNCH_START command, as 10087b34df44SBrijesh Singh# defined in the SEV-SNP firmware ABI (default: 0x30000) 10097b34df44SBrijesh Singh# 10107b34df44SBrijesh Singh# @guest-visible-workarounds: 16-byte, base64-encoded blob to report 10117b34df44SBrijesh Singh# hypervisor-defined workarounds, corresponding to the 'GOSVW' 10127b34df44SBrijesh Singh# parameter of the SNP_LAUNCH_START command defined in the SEV-SNP 10137b34df44SBrijesh Singh# firmware ABI (default: all-zero) 10147b34df44SBrijesh Singh# 10157b34df44SBrijesh Singh# @id-block: 96-byte, base64-encoded blob to provide the 'ID Block' 10167b34df44SBrijesh Singh# structure for the SNP_LAUNCH_FINISH command defined in the 10177b34df44SBrijesh Singh# SEV-SNP firmware ABI (default: all-zero) 10187b34df44SBrijesh Singh# 10197b34df44SBrijesh Singh# @id-auth: 4096-byte, base64-encoded blob to provide the 'ID 10207b34df44SBrijesh Singh# Authentication Information Structure' for the SNP_LAUNCH_FINISH 10217b34df44SBrijesh Singh# command defined in the SEV-SNP firmware ABI (default: all-zero) 10227b34df44SBrijesh Singh# 10237b34df44SBrijesh Singh# @author-key-enabled: true if 'id-auth' blob contains the 'AUTHOR_KEY' 10247b34df44SBrijesh Singh# field defined SEV-SNP firmware ABI (default: false) 10257b34df44SBrijesh Singh# 10267b34df44SBrijesh Singh# @host-data: 32-byte, base64-encoded, user-defined blob to provide to 10277b34df44SBrijesh Singh# the guest, as documented for the 'HOST_DATA' parameter of the 10287b34df44SBrijesh Singh# SNP_LAUNCH_FINISH command in the SEV-SNP firmware ABI (default: 10297b34df44SBrijesh Singh# all-zero) 10307b34df44SBrijesh Singh# 10317b34df44SBrijesh Singh# @vcek-disabled: Guests are by default allowed to choose between VLEK 10327b34df44SBrijesh Singh# (Versioned Loaded Endorsement Key) or VCEK (Versioned Chip 10337b34df44SBrijesh Singh# Endorsement Key) when requesting attestation reports from 10347b34df44SBrijesh Singh# firmware. Set this to true to disable the use of VCEK. 10357b34df44SBrijesh Singh# (default: false) (since: 9.1) 10367b34df44SBrijesh Singh# 10377b34df44SBrijesh Singh# Since: 9.1 10387b34df44SBrijesh Singh## 10397b34df44SBrijesh Singh{ 'struct': 'SevSnpGuestProperties', 10407b34df44SBrijesh Singh 'base': 'SevCommonProperties', 10417b34df44SBrijesh Singh 'data': { 10427b34df44SBrijesh Singh '*policy': 'uint64', 10437b34df44SBrijesh Singh '*guest-visible-workarounds': 'str', 10447b34df44SBrijesh Singh '*id-block': 'str', 10457b34df44SBrijesh Singh '*id-auth': 'str', 10467b34df44SBrijesh Singh '*author-key-enabled': 'bool', 10477b34df44SBrijesh Singh '*host-data': 'str', 10487b34df44SBrijesh Singh '*vcek-disabled': 'bool' } } 10497b34df44SBrijesh Singh 10507b34df44SBrijesh Singh## 1051e2de2c49SDavid Hildenbrand# @ThreadContextProperties: 1052e2de2c49SDavid Hildenbrand# 1053e2de2c49SDavid Hildenbrand# Properties for thread context objects. 1054e2de2c49SDavid Hildenbrand# 1055a937b6aaSMarkus Armbruster# @cpu-affinity: the list of host CPU numbers used as CPU affinity for 1056a937b6aaSMarkus Armbruster# all threads created in the thread context (default: QEMU main 1057e2de2c49SDavid Hildenbrand# thread CPU affinity) 1058e2de2c49SDavid Hildenbrand# 1059a937b6aaSMarkus Armbruster# @node-affinity: the list of host node numbers that will be resolved 1060a937b6aaSMarkus Armbruster# to a list of host CPU numbers used as CPU affinity. This is a 1061a937b6aaSMarkus Armbruster# shortcut for specifying the list of host CPU numbers belonging 1062a937b6aaSMarkus Armbruster# to the host nodes manually by setting @cpu-affinity. 1063a937b6aaSMarkus Armbruster# (default: QEMU main thread affinity) 106410218ae6SDavid Hildenbrand# 1065e2de2c49SDavid Hildenbrand# Since: 7.2 1066e2de2c49SDavid Hildenbrand## 1067e2de2c49SDavid Hildenbrand{ 'struct': 'ThreadContextProperties', 106810218ae6SDavid Hildenbrand 'data': { '*cpu-affinity': ['uint16'], 106910218ae6SDavid Hildenbrand '*node-affinity': ['uint16'] } } 1070e2de2c49SDavid Hildenbrand 1071e2de2c49SDavid Hildenbrand 1072e2de2c49SDavid Hildenbrand## 10732273b241SKevin Wolf# @ObjectType: 10742273b241SKevin Wolf# 10759fb49daaSMarkus Armbruster# Features: 1076a937b6aaSMarkus Armbruster# 10773becc939SMarkus Armbruster# @unstable: Members @x-remote-object and @x-vfio-user-server are 10783becc939SMarkus Armbruster# experimental. 10799fb49daaSMarkus Armbruster# 10802273b241SKevin Wolf# Since: 6.0 10812273b241SKevin Wolf## 10822273b241SKevin Wolf{ 'enum': 'ObjectType', 10832273b241SKevin Wolf 'data': [ 1084b64b7ed8SAnkit Agrawal 'acpi-generic-initiator', 1085a82fe829SJonathan Cameron 'acpi-generic-port', 10868825587bSKevin Wolf 'authz-list', 10878825587bSKevin Wolf 'authz-listfile', 10888825587bSKevin Wolf 'authz-pam', 10898825587bSKevin Wolf 'authz-simple', 1090f3189b91SKevin Wolf 'can-bus', 1091f1279fc1SThomas Huth { 'name': 'can-host-socketcan', 1092f1279fc1SThomas Huth 'if': 'CONFIG_LINUX' }, 10933d0d3c30SKevin Wolf 'colo-compare', 1094a68d909eSKevin Wolf 'cryptodev-backend', 1095a68d909eSKevin Wolf 'cryptodev-backend-builtin', 109639fff6f3SLei He 'cryptodev-backend-lkcf', 1097a68d909eSKevin Wolf { 'name': 'cryptodev-vhost-user', 10988a9f1e1dSMarc-André Lureau 'if': 'CONFIG_VHOST_CRYPTO' }, 1099d7ef29c4SKevin Wolf 'dbus-vmstate', 11001156a675SKevin Wolf 'filter-buffer', 11011156a675SKevin Wolf 'filter-dump', 11021156a675SKevin Wolf 'filter-mirror', 11031156a675SKevin Wolf 'filter-redirector', 11041156a675SKevin Wolf 'filter-replay', 11051156a675SKevin Wolf 'filter-rewriter', 110630e863e5SKevin Wolf 'input-barrier', 1107f1279fc1SThomas Huth { 'name': 'input-linux', 1108f1279fc1SThomas Huth 'if': 'CONFIG_LINUX' }, 11096e6d8ac6SEric Auger 'iommufd', 1110913d9063SKevin Wolf 'iothread', 111170ac26b9SNicolas Saenz Julienne 'main-loop', 1112f1279fc1SThomas Huth { 'name': 'memory-backend-epc', 1113f1279fc1SThomas Huth 'if': 'CONFIG_LINUX' }, 1114913d9063SKevin Wolf 'memory-backend-file', 1115913d9063SKevin Wolf { 'name': 'memory-backend-memfd', 11168a9f1e1dSMarc-André Lureau 'if': 'CONFIG_LINUX' }, 11176815bc1dSKevin Wolf 'memory-backend-ram', 11184e647fa0SStefano Garzarella { 'name': 'memory-backend-shm', 11194e647fa0SStefano Garzarella 'if': 'CONFIG_POSIX' }, 1120a061a71eSPaolo Bonzini 'pef-guest', 1121f1279fc1SThomas Huth { 'name': 'pr-manager-helper', 1122f1279fc1SThomas Huth 'if': 'CONFIG_LINUX' }, 11236ba7ada3SPaolo Bonzini 'qtest', 11246815bc1dSKevin Wolf 'rng-builtin', 11256815bc1dSKevin Wolf 'rng-egd', 1126f1279fc1SThomas Huth { 'name': 'rng-random', 1127f1279fc1SThomas Huth 'if': 'CONFIG_POSIX' }, 112839c4c27dSKevin Wolf 'secret', 1129f1279fc1SThomas Huth { 'name': 'secret_keyring', 1130f1279fc1SThomas Huth 'if': 'CONFIG_SECRET_KEYRING' }, 1131a061a71eSPaolo Bonzini 'sev-guest', 11327b34df44SBrijesh Singh 'sev-snp-guest', 1133e2de2c49SDavid Hildenbrand 'thread-context', 1134590466f0SKevin Wolf 's390-pv-guest', 1135d09e4937SKevin Wolf 'throttle-group', 1136d09e4937SKevin Wolf 'tls-creds-anon', 1137d09e4937SKevin Wolf 'tls-creds-psk', 1138d09e4937SKevin Wolf 'tls-creds-x509', 113917422da0SKevin Wolf 'tls-cipher-suites', 11408f9a9259SJagannathan Raman { 'name': 'x-remote-object', 'features': [ 'unstable' ] }, 11418f9a9259SJagannathan Raman { 'name': 'x-vfio-user-server', 'features': [ 'unstable' ] } 11422273b241SKevin Wolf ] } 11432273b241SKevin Wolf 11442273b241SKevin Wolf## 11452273b241SKevin Wolf# @ObjectOptions: 11462273b241SKevin Wolf# 11472273b241SKevin Wolf# Describes the options of a user creatable QOM object. 11482273b241SKevin Wolf# 11492273b241SKevin Wolf# @qom-type: the class name for the object to be created 11502273b241SKevin Wolf# 11512273b241SKevin Wolf# @id: the name of the new object 11522273b241SKevin Wolf# 11532273b241SKevin Wolf# Since: 6.0 11542273b241SKevin Wolf## 11552273b241SKevin Wolf{ 'union': 'ObjectOptions', 11562273b241SKevin Wolf 'base': { 'qom-type': 'ObjectType', 11572273b241SKevin Wolf 'id': 'str' }, 11582273b241SKevin Wolf 'discriminator': 'qom-type', 11592273b241SKevin Wolf 'data': { 1160b64b7ed8SAnkit Agrawal 'acpi-generic-initiator': 'AcpiGenericInitiatorProperties', 1161a82fe829SJonathan Cameron 'acpi-generic-port': 'AcpiGenericPortProperties', 11628825587bSKevin Wolf 'authz-list': 'AuthZListProperties', 11638825587bSKevin Wolf 'authz-listfile': 'AuthZListFileProperties', 11648825587bSKevin Wolf 'authz-pam': 'AuthZPAMProperties', 11658825587bSKevin Wolf 'authz-simple': 'AuthZSimpleProperties', 1166f1279fc1SThomas Huth 'can-host-socketcan': { 'type': 'CanHostSocketcanProperties', 1167f1279fc1SThomas Huth 'if': 'CONFIG_LINUX' }, 11683d0d3c30SKevin Wolf 'colo-compare': 'ColoCompareProperties', 1169a68d909eSKevin Wolf 'cryptodev-backend': 'CryptodevBackendProperties', 1170a68d909eSKevin Wolf 'cryptodev-backend-builtin': 'CryptodevBackendProperties', 117139fff6f3SLei He 'cryptodev-backend-lkcf': 'CryptodevBackendProperties', 1172a68d909eSKevin Wolf 'cryptodev-vhost-user': { 'type': 'CryptodevVhostUserProperties', 11738a9f1e1dSMarc-André Lureau 'if': 'CONFIG_VHOST_CRYPTO' }, 1174d7ef29c4SKevin Wolf 'dbus-vmstate': 'DBusVMStateProperties', 11751156a675SKevin Wolf 'filter-buffer': 'FilterBufferProperties', 11761156a675SKevin Wolf 'filter-dump': 'FilterDumpProperties', 11771156a675SKevin Wolf 'filter-mirror': 'FilterMirrorProperties', 11781156a675SKevin Wolf 'filter-redirector': 'FilterRedirectorProperties', 11791156a675SKevin Wolf 'filter-replay': 'NetfilterProperties', 11801156a675SKevin Wolf 'filter-rewriter': 'FilterRewriterProperties', 118130e863e5SKevin Wolf 'input-barrier': 'InputBarrierProperties', 1182f1279fc1SThomas Huth 'input-linux': { 'type': 'InputLinuxProperties', 1183f1279fc1SThomas Huth 'if': 'CONFIG_LINUX' }, 11846e6d8ac6SEric Auger 'iommufd': 'IOMMUFDProperties', 1185913d9063SKevin Wolf 'iothread': 'IothreadProperties', 118670ac26b9SNicolas Saenz Julienne 'main-loop': 'MainLoopProperties', 1187f1279fc1SThomas Huth 'memory-backend-epc': { 'type': 'MemoryBackendEpcProperties', 1188f1279fc1SThomas Huth 'if': 'CONFIG_LINUX' }, 1189913d9063SKevin Wolf 'memory-backend-file': 'MemoryBackendFileProperties', 1190913d9063SKevin Wolf 'memory-backend-memfd': { 'type': 'MemoryBackendMemfdProperties', 11918a9f1e1dSMarc-André Lureau 'if': 'CONFIG_LINUX' }, 11926815bc1dSKevin Wolf 'memory-backend-ram': 'MemoryBackendProperties', 11934e647fa0SStefano Garzarella 'memory-backend-shm': { 'type': 'MemoryBackendShmProperties', 11944e647fa0SStefano Garzarella 'if': 'CONFIG_POSIX' }, 1195f1279fc1SThomas Huth 'pr-manager-helper': { 'type': 'PrManagerHelperProperties', 1196f1279fc1SThomas Huth 'if': 'CONFIG_LINUX' }, 11976ba7ada3SPaolo Bonzini 'qtest': 'QtestProperties', 11986815bc1dSKevin Wolf 'rng-builtin': 'RngProperties', 11996815bc1dSKevin Wolf 'rng-egd': 'RngEgdProperties', 1200f1279fc1SThomas Huth 'rng-random': { 'type': 'RngRandomProperties', 1201f1279fc1SThomas Huth 'if': 'CONFIG_POSIX' }, 120239c4c27dSKevin Wolf 'secret': 'SecretProperties', 1203f1279fc1SThomas Huth 'secret_keyring': { 'type': 'SecretKeyringProperties', 1204f1279fc1SThomas Huth 'if': 'CONFIG_SECRET_KEYRING' }, 1205a061a71eSPaolo Bonzini 'sev-guest': 'SevGuestProperties', 12067b34df44SBrijesh Singh 'sev-snp-guest': 'SevSnpGuestProperties', 1207e2de2c49SDavid Hildenbrand 'thread-context': 'ThreadContextProperties', 1208d09e4937SKevin Wolf 'throttle-group': 'ThrottleGroupProperties', 1209d09e4937SKevin Wolf 'tls-creds-anon': 'TlsCredsAnonProperties', 1210d09e4937SKevin Wolf 'tls-creds-psk': 'TlsCredsPskProperties', 1211d09e4937SKevin Wolf 'tls-creds-x509': 'TlsCredsX509Properties', 121217422da0SKevin Wolf 'tls-cipher-suites': 'TlsCredsProperties', 12138f9a9259SJagannathan Raman 'x-remote-object': 'RemoteObjectProperties', 12148f9a9259SJagannathan Raman 'x-vfio-user-server': 'VfioUserServerProperties' 12152273b241SKevin Wolf } } 12162273b241SKevin Wolf 12172273b241SKevin Wolf## 1218c577ff62SMarkus Armbruster# @object-add: 1219c577ff62SMarkus Armbruster# 1220c577ff62SMarkus Armbruster# Create a QOM object. 1221c577ff62SMarkus Armbruster# 12222746f060SMarkus Armbruster# Errors: 1223ae7ccd50SMarkus Armbruster# - Error if @qom-type is not a valid class name 1224c577ff62SMarkus Armbruster# 1225c577ff62SMarkus Armbruster# Since: 2.0 1226c577ff62SMarkus Armbruster# 122714b48aaaSJohn Snow# .. qmp-example:: 1228c577ff62SMarkus Armbruster# 1229c577ff62SMarkus Armbruster# -> { "execute": "object-add", 1230c577ff62SMarkus Armbruster# "arguments": { "qom-type": "rng-random", "id": "rng1", 12315f07c4d6SKevin Wolf# "filename": "/dev/hwrng" } } 1232c577ff62SMarkus Armbruster# <- { "return": {} } 1233c577ff62SMarkus Armbruster## 12349e33013bSPaolo Bonzini{ 'command': 'object-add', 'data': 'ObjectOptions', 'boxed': true, 12359e33013bSPaolo Bonzini 'allow-preconfig': true } 1236c577ff62SMarkus Armbruster 1237c577ff62SMarkus Armbruster## 1238c577ff62SMarkus Armbruster# @object-del: 1239c577ff62SMarkus Armbruster# 1240c577ff62SMarkus Armbruster# Remove a QOM object. 1241c577ff62SMarkus Armbruster# 1242c577ff62SMarkus Armbruster# @id: the name of the QOM object to remove 1243c577ff62SMarkus Armbruster# 12442746f060SMarkus Armbruster# Errors: 1245ae7ccd50SMarkus Armbruster# - Error if @id is not a valid id for a QOM object 1246c577ff62SMarkus Armbruster# 1247c577ff62SMarkus Armbruster# Since: 2.0 1248c577ff62SMarkus Armbruster# 124914b48aaaSJohn Snow# .. qmp-example:: 1250c577ff62SMarkus Armbruster# 1251c577ff62SMarkus Armbruster# -> { "execute": "object-del", "arguments": { "id": "rng1" } } 1252c577ff62SMarkus Armbruster# <- { "return": {} } 1253c577ff62SMarkus Armbruster## 12549e33013bSPaolo Bonzini{ 'command': 'object-del', 'data': {'id': 'str'}, 12559e33013bSPaolo Bonzini 'allow-preconfig': true } 1256