[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-ppc] [PATCH qemu v16 01/19] vfio: Delay DMA address space listener
From: |
Alexey Kardashevskiy |
Subject: |
[Qemu-ppc] [PATCH qemu v16 01/19] vfio: Delay DMA address space listener release |
Date: |
Wed, 4 May 2016 16:52:13 +1000 |
This postpones VFIO container deinitialization to let region_del()
callbacks (called via vfio_listener_release) do proper clean up
while the group is still attached to the container.
Signed-off-by: Alexey Kardashevskiy <address@hidden>
---
hw/vfio/common.c | 22 +++++++++++++++-------
1 file changed, 15 insertions(+), 7 deletions(-)
diff --git a/hw/vfio/common.c b/hw/vfio/common.c
index fe5ec6a..0b40262 100644
--- a/hw/vfio/common.c
+++ b/hw/vfio/common.c
@@ -921,23 +921,31 @@ static void vfio_disconnect_container(VFIOGroup *group)
{
VFIOContainer *container = group->container;
- if (ioctl(group->fd, VFIO_GROUP_UNSET_CONTAINER, &container->fd)) {
- error_report("vfio: error disconnecting group %d from container",
- group->groupid);
- }
-
QLIST_REMOVE(group, container_next);
+
+ if (QLIST_EMPTY(&container->group_list)) {
+ VFIOGuestIOMMU *giommu;
+
+ vfio_listener_release(container);
+
+ QLIST_FOREACH(giommu, &container->giommu_list, giommu_next) {
+ memory_region_unregister_iommu_notifier(&giommu->n);
+ }
+ }
+
group->container = NULL;
+ if (ioctl(group->fd, VFIO_GROUP_UNSET_CONTAINER, &container->fd)) {
+ error_report("vfio: error disconnecting group %d from container",
+ group->groupid);
+ }
if (QLIST_EMPTY(&container->group_list)) {
VFIOAddressSpace *space = container->space;
VFIOGuestIOMMU *giommu, *tmp;
- vfio_listener_release(container);
QLIST_REMOVE(container, next);
QLIST_FOREACH_SAFE(giommu, &container->giommu_list, giommu_next, tmp) {
- memory_region_unregister_iommu_notifier(&giommu->n);
QLIST_REMOVE(giommu, giommu_next);
g_free(giommu);
}
--
2.5.0.rc3
[Qemu-ppc] [PATCH qemu v16 18/19] vfio/spapr: Create DMA window dynamically (SPAPR IOMMU v2), Alexey Kardashevskiy, 2016/05/04
- Re: [Qemu-ppc] [PATCH qemu v16 18/19] vfio/spapr: Create DMA window dynamically (SPAPR IOMMU v2), Alex Williamson, 2016/05/13
- Re: [Qemu-ppc] [PATCH qemu v16 18/19] vfio/spapr: Create DMA window dynamically (SPAPR IOMMU v2), Alexey Kardashevskiy, 2016/05/16
- Re: [Qemu-ppc] [PATCH qemu v16 18/19] vfio/spapr: Create DMA window dynamically (SPAPR IOMMU v2), Alex Williamson, 2016/05/16
- Re: [Qemu-ppc] [PATCH qemu v16 18/19] vfio/spapr: Create DMA window dynamically (SPAPR IOMMU v2), David Gibson, 2016/05/26
- Re: [Qemu-ppc] [PATCH qemu v16 18/19] vfio/spapr: Create DMA window dynamically (SPAPR IOMMU v2), Alexey Kardashevskiy, 2016/05/26
- Re: [Qemu-ppc] [PATCH qemu v16 18/19] vfio/spapr: Create DMA window dynamically (SPAPR IOMMU v2), David Gibson, 2016/05/27
[Qemu-ppc] [PATCH qemu v16 01/19] vfio: Delay DMA address space listener release,
Alexey Kardashevskiy <=
- Re: [Qemu-ppc] [PATCH qemu v16 01/19] vfio: Delay DMA address space listener release, Alex Williamson, 2016/05/05
- Re: [Qemu-ppc] [PATCH qemu v16 01/19] vfio: Delay DMA address space listener release, Alexey Kardashevskiy, 2016/05/13
- Re: [Qemu-ppc] [PATCH qemu v16 01/19] vfio: Delay DMA address space listener release, Alex Williamson, 2016/05/13
- Re: [Qemu-ppc] [PATCH qemu v16 01/19] vfio: Delay DMA address space listener release, David Gibson, 2016/05/25
- Re: [Qemu-ppc] [PATCH qemu v16 01/19] vfio: Delay DMA address space listener release, Alex Williamson, 2016/05/25
- Re: [Qemu-ppc] [PATCH qemu v16 01/19] vfio: Delay DMA address space listener release, David Gibson, 2016/05/25
[Qemu-ppc] [PATCH qemu v16 06/19] spapr_pci: Use correct DMA LIOBN when composing the device tree, Alexey Kardashevskiy, 2016/05/04
[Qemu-ppc] [PATCH qemu v16 15/19] spapr_pci: Add and export DMA resetting helper, Alexey Kardashevskiy, 2016/05/04
[Qemu-ppc] [PATCH qemu v16 07/19] spapr_iommu: Move table allocation to helpers, Alexey Kardashevskiy, 2016/05/04