|
|
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 |
|