Developing with libvfio-user ============================ The API is currently documented via the [libvfio-user header file](../include/libvfio-user.h), along with some additional [documentation](./). The library is actively under development, and should not yet be considered a stable API/ABI. The protocol itself can be considered stable and will not break backwards compatibility. See the QEMU repository for the [canonical protocol definition](https://www.qemu.org/docs/master/interop/vfio-user.html). The API is not thread safe, but individual `vfu_ctx_t` handles can be used separately by each thread: that is, there is no global library state. See [Accessing memory with libvfio-user](memory-mapping.md) for more details on how to manage memory. See [Examples](examples.md) for some simple examples of using the library. Supported features ------------------ With the client support found in [cloud-hypervisor](https://github.com/cloud-hypervisor/cloud-hypervisor/) or [qemu](https://gitlab.com/qemu-project/qemu), most guest VM use cases will work. However, guests with an IOMMU (vIOMMU) will not currently work: the number of DMA regions is strictly limited, and there are also issues with some server implementations such as SPDK's virtual NVMe controller. Currently, `libvfio-user` has explicit support for PCI devices only. In addition, only PCI endpoints are supported (no bridges etc.). Live migration -------------- The `master` branch of `libvfio-user` implements live migration with a protocol based on vfio's v2 protocol. Currently, there is no support for this in any qemu client. Contributions are welcome!