76daa3
From 7517822d39e8eac1fe4423f29e5dc57c4b85c19e Mon Sep 17 00:00:00 2001
76daa3
From: Peter Xu <peterx@redhat.com>
76daa3
Date: Mon, 24 Apr 2017 02:52:47 +0200
76daa3
Subject: [PATCH 08/23] memory: provide iommu_replay_all()
76daa3
76daa3
RH-Author: Peter Xu <peterx@redhat.com>
76daa3
Message-id: <1493002373-13010-4-git-send-email-peterx@redhat.com>
76daa3
Patchwork-id: 74851
76daa3
O-Subject: [RHEL7.4 qemu-kvm-rhev PATCH v2 3/9] memory: provide iommu_replay_all()
76daa3
Bugzilla: 1335808
76daa3
RH-Acked-by: Marcel Apfelbaum <marcel@redhat.com>
76daa3
RH-Acked-by: Michael S. Tsirkin <mst@redhat.com>
76daa3
RH-Acked-by: Xiao Wang <jasowang@redhat.com>
76daa3
76daa3
This is an "global" version of existing memory_region_iommu_replay() -
76daa3
we announce the translations to all the registered notifiers, instead of
76daa3
a specific one.
76daa3
76daa3
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
76daa3
Reviewed-by: \"Michael S. Tsirkin\" <mst@redhat.com>
76daa3
Signed-off-by: Peter Xu <peterx@redhat.com>
76daa3
Message-Id: <1491562755-23867-4-git-send-email-peterx@redhat.com>
76daa3
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
76daa3
(cherry picked from commit de472e4a92f780d02b894001e004f4b4a350ec38)
76daa3
Signed-off-by: Peter Xu <peterx@redhat.com>
76daa3
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
76daa3
---
76daa3
 include/exec/memory.h | 8 ++++++++
76daa3
 memory.c              | 9 +++++++++
76daa3
 2 files changed, 17 insertions(+)
76daa3
76daa3
diff --git a/include/exec/memory.h b/include/exec/memory.h
76daa3
index 07e43da..fb7dff3 100644
76daa3
--- a/include/exec/memory.h
76daa3
+++ b/include/exec/memory.h
76daa3
@@ -713,6 +713,14 @@ void memory_region_iommu_replay(MemoryRegion *mr, IOMMUNotifier *n,
76daa3
                                 bool is_write);
76daa3
 
76daa3
 /**
76daa3
+ * memory_region_iommu_replay_all: replay existing IOMMU translations
76daa3
+ * to all the notifiers registered.
76daa3
+ *
76daa3
+ * @mr: the memory region to observe
76daa3
+ */
76daa3
+void memory_region_iommu_replay_all(MemoryRegion *mr);
76daa3
+
76daa3
+/**
76daa3
  * memory_region_unregister_iommu_notifier: unregister a notifier for
76daa3
  * changes to IOMMU translation entries.
76daa3
  *
76daa3
diff --git a/memory.c b/memory.c
76daa3
index 7496b3d..b4ed67b 100644
76daa3
--- a/memory.c
76daa3
+++ b/memory.c
76daa3
@@ -1642,6 +1642,15 @@ void memory_region_iommu_replay(MemoryRegion *mr, IOMMUNotifier *n,
76daa3
     }
76daa3
 }
76daa3
 
76daa3
+void memory_region_iommu_replay_all(MemoryRegion *mr)
76daa3
+{
76daa3
+    IOMMUNotifier *notifier;
76daa3
+
76daa3
+    IOMMU_NOTIFIER_FOREACH(notifier, mr) {
76daa3
+        memory_region_iommu_replay(mr, notifier, false);
76daa3
+    }
76daa3
+}
76daa3
+
76daa3
 void memory_region_unregister_iommu_notifier(MemoryRegion *mr,
76daa3
                                              IOMMUNotifier *n)
76daa3
 {
76daa3
-- 
76daa3
1.8.3.1
76daa3