The following patch adds the documentation for an introspection subsystem for KVM (KVMi). It details the purpose and the use case that has shaped the proposed API/ABI, as well as the wire protocol. During the discussion that has developed around our previous RFC patchset a number of TODO-s have been highlighted: * the integration in qemu: a socket-based protocol used to initiate the connection with an introspection tool and then passes control to KVM, the in-kernel mechanism taking over from there; * the integration of the SPT-handling mechanism into the KVM MMU; * the elaboration of a set of policies and a mechanism to better control this feature; One bit of code that has passed (maybe) unnoticed in the RFC is a new function added to Linux' mm called vm_replace_page() which, much like KSM's replace_page(), gets two processes to share a page (read-write, no-COW): https://marc.info/?l=kvm&m=149762056518799&w=2 This is used to quickly scan and patch the guest software. The patch following this cover letter does not yet address the points above but aims to clear with the community the overall ABI/API, with a focus on x86. Thank you, v2: - add documentation and ABI [Paolo, Jan] - drop all the other patches for now [Paolo] - remove KVMI_GET_GUESTS, KVMI_EVENT_GUEST_ON, KVMI_EVENT_GUEST_OFF, and let libvirt/qemu handle this [Stefan, Paolo] - change the license from LGPL to GPL [Jan] - remove KVMI_READ_PHYSICAL and KVMI_WRITE_PHYSICAL (not used anymore) - make the interface a little more consistent Adalbert Lazar (1): kvm: Add documentation and ABI/API header for VM introspection Documentation/virtual/kvm/kvmi.rst | 985 +++++++++++++++++++++++++++++++++++++ include/uapi/linux/kvmi.h | 310 ++++++++++++ 2 files changed, 1295 insertions(+) create mode 100644 Documentation/virtual/kvm/kvmi.rst create mode 100644 include/uapi/linux/kvmi.h