From: Alexey Kardashevskiy <aik@ozlabs.ru>
To: qemu-devel@nongnu.org
Cc: Alexey Kardashevskiy <aik@ozlabs.ru>,
qemu-ppc@nongnu.org, Alexander Graf <agraf@suse.de>,
David Gibson <david@gibson.dropbear.id.au>,
Alex Williamson <alex.williamson@redhat.com>,
Paolo Bonzini <pbonzini@redhat.com>
Subject: [Qemu-devel] [PATCH qemu v16 02/19] memory: Call region_del() callbacks on memory listener unregistering
Date: Wed, 4 May 2016 16:52:14 +1000 [thread overview]
Message-ID: <1462344751-28281-3-git-send-email-aik@ozlabs.ru> (raw)
In-Reply-To: <1462344751-28281-1-git-send-email-aik@ozlabs.ru>
When a new memory listener is registered, listener_add_address_space()
is called and which in turn calls region_add() callbacks of memory regions.
However when unregistering the memory listener, it is just removed from
the listening chain and no region_del() is called.
This adds listener_del_address_space() and uses it in
memory_listener_unregister(). listener_add_address_space() was used as
a template with the following changes:
s/log_global_start/log_global_stop/
s/log_start/log_stop/
s/region_add/region_del/
This will allow the following patches to add/remove DMA windows
dynamically from VFIO's PCI address space's region_add()/region_del().
Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
---
memory.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 48 insertions(+)
diff --git a/memory.c b/memory.c
index f76f85d..f762a34 100644
--- a/memory.c
+++ b/memory.c
@@ -2185,6 +2185,49 @@ static void listener_add_address_space(MemoryListener *listener,
flatview_unref(view);
}
+static void listener_del_address_space(MemoryListener *listener,
+ AddressSpace *as)
+{
+ FlatView *view;
+ FlatRange *fr;
+
+ if (listener->address_space_filter
+ && listener->address_space_filter != as) {
+ return;
+ }
+
+ if (listener->begin) {
+ listener->begin(listener);
+ }
+ if (global_dirty_log) {
+ if (listener->log_global_stop) {
+ listener->log_global_stop(listener);
+ }
+ }
+
+ view = address_space_get_flatview(as);
+ FOR_EACH_FLAT_RANGE(fr, view) {
+ MemoryRegionSection section = {
+ .mr = fr->mr,
+ .address_space = as,
+ .offset_within_region = fr->offset_in_region,
+ .size = fr->addr.size,
+ .offset_within_address_space = int128_get64(fr->addr.start),
+ .readonly = fr->readonly,
+ };
+ if (fr->dirty_log_mask && listener->log_stop) {
+ listener->log_stop(listener, §ion, 0, fr->dirty_log_mask);
+ }
+ if (listener->region_del) {
+ listener->region_del(listener, §ion);
+ }
+ }
+ if (listener->commit) {
+ listener->commit(listener);
+ }
+ flatview_unref(view);
+}
+
void memory_listener_register(MemoryListener *listener, AddressSpace *filter)
{
MemoryListener *other = NULL;
@@ -2211,6 +2254,11 @@ void memory_listener_register(MemoryListener *listener, AddressSpace *filter)
void memory_listener_unregister(MemoryListener *listener)
{
+ AddressSpace *as;
+
+ QTAILQ_FOREACH(as, &address_spaces, address_spaces_link) {
+ listener_del_address_space(listener, as);
+ }
QTAILQ_REMOVE(&memory_listeners, listener, link);
}
--
2.5.0.rc3
next prev parent reply other threads:[~2016-05-04 6:57 UTC|newest]
Thread overview: 69+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-05-04 6:52 [Qemu-devel] [PATCH qemu v16 00/19] spapr: vfio: Enable Dynamic DMA windows (DDW) Alexey Kardashevskiy
2016-05-04 6:52 ` [Qemu-devel] [PATCH qemu v16 01/19] vfio: Delay DMA address space listener release Alexey Kardashevskiy
2016-05-05 22:39 ` Alex Williamson
2016-05-13 7:16 ` Alexey Kardashevskiy
2016-05-13 22:24 ` Alex Williamson
2016-05-25 6:34 ` David Gibson
2016-05-25 13:59 ` Alex Williamson
2016-05-26 1:00 ` David Gibson
2016-05-04 6:52 ` Alexey Kardashevskiy [this message]
2016-05-05 22:45 ` [Qemu-devel] [PATCH qemu v16 02/19] memory: Call region_del() callbacks on memory listener unregistering Alex Williamson
2016-05-26 1:48 ` David Gibson
2016-05-04 6:52 ` [Qemu-devel] [PATCH qemu v16 03/19] memory: Fix IOMMU replay base address Alexey Kardashevskiy
2016-05-26 1:50 ` David Gibson
2016-05-04 6:52 ` [Qemu-devel] [PATCH qemu v16 04/19] vmstate: Define VARRAY with VMS_ALLOC Alexey Kardashevskiy
2016-05-27 7:54 ` Alexey Kardashevskiy
2016-06-01 2:29 ` Alexey Kardashevskiy
2016-06-01 8:11 ` Paolo Bonzini
2016-06-02 0:43 ` David Gibson
2016-05-04 6:52 ` [Qemu-devel] [PATCH qemu v16 05/19] vfio: Check that IOMMU MR translates to system address space Alexey Kardashevskiy
2016-05-26 1:51 ` David Gibson
2016-05-04 6:52 ` [Qemu-devel] [PATCH qemu v16 06/19] spapr_pci: Use correct DMA LIOBN when composing the device tree Alexey Kardashevskiy
2016-05-26 3:17 ` David Gibson
2016-05-04 6:52 ` [Qemu-devel] [PATCH qemu v16 07/19] spapr_iommu: Move table allocation to helpers Alexey Kardashevskiy
2016-05-26 3:32 ` David Gibson
2016-05-04 6:52 ` [Qemu-devel] [PATCH qemu v16 08/19] spapr_iommu: Introduce "enabled" state for TCE table Alexey Kardashevskiy
2016-05-26 3:39 ` David Gibson
2016-05-27 8:01 ` Alexey Kardashevskiy
2016-05-04 6:52 ` [Qemu-devel] [PATCH qemu v16 09/19] spapr_iommu: Finish renaming vfio_accel to need_vfio Alexey Kardashevskiy
2016-05-26 3:18 ` David Gibson
2016-05-04 6:52 ` [Qemu-devel] [PATCH qemu v16 10/19] spapr_iommu: Migrate full state Alexey Kardashevskiy
2016-05-26 4:01 ` David Gibson
2016-05-31 8:19 ` Alexey Kardashevskiy
2016-05-04 6:52 ` [Qemu-devel] [PATCH qemu v16 11/19] spapr_iommu: Add root memory region Alexey Kardashevskiy
2016-05-04 6:52 ` [Qemu-devel] [PATCH qemu v16 12/19] spapr_pci: Reset DMA config on PHB reset Alexey Kardashevskiy
2016-05-04 6:52 ` [Qemu-devel] [PATCH qemu v16 13/19] memory: Add reporting of supported page sizes Alexey Kardashevskiy
2016-05-04 6:52 ` [Qemu-devel] [PATCH qemu v16 14/19] vfio: spapr: Add DMA memory preregistering (SPAPR IOMMU v2) Alexey Kardashevskiy
2016-05-13 22:25 ` Alex Williamson
2016-05-16 1:10 ` Alexey Kardashevskiy
2016-05-16 20:20 ` Alex Williamson
2016-05-26 4:53 ` David Gibson
2016-05-04 6:52 ` [Qemu-devel] [PATCH qemu v16 15/19] spapr_pci: Add and export DMA resetting helper Alexey Kardashevskiy
2016-05-04 6:52 ` [Qemu-devel] [PATCH qemu v16 16/19] vfio: Add host side DMA window capabilities Alexey Kardashevskiy
2016-05-13 22:25 ` Alex Williamson
2016-05-27 0:36 ` David Gibson
2016-05-04 6:52 ` [Qemu-devel] [PATCH qemu v16 17/19] spapr_iommu, vfio, memory: Notify IOMMU about starting/stopping being used by VFIO Alexey Kardashevskiy
2016-05-13 22:26 ` Alex Williamson
2016-05-16 8:35 ` Alexey Kardashevskiy
2016-05-16 20:13 ` Alex Williamson
2016-05-20 8:04 ` [Qemu-devel] [RFC PATCH qemu] spapr_iommu, vfio, memory: Notify IOMMU about starting/stopping listening Alexey Kardashevskiy
2016-05-20 15:19 ` Alex Williamson
2016-05-27 0:43 ` David Gibson
2016-05-04 6:52 ` [Qemu-devel] [PATCH qemu v16 18/19] vfio/spapr: Create DMA window dynamically (SPAPR IOMMU v2) Alexey Kardashevskiy
2016-05-13 22:26 ` Alex Williamson
2016-05-16 4:52 ` Alexey Kardashevskiy
2016-05-16 20:20 ` Alex Williamson
2016-05-27 0:50 ` David Gibson
2016-05-27 3:49 ` Alexey Kardashevskiy
2016-05-27 4:05 ` David Gibson
2016-05-04 6:52 ` [Qemu-devel] [PATCH qemu v16 19/19] spapr_pci/spapr_pci_vfio: Support Dynamic DMA Windows (DDW) Alexey Kardashevskiy
2016-05-13 8:41 ` Bharata B Rao
2016-05-13 8:49 ` Bharata B Rao
2016-05-16 6:25 ` Alexey Kardashevskiy
2016-05-17 5:32 ` Bharata B Rao
2016-05-27 4:44 ` David Gibson
2016-05-27 5:49 ` Bharata B Rao
2016-06-01 3:32 ` Bharata B Rao
2016-05-27 4:42 ` David Gibson
2016-05-13 4:54 ` [Qemu-devel] [PATCH qemu v16 00/19] spapr: vfio: Enable Dynamic DMA windows (DDW) Alexey Kardashevskiy
2016-05-13 5:36 ` Alex Williamson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1462344751-28281-3-git-send-email-aik@ozlabs.ru \
--to=aik@ozlabs.ru \
--cc=agraf@suse.de \
--cc=alex.williamson@redhat.com \
--cc=david@gibson.dropbear.id.au \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).