for (i = 0; i < nr_mmap_areas; i++) {
struct iovec *iov = &vfu_reg->mmap_areas[i];
vfu_log(vfu_ctx, LOG_DEBUG, "%s: area %d [%p, %p)", __func__,
i, iov->iov_base, iov_end(iov));
(*fds)[i] = vfu_reg->fd;
sparse->areas[i].offset = (uintptr_t)iov->iov_base;
sparse->areas[i].size = iov->iov_len;
}
If we use more than one sparse mmap in a device region, libvifo-user duplicates the FD for each sparse map. However, QEMU only expectes one FD which is also what the spec mandates (there's only one FD in VFIO as well). We should either fix libvfio-user or change the spec to allow multiple FDs to be returned.
In
dev_get_caps
:If we use more than one sparse mmap in a device region, libvifo-user duplicates the FD for each sparse map. However, QEMU only expectes one FD which is also what the spec mandates (there's only one FD in VFIO as well). We should either fix libvfio-user or change the spec to allow multiple FDs to be returned.