From 7517822d39e8eac1fe4423f29e5dc57c4b85c19e Mon Sep 17 00:00:00 2001 From: Peter Xu Date: Mon, 24 Apr 2017 02:52:47 +0200 Subject: [PATCH 08/23] memory: provide iommu_replay_all() RH-Author: Peter Xu Message-id: <1493002373-13010-4-git-send-email-peterx@redhat.com> Patchwork-id: 74851 O-Subject: [RHEL7.4 qemu-kvm-rhev PATCH v2 3/9] memory: provide iommu_replay_all() Bugzilla: 1335808 RH-Acked-by: Marcel Apfelbaum RH-Acked-by: Michael S. Tsirkin RH-Acked-by: Xiao Wang 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: David Gibson Reviewed-by: \"Michael S. Tsirkin\" Signed-off-by: Peter Xu Message-Id: <1491562755-23867-4-git-send-email-peterx@redhat.com> Signed-off-by: Eduardo Habkost (cherry picked from commit de472e4a92f780d02b894001e004f4b4a350ec38) Signed-off-by: Peter Xu Signed-off-by: Miroslav Rezanina --- include/exec/memory.h | 8 ++++++++ memory.c | 9 +++++++++ 2 files changed, 17 insertions(+) diff --git a/include/exec/memory.h b/include/exec/memory.h index 07e43da..fb7dff3 100644 --- a/include/exec/memory.h +++ b/include/exec/memory.h @@ -713,6 +713,14 @@ 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 7496b3d..b4ed67b 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) { -- 1.8.3.1