diff --git a/include/exec/memory.h b/include/exec/memory.h index 07e43daf20..fb7dff3405 100644 --- a/include/exec/memory.h +++ b/include/exec/memory.h @@ -712,6 +712,14 @@ void memory_region_register_iommu_notifier(MemoryRegion *mr, void memory_region_iommu_replay(MemoryRegion *mr, IOMMUNotifier *n, bool is_write); +/** + * memory_region_iommu_replay_all: replay existing IOMMU translations + * to all the notifiers registered. + * + * @mr: the memory region to observe + */ +void memory_region_iommu_replay_all(MemoryRegion *mr); + /** * memory_region_unregister_iommu_notifier: unregister a notifier for * changes to IOMMU translation entries. diff --git a/memory.c b/memory.c index 7496b3d3d5..b4ed67b27a 100644 --- a/memory.c +++ b/memory.c @@ -1642,6 +1642,15 @@ void memory_region_iommu_replay(MemoryRegion *mr, IOMMUNotifier *n, } } +void memory_region_iommu_replay_all(MemoryRegion *mr) +{ + IOMMUNotifier *notifier; + + IOMMU_NOTIFIER_FOREACH(notifier, mr) { + memory_region_iommu_replay(mr, notifier, false); + } +} + void memory_region_unregister_iommu_notifier(MemoryRegion *mr, IOMMUNotifier *n) {