On Wed, Mar 8, 2023 at 9:02 AM Michael S. Tsirkin <m...@redhat.com> wrote: > > On Thu, Feb 23, 2023 at 02:59:22PM +0800, Jason Wang wrote: > > This patch introduces a new helper to unmap the range of a specific > > IOMMU notifier. > > > > Signed-off-by: Jason Wang <jasow...@redhat.com> > > --- > > include/exec/memory.h | 10 ++++++++++ > > softmmu/memory.c | 13 +++++++++++++ > > 2 files changed, 23 insertions(+) > > > > diff --git a/include/exec/memory.h b/include/exec/memory.h > > index 2e602a2fad..6fa0b071f0 100644 > > --- a/include/exec/memory.h > > +++ b/include/exec/memory.h > > @@ -1731,6 +1731,16 @@ void memory_region_notify_iommu(IOMMUMemoryRegion > > *iommu_mr, > > void memory_region_notify_iommu_one(IOMMUNotifier *notifier, > > IOMMUTLBEvent *event); > > > > +/** > > + * memory_region_unmap_iommu_notifier_range: notify a unmap for an IOMMU > > + * translation that covers the > > + * range of a notifier > > + * > > + * @notifier: the notifier to be notified > > + */ > > +void memory_region_unmap_iommu_notifier_range(IOMMUNotifier *n); > > + > > + > > /** > > * memory_region_register_iommu_notifier: register a notifier for changes > > to > > * IOMMU translation entries. > > This causes doc warnings: > > /scm/qemu/docs/../include/exec/memory.h:1741: warning: Function parameter or > member 'n' not described in 'memory_region_unmap_iommu_notifier_range' > /scm/qemu/docs/../include/exec/memory.h:1741: warning: Excess function > parameter 'notifier' description in 'memory_region_unmap_iommu_notifier_range' > > > please fix.
Will do. Thanks > > > > diff --git a/softmmu/memory.c b/softmmu/memory.c > > index 9d64efca26..ba43b4474e 100644 > > --- a/softmmu/memory.c > > +++ b/softmmu/memory.c > > @@ -1996,6 +1996,19 @@ void memory_region_notify_iommu_one(IOMMUNotifier > > *notifier, > > } > > } > > > > +void memory_region_unmap_iommu_notifier_range(IOMMUNotifier *n) > > +{ > > + IOMMUTLBEvent event; > > + > > + event.type = IOMMU_NOTIFIER_UNMAP; > > + event.entry.target_as = &address_space_memory; > > + event.entry.iova = n->start; > > + event.entry.perm = IOMMU_NONE; > > + event.entry.addr_mask = n->end - n->start; > > + > > + memory_region_notify_iommu_one(n, &event); > > +} > > + > > void memory_region_notify_iommu(IOMMUMemoryRegion *iommu_mr, > > int iommu_idx, > > IOMMUTLBEvent event) > > -- > > 2.25.1 >