Commit de472e4a authored by Peter Xu's avatar Peter Xu Committed by Eduardo Habkost
Browse files

memory: provide iommu_replay_all()



This is an "global" version of existing memory_region_iommu_replay() -
we announce the translations to all the registered notifiers, instead of
a specific one.

Reviewed-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
Reviewed-by: default avatar\"Michael S. Tsirkin\" <mst@redhat.com>
Signed-off-by: default avatarPeter Xu <peterx@redhat.com>
Message-Id: <1491562755-23867-4-git-send-email-peterx@redhat.com>
Signed-off-by: default avatarEduardo Habkost <ehabkost@redhat.com>
parent 512fa408
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -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.
+9 −0
Original line number Diff line number Diff line
@@ -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)
{