Kernel commit 492855939bdb added a limit to the number of outstanding DMA requests for a type1 vfio container. However, lazy unmapping in s390 can in quite a large number of outstanding DMA requests to build up prior to being purged, potentially the entire guest DMA space. This results in unexpected 'VFIO_MAP_DMA failed: No space left on device' conditions seen in QEMU.
This patchset adds support to qemu to retrieve the DMA limit information added to VFIO_IOMMU_GET_INFO. The patches are separated into vfio hits which add support for reading in VFIO_IOMU_GET_INFO capability chains and getting the per-container dma_limit, and s390 hits to track DMA usage on a per-container basis. Associated kernel patch: https://marc.info/?l=kvm&m=159984267812181&w=2 Matthew Rosato (3): vfio: Get DMA limit information s390x/pci: Honor DMA limits set by vfio vfio: Create shared routine for scanning info capabilities hw/s390x/s390-pci-bus.c | 56 ++++++++++++++++++++++++--- hw/s390x/s390-pci-bus.h | 9 +++++ hw/s390x/s390-pci-inst.c | 29 +++++++++++--- hw/s390x/s390-pci-inst.h | 3 ++ hw/vfio/common.c | 89 ++++++++++++++++++++++++++++++++++--------- include/hw/vfio/vfio-common.h | 1 + 6 files changed, 159 insertions(+), 28 deletions(-) -- 1.8.3.1