On 21/03/18 06:43, Tian, Kevin wrote: [...] >> + >> +#include <uapi/linux/virtio_iommu.h> >> + >> +#define MSI_IOVA_BASE 0x8000000 >> +#define MSI_IOVA_LENGTH 0x100000 > > this is ARM specific, and according to virtio-iommu spec isn't it > better probed on the endpoint instead of hard-coding here? These values are arbitrary, not really ARM-specific even if ARM is the only user yet: we're just reserving a random IOVA region for mapping MSIs. It is hard-coded because of the way iommu-dma.c works, but I don't quite remember why that allocation isn't dynamic. As said on the v0.6 spec thread, I'm not sure allocating the IOVA range in the host is preferable. With nested translation the guest has to map it anyway, and I believe dealing with IOVA allocation should be left to the guest when possible. Thanks, Jean