On Thu, Jun 08, 2023 at 05:52:28PM +0800, Zhenzhong Duan wrote: > Peter Xu found a potential issue: > > "The other thing is when I am looking at the new code I found that we > actually extended the replay() to be used also in dirty tracking of vfio, > in vfio_sync_dirty_bitmap(). For that maybe it's already broken if > unmap_all() because afaiu log_sync() can be called in migration thread > anytime during DMA so I think it means the device is prone to DMA with the > IOMMU pgtable quickly erased and rebuilt here, which means the DMA could > fail unexpectedly. Copy Alex, Kirti and Neo." > > Fix it by replacing the unmap_all() to only evacuate the iova tree > (keeping all host mappings untouched, IOW, don't notify UNMAP), and > do a full resync in page walk which will notify all existing mappings > as MAP. This way we don't interrupt with any existing mapping if there > is (e.g. for the dirty sync case), meanwhile we keep sync too to latest > (for moving a vfio device into an existing iommu group). > > Suggested-by: Peter Xu <pet...@redhat.com> > Signed-off-by: Zhenzhong Duan <zhenzhong.d...@intel.com>
Reviewed-by: Peter Xu <pet...@redhat.com> -- Peter Xu