On Mon, 20 May 2019 15:50:11 +0800 jiangyiwen <jiangyiwen@xxxxxxxxxx> wrote: > Hello alex, > > We test a call trace as follows use ARM64 architecture, > it prints a WARN_ON() when find not physical address by > iova in vfio_unmap_unpin(), I can't find the cause of > problem now, do you have any ideas? Is it reproducible? Can you explain how to reproduce it? The stack trace indicates a KVM VM is being shutdown and we're trying to clean out the IOMMU mappings from the domain and find a page that we think should be mapped that the IOMMU doesn't have mapped. What device(s) was assigned to the VM? This could be an IOMMU driver bug or a vfio_iommu_type1 bug. Have you been able to reproduce this on other platforms? > In addition, I want to know why there is a WARN_ON() instead > of BUG_ON()? Does it affect the follow-up process? We're removing an IOMMU page mapping entry and find that it's not present, so ultimately the effect at the IOMMU is the same, there's no mapping at that address, but I can't say without further analysis whether that means a page remains pinned or if that inconsistency was resolved previously elsewhere. We WARN_ON because this is not what we expect, but potentially leaking a page of memory doesn't seem worthy of crashing the host, nor would a crash dump at that point necessarily aid in resolving the missing page as it potentially occurred well in the past. Thanks, Alex