>-----Original Message-----
>From: Steve Sistare <steven.sist...@oracle.com>
>Subject: [PATCH V4 07/43] vfio: vfio_find_ram_discard_listener
>
>Define vfio_find_ram_discard_listener as a subroutine so additional calls to
>it may be added in a subsequent patch.
>
>Signed-off-by: Steve Sistare <steven.sist...@oracle.com>
>Reviewed-by: Cédric Le Goater <c...@redhat.com>

Reviewed-by: Zhenzhong Duan <zhenzhong.d...@intel.com>

>---
> include/hw/vfio/vfio-container-base.h |  3 +++
> hw/vfio/listener.c                    | 35 ++++++++++++++++++++++-------------
> 2 files changed, 25 insertions(+), 13 deletions(-)
>
>diff --git a/include/hw/vfio/vfio-container-base.h b/include/hw/vfio/vfio-
>container-base.h
>index 83ba7a5..01cdcb6 100644
>--- a/include/hw/vfio/vfio-container-base.h
>+++ b/include/hw/vfio/vfio-container-base.h
>@@ -196,4 +196,7 @@ struct VFIOIOMMUClass {
>     void (*release)(VFIOContainerBase *bcontainer);
> };
>
>+VFIORamDiscardListener *vfio_find_ram_discard_listener(
>+    VFIOContainerBase *bcontainer, MemoryRegionSection *section);
>+
> #endif /* HW_VFIO_VFIO_CONTAINER_BASE_H */
>diff --git a/hw/vfio/listener.c b/hw/vfio/listener.c
>index a1d2d25..fb1fd84 100644
>--- a/hw/vfio/listener.c
>+++ b/hw/vfio/listener.c
>@@ -456,6 +456,26 @@ static void vfio_device_error_append(VFIODevice
>*vbasedev, Error **errp)
>     }
> }
>
>+VFIORamDiscardListener *vfio_find_ram_discard_listener(
>+    VFIOContainerBase *bcontainer, MemoryRegionSection *section)
>+{
>+    VFIORamDiscardListener *vrdl = NULL;
>+
>+    QLIST_FOREACH(vrdl, &bcontainer->vrdl_list, next) {
>+        if (vrdl->mr == section->mr &&
>+            vrdl->offset_within_address_space ==
>+            section->offset_within_address_space) {
>+            break;
>+        }
>+    }
>+
>+    if (!vrdl) {
>+        hw_error("vfio: Trying to sync missing RAM discard listener");
>+        /* does not return */
>+    }
>+    return vrdl;
>+}
>+
> static void vfio_listener_region_add(MemoryListener *listener,
>                                      MemoryRegionSection *section)
> {
>@@ -1086,19 +1106,8 @@
>vfio_sync_ram_discard_listener_dirty_bitmap(VFIOContainerBase *bcontainer,
>                                             MemoryRegionSection *section)
> {
>     RamDiscardManager *rdm =
>memory_region_get_ram_discard_manager(section->mr);
>-    VFIORamDiscardListener *vrdl = NULL;
>-
>-    QLIST_FOREACH(vrdl, &bcontainer->vrdl_list, next) {
>-        if (vrdl->mr == section->mr &&
>-            vrdl->offset_within_address_space ==
>-            section->offset_within_address_space) {
>-            break;
>-        }
>-    }
>-
>-    if (!vrdl) {
>-        hw_error("vfio: Trying to sync missing RAM discard listener");
>-    }
>+    VFIORamDiscardListener *vrdl =
>+        vfio_find_ram_discard_listener(bcontainer, section);
>
>     /*
>      * We only want/can synchronize the bitmap for actually mapped parts -
>--
>1.8.3.1

Reply via email to