qemu

FORK: QEMU emulator
git clone https://git.neptards.moe/neptards/qemu.git
Log | Files | Refs | Submodules | LICENSE

vhost-user.json (6459B)


      1 # -*- Mode: Python -*-
      2 # vim: filetype=python
      3 #
      4 # Copyright (C) 2018 Red Hat, Inc.
      5 #
      6 # Authors:
      7 #  Marc-André Lureau <marcandre.lureau@redhat.com>
      8 #
      9 # This work is licensed under the terms of the GNU GPL, version 2 or
     10 # later. See the COPYING file in the top-level directory.
     11 
     12 ##
     13 # = vhost user backend discovery & capabilities
     14 ##
     15 
     16 ##
     17 # @VHostUserBackendType:
     18 #
     19 # List the various vhost user backend types.
     20 #
     21 # @9p: 9p virtio console
     22 # @balloon: virtio balloon
     23 # @block: virtio block
     24 # @caif: virtio caif
     25 # @console: virtio console
     26 # @crypto: virtio crypto
     27 # @gpu: virtio gpu
     28 # @input: virtio input
     29 # @net: virtio net
     30 # @rng: virtio rng
     31 # @rpmsg: virtio remote processor messaging
     32 # @rproc-serial: virtio remoteproc serial link
     33 # @scsi: virtio scsi
     34 # @vsock: virtio vsock transport
     35 # @fs: virtio fs (since 4.2)
     36 #
     37 # Since: 4.0
     38 ##
     39 {
     40   'enum': 'VHostUserBackendType',
     41   'data': [
     42       '9p',
     43       'balloon',
     44       'block',
     45       'caif',
     46       'console',
     47       'crypto',
     48       'gpu',
     49       'input',
     50       'net',
     51       'rng',
     52       'rpmsg',
     53       'rproc-serial',
     54       'scsi',
     55       'vsock',
     56       'fs'
     57   ]
     58 }
     59 
     60 ##
     61 # @VHostUserBackendBlockFeature:
     62 #
     63 # List of vhost user "block" features.
     64 #
     65 # @read-only: The --read-only command line option is supported.
     66 # @blk-file: The --blk-file command line option is supported.
     67 #
     68 # Since: 5.0
     69 ##
     70 {
     71   'enum': 'VHostUserBackendBlockFeature',
     72   'data': [ 'read-only', 'blk-file' ]
     73 }
     74 
     75 ##
     76 # @VHostUserBackendCapabilitiesBlock:
     77 #
     78 # Capabilities reported by vhost user "block" backends
     79 #
     80 # @features: list of supported features.
     81 #
     82 # Since: 5.0
     83 ##
     84 {
     85   'struct': 'VHostUserBackendCapabilitiesBlock',
     86   'data': {
     87     'features': [ 'VHostUserBackendBlockFeature' ]
     88   }
     89 }
     90 
     91 ##
     92 # @VHostUserBackendInputFeature:
     93 #
     94 # List of vhost user "input" features.
     95 #
     96 # @evdev-path: The --evdev-path command line option is supported.
     97 # @no-grab: The --no-grab command line option is supported.
     98 #
     99 # Since: 4.0
    100 ##
    101 {
    102   'enum': 'VHostUserBackendInputFeature',
    103   'data': [ 'evdev-path', 'no-grab' ]
    104 }
    105 
    106 ##
    107 # @VHostUserBackendCapabilitiesInput:
    108 #
    109 # Capabilities reported by vhost user "input" backends
    110 #
    111 # @features: list of supported features.
    112 #
    113 # Since: 4.0
    114 ##
    115 {
    116   'struct': 'VHostUserBackendCapabilitiesInput',
    117   'data': {
    118     'features': [ 'VHostUserBackendInputFeature' ]
    119   }
    120 }
    121 
    122 ##
    123 # @VHostUserBackendGPUFeature:
    124 #
    125 # List of vhost user "gpu" features.
    126 #
    127 # @render-node: The --render-node command line option is supported.
    128 # @virgl: The --virgl command line option is supported.
    129 #
    130 # Since: 4.0
    131 ##
    132 {
    133   'enum': 'VHostUserBackendGPUFeature',
    134   'data': [ 'render-node', 'virgl' ]
    135 }
    136 
    137 ##
    138 # @VHostUserBackendCapabilitiesGPU:
    139 #
    140 # Capabilities reported by vhost user "gpu" backends.
    141 #
    142 # @features: list of supported features.
    143 #
    144 # Since: 4.0
    145 ##
    146 {
    147   'struct': 'VHostUserBackendCapabilitiesGPU',
    148   'data': {
    149     'features': [ 'VHostUserBackendGPUFeature' ]
    150   }
    151 }
    152 
    153 ##
    154 # @VHostUserBackendCapabilities:
    155 #
    156 # Capabilities reported by vhost user backends.
    157 #
    158 # @type: The vhost user backend type.
    159 #
    160 # Since: 4.0
    161 ##
    162 {
    163   'union': 'VHostUserBackendCapabilities',
    164   'base': { 'type': 'VHostUserBackendType' },
    165   'discriminator': 'type',
    166   'data': {
    167     'input': 'VHostUserBackendCapabilitiesInput',
    168     'gpu': 'VHostUserBackendCapabilitiesGPU'
    169   }
    170 }
    171 
    172 ##
    173 # @VhostUserBackend:
    174 #
    175 # Describes a vhost user backend to management software.
    176 #
    177 # It is possible for multiple @VhostUserBackend elements to match the
    178 # search criteria of management software. Applications thus need rules
    179 # to pick one of the many matches, and users need the ability to
    180 # override distro defaults.
    181 #
    182 # It is recommended to create vhost user backend JSON files (each
    183 # containing a single @VhostUserBackend root element) with a
    184 # double-digit prefix, for example "50-qemu-gpu.json",
    185 # "50-crosvm-gpu.json", etc, so they can be sorted in predictable
    186 # order. The backend JSON files should be searched for in three
    187 # directories:
    188 #
    189 #   - /usr/share/qemu/vhost-user -- populated by distro-provided
    190 #                                   packages (XDG_DATA_DIRS covers
    191 #                                   /usr/share by default),
    192 #
    193 #   - /etc/qemu/vhost-user -- exclusively for sysadmins' local additions,
    194 #
    195 #   - $XDG_CONFIG_HOME/qemu/vhost-user -- exclusively for per-user local
    196 #                                         additions (XDG_CONFIG_HOME
    197 #                                         defaults to $HOME/.config).
    198 #
    199 # Top-down, the list of directories goes from general to specific.
    200 #
    201 # Management software should build a list of files from all three
    202 # locations, then sort the list by filename (i.e., basename
    203 # component). Management software should choose the first JSON file on
    204 # the sorted list that matches the search criteria. If a more specific
    205 # directory has a file with same name as a less specific directory,
    206 # then the file in the more specific directory takes effect. If the
    207 # more specific file is zero length, it hides the less specific one.
    208 #
    209 # For example, if a distro ships
    210 #
    211 #   - /usr/share/qemu/vhost-user/50-qemu-gpu.json
    212 #
    213 #   - /usr/share/qemu/vhost-user/50-crosvm-gpu.json
    214 #
    215 # then the sysadmin can prevent the default QEMU GPU being used at all with
    216 #
    217 #   $ touch /etc/qemu/vhost-user/50-qemu-gpu.json
    218 #
    219 # The sysadmin can replace/alter the distro default QEMU GPU with
    220 #
    221 #   $ vim /etc/qemu/vhost-user/50-qemu-gpu.json
    222 #
    223 # or they can provide a parallel QEMU GPU with higher priority
    224 #
    225 #   $ vim /etc/qemu/vhost-user/10-qemu-gpu.json
    226 #
    227 # or they can provide a parallel QEMU GPU with lower priority
    228 #
    229 #   $ vim /etc/qemu/vhost-user/99-qemu-gpu.json
    230 #
    231 # @type: The vhost user backend type.
    232 #
    233 # @description: Provides a human-readable description of the backend.
    234 #               Management software may or may not display @description.
    235 #
    236 # @binary: Absolute path to the backend binary.
    237 #
    238 # @tags: An optional list of auxiliary strings associated with the
    239 #        backend for which @description is not appropriate, due to the
    240 #        latter's possible exposure to the end-user. @tags serves
    241 #        development and debugging purposes only, and management
    242 #        software shall explicitly ignore it.
    243 #
    244 # Since: 4.0
    245 #
    246 # Example:
    247 #
    248 # {
    249 #   "description": "QEMU vhost-user-gpu",
    250 #   "type": "gpu",
    251 #   "binary": "/usr/libexec/qemu/vhost-user-gpu",
    252 #   "tags": [
    253 #     "CONFIG_OPENGL=y",
    254 #     "CONFIG_GBM=y"
    255 #   ]
    256 # }
    257 #
    258 ##
    259 {
    260   'struct' : 'VhostUserBackend',
    261   'data'   : {
    262     'description': 'str',
    263     'type': 'VHostUserBackendType',
    264     'binary': 'str',
    265     '*tags': [ 'str' ]
    266   }
    267 }