diff mbox series

[V2,3/5] memory: introduce memory_region_unmap_iommu_notifier_range()

Message ID 20230223065924.42503-4-jasowang@redhat.com
State New
Headers show
Series Fix UNMAP notifier for intel-iommu | expand

Commit Message

Jason Wang Feb. 23, 2023, 6:59 a.m. UTC
This patch introduces a new helper to unmap the range of a specific
IOMMU notifier.

Signed-off-by: Jason Wang <jasowang@redhat.com>
---
 include/exec/memory.h | 10 ++++++++++
 softmmu/memory.c      | 13 +++++++++++++
 2 files changed, 23 insertions(+)

Comments

Thomas Huth March 7, 2023, 1:19 p.m. UTC | #1
On 23/02/2023 07.59, Jason Wang wrote:
> This patch introduces a new helper to unmap the range of a specific
> IOMMU notifier.
> 
> Signed-off-by: Jason Wang <jasowang@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);

FWIW, this causes warning during the build process for me now:

../include/exec/memory.h:1741: warning: Function parameter or member 'n' not described in 'memory_region_unmap_iommu_notifier_range'
../include/exec/memory.h:1741: warning: Excess function parameter 'notifier' description in 'memory_region_unmap_iommu_notifier_range'

  Thomas
Michael S. Tsirkin March 8, 2023, 1:02 a.m. UTC | #2
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 <jasowang@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.


> 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
Jason Wang March 8, 2023, 5:19 a.m. UTC | #3
On Wed, Mar 8, 2023 at 9:02 AM Michael S. Tsirkin <mst@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 <jasowang@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
>
diff mbox series

Patch

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