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