cachepc-qemu

Fork of AMDESE/qemu with changes for cachepc side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-qemu
Log | Files | Refs | Submodules | LICENSE | sfeed.txt

misc.json (12090B)


      1# -*- Mode: Python -*-
      2# vim: filetype=python
      3#
      4
      5##
      6# = Miscellanea
      7##
      8
      9{ 'include': 'common.json' }
     10
     11##
     12# @add_client:
     13#
     14# Allow client connections for VNC, Spice and socket based
     15# character devices to be passed in to QEMU via SCM_RIGHTS.
     16#
     17# @protocol: protocol name. Valid names are "vnc", "spice" or the
     18#            name of a character device (eg. from -chardev id=XXXX)
     19#
     20# @fdname: file descriptor name previously passed via 'getfd' command
     21#
     22# @skipauth: whether to skip authentication. Only applies
     23#            to "vnc" and "spice" protocols
     24#
     25# @tls: whether to perform TLS. Only applies to the "spice"
     26#       protocol
     27#
     28# Returns: nothing on success.
     29#
     30# Since: 0.14
     31#
     32# Example:
     33#
     34# -> { "execute": "add_client", "arguments": { "protocol": "vnc",
     35#                                              "fdname": "myclient" } }
     36# <- { "return": {} }
     37#
     38##
     39{ 'command': 'add_client',
     40  'data': { 'protocol': 'str', 'fdname': 'str', '*skipauth': 'bool',
     41            '*tls': 'bool' } }
     42
     43##
     44# @NameInfo:
     45#
     46# Guest name information.
     47#
     48# @name: The name of the guest
     49#
     50# Since: 0.14
     51##
     52{ 'struct': 'NameInfo', 'data': {'*name': 'str'} }
     53
     54##
     55# @query-name:
     56#
     57# Return the name information of a guest.
     58#
     59# Returns: @NameInfo of the guest
     60#
     61# Since: 0.14
     62#
     63# Example:
     64#
     65# -> { "execute": "query-name" }
     66# <- { "return": { "name": "qemu-name" } }
     67#
     68##
     69{ 'command': 'query-name', 'returns': 'NameInfo', 'allow-preconfig': true }
     70
     71##
     72# @IOThreadInfo:
     73#
     74# Information about an iothread
     75#
     76# @id: the identifier of the iothread
     77#
     78# @thread-id: ID of the underlying host thread
     79#
     80# @poll-max-ns: maximum polling time in ns, 0 means polling is disabled
     81#               (since 2.9)
     82#
     83# @poll-grow: how many ns will be added to polling time, 0 means that it's not
     84#             configured (since 2.9)
     85#
     86# @poll-shrink: how many ns will be removed from polling time, 0 means that
     87#               it's not configured (since 2.9)
     88#
     89# @aio-max-batch: maximum number of requests in a batch for the AIO engine,
     90#                 0 means that the engine will use its default (since 6.1)
     91#
     92# Since: 2.0
     93##
     94{ 'struct': 'IOThreadInfo',
     95  'data': {'id': 'str',
     96           'thread-id': 'int',
     97           'poll-max-ns': 'int',
     98           'poll-grow': 'int',
     99           'poll-shrink': 'int',
    100           'aio-max-batch': 'int' } }
    101
    102##
    103# @query-iothreads:
    104#
    105# Returns a list of information about each iothread.
    106#
    107# Note: this list excludes the QEMU main loop thread, which is not declared
    108#       using the -object iothread command-line option.  It is always the main thread
    109#       of the process.
    110#
    111# Returns: a list of @IOThreadInfo for each iothread
    112#
    113# Since: 2.0
    114#
    115# Example:
    116#
    117# -> { "execute": "query-iothreads" }
    118# <- { "return": [
    119#          {
    120#             "id":"iothread0",
    121#             "thread-id":3134
    122#          },
    123#          {
    124#             "id":"iothread1",
    125#             "thread-id":3135
    126#          }
    127#       ]
    128#    }
    129#
    130##
    131{ 'command': 'query-iothreads', 'returns': ['IOThreadInfo'],
    132  'allow-preconfig': true }
    133
    134##
    135# @stop:
    136#
    137# Stop all guest VCPU execution.
    138#
    139# Since:  0.14
    140#
    141# Notes: This function will succeed even if the guest is already in the stopped
    142#        state.  In "inmigrate" state, it will ensure that the guest
    143#        remains paused once migration finishes, as if the -S option was
    144#        passed on the command line.
    145#
    146# Example:
    147#
    148# -> { "execute": "stop" }
    149# <- { "return": {} }
    150#
    151##
    152{ 'command': 'stop' }
    153
    154##
    155# @cont:
    156#
    157# Resume guest VCPU execution.
    158#
    159# Since:  0.14
    160#
    161# Returns:  If successful, nothing
    162#
    163# Notes: This command will succeed if the guest is currently running.  It
    164#        will also succeed if the guest is in the "inmigrate" state; in
    165#        this case, the effect of the command is to make sure the guest
    166#        starts once migration finishes, removing the effect of the -S
    167#        command line option if it was passed.
    168#
    169# Example:
    170#
    171# -> { "execute": "cont" }
    172# <- { "return": {} }
    173#
    174##
    175{ 'command': 'cont' }
    176
    177##
    178# @x-exit-preconfig:
    179#
    180# Exit from "preconfig" state
    181#
    182# This command makes QEMU exit the preconfig state and proceed with
    183# VM initialization using configuration data provided on the command line
    184# and via the QMP monitor during the preconfig state. The command is only
    185# available during the preconfig state (i.e. when the --preconfig command
    186# line option was in use).
    187#
    188# Since 3.0
    189#
    190# Returns: nothing
    191#
    192# Example:
    193#
    194# -> { "execute": "x-exit-preconfig" }
    195# <- { "return": {} }
    196#
    197##
    198{ 'command': 'x-exit-preconfig', 'allow-preconfig': true }
    199
    200##
    201# @human-monitor-command:
    202#
    203# Execute a command on the human monitor and return the output.
    204#
    205# @command-line: the command to execute in the human monitor
    206#
    207# @cpu-index: The CPU to use for commands that require an implicit CPU
    208#
    209# Features:
    210# @savevm-monitor-nodes: If present, HMP command savevm only snapshots
    211#                        monitor-owned nodes if they have no parents.
    212#                        This allows the use of 'savevm' with
    213#                        -blockdev. (since 4.2)
    214#
    215# Returns: the output of the command as a string
    216#
    217# Since: 0.14
    218#
    219# Notes: This command only exists as a stop-gap.  Its use is highly
    220#        discouraged.  The semantics of this command are not
    221#        guaranteed: this means that command names, arguments and
    222#        responses can change or be removed at ANY time.  Applications
    223#        that rely on long term stability guarantees should NOT
    224#        use this command.
    225#
    226#        Known limitations:
    227#
    228#        * This command is stateless, this means that commands that depend
    229#          on state information (such as getfd) might not work
    230#
    231#        * Commands that prompt the user for data don't currently work
    232#
    233# Example:
    234#
    235# -> { "execute": "human-monitor-command",
    236#      "arguments": { "command-line": "info kvm" } }
    237# <- { "return": "kvm support: enabled\r\n" }
    238#
    239##
    240{ 'command': 'human-monitor-command',
    241  'data': {'command-line': 'str', '*cpu-index': 'int'},
    242  'returns': 'str',
    243  'features': [ 'savevm-monitor-nodes' ] }
    244
    245##
    246# @getfd:
    247#
    248# Receive a file descriptor via SCM rights and assign it a name
    249#
    250# @fdname: file descriptor name
    251#
    252# Returns: Nothing on success
    253#
    254# Since: 0.14
    255#
    256# Notes: If @fdname already exists, the file descriptor assigned to
    257#        it will be closed and replaced by the received file
    258#        descriptor.
    259#
    260#        The 'closefd' command can be used to explicitly close the
    261#        file descriptor when it is no longer needed.
    262#
    263# Example:
    264#
    265# -> { "execute": "getfd", "arguments": { "fdname": "fd1" } }
    266# <- { "return": {} }
    267#
    268##
    269{ 'command': 'getfd', 'data': {'fdname': 'str'} }
    270
    271##
    272# @closefd:
    273#
    274# Close a file descriptor previously passed via SCM rights
    275#
    276# @fdname: file descriptor name
    277#
    278# Returns: Nothing on success
    279#
    280# Since: 0.14
    281#
    282# Example:
    283#
    284# -> { "execute": "closefd", "arguments": { "fdname": "fd1" } }
    285# <- { "return": {} }
    286#
    287##
    288{ 'command': 'closefd', 'data': {'fdname': 'str'} }
    289
    290##
    291# @AddfdInfo:
    292#
    293# Information about a file descriptor that was added to an fd set.
    294#
    295# @fdset-id: The ID of the fd set that @fd was added to.
    296#
    297# @fd: The file descriptor that was received via SCM rights and
    298#      added to the fd set.
    299#
    300# Since: 1.2
    301##
    302{ 'struct': 'AddfdInfo', 'data': {'fdset-id': 'int', 'fd': 'int'} }
    303
    304##
    305# @add-fd:
    306#
    307# Add a file descriptor, that was passed via SCM rights, to an fd set.
    308#
    309# @fdset-id: The ID of the fd set to add the file descriptor to.
    310#
    311# @opaque: A free-form string that can be used to describe the fd.
    312#
    313# Returns: - @AddfdInfo on success
    314#          - If file descriptor was not received, FdNotSupplied
    315#          - If @fdset-id is a negative value, InvalidParameterValue
    316#
    317# Notes: The list of fd sets is shared by all monitor connections.
    318#
    319#        If @fdset-id is not specified, a new fd set will be created.
    320#
    321# Since: 1.2
    322#
    323# Example:
    324#
    325# -> { "execute": "add-fd", "arguments": { "fdset-id": 1 } }
    326# <- { "return": { "fdset-id": 1, "fd": 3 } }
    327#
    328##
    329{ 'command': 'add-fd',
    330  'data': { '*fdset-id': 'int',
    331            '*opaque': 'str' },
    332  'returns': 'AddfdInfo' }
    333
    334##
    335# @remove-fd:
    336#
    337# Remove a file descriptor from an fd set.
    338#
    339# @fdset-id: The ID of the fd set that the file descriptor belongs to.
    340#
    341# @fd: The file descriptor that is to be removed.
    342#
    343# Returns: - Nothing on success
    344#          - If @fdset-id or @fd is not found, FdNotFound
    345#
    346# Since: 1.2
    347#
    348# Notes: The list of fd sets is shared by all monitor connections.
    349#
    350#        If @fd is not specified, all file descriptors in @fdset-id
    351#        will be removed.
    352#
    353# Example:
    354#
    355# -> { "execute": "remove-fd", "arguments": { "fdset-id": 1, "fd": 3 } }
    356# <- { "return": {} }
    357#
    358##
    359{ 'command': 'remove-fd', 'data': {'fdset-id': 'int', '*fd': 'int'} }
    360
    361##
    362# @FdsetFdInfo:
    363#
    364# Information about a file descriptor that belongs to an fd set.
    365#
    366# @fd: The file descriptor value.
    367#
    368# @opaque: A free-form string that can be used to describe the fd.
    369#
    370# Since: 1.2
    371##
    372{ 'struct': 'FdsetFdInfo',
    373  'data': {'fd': 'int', '*opaque': 'str'} }
    374
    375##
    376# @FdsetInfo:
    377#
    378# Information about an fd set.
    379#
    380# @fdset-id: The ID of the fd set.
    381#
    382# @fds: A list of file descriptors that belong to this fd set.
    383#
    384# Since: 1.2
    385##
    386{ 'struct': 'FdsetInfo',
    387  'data': {'fdset-id': 'int', 'fds': ['FdsetFdInfo']} }
    388
    389##
    390# @query-fdsets:
    391#
    392# Return information describing all fd sets.
    393#
    394# Returns: A list of @FdsetInfo
    395#
    396# Since: 1.2
    397#
    398# Note: The list of fd sets is shared by all monitor connections.
    399#
    400# Example:
    401#
    402# -> { "execute": "query-fdsets" }
    403# <- { "return": [
    404#        {
    405#          "fds": [
    406#            {
    407#              "fd": 30,
    408#              "opaque": "rdonly:/path/to/file"
    409#            },
    410#            {
    411#              "fd": 24,
    412#              "opaque": "rdwr:/path/to/file"
    413#            }
    414#          ],
    415#          "fdset-id": 1
    416#        },
    417#        {
    418#          "fds": [
    419#            {
    420#              "fd": 28
    421#            },
    422#            {
    423#              "fd": 29
    424#            }
    425#          ],
    426#          "fdset-id": 0
    427#        }
    428#      ]
    429#    }
    430#
    431##
    432{ 'command': 'query-fdsets', 'returns': ['FdsetInfo'] }
    433
    434##
    435# @CommandLineParameterType:
    436#
    437# Possible types for an option parameter.
    438#
    439# @string: accepts a character string
    440#
    441# @boolean: accepts "on" or "off"
    442#
    443# @number: accepts a number
    444#
    445# @size: accepts a number followed by an optional suffix (K)ilo,
    446#        (M)ega, (G)iga, (T)era
    447#
    448# Since: 1.5
    449##
    450{ 'enum': 'CommandLineParameterType',
    451  'data': ['string', 'boolean', 'number', 'size'] }
    452
    453##
    454# @CommandLineParameterInfo:
    455#
    456# Details about a single parameter of a command line option.
    457#
    458# @name: parameter name
    459#
    460# @type: parameter @CommandLineParameterType
    461#
    462# @help: human readable text string, not suitable for parsing.
    463#
    464# @default: default value string (since 2.1)
    465#
    466# Since: 1.5
    467##
    468{ 'struct': 'CommandLineParameterInfo',
    469  'data': { 'name': 'str',
    470            'type': 'CommandLineParameterType',
    471            '*help': 'str',
    472            '*default': 'str' } }
    473
    474##
    475# @CommandLineOptionInfo:
    476#
    477# Details about a command line option, including its list of parameter details
    478#
    479# @option: option name
    480#
    481# @parameters: an array of @CommandLineParameterInfo
    482#
    483# Since: 1.5
    484##
    485{ 'struct': 'CommandLineOptionInfo',
    486  'data': { 'option': 'str', 'parameters': ['CommandLineParameterInfo'] } }
    487
    488##
    489# @query-command-line-options:
    490#
    491# Query command line option schema.
    492#
    493# @option: option name
    494#
    495# Returns: list of @CommandLineOptionInfo for all options (or for the given
    496#          @option).  Returns an error if the given @option doesn't exist.
    497#
    498# Since: 1.5
    499#
    500# Example:
    501#
    502# -> { "execute": "query-command-line-options",
    503#      "arguments": { "option": "option-rom" } }
    504# <- { "return": [
    505#         {
    506#             "parameters": [
    507#                 {
    508#                     "name": "romfile",
    509#                     "type": "string"
    510#                 },
    511#                 {
    512#                     "name": "bootindex",
    513#                     "type": "number"
    514#                 }
    515#             ],
    516#             "option": "option-rom"
    517#         }
    518#      ]
    519#    }
    520#
    521##
    522{'command': 'query-command-line-options',
    523 'data': { '*option': 'str' },
    524 'returns': ['CommandLineOptionInfo'],
    525 'allow-preconfig': true }