On 29/03/2017 11:09, Jason Wang wrote: >>>> >>> This looks a good fix but may not solve this issue completely. Depends >>> on the iova that guest uses, address_space_cache_init() may succeed even >>> in this case since vtd does a passthrough translation in this case. >> Can you explain this more? > > Yes. In this case, virtio-net-pci is not reset, but vtd has been reset. > So virtio-net-pci will still try to use the iova of ring to setup the > cache but now vtd treat iova as gpa since dmar has been disabled during > reset. (E.g In my test with Linux driver, desc map succeed but used fail.)
That would be a Linux bug, the devices below the IOMMU have to be reset first. Paolo