[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <966d7407-d91f-f652-454d-bbda263567ba@amd.com>
Date: Wed, 17 Jan 2018 23:54:40 +0700
From: Suravee Suthikulpanit <suravee.suthikulpanit@....com>
To: Alex Williamson <alex.williamson@...hat.com>
Cc: iommu@...ts.linux-foundation.org, jroedel@...e.de,
linux-kernel@...r.kernel.org
Subject: Re: [RFC PATCH v2 1/2] vfio/type1: Adopt fast IOTLB flush interface
when unmap IOVAs
Hi Alex,
On 1/9/18 4:07 AM, Alex Williamson wrote:
>>> @@ -661,6 +705,8 @@ static long vfio_unmap_unpin(struct vfio_iommu *iommu, struct vfio_dma *dma,
>>> if (!IS_IOMMU_CAP_DOMAIN_IN_CONTAINER(iommu))
>>> return 0;
>>>
>>> + INIT_LIST_HEAD(&unmapped_regions);
>>> +
>>> /*
>>> * We use the IOMMU to track the physical addresses, otherwise we'd
>>> * need a much more complicated tracking system. Unfortunately that
>>> @@ -698,24 +744,36 @@ static long vfio_unmap_unpin(struct vfio_iommu *iommu, struct vfio_dma *dma,
>>> break;
>>> }
>>>
>>> - unmapped = iommu_unmap(domain->domain, iova, len);
>>> - if (WARN_ON(!unmapped))
>>> + entry = kzalloc(sizeof(*entry), GFP_KERNEL);
>>> + if (!entry)
>>> break;
>
> Turns out this nagged at me a bit too, this function only gets called
> once to dump the vfio_dma, so bailing out here leaves pages pinned and
> IOMMU mappings in place, for a performance optimization that we could
> just skip. We could sync&unpin anything collected up to this point and
> continue this step with a synchronous unmap/unpin. Thanks,
Ah, that's an over look in my part also. Thanks for catching this. I'll implement
the fallback mechanism per your suggestion in v3.
Thanks,
Suravee
Powered by blists - more mailing lists