docs/devel: update tcg-plugins.rst with API versioning details

While we are at it fix up the quoted code sections with the inline ::

Signed-off-by: Alex Bennée <>
Reviewed-by: Robert Foley <>
diff --git a/docs/devel/tcg-plugins.rst b/docs/devel/tcg-plugins.rst
index b18fb67..718eef0 100644
--- a/docs/devel/tcg-plugins.rst
+++ b/docs/devel/tcg-plugins.rst
@@ -25,6 +25,23 @@
 API should it need to do so. The best way to avoid this is to submit
 your plugin upstream so they can be updated if/when the API changes.
+API versioning
+All plugins need to declare a symbol which exports the plugin API
+version they were built against. This can be done simply by::
+  QEMU_PLUGIN_EXPORT int qemu_plugin_version = QEMU_PLUGIN_VERSION;
+The core code will refuse to load a plugin that doesn't export a
+`qemu_plugin_version` symbol or if plugin version is outside of QEMU's
+supported range of API versions.
+Additionally the `qemu_info_t` structure which is passed to the
+`qemu_plugin_install` method of a plugin will detail the minimum and
+current API versions supported by QEMU. The API version will be
+incremented if new APIs are added. The minimum API version will be
+incremented if existing APIs are changed or removed.
 Exposure of QEMU internals
@@ -40,16 +57,14 @@
-The QEMU binary needs to be compiled for plugin support:
+The QEMU binary needs to be compiled for plugin support::
-    configure --enable-plugins
+  configure --enable-plugins
 Once built a program can be run with multiple plugins loaded each with
-their own arguments:
+their own arguments::
       -plugin tests/plugin/,arg=inline,arg=hint \
       -plugin tests/plugin/