[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-ppc] [PATCH qemu v16 01/19] vfio: Delay DMA address space list
From: |
Alex Williamson |
Subject: |
Re: [Qemu-ppc] [PATCH qemu v16 01/19] vfio: Delay DMA address space listener release |
Date: |
Thu, 5 May 2016 16:39:41 -0600 |
On Wed, 4 May 2016 16:52:13 +1000
Alexey Kardashevskiy <address@hidden> wrote:
> 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.
Any mappings within the container should clean themselves up when the
container is deprivleged by removing the last group in the kernel. Is
the issue that that doesn't happen, which would be a spapr vfio kernel
bug, or that our QEMU side structures get all out of whack if we let
that happen?
>
> 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);
> }
I'm not spotting why this is a 2-pass process vs simply moving the
existing QLIST_EMPTY cleanup above the ioctl. Thanks,
Alex
- Re: [Qemu-ppc] [Qemu-devel] [PATCH qemu v16 19/19] spapr_pci/spapr_pci_vfio: Support Dynamic DMA Windows (DDW), (continued)
- [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, 2016/05/04
- Re: [Qemu-ppc] [PATCH qemu v16 01/19] vfio: Delay DMA address space listener release,
Alex Williamson <=
- 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