[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v7 03/17] vfio: allow to notify unmap for very l
From: |
David Gibson |
Subject: |
Re: [Qemu-devel] [PATCH v7 03/17] vfio: allow to notify unmap for very large region |
Date: |
Fri, 10 Feb 2017 12:13:07 +1100 |
User-agent: |
Mutt/1.7.1 (2016-10-04) |
On Tue, Feb 07, 2017 at 04:28:05PM +0800, Peter Xu 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.
>
> Acked-by: Alex Williamson <address@hidden>
> Signed-off-by: Peter Xu <address@hidden>
Reviewed-by: David Gibson <address@hidden>
Seems sensible of itself, except that I don't understand how we were
ever working before this.
> ---
> hw/vfio/common.c | 7 +++----
> 1 file changed, 3 insertions(+), 4 deletions(-)
>
> 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
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
signature.asc
Description: PGP signature
- [Qemu-devel] [PATCH v7 00/17] VT-d: vfio enablement and misc enhances, Peter Xu, 2017/02/07
- [Qemu-devel] [PATCH v7 01/17] vfio: trace map/unmap for notify as well, Peter Xu, 2017/02/07
- [Qemu-devel] [PATCH v7 02/17] vfio: introduce vfio_get_vaddr(), Peter Xu, 2017/02/07
- [Qemu-devel] [PATCH v7 03/17] vfio: allow to notify unmap for very large region, Peter Xu, 2017/02/07
- Re: [Qemu-devel] [PATCH v7 03/17] vfio: allow to notify unmap for very large region,
David Gibson <=
- [Qemu-devel] [PATCH v7 05/17] intel_iommu: simplify irq region translation, Peter Xu, 2017/02/07
- [Qemu-devel] [PATCH v7 04/17] intel_iommu: add "caching-mode" option, Peter Xu, 2017/02/07
- [Qemu-devel] [PATCH v7 06/17] intel_iommu: renaming gpa to iova where proper, Peter Xu, 2017/02/07
- [Qemu-devel] [PATCH v7 07/17] intel_iommu: convert dbg macros to traces for inv, Peter Xu, 2017/02/07
- [Qemu-devel] [PATCH v7 08/17] intel_iommu: convert dbg macros to trace for trans, Peter Xu, 2017/02/07