-# @align: the base address alignment when QEMU mmap(2)s @mem-path. Some
-# backend stores specified by @mem-path require an alignment different
-# than the default one used by QEMU, e.g. the device DAX /dev/dax0.0
-# requires 2M alignment rather than 4K. In such cases, users can
-# specify the required alignment via this option.
-# 0 selects a default alignment (currently the page size). (default: 0)
-#
-# @discard-data: if true, the file contents can be destroyed when QEMU exits,
-# to avoid unnecessarily flushing data to the backing file. Note
-# that ``discard-data`` is only an optimization, and QEMU might
-# not discard file contents if it aborts unexpectedly or is
-# terminated using SIGKILL. (default: false)
-#
-# @mem-path: the path to either a shared memory or huge page filesystem mount
-#
-# @pmem: specifies whether the backing file specified by @mem-path is in
-# host persistent memory that can be accessed using the SNIA NVM
-# programming model (e.g. Intel NVDIMM).
-#
-# @readonly: if true, the backing file is opened read-only; if false, it is
-# opened read-write. (default: false)
+# @align: the base address alignment when QEMU mmap(2)s @mem-path.
+# Some backend stores specified by @mem-path require an alignment
+# different than the default one used by QEMU, e.g. the device DAX
+# /dev/dax0.0 requires 2M alignment rather than 4K. In such cases,
+# users can specify the required alignment via this option. 0
+# selects a default alignment (currently the page size).
+# (default: 0)
+#
+# @offset: the offset into the target file that the region starts at.
+# You can use this option to back multiple regions with a single
+# file. Must be a multiple of the page size.
+# (default: 0) (since 8.1)
+#
+# @discard-data: if true, the file contents can be destroyed when QEMU
+# exits, to avoid unnecessarily flushing data to the backing file.
+# Note that @discard-data is only an optimization, and QEMU might
+# not discard file contents if it aborts unexpectedly or is
+# terminated using SIGKILL. (default: false)
+#
+# @mem-path: the path to either a shared memory or huge page
+# filesystem mount
+#
+# @pmem: specifies whether the backing file specified by @mem-path is
+# in host persistent memory that can be accessed using the SNIA
+# NVM programming model (e.g. Intel NVDIMM).
+#
+# @readonly: if true, the backing file is opened read-only; if false,
+# it is opened read-write. (default: false)
+#
+# @rom: whether to create Read Only Memory (ROM) that cannot be modified
+# by the VM. Any write attempts to such ROM will be denied. Most
+# use cases want writable RAM instead of ROM. However, selected use
+# cases, like R/O NVDIMMs, can benefit from ROM. If set to 'on',
+# create ROM; if set to 'off', create writable RAM; if set to
+# 'auto', the value of the @readonly property is used. This
+# property is primarily helpful when we want to have proper RAM in
+# configurations that would traditionally create ROM before this
+# property was introduced: VM templating, where we want to open a
+# file readonly (@readonly set to true) and mark the memory to be
+# private for QEMU (@share set to false). For this use case, we need
+# writable RAM instead of ROM, and want to set this property to 'off'.
+# (default: auto, since 8.2)