Hi All: According to ATS, device should work if ATS is disabled. This is not correctly implemented in the current intel-iommu since it doesn't handle the UNMAP notifier correctly. This breaks the vhost-net + vIOMMU without dt.
The root casue is that the when there's a device IOTLB miss (note that it's not specific to PCI so it can work without ATS), Qemu doesn't build the IOVA tree, so when guest start an IOTLB invalidation, Qemu won't trigger the UNMAP notifier. Fixing this by triggering UNMAP notifier in those cases. Thanks Changes since V1: - Do not depend on the iova tree for such kind of invalidation but simply tries to do UNMAP for all attached IOMMU notifiers Jason Wang (4): intel-iommu: fail MAP notifier without caching mode intel-iommu: fail DEVIOTLB_UNMAP without dt mode memory: introduce memory_region_unmap_iommu_notifier_range() smmu: switch to use memory_region_unmap_iommu_notifier_range() Peter Xu (1): intel-iommu: send UNMAP notifications for domain or global inv desc hw/arm/smmu-common.c | 16 +--------------- hw/i386/intel_iommu.c | 29 ++++++++++++++++++++++++----- include/exec/memory.h | 10 ++++++++++ softmmu/memory.c | 13 +++++++++++++ 4 files changed, 48 insertions(+), 20 deletions(-) -- 2.25.1