Message ID | 1491462524-1617-4-git-send-email-peterx@redhat.com |
---|---|
State | New |
Headers | show |
Hi Peter, On 06/04/2017 09:08, Peter Xu wrote: > This is an "global" version of exising memory_region_iommu_replay() - we s/exising/existing > announce the translations to all the registered notifiers, instead of a > specific one. > > Reviewed-by: David Gibson <david@gibson.dropbear.id.au> > Signed-off-by: Peter Xu <peterx@redhat.com> > --- > 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); It is not fully clear to me what is the consequence of setting is_write=false always? Thanks Eric > + } > +} > + > void memory_region_unregister_iommu_notifier(MemoryRegion *mr, > IOMMUNotifier *n) > { >
On Thu, Apr 06, 2017 at 03:08:38PM +0800, Peter Xu wrote: > This is an "global" version of exising memory_region_iommu_replay() - we > announce the translations to all the registered notifiers, instead of a > specific one. > > Reviewed-by: David Gibson <david@gibson.dropbear.id.au> > Signed-off-by: Peter Xu <peterx@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> > --- > 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) > { > -- > 2.7.4
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) {