static void vhost_iommu_region_del(MemoryListener *listener,

                                   MemoryRegionSection *section)

{

    struct vhost_dev *dev = container_of(listener, struct vhost_dev,

                                         iommu_listener);

    struct vhost_iommu *iommu;



    if (!memory_region_is_iommu(section->mr)) {

        return;

    }



    QLIST_FOREACH(iommu, &dev->iommu_list, iommu_next) {

        if (iommu->mr == section->mr) {

            memory_region_unregister_iommu_notifier(iommu->mr,

                                                    &iommu->n);

            QLIST_REMOVE(iommu, iommu_next);

            g_free(iommu);

            break;

        }

    }

}

static void vhost_iommu_region_del(MemoryListener *listener,

                                   MemoryRegionSection *section)

{

    struct vhost_dev *dev = container_of(listener, struct vhost_dev,

                                         iommu_listener);

    struct vhost_iommu *iommu;



    if (!memory_region_is_iommu(section->mr)) {

        return;

    }



    QLIST_FOREACH(iommu, &dev->iommu_list, iommu_next) {

        if (iommu->mr == section->mr) {

            memory_region_unregister_iommu_notifier(iommu->mr,

                                                    &iommu->n);

            QLIST_REMOVE(iommu, iommu_next);

            g_free(iommu);

            break;

        }

    }

}

static void FUNC_0(MemoryListener *VAR_0,

                                   MemoryRegionSection *VAR_1)

{

    struct vhost_dev *VAR_2 = container_of(VAR_0, struct vhost_dev,

                                         iommu_listener);

    struct vhost_iommu *VAR_3;



    if (!memory_region_is_iommu(VAR_1->mr)) {

        return;

    }



    QLIST_FOREACH(VAR_3, &VAR_2->iommu_list, iommu_next) {

        if (VAR_3->mr == VAR_1->mr) {

            memory_region_unregister_iommu_notifier(VAR_3->mr,

                                                    &VAR_3->n);

            QLIST_REMOVE(VAR_3, iommu_next);

            g_free(VAR_3);

            break;

        }

    }

}

static void FUNC_0(MemoryListener *VAR_0,
MemoryRegionSection *VAR_1)
{ struct vhost_dev *VAR_2 = container_of(VAR_0, struct vhost_dev,
iommu_listener); struct vhost_iommu *VAR_3; if (!memory_region_is_iommu(VAR_1->mr)) { return; } QLIST_FOREACH(VAR_3, &VAR_2->iommu_list, iommu_next) { if (VAR_3->mr == VAR_1->mr) { memory_region_unregister_iommu_notifier(VAR_3->mr,
&VAR_3->n); QLIST_REMOVE(VAR_3, iommu_next); g_free(VAR_3); break; } } }