aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Henderson <richard.henderson@linaro.org>2022-05-16 07:45:55 -0700
committerRichard Henderson <richard.henderson@linaro.org>2022-05-16 07:45:55 -0700
commitb935385c351d624993c4accd712cef8510658ecd (patch)
tree805582ba5aa44d7ef57b9e5417458a143f188906
parent10c2a0c5e7d48e590d945c017b5b8af5b4c89a3c (diff)
parentdd8f0f332f34a2466d855d1067386b04ff2eb6d9 (diff)
downloadqemu-b935385c351d624993c4accd712cef8510658ecd.zip
qemu-b935385c351d624993c4accd712cef8510658ecd.tar.gz
qemu-b935385c351d624993c4accd712cef8510658ecd.tar.bz2
Merge tag 'pull-qapi-2022-05-16' of git://repo.or.cz/qemu/armbru into staging
QAPI patches patches for 2022-05-16 # -----BEGIN PGP SIGNATURE----- # # iQJGBAABCAAwFiEENUvIs9frKmtoZ05fOHC0AOuRhlMFAmKB4qQSHGFybWJydUBy # ZWRoYXQuY29tAAoJEDhwtADrkYZT3jEP/R2FnJn5GEARg+tMMSyRL2P5eH4rmA1e # ZY2+E7XOdA4Ey42HlluvAu5QPf7LOivCeB0o1QQxAgSHBWjbWxkM+6NnHtIQ7RKu # dx6zenNq55f+6+kygVLUBZqq6bIgB7QT0/6q1fyyvQi0o76loJBk9UgJHxw94GgJ # yaZIx5mX+LFTUW6WyvCv1tCAmTUOW5umhSchIZcL3YfFxw5ZdSl4sYFY4Gotncu1 # DXNJVDy7FcfC5MOT7HH1LaWJDqRKEM6o+Axk25E7a1FgKy9vRCoI/CwL1ri9eWPG # dauQQmtgn3krPSU3ZeM4euLT3pYs+WOzQgPLo0XOr0m/chBZXHGZMbcHfTKUgo68 # qA0deECGE/unEKVvfak+A5lsZJ9ubT96CSzEZEB2EOHL4guRzGKeBP2dP2HiKJGI # O9FhedRPAIoIGV1Ehqz1HVy7jGZN6iI+UkcvTx1MKxGCe+sku3mbCAErGF2zTYI3 # LBrUGVdcCeLuC/oblwWp/igY+E5oPzkkciM4v8PS+S5VN9etUNoJdDdQ7sy5Mrpz # YzLSXSAIrEss7cQHLPx724GavMxqYRlWhwLKvPJgV8wHH0t8C0DXgD4KP7yWv7BZ # BZa4efkr4vdO5l1ioTo789K1BC99yKBCgDwdXepD6rSXCwJoGb9CDDvQmYTRhQIH # 6csIF19yqYQG # =sICK # -----END PGP SIGNATURE----- # gpg: Signature made Sun 15 May 2022 10:35:32 PM PDT # gpg: using RSA key 354BC8B3D7EB2A6B68674E5F3870B400EB918653 # gpg: issuer "armbru@redhat.com" # gpg: Good signature from "Markus Armbruster <armbru@redhat.com>" [undefined] # gpg: aka "Markus Armbruster <armbru@pond.sub.org>" [undefined] # gpg: WARNING: This key is not certified with a trusted signature! # gpg: There is no indication that the signature belongs to the owner. # Primary key fingerprint: 354B C8B3 D7EB 2A6B 6867 4E5F 3870 B400 EB91 8653 * tag 'pull-qapi-2022-05-16' of git://repo.or.cz/qemu/armbru: qapi/pragma: Tidy up comments docs/devel/qapi-code-gen: Belatedly document feature naming rules qapi/expr: Enforce feature naming rules again qapi: Stop using whitespace for alignment in comments qapi: Drop unnecessary whitespace in comments qapi: Drop unnecessary empty lines outside of comments qapi: Drop unnecessary empty lines in comments qapi: Add missing separators between sections qapi: Fix comment indentation qapi: Drop stray trailing symbol qapi: Fix malformed "Since:" section tags Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
-rw-r--r--docs/devel/qapi-code-gen.rst9
-rw-r--r--qapi/audio.json1
-rw-r--r--qapi/block-core.json97
-rw-r--r--qapi/block-export.json2
-rw-r--r--qapi/block.json13
-rw-r--r--qapi/char.json10
-rw-r--r--qapi/common.json2
-rw-r--r--qapi/control.json13
-rw-r--r--qapi/crypto.json64
-rw-r--r--qapi/dump.json4
-rw-r--r--qapi/job.json1
-rw-r--r--qapi/machine-target.json1
-rw-r--r--qapi/machine.json14
-rw-r--r--qapi/migration.json19
-rw-r--r--qapi/misc-target.json13
-rw-r--r--qapi/misc.json8
-rw-r--r--qapi/pragma.json3
-rw-r--r--qapi/replay.json1
-rw-r--r--qapi/run-state.json10
-rw-r--r--qapi/sockets.json6
-rw-r--r--qapi/ui.json70
-rw-r--r--qga/qapi-schema.json2
-rw-r--r--scripts/qapi/expr.py2
23 files changed, 148 insertions, 217 deletions
diff --git a/docs/devel/qapi-code-gen.rst b/docs/devel/qapi-code-gen.rst
index 7b96843..cd9b544 100644
--- a/docs/devel/qapi-code-gen.rst
+++ b/docs/devel/qapi-code-gen.rst
@@ -739,10 +739,11 @@ Type names ending with ``Kind`` or ``List`` are reserved for the
generator, which uses them for implicit union enums and array types,
respectively.
-Command names, and member names within a type, should be all lower
-case with words separated by a hyphen. However, some existing older
-commands and complex types use underscore; when extending them,
-consistency is preferred over blindly avoiding underscore.
+Command names, member names within a type, and feature names should be
+all lower case with words separated by a hyphen. However, some
+existing older commands and complex types use underscore; when
+extending them, consistency is preferred over blindly avoiding
+underscore.
Event names should be ALL_CAPS with words separated by underscore.
diff --git a/qapi/audio.json b/qapi/audio.json
index 0785e70..8099e3d 100644
--- a/qapi/audio.json
+++ b/qapi/audio.json
@@ -352,7 +352,6 @@
'*out': 'AudiodevPerDirectionOptions',
'*path': 'str' } }
-
##
# @AudioFormat:
#
diff --git a/qapi/block-core.json b/qapi/block-core.json
index b66494e..f0383c7 100644
--- a/qapi/block-core.json
+++ b/qapi/block-core.json
@@ -237,7 +237,6 @@
# information (since 1.7)
#
# Since: 1.3
-#
##
{ 'struct': 'ImageInfo',
'data': {'filename': 'str', 'format': 'str', '*dirty-flag': 'bool',
@@ -288,7 +287,6 @@
# supports it
#
# Since: 1.4
-#
##
{ 'struct': 'ImageCheck',
'data': {'filename': 'str', 'format': 'str', 'check-errors': 'int',
@@ -328,7 +326,6 @@
# @filename: filename that is referred to by @offset
#
# Since: 2.6
-#
##
{ 'struct': 'MapEntry',
'data': {'start': 'int', 'length': 'int', 'data': 'bool',
@@ -340,9 +337,9 @@
#
# Cache mode information for a block device
#
-# @writeback: true if writeback mode is enabled
-# @direct: true if the host page cache is bypassed (O_DIRECT)
-# @no-flush: true if flush requests are ignored for the device
+# @writeback: true if writeback mode is enabled
+# @direct: true if the host page cache is bypassed (O_DIRECT)
+# @no-flush: true if flush requests are ignored for the device
#
# Since: 2.3
##
@@ -445,7 +442,6 @@
# has one or more dirty bitmaps) (Since 4.2)
#
# Since: 0.14
-#
##
{ 'struct': 'BlockDeviceInfo',
'data': { 'file': 'str', '*node-name': 'str', 'ro': 'bool', 'drv': 'str',
@@ -608,7 +604,7 @@
# @inserted: @BlockDeviceInfo describing the device if media is
# present
#
-# Since: 0.14
+# Since: 0.14
##
{ 'struct': 'BlockInfo',
'data': {'device': 'str', '*qdev': 'str', 'type': 'str', 'removable': 'bool',
@@ -743,7 +739,6 @@
##
{ 'command': 'query-block', 'returns': ['BlockInfo'] }
-
##
# @BlockDeviceTimedStats:
#
@@ -800,9 +795,9 @@
#
# Statistics of a virtual block device or a block backing device.
#
-# @rd_bytes: The number of bytes read by the device.
+# @rd_bytes: The number of bytes read by the device.
#
-# @wr_bytes: The number of bytes written by the device.
+# @wr_bytes: The number of bytes written by the device.
#
# @unmap_bytes: The number of bytes unmapped by the device (Since 4.2)
#
@@ -975,7 +970,7 @@
# @qdev: The qdev ID, or if no ID is assigned, the QOM path of the block
# device. (since 3.0)
#
-# @stats: A @BlockDeviceStats for the device.
+# @stats: A @BlockDeviceStats for the device.
#
# @driver-specific: Optional driver-specific stats. (Since 4.2)
#
@@ -1280,7 +1275,7 @@
#
# @node-name: graph node name to get the image resized (Since 2.0)
#
-# @size: new image size in bytes
+# @size: new image size in bytes
#
# Returns: - nothing on success
# - If @device is not a valid block device, DeviceNotFound
@@ -1516,7 +1511,6 @@
{ 'command': 'blockdev-snapshot-sync',
'data': 'BlockdevSnapshotSync' }
-
##
# @blockdev-snapshot:
#
@@ -1744,6 +1738,7 @@
# Since: 2.3
#
# Example:
+#
# -> { "execute": "blockdev-backup",
# "arguments": { "device": "src-id",
# "sync": "full",
@@ -1754,7 +1749,6 @@
{ 'command': 'blockdev-backup', 'boxed': true,
'data': 'BlockdevBackup' }
-
##
# @query-named-block-nodes:
#
@@ -1966,8 +1960,8 @@
# @job-id: identifier for the newly-created block job. If
# omitted, the device name will be used. (Since 2.7)
#
-# @device: the device name or node-name of a root node whose writes should be
-# mirrored.
+# @device: the device name or node-name of a root node whose writes should be
+# mirrored.
#
# @target: the target of the new image. If the file exists, or if it
# is a device, the existing file/device will be used as the new
@@ -1987,7 +1981,7 @@
# @mode: whether and how QEMU should create a new image, default is
# 'absolute-paths'.
#
-# @speed: the maximum speed, in bytes per second
+# @speed: the maximum speed, in bytes per second
#
# @sync: what parts of the disk image should be copied to the destination
# (all the disk, only the sectors allocated in the topmost image, or
@@ -2008,6 +2002,7 @@
# @on-target-error: the action to take on an error on the target,
# default 'report' (no limitations, since this applies to
# a different block device than @device).
+#
# @unmap: Whether to try to unmap target sectors where source has
# only zero. If true, and target unallocated sectors will read as zero,
# target image sectors will be unmapped; otherwise, zeroes will be
@@ -2029,6 +2024,7 @@
# When true, this job will automatically disappear from the query
# list without user intervention.
# Defaults to true. (Since 3.1)
+#
# Since: 1.3
##
{ 'struct': 'DriveMirror',
@@ -2300,7 +2296,7 @@
# broken Quorum files. By default, @device is replaced, although
# implicitly created filters on it are kept.
#
-# @speed: the maximum speed, in bytes per second
+# @speed: the maximum speed, in bytes per second
#
# @sync: what parts of the disk image should be copied to the destination
# (all the disk, only the sectors allocated in the topmost image, or
@@ -2342,6 +2338,7 @@
# When true, this job will automatically disappear from the query
# list without user intervention.
# Defaults to true. (Since 3.1)
+#
# Returns: nothing on success.
#
# Since: 2.6
@@ -3067,7 +3064,6 @@
'base': 'BlockdevOptionsGenericFormat',
'data': { '*key-secret': 'str' } }
-
##
# @BlockdevOptionsGenericCOWFormat:
#
@@ -3182,8 +3178,6 @@
'base': 'BlockdevOptionsGenericCOWFormat',
'data': { '*encrypt': 'BlockdevQcowEncryption' } }
-
-
##
# @BlockdevQcow2EncryptionFormat:
#
@@ -3339,15 +3333,14 @@
##
# @BlockdevOptionsSsh:
#
-# @server: host address
+# @server: host address
#
-# @path: path to the image on the host
+# @path: path to the image on the host
#
-# @user: user as which to connect, defaults to current
-# local user name
+# @user: user as which to connect, defaults to current local user name
#
-# @host-key-check: Defines how and what to check the host key against
-# (default: known_hosts)
+# @host-key-check: Defines how and what to check the host key against
+# (default: known_hosts)
#
# Since: 2.9
##
@@ -3357,7 +3350,6 @@
'*user': 'str',
'*host-key-check': 'SshHostKeyCheck' } }
-
##
# @BlkdebugEvent:
#
@@ -3721,7 +3713,6 @@
'*header-digest': 'IscsiHeaderDigest',
'*timeout': 'int' } }
-
##
# @RbdAuthMode:
#
@@ -4139,6 +4130,7 @@
# @throttle-group: the name of the throttle-group object to use. It
# must already exist.
# @file: reference to or definition of the data source block device
+#
# Since: 2.11
##
{ 'struct': 'BlockdevOptionsThrottle',
@@ -4555,15 +4547,14 @@
##
# @BlockdevQcow2Version:
#
-# @v2: The original QCOW2 format as introduced in qemu 0.10 (version 2)
-# @v3: The extended QCOW2 format as introduced in qemu 1.1 (version 3)
+# @v2: The original QCOW2 format as introduced in qemu 0.10 (version 2)
+# @v3: The extended QCOW2 format as introduced in qemu 1.1 (version 3)
#
# Since: 2.12
##
{ 'enum': 'BlockdevQcow2Version',
'data': [ 'v2', 'v3' ] }
-
##
# @Qcow2CompressionType:
#
@@ -4670,18 +4661,18 @@
#
# Subformat options for VMDK images
#
-# @monolithicSparse: Single file image with sparse cluster allocation
+# @monolithicSparse: Single file image with sparse cluster allocation
#
-# @monolithicFlat: Single flat data image and a descriptor file
+# @monolithicFlat: Single flat data image and a descriptor file
#
# @twoGbMaxExtentSparse: Data is split into 2GB (per virtual LBA) sparse extent
# files, in addition to a descriptor file
#
-# @twoGbMaxExtentFlat: Data is split into 2GB (per virtual LBA) flat extent
-# files, in addition to a descriptor file
+# @twoGbMaxExtentFlat: Data is split into 2GB (per virtual LBA) flat extent
+# files, in addition to a descriptor file
#
-# @streamOptimized: Single file image sparse cluster allocation, optimized
-# for streaming over network.
+# @streamOptimized: Single file image sparse cluster allocation, optimized
+# for streaming over network.
#
# Since: 4.0
##
@@ -4737,7 +4728,6 @@
'*toolsversion': 'str',
'*zeroed-grain': 'bool' } }
-
##
# @BlockdevCreateOptionsSsh:
#
@@ -4773,7 +4763,7 @@
# @BlockdevVhdxSubformat:
#
# @dynamic: Growing image file
-# @fixed: Preallocated fixed-size image file
+# @fixed: Preallocated fixed-size image file
#
# Since: 2.12
##
@@ -4811,7 +4801,7 @@
# @BlockdevVpcSubformat:
#
# @dynamic: Growing image file
-# @fixed: Preallocated fixed-size image file
+# @fixed: Preallocated fixed-size image file
#
# Since: 2.12
##
@@ -4874,9 +4864,9 @@
# Starts a job to create an image format on a given node. The job is
# automatically finalized, but a manual job-dismiss is required.
#
-# @job-id: Identifier for the newly created job.
+# @job-id: Identifier for the newly created job.
#
-# @options: Options for the image creation.
+# @options: Options for the image creation.
#
# Since: 3.0
##
@@ -4914,7 +4904,7 @@
#
# Options for amending an image format
#
-# @driver: Block driver of the node to amend.
+# @driver: Block driver of the node to amend.
#
# Since: 5.1
##
@@ -4932,17 +4922,17 @@
# Starts a job to amend format specific options of an existing open block device
# The job is automatically finalized, but a manual job-dismiss is required.
#
-# @job-id: Identifier for the newly created job.
+# @job-id: Identifier for the newly created job.
#
-# @node-name: Name of the block node to work on
+# @node-name: Name of the block node to work on
#
-# @options: Options (driver specific)
+# @options: Options (driver specific)
#
-# @force: Allow unsafe operations, format specific
-# For luks that allows erase of the last active keyslot
-# (permanent loss of data),
-# and replacement of an active keyslot
-# (possible loss of data if IO error happens)
+# @force: Allow unsafe operations, format specific
+# For luks that allows erase of the last active keyslot
+# (permanent loss of data),
+# and replacement of an active keyslot
+# (possible loss of data if IO error happens)
#
# Features:
# @unstable: This command is experimental.
@@ -4972,7 +4962,6 @@
{ 'enum': 'BlockErrorAction',
'data': [ 'ignore', 'report', 'stop' ] }
-
##
# @BLOCK_IMAGE_CORRUPTED:
#
diff --git a/qapi/block-export.json b/qapi/block-export.json
index 7776248..0685cb8 100644
--- a/qapi/block-export.json
+++ b/qapi/block-export.json
@@ -391,7 +391,7 @@
# block-export-del command, but before the shutdown has
# completed)
#
-# Since: 5.2
+# Since: 5.2
##
{ 'struct': 'BlockExportInfo',
'data': { 'id': 'str',
diff --git a/qapi/block.json b/qapi/block.json
index 3f100d4..1932664 100644
--- a/qapi/block.json
+++ b/qapi/block.json
@@ -50,9 +50,9 @@
#
# Type of Floppy drive to be emulated by the Floppy Disk Controller.
#
-# @144: 1.44MB 3.5" drive
-# @288: 2.88MB 3.5" drive
-# @120: 1.2MB 5.25" drive
+# @144: 1.44MB 3.5" drive
+# @288: 2.88MB 3.5" drive
+# @120: 1.2MB 5.25" drive
# @none: No drive connected
# @auto: Automatically determined by inserted media at boot
#
@@ -105,7 +105,8 @@
#
# Returns: - Nothing on success
# - If @device is not a valid block device, DeviceNotFound
-# Notes: Ejecting a device with no media results in success
+#
+# Notes: Ejecting a device with no media results in success
#
# Since: 0.14
#
@@ -285,7 +286,6 @@
'data': { 'id': 'str',
'node-name': 'str'} }
-
##
# @BlockdevChangeReadOnlyMode:
#
@@ -299,12 +299,10 @@
# @read-write: Makes the device writable
#
# Since: 2.3
-#
##
{ 'enum': 'BlockdevChangeReadOnlyMode',
'data': ['retain', 'read-only', 'read-write'] }
-
##
# @blockdev-change-medium:
#
@@ -375,7 +373,6 @@
'*force': 'bool',
'*read-only-mode': 'BlockdevChangeReadOnlyMode' } }
-
##
# @DEVICE_TRAY_MOVED:
#
diff --git a/qapi/char.json b/qapi/char.json
index 7b42151..923dc50 100644
--- a/qapi/char.json
+++ b/qapi/char.json
@@ -216,7 +216,7 @@
#
# Configuration info for file chardevs.
#
-# @in: The name of the input file
+# @in: The name of the input file
# @out: The name of the output file
# @append: Open the file in append mode (default false to
# truncate) (Since 2.6)
@@ -329,7 +329,6 @@
'data': { '*signal': 'bool' },
'base': 'ChardevCommon' }
-
##
# @ChardevSpiceChannel:
#
@@ -377,10 +376,10 @@
#
# Configuration info for virtual console chardevs.
#
-# @width: console width, in pixels
+# @width: console width, in pixels
# @height: console height, in pixels
-# @cols: console width, in chars
-# @rows: console height, in chars
+# @cols: console width, in chars
+# @rows: console height, in chars
#
# Since: 1.5
##
@@ -413,7 +412,6 @@
# @clipboard: enable/disable clipboard, default is disabled.
#
# Since: 6.1
-#
##
{ 'struct': 'ChardevQemuVDAgent',
'data': { '*mouse': 'bool',
diff --git a/qapi/common.json b/qapi/common.json
index 412cc4f..356db3f 100644
--- a/qapi/common.json
+++ b/qapi/common.json
@@ -192,7 +192,6 @@
# Keys to toggle input-linux between host and guest.
#
# Since: 4.0
-#
##
{ 'enum': 'GrabToggleKeys',
'data': [ 'ctrl-ctrl', 'alt-alt', 'shift-shift','meta-meta', 'scrolllock',
@@ -204,7 +203,6 @@
# @human-readable-text: Formatted output intended for humans.
#
# Since: 6.2
-#
##
{ 'struct': 'HumanReadableText',
'data': { 'human-readable-text': 'str' } }
diff --git a/qapi/control.json b/qapi/control.json
index 71a838d..afca204 100644
--- a/qapi/control.json
+++ b/qapi/control.json
@@ -33,7 +33,6 @@
# all the QMP capabilities will be turned off by default.
#
# Since: 0.13
-#
##
{ 'command': 'qmp_capabilities',
'data': { '*enable': [ 'QMPCapability' ] },
@@ -49,7 +48,6 @@
# (Please refer to qmp-spec.txt for more information on OOB)
#
# Since: 2.12
-#
##
{ 'enum': 'QMPCapability',
'data': [ 'oob' ] }
@@ -70,7 +68,6 @@
{ 'struct': 'VersionTriple',
'data': {'major': 'int', 'minor': 'int', 'micro': 'int'} }
-
##
# @VersionInfo:
#
@@ -195,14 +192,14 @@
#
# Options to be used for adding a new monitor.
#
-# @id: Name of the monitor
+# @id: Name of the monitor
#
-# @mode: Selects the monitor mode (default: readline in the system
-# emulator, control in qemu-storage-daemon)
+# @mode: Selects the monitor mode (default: readline in the system
+# emulator, control in qemu-storage-daemon)
#
-# @pretty: Enables pretty printing (QMP only)
+# @pretty: Enables pretty printing (QMP only)
#
-# @chardev: Name of a character device to expose the monitor on
+# @chardev: Name of a character device to expose the monitor on
#
# Since: 5.0
##
diff --git a/qapi/crypto.json b/qapi/crypto.json
index 1ec54c1..15c24f0 100644
--- a/qapi/crypto.json
+++ b/qapi/crypto.json
@@ -24,7 +24,6 @@
'prefix': 'QCRYPTO_TLS_CREDS_ENDPOINT',
'data': ['client', 'server']}
-
##
# @QCryptoSecretFormat:
#
@@ -32,13 +31,13 @@
#
# @raw: raw bytes. When encoded in JSON only valid UTF-8 sequences can be used
# @base64: arbitrary base64 encoded binary data
+#
# Since: 2.6
##
{ 'enum': 'QCryptoSecretFormat',
'prefix': 'QCRYPTO_SECRET_FORMAT',
'data': ['raw', 'base64']}
-
##
# @QCryptoHashAlgorithm:
#
@@ -51,13 +50,13 @@
# @sha384: SHA-384. (since 2.7)
# @sha512: SHA-512. (since 2.7)
# @ripemd160: RIPEMD-160. (since 2.7)
+#
# Since: 2.6
##
{ 'enum': 'QCryptoHashAlgorithm',
'prefix': 'QCRYPTO_HASH_ALG',
'data': ['md5', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'ripemd160']}
-
##
# @QCryptoCipherAlgorithm:
#
@@ -75,6 +74,7 @@
# @twofish-128: Twofish with 128 bit / 16 byte keys
# @twofish-192: Twofish with 192 bit / 24 byte keys
# @twofish-256: Twofish with 256 bit / 32 byte keys
+#
# Since: 2.6
##
{ 'enum': 'QCryptoCipherAlgorithm',
@@ -85,7 +85,6 @@
'serpent-128', 'serpent-192', 'serpent-256',
'twofish-128', 'twofish-192', 'twofish-256']}
-
##
# @QCryptoCipherMode:
#
@@ -95,13 +94,13 @@
# @cbc: Cipher Block Chaining
# @xts: XEX with tweaked code book and ciphertext stealing
# @ctr: Counter (Since 2.8)
+#
# Since: 2.6
##
{ 'enum': 'QCryptoCipherMode',
'prefix': 'QCRYPTO_CIPHER_MODE',
'data': ['ecb', 'cbc', 'xts', 'ctr']}
-
##
# @QCryptoIVGenAlgorithm:
#
@@ -114,6 +113,7 @@
# @plain: 64-bit sector number truncated to 32-bits
# @plain64: 64-bit sector number
# @essiv: 64-bit sector number encrypted with a hash of the encryption key
+#
# Since: 2.6
##
{ 'enum': 'QCryptoIVGenAlgorithm',
@@ -170,12 +170,12 @@
# @key-secret: the ID of a QCryptoSecret object providing the
# decryption key. Mandatory except when probing image for
# metadata only.
+#
# Since: 2.6
##
{ 'struct': 'QCryptoBlockOptionsLUKS',
'data': { '*key-secret': 'str' }}
-
##
# @QCryptoBlockCreateOptionsLUKS:
#
@@ -194,6 +194,7 @@
# @iter-time: number of milliseconds to spend in
# PBKDF passphrase processing. Currently defaults
# to 2000. (since 2.8)
+#
# Since: 2.6
##
{ 'struct': 'QCryptoBlockCreateOptionsLUKS',
@@ -205,7 +206,6 @@
'*hash-alg': 'QCryptoHashAlgorithm',
'*iter-time': 'int'}}
-
##
# @QCryptoBlockOpenOptions:
#
@@ -220,7 +220,6 @@
'data': { 'qcow': 'QCryptoBlockOptionsQCow',
'luks': 'QCryptoBlockOptionsLUKS' } }
-
##
# @QCryptoBlockCreateOptions:
#
@@ -235,7 +234,6 @@
'data': { 'qcow': 'QCryptoBlockOptionsQCow',
'luks': 'QCryptoBlockCreateOptionsLUKS' } }
-
##
# @QCryptoBlockInfoBase:
#
@@ -249,7 +247,6 @@
{ 'struct': 'QCryptoBlockInfoBase',
'data': { 'format': 'QCryptoBlockFormat' }}
-
##
# @QCryptoBlockInfoLUKSSlot:
#
@@ -269,7 +266,6 @@
'*stripes': 'int',
'key-offset': 'int' } }
-
##
# @QCryptoBlockInfoLUKS:
#
@@ -315,15 +311,14 @@
#
# Defines state of keyslots that are affected by the update
#
-# @active: The slots contain the given password and marked as active
-# @inactive: The slots are erased (contain garbage) and marked as inactive
+# @active: The slots contain the given password and marked as active
+# @inactive: The slots are erased (contain garbage) and marked as inactive
#
# Since: 5.1
##
{ 'enum': 'QCryptoBlockLUKSKeyslotState',
'data': [ 'active', 'inactive' ] }
-
##
# @QCryptoBlockAmendOptionsLUKS:
#
@@ -332,33 +327,32 @@
#
# @state: the desired state of the keyslots
#
-# @new-secret: The ID of a QCryptoSecret object providing the password to be
-# written into added active keyslots
+# @new-secret: The ID of a QCryptoSecret object providing the password to be
+# written into added active keyslots
#
-# @old-secret: Optional (for deactivation only)
-# If given will deactivate all keyslots that
-# match password located in QCryptoSecret with this ID
+# @old-secret: Optional (for deactivation only)
+# If given will deactivate all keyslots that
+# match password located in QCryptoSecret with this ID
#
-# @iter-time: Optional (for activation only)
-# Number of milliseconds to spend in
-# PBKDF passphrase processing for the newly activated keyslot.
-# Currently defaults to 2000.
+# @iter-time: Optional (for activation only)
+# Number of milliseconds to spend in
+# PBKDF passphrase processing for the newly activated keyslot.
+# Currently defaults to 2000.
#
-# @keyslot: Optional. ID of the keyslot to activate/deactivate.
-# For keyslot activation, keyslot should not be active already
-# (this is unsafe to update an active keyslot),
-# but possible if 'force' parameter is given.
-# If keyslot is not given, first free keyslot will be written.
+# @keyslot: Optional. ID of the keyslot to activate/deactivate.
+# For keyslot activation, keyslot should not be active already
+# (this is unsafe to update an active keyslot),
+# but possible if 'force' parameter is given.
+# If keyslot is not given, first free keyslot will be written.
#
-# For keyslot deactivation, this parameter specifies the exact
-# keyslot to deactivate
+# For keyslot deactivation, this parameter specifies the exact
+# keyslot to deactivate
#
-# @secret: Optional. The ID of a QCryptoSecret object providing the
-# password to use to retrieve current master key.
-# Defaults to the same secret that was used to open the image
+# @secret: Optional. The ID of a QCryptoSecret object providing the
+# password to use to retrieve current master key.
+# Defaults to the same secret that was used to open the image
#
-#
-# Since 5.1
+# Since: 5.1
##
{ 'struct': 'QCryptoBlockAmendOptionsLUKS',
'data': { 'state': 'QCryptoBlockLUKSKeyslotState',
diff --git a/qapi/dump.json b/qapi/dump.json
index 29441af..90859c5 100644
--- a/qapi/dump.json
+++ b/qapi/dump.json
@@ -186,8 +186,8 @@
#
# Returns the available formats for dump-guest-memory
#
-# Returns: A @DumpGuestMemoryCapability object listing available formats for
-# dump-guest-memory
+# Returns: A @DumpGuestMemoryCapability object listing available formats for
+# dump-guest-memory
#
# Since: 2.0
#
diff --git a/qapi/job.json b/qapi/job.json
index 1a6ef03..d5f84e9 100644
--- a/qapi/job.json
+++ b/qapi/job.json
@@ -173,7 +173,6 @@
##
{ 'command': 'job-cancel', 'data': { 'id': 'str' } }
-
##
# @job-complete:
#
diff --git a/qapi/machine-target.json b/qapi/machine-target.json
index f5ec4bc..06b0d2c 100644
--- a/qapi/machine-target.json
+++ b/qapi/machine-target.json
@@ -54,7 +54,6 @@
{ 'enum': 'CpuModelExpansionType',
'data': [ 'static', 'full' ] }
-
##
# @CpuModelCompareResult:
#
diff --git a/qapi/machine.json b/qapi/machine.json
index 92480d4..1e5bf02 100644
--- a/qapi/machine.json
+++ b/qapi/machine.json
@@ -77,7 +77,6 @@
# additional fields will be listed (since 3.0)
#
# Since: 2.12
-#
##
{ 'union' : 'CpuInfoFast',
'base' : { 'cpu-index' : 'int',
@@ -299,6 +298,7 @@
# returning does not indicate that a guest has accepted the request or
# that it has shut down. Many guests will respond to this command by
# prompting the user in some way.
+#
# Example:
#
# -> { "execute": "system_powerdown" }
@@ -315,9 +315,9 @@
# query-current-machine), wake-up guest from suspend if the guest is
# in SUSPENDED state. Return an error otherwise.
#
-# Since: 1.1
+# Since: 1.1
#
-# Returns: nothing.
+# Returns: nothing.
#
# Note: prior to 4.0, this command does nothing in case the guest
# isn't suspended.
@@ -368,9 +368,9 @@
# Injects a Non-Maskable Interrupt into the default CPU (x86/s390) or all CPUs (ppc64).
# The command fails when the guest doesn't support injecting.
#
-# Returns: If successful, nothing
+# Returns: If successful, nothing
#
-# Since: 0.14
+# Since: 0.14
#
# Note: prior to 2.1, this command was only supported for x86 and s390 VMs
#
@@ -972,7 +972,7 @@
# preconfigure stage to configure numa mapping before initializing
# machine.
#
-# Since 3.0
+# Since: 3.0
##
{ 'command': 'set-numa-node', 'boxed': true,
'data': 'NumaOptions',
@@ -1021,7 +1021,6 @@
# Formula used: logical_vm_size = vm_ram_size - balloon_size
#
# Since: 0.14
-#
##
{ 'struct': 'BalloonInfo', 'data': {'actual': 'int' } }
@@ -1366,7 +1365,6 @@
{ 'event': 'MEMORY_DEVICE_SIZE_CHANGE',
'data': { '*id': 'str', 'size': 'size', 'qom-path' : 'str'} }
-
##
# @MEM_UNPLUG_ERROR:
#
diff --git a/qapi/migration.json b/qapi/migration.json
index 409eb08..1ff4d7e 100644
--- a/qapi/migration.json
+++ b/qapi/migration.json
@@ -151,7 +151,6 @@
# (since 4.2)
#
# Since: 2.3
-#
##
{ 'enum': 'MigrationStatus',
'data': [ 'none', 'setup', 'cancelling', 'cancelled',
@@ -166,7 +165,6 @@
# @transferred: amount of bytes transferred to the target VM by VFIO devices
#
# Since: 5.2
-#
##
{ 'struct': 'VfioStats',
'data': {'transferred': 'int' } }
@@ -546,7 +544,6 @@
# @zstd: use zstd compression method.
#
# Since: 5.0
-#
##
{ 'enum': 'MultiFDCompression',
'data': [ 'none', 'zlib',
@@ -1194,10 +1191,10 @@
# ask the client to automatically reconnect using the new parameters
# once migration finished successfully. Only implemented for SPICE.
#
-# @protocol: must be "spice"
-# @hostname: migration target hostname
-# @port: spice tcp port for plaintext channels
-# @tls-port: spice tcp port for tls-secured channels
+# @protocol: must be "spice"
+# @hostname: migration target hostname
+# @port: spice tcp port for plaintext channels
+# @tls-port: spice tcp port for tls-secured channels
# @cert-subject: server certificate subject
#
# Since: 0.14
@@ -1422,7 +1419,9 @@
# @state: The state the migration is currently expected to be in
#
# Returns: nothing on success
+#
# Since: 2.11
+#
# Example:
#
# -> { "execute": "migrate-continue" , "arguments":
@@ -1736,6 +1735,7 @@
# Since: 4.2
#
# Example:
+#
# <- { "event": "UNPLUG_PRIMARY",
# "data": { "device-id": "hostdev0" },
# "timestamp": { "seconds": 1265044230, "microseconds": 450486 } }
@@ -1754,7 +1754,6 @@
# @dirty-rate: dirty rate.
#
# Since: 6.2
-#
##
{ 'struct': 'DirtyRateVcpu',
'data': { 'id': 'int', 'dirty-rate': 'int64' } }
@@ -1771,7 +1770,6 @@
# @measured: the dirtyrate thread has measured and results are available.
#
# Since: 5.2
-#
##
{ 'enum': 'DirtyRateStatus',
'data': [ 'unstarted', 'measuring', 'measured'] }
@@ -1788,7 +1786,6 @@
# @dirty-bitmap: calculate dirtyrate by dirty bitmap.
#
# Since: 6.2
-#
##
{ 'enum': 'DirtyRateMeasureMode',
'data': ['page-sampling', 'dirty-ring', 'dirty-bitmap'] }
@@ -1818,7 +1815,6 @@
# mode specified (Since 6.2)
#
# Since: 5.2
-#
##
{ 'struct': 'DirtyRateInfo',
'data': {'*dirty-rate': 'int64',
@@ -1845,6 +1841,7 @@
# Since: 5.2
#
# Example:
+#
# {"execute": "calc-dirty-rate", "arguments": {"calc-time": 1,
# 'sample-pages': 512} }
#
diff --git a/qapi/misc-target.json b/qapi/misc-target.json
index ed4a468..4944c05 100644
--- a/qapi/misc-target.json
+++ b/qapi/misc-target.json
@@ -21,7 +21,6 @@
{ 'command': 'rtc-reset-reinjection',
'if': 'TARGET_I386' }
-
##
# @SevState:
#
@@ -101,7 +100,6 @@
{ 'command': 'query-sev', 'returns': 'SevInfo',
'if': 'TARGET_I386' }
-
##
# @SevLaunchMeasureInfo:
#
@@ -110,7 +108,6 @@
# @data: the measurement value encoded in base64
#
# Since: 2.12
-#
##
{ 'struct': 'SevLaunchMeasureInfo', 'data': {'data': 'str'},
'if': 'TARGET_I386' }
@@ -133,16 +130,15 @@
{ 'command': 'query-sev-launch-measure', 'returns': 'SevLaunchMeasureInfo',
'if': 'TARGET_I386' }
-
##
# @SevCapability:
#
# The struct describes capability for a Secure Encrypted Virtualization
# feature.
#
-# @pdh: Platform Diffie-Hellman key (base64 encoded)
+# @pdh: Platform Diffie-Hellman key (base64 encoded)
#
-# @cert-chain: PDH certificate chain (base64 encoded)
+# @cert-chain: PDH certificate chain (base64 encoded)
#
# @cpu0-id: Unique ID of CPU0 (base64 encoded) (since 7.1)
#
@@ -194,7 +190,6 @@
# @gpa: the guest physical address where secret will be injected.
#
# Since: 6.0
-#
##
{ 'command': 'sev-inject-launch-secret',
'data': { 'packet-header': 'str', 'secret': 'str', '*gpa': 'uint64' },
@@ -206,8 +201,7 @@
# The struct describes attestation report for a Secure Encrypted
# Virtualization feature.
#
-# @data: guest attestation report (base64 encoded)
-#
+# @data: guest attestation report (base64 encoded)
#
# Since: 6.1
##
@@ -307,7 +301,6 @@
{ 'command': 'query-gic-capabilities', 'returns': ['GICCapability'],
'if': 'TARGET_ARM' }
-
##
# @SGXEPCSection:
#
diff --git a/qapi/misc.json b/qapi/misc.json
index b83cc39..4534448 100644
--- a/qapi/misc.json
+++ b/qapi/misc.json
@@ -136,7 +136,7 @@
#
# Stop all guest VCPU execution.
#
-# Since: 0.14
+# Since: 0.14
#
# Notes: This function will succeed even if the guest is already in the stopped
# state. In "inmigrate" state, it will ensure that the guest
@@ -156,9 +156,9 @@
#
# Resume guest VCPU execution.
#
-# Since: 0.14
+# Since: 0.14
#
-# Returns: If successful, nothing
+# Returns: If successful, nothing
#
# Notes: This command will succeed if the guest is currently running. It
# will also succeed if the guest is in the "inmigrate" state; in
@@ -188,7 +188,7 @@
# Features:
# @unstable: This command is experimental.
#
-# Since 3.0
+# Since: 3.0
#
# Returns: nothing
#
diff --git a/qapi/pragma.json b/qapi/pragma.json
index e6a021c..7f810b0 100644
--- a/qapi/pragma.json
+++ b/qapi/pragma.json
@@ -6,7 +6,7 @@
# Whitelists to permit QAPI rule violations; think twice before you
# add to them!
{ 'pragma': {
- # Commands allowed to return a non-dictionary:
+ # Command names containing '_'
'command-name-exceptions': [
'add_client',
'block_resize',
@@ -24,6 +24,7 @@
'system_powerdown',
'system_reset',
'system_wakeup' ],
+ # Commands allowed to return a non-dictionary
'command-returns-exceptions': [
'human-monitor-command',
'qom-get',
diff --git a/qapi/replay.json b/qapi/replay.json
index 351898f..7294703 100644
--- a/qapi/replay.json
+++ b/qapi/replay.json
@@ -40,7 +40,6 @@
# @icount: current number of executed instructions.
#
# Since: 5.2
-#
##
{ 'struct': 'ReplayInfo',
'data': { 'mode': 'ReplayMode', '*filename': 'str', 'icount': 'int' } }
diff --git a/qapi/run-state.json b/qapi/run-state.json
index 8124220..6e2162d 100644
--- a/qapi/run-state.json
+++ b/qapi/run-state.json
@@ -104,7 +104,7 @@
#
# @status: the virtual machine @RunState
#
-# Since: 0.14
+# Since: 0.14
#
# Notes: @singlestep is enabled through the GDB stub
##
@@ -118,7 +118,7 @@
#
# Returns: @StatusInfo reflecting all VCPUs
#
-# Since: 0.14
+# Since: 0.14
#
# Example:
#
@@ -348,7 +348,7 @@
#
# @poweroff: Shutdown the VM and exit
#
-# @pause: pause the VM#
+# @pause: pause the VM
#
# Since: 6.0
##
@@ -592,13 +592,11 @@
# @guest: memory failure at guest memory,
#
# Since: 5.2
-#
##
{ 'enum': 'MemoryFailureRecipient',
'data': [ 'hypervisor',
'guest' ] }
-
##
# @MemoryFailureAction:
#
@@ -619,7 +617,6 @@
# to handle memory failures.
#
# Since: 5.2
-#
##
{ 'enum': 'MemoryFailureAction',
'data': [ 'ignore',
@@ -639,7 +636,6 @@
# failure was still in progress.
#
# Since: 5.2
-#
##
{ 'struct': 'MemoryFailureFlags',
'data': { 'action-required': 'bool',
diff --git a/qapi/sockets.json b/qapi/sockets.json
index fccc385..bad74e3 100644
--- a/qapi/sockets.json
+++ b/qapi/sockets.json
@@ -167,9 +167,9 @@
#
# Available SocketAddress types
#
-# @inet: Internet address
+# @inet: Internet address
#
-# @unix: Unix domain socket
+# @unix: Unix domain socket
#
# @vsock: VMCI address
#
@@ -189,7 +189,7 @@
# Captures the address of a socket, which could also be a named file
# descriptor
#
-# @type: Transport type
+# @type: Transport type
#
# Since: 2.9
##
diff --git a/qapi/ui.json b/qapi/ui.json
index 059302a..11a827d 100644
--- a/qapi/ui.json
+++ b/qapi/ui.json
@@ -15,7 +15,6 @@
# Display protocols which support changing password options.
#
# Since: 7.0
-#
##
{ 'enum': 'DisplayProtocol',
'data': [ 'vnc', 'spice' ] }
@@ -32,7 +31,6 @@
# @disconnect: disconnect existing clients
#
# Since: 7.0
-#
##
{ 'enum': 'SetPasswordAction',
'data': [ 'keep', 'fail', 'disconnect' ] }
@@ -52,7 +50,6 @@
# For VNC, only 'keep' is currently implemented.
#
# Since: 7.0
-#
##
{ 'union': 'SetPasswordOptions',
'base': { 'protocol': 'DisplayProtocol',
@@ -70,7 +67,6 @@
# Defaults to the first.
#
# Since: 7.0
-#
##
{ 'struct': 'SetPasswordOptionsVnc',
'data': { '*display': 'str' } }
@@ -115,7 +111,6 @@
# sure you are on the same machine as the QEMU instance.
#
# Since: 7.0
-#
##
{ 'union': 'ExpirePasswordOptions',
'base': { 'protocol': 'DisplayProtocol',
@@ -132,9 +127,7 @@
# Defaults to the first.
#
# Since: 7.0
-#
##
-
{ 'struct': 'ExpirePasswordOptionsVnc',
'data': { '*display': 'str' } }
@@ -167,7 +160,6 @@
# @ppm: PPM format
#
# Since: 7.1
-#
##
{ 'enum': 'ImageFormat',
'data': ['ppm', 'png'] }
@@ -902,7 +894,6 @@
# are effectively synonyms.
#
# Since: 1.3
-#
##
{ 'enum': 'QKeyCode',
'data': [ 'unmapped',
@@ -1027,8 +1018,8 @@
#
# Keyboard input event.
#
-# @key: Which key this event is for.
-# @down: True for key-down and false for key-up events.
+# @key: Which key this event is for.
+# @down: True for key-down and false for key-up events.
#
# Since: 2.0
##
@@ -1042,7 +1033,7 @@
# Pointer button input event.
#
# @button: Which button this event is for.
-# @down: True for key-down and false for key-up events.
+# @down: True for key-down and false for key-up events.
#
# Since: 2.0
##
@@ -1206,7 +1197,6 @@
# Since 3.1
#
# Since: 2.12
-#
##
{ 'struct' : 'DisplayGTK',
'data' : { '*grab-on-hover' : 'bool',
@@ -1221,7 +1211,6 @@
# available node on the host.
#
# Since: 3.1
-#
##
{ 'struct' : 'DisplayEGLHeadless',
'data' : { '*rendernode' : 'str' } }
@@ -1242,7 +1231,6 @@
# @audiodev: Use the specified DBus audiodev to export audio.
#
# Since: 7.0
-#
##
{ 'struct' : 'DisplayDBus',
'data' : { '*rendernode' : 'str',
@@ -1250,21 +1238,20 @@
'*p2p': 'bool',
'*audiodev': 'str' } }
- ##
- # @DisplayGLMode:
- #
- # Display OpenGL mode.
- #
- # @off: Disable OpenGL (default).
- # @on: Use OpenGL, pick context type automatically.
- # Would better be named 'auto' but is called 'on' for backward
- # compatibility with bool type.
- # @core: Use OpenGL with Core (desktop) Context.
- # @es: Use OpenGL with ES (embedded systems) Context.
- #
- # Since: 3.0
- #
- ##
+##
+# @DisplayGLMode:
+#
+# Display OpenGL mode.
+#
+# @off: Disable OpenGL (default).
+# @on: Use OpenGL, pick context type automatically.
+# Would better be named 'auto' but is called 'on' for backward
+# compatibility with bool type.
+# @core: Use OpenGL with Core (desktop) Context.
+# @es: Use OpenGL with ES (embedded systems) Context.
+#
+# Since: 3.0
+##
{ 'enum' : 'DisplayGLMode',
'data' : [ 'off', 'on', 'core', 'es' ] }
@@ -1273,10 +1260,9 @@
#
# Curses display options.
#
-# @charset: Font charset used by guest (default: CP437).
+# @charset: Font charset used by guest (default: CP437).
#
# Since: 4.0
-#
##
{ 'struct' : 'DisplayCurses',
'data' : { '*charset' : 'str' } }
@@ -1346,7 +1332,6 @@
# @dbus: Start a D-Bus service for the display. (Since 7.0)
#
# Since: 2.12
-#
##
{ 'enum' : 'DisplayType',
'data' : [
@@ -1368,15 +1353,13 @@
#
# Display (user interface) options.
#
-# @type: Which DisplayType qemu should use.
-# @full-screen: Start user interface in fullscreen mode (default: off).
-# @window-close: Allow to quit qemu with window close button (default: on).
-# @show-cursor: Force showing the mouse cursor (default: off).
-# (since: 5.0)
-# @gl: Enable OpenGL support (default: off).
+# @type: Which DisplayType qemu should use.
+# @full-screen: Start user interface in fullscreen mode (default: off).
+# @window-close: Allow to quit qemu with window close button (default: on).
+# @show-cursor: Force showing the mouse cursor (default: off). (since: 5.0)
+# @gl: Enable OpenGL support (default: off).
#
# Since: 2.12
-#
##
{ 'union' : 'DisplayOptions',
'base' : { 'type' : 'DisplayType',
@@ -1403,7 +1386,6 @@
# Returns: @DisplayOptions
#
# Since: 3.1
-#
##
{ 'command': 'query-display-options',
'returns': 'DisplayOptions' }
@@ -1416,7 +1398,6 @@
# @vnc: VNC display
#
# Since: 6.0
-#
##
{ 'enum': 'DisplayReloadType',
'data': ['vnc'] }
@@ -1429,7 +1410,6 @@
# @tls-certs: reload tls certs or not.
#
# Since: 6.0
-#
##
{ 'struct': 'DisplayReloadOptionsVNC',
'data': { '*tls-certs': 'bool' } }
@@ -1442,7 +1422,6 @@
# @type: Specify the display type.
#
# Since: 6.0
-#
##
{ 'union': 'DisplayReloadOptions',
'base': {'type': 'DisplayReloadType'},
@@ -1477,7 +1456,6 @@
# @vnc: VNC display
#
# Since: 7.1
-#
##
{ 'enum': 'DisplayUpdateType',
'data': ['vnc'] }
@@ -1492,7 +1470,6 @@
# for websockets are not touched.
#
# Since: 7.1
-#
##
{ 'struct': 'DisplayUpdateOptionsVNC',
'data': { '*addresses': ['SocketAddress'] } }
@@ -1505,7 +1482,6 @@
# @type: Specify the display type.
#
# Since: 7.1
-#
##
{ 'union': 'DisplayUpdateOptions',
'base': {'type': 'DisplayUpdateType'},
diff --git a/qga/qapi-schema.json b/qga/qapi-schema.json
index 4d8e506..f989597 100644
--- a/qga/qapi-schema.json
+++ b/qga/qapi-schema.json
@@ -950,7 +950,7 @@
# by device mapper
# @smart: disk smart information (Since 7.1)
#
-# Since 5.2
+# Since: 5.2
##
{ 'struct': 'GuestDiskInfo',
'data': {'name': 'str', 'partition': 'bool', '*dependencies': ['str'],
diff --git a/scripts/qapi/expr.py b/scripts/qapi/expr.py
index 48578e1..5a1782b 100644
--- a/scripts/qapi/expr.py
+++ b/scripts/qapi/expr.py
@@ -443,7 +443,7 @@ def check_features(features: Optional[object],
check_keys(feat, info, source, ['name'], ['if'])
check_name_is_str(feat['name'], info, source)
source = "%s '%s'" % (source, feat['name'])
- check_name_str(feat['name'], info, source)
+ check_name_lower(feat['name'], info, source)
check_if(feat, info, source)