Comment 1 for bug 1863333

Revision history for this message
Alex Williamson (alex-l-williamson) wrote :

This seems to be due to the vfio-helper code assuming it can map an arbitrarily large IOVA range starting at 64K base address. x86 processors typically have a reserved range near the top of the 32-bit address space which is used for MSI support which is used by the interrupt remapper where we cannot create an overlapping DMA mapping window. Therefore once you have something approaching a 4G VM, you'll see the initial -EINVAL and I assume things fall apart from there. Changing the base IOVA address in vfio-helpers.c seems to be sufficient, ex:

#define QEMU_VFIO_IOVA_MIN 0x100000000ULL

This might be a sufficient legacy fix, but we do now expose valid IOVA ranges through the VFIO API which would allow this driver to dynamically pick IOVA ranges based on what the platform actually supports.