[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v6 03/18] vfio: allow to notify unmap for very l
From: |
Alex Williamson |
Subject: |
Re: [Qemu-devel] [PATCH v6 03/18] vfio: allow to notify unmap for very large region |
Date: |
Fri, 3 Feb 2017 10:20:36 -0700 |
On Fri, 3 Feb 2017 16:22:29 +0800
Peter Xu <address@hidden> wrote:
> Linux vfio driver supports to do VFIO_IOMMU_UNMAP_DMA for a very big
> region. This can be leveraged by QEMU IOMMU implementation to cleanup
> existing page mappings for an entire iova address space (by notifying
> with an IOTLB with extremely huge addr_mask). However current
> vfio_iommu_map_notify() does not allow that. It make sure that all the
> translated address in IOTLB is falling into RAM range.
>
> The check makes sense, but it should only be a sensible checker for
> mapping operations, and mean little for unmap operations.
>
> This patch moves this check into map logic only, so that we'll get
> faster unmap handling (no need to translate again), and also we can then
> better support unmapping a very big region when it covers non-ram ranges
> or even not-existing ranges.
>
> Signed-off-by: Peter Xu <address@hidden>
> ---
> hw/vfio/common.c | 7 +++----
> 1 file changed, 3 insertions(+), 4 deletions(-)
Acked-by: Alex Williamson <address@hidden>
> diff --git a/hw/vfio/common.c b/hw/vfio/common.c
> index 42c4790..f3ba9b9 100644
> --- a/hw/vfio/common.c
> +++ b/hw/vfio/common.c
> @@ -352,11 +352,10 @@ static void vfio_iommu_map_notify(IOMMUNotifier *n,
> IOMMUTLBEntry *iotlb)
>
> rcu_read_lock();
>
> - if (!vfio_get_vaddr(iotlb, &vaddr, &read_only)) {
> - goto out;
> - }
> -
> if ((iotlb->perm & IOMMU_RW) != IOMMU_NONE) {
> + if (!vfio_get_vaddr(iotlb, &vaddr, &read_only)) {
> + goto out;
> + }
> /*
> * vaddr is only valid until rcu_read_unlock(). But after
> * vfio_dma_map has set up the mapping the pages will be
- [Qemu-devel] [PATCH v6 00/18] VT-d: vfio enablement and misc enhances, Peter Xu, 2017/02/03
- [Qemu-devel] [PATCH v6 01/18] vfio: trace map/unmap for notify as well, Peter Xu, 2017/02/03
- [Qemu-devel] [PATCH v6 02/18] vfio: introduce vfio_get_vaddr(), Peter Xu, 2017/02/03
- [Qemu-devel] [PATCH v6 03/18] vfio: allow to notify unmap for very large region, Peter Xu, 2017/02/03
- Re: [Qemu-devel] [PATCH v6 03/18] vfio: allow to notify unmap for very large region,
Alex Williamson <=
- [Qemu-devel] [PATCH v6 04/18] intel_iommu: add "caching-mode" option, Peter Xu, 2017/02/03
- [Qemu-devel] [PATCH v6 05/18] intel_iommu: simplify irq region translation, Peter Xu, 2017/02/03
- [Qemu-devel] [PATCH v6 06/18] intel_iommu: renaming gpa to iova where proper, Peter Xu, 2017/02/03
- [Qemu-devel] [PATCH v6 07/18] intel_iommu: fix trace for inv desc handling, Peter Xu, 2017/02/03