|
|
76daa3 |
From b4cb4dbce403eecae8765d1b6bcf13fdf361cec3 Mon Sep 17 00:00:00 2001
|
|
|
76daa3 |
From: Peter Xu <peterx@redhat.com>
|
|
|
76daa3 |
Date: Mon, 24 Apr 2017 02:52:46 +0200
|
|
|
76daa3 |
Subject: [PATCH 07/23] memory: provide IOMMU_NOTIFIER_FOREACH macro
|
|
|
76daa3 |
|
|
|
76daa3 |
RH-Author: Peter Xu <peterx@redhat.com>
|
|
|
76daa3 |
Message-id: <1493002373-13010-3-git-send-email-peterx@redhat.com>
|
|
|
76daa3 |
Patchwork-id: 74850
|
|
|
76daa3 |
O-Subject: [RHEL7.4 qemu-kvm-rhev PATCH v2 2/9] memory: provide IOMMU_NOTIFIER_FOREACH macro
|
|
|
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 |
A new macro is provided to iterate all the IOMMU notifiers hooked
|
|
|
76daa3 |
under specific IOMMU memory region.
|
|
|
76daa3 |
|
|
|
76daa3 |
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
|
|
|
76daa3 |
Reviewed-by: Eric Auger <eric.auger@redhat.com>
|
|
|
76daa3 |
Reviewed-by: \"Michael S. Tsirkin\" <mst@redhat.com>
|
|
|
76daa3 |
Signed-off-by: Peter Xu <peterx@redhat.com>
|
|
|
76daa3 |
Message-Id: <1491562755-23867-3-git-send-email-peterx@redhat.com>
|
|
|
76daa3 |
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
|
|
|
76daa3 |
(cherry picked from commit 512fa40867e6118568756a81ddaf476a0fef0f32)
|
|
|
76daa3 |
Signed-off-by: Peter Xu <peterx@redhat.com>
|
|
|
76daa3 |
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
|
|
76daa3 |
---
|
|
|
76daa3 |
include/exec/memory.h | 3 +++
|
|
|
76daa3 |
memory.c | 4 ++--
|
|
|
76daa3 |
2 files changed, 5 insertions(+), 2 deletions(-)
|
|
|
76daa3 |
|
|
|
76daa3 |
diff --git a/include/exec/memory.h b/include/exec/memory.h
|
|
|
76daa3 |
index 0840c89..07e43da 100644
|
|
|
76daa3 |
--- a/include/exec/memory.h
|
|
|
76daa3 |
+++ b/include/exec/memory.h
|
|
|
76daa3 |
@@ -239,6 +239,9 @@ struct MemoryRegion {
|
|
|
76daa3 |
IOMMUNotifierFlag iommu_notify_flags;
|
|
|
76daa3 |
};
|
|
|
76daa3 |
|
|
|
76daa3 |
+#define IOMMU_NOTIFIER_FOREACH(n, mr) \
|
|
|
76daa3 |
+ QLIST_FOREACH((n), &(mr)->iommu_notify, node)
|
|
|
76daa3 |
+
|
|
|
76daa3 |
/**
|
|
|
76daa3 |
* MemoryListener: callbacks structure for updates to the physical memory map
|
|
|
76daa3 |
*
|
|
|
76daa3 |
diff --git a/memory.c b/memory.c
|
|
|
76daa3 |
index 75ac595..7496b3d 100644
|
|
|
76daa3 |
--- a/memory.c
|
|
|
76daa3 |
+++ b/memory.c
|
|
|
76daa3 |
@@ -1583,7 +1583,7 @@ static void memory_region_update_iommu_notify_flags(MemoryRegion *mr)
|
|
|
76daa3 |
IOMMUNotifierFlag flags = IOMMU_NOTIFIER_NONE;
|
|
|
76daa3 |
IOMMUNotifier *iommu_notifier;
|
|
|
76daa3 |
|
|
|
76daa3 |
- QLIST_FOREACH(iommu_notifier, &mr->iommu_notify, node) {
|
|
|
76daa3 |
+ IOMMU_NOTIFIER_FOREACH(iommu_notifier, mr) {
|
|
|
76daa3 |
flags |= iommu_notifier->notifier_flags;
|
|
|
76daa3 |
}
|
|
|
76daa3 |
|
|
|
76daa3 |
@@ -1667,7 +1667,7 @@ void memory_region_notify_iommu(MemoryRegion *mr,
|
|
|
76daa3 |
request_flags = IOMMU_NOTIFIER_UNMAP;
|
|
|
76daa3 |
}
|
|
|
76daa3 |
|
|
|
76daa3 |
- QLIST_FOREACH(iommu_notifier, &mr->iommu_notify, node) {
|
|
|
76daa3 |
+ IOMMU_NOTIFIER_FOREACH(iommu_notifier, mr) {
|
|
|
76daa3 |
/*
|
|
|
76daa3 |
* Skip the notification if the notification does not overlap
|
|
|
76daa3 |
* with registered range.
|
|
|
76daa3 |
--
|
|
|
76daa3 |
1.8.3.1
|
|
|
76daa3 |
|