mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-07-25 19:33:54 -06:00
iommufd: preserve DMA mappings
During cpr-transfer load in new QEMU, the vfio_memory_listener causes spurious calls to map and unmap DMA regions, as devices are created and the address space is built. This memory was already already mapped by the device in old QEMU, so suppress the map and unmap callbacks during incoming CPR. Signed-off-by: Steve Sistare <steven.sistare@oracle.com> Reviewed-by: Zhenzhong Duan <zhenzhong.duan@intel.com> Link: https://lore.kernel.org/qemu-devel/1751493538-202042-20-git-send-email-steven.sistare@oracle.com Signed-off-by: Cédric Le Goater <clg@redhat.com>
This commit is contained in:
parent
5c066c4be2
commit
6ff4cccd13
1 changed files with 8 additions and 0 deletions
|
@ -245,6 +245,10 @@ int iommufd_backend_map_file_dma(IOMMUFDBackend *be, uint32_t ioas_id,
|
|||
.length = size,
|
||||
};
|
||||
|
||||
if (cpr_is_incoming()) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!readonly) {
|
||||
map.flags |= IOMMU_IOAS_MAP_WRITEABLE;
|
||||
}
|
||||
|
@ -274,6 +278,10 @@ int iommufd_backend_unmap_dma(IOMMUFDBackend *be, uint32_t ioas_id,
|
|||
.length = size,
|
||||
};
|
||||
|
||||
if (cpr_is_incoming()) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
ret = ioctl(fd, IOMMU_IOAS_UNMAP, &unmap);
|
||||
/*
|
||||
* IOMMUFD takes mapping as some kind of object, unmapping
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue