Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1499691
| From | Eric Auger <eric.auger@redhat.com> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [PATCH v14 11/16] vfio/type1: Implement recursive vfio_find_dma_from_node |
| Date | 2016-10-12 15:40 +0200 |
| Message-ID | <srrVf-52p-1@gated-at.bofh.it> (permalink) |
| References | <srrLz-4Wx-3@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
This patch handles the case where a node is encountered, matching
@start and @size arguments but not matching the @type argument.
In that case, we need to skip that node and pursue the search in the
node's leaves. In case @start is inferior to the node's base, we
resume the search on the left leaf. If the recursive search on the left
leaves did not produce any match, we search the right leaves recursively.
Signed-off-by: Eric Auger <eric.auger@redhat.com>
Acked-by: Alex Williamson <alex.williamson@redhat.com>
---
v10: creation
---
drivers/vfio/vfio_iommu_type1.c | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/drivers/vfio/vfio_iommu_type1.c b/drivers/vfio/vfio_iommu_type1.c
index 1bd16ff..1f120f9 100644
--- a/drivers/vfio/vfio_iommu_type1.c
+++ b/drivers/vfio/vfio_iommu_type1.c
@@ -125,7 +125,17 @@ static struct vfio_dma *vfio_find_dma_from_node(struct rb_node *top,
if (type == VFIO_IOVA_ANY || dma->type == type)
return dma;
- return NULL;
+ /* restart 2 searches skipping the current node */
+ if (start < dma->iova) {
+ dma = vfio_find_dma_from_node(node->rb_left, start,
+ size, type);
+ if (dma)
+ return dma;
+ }
+ if (start + size > dma->iova + dma->size)
+ dma = vfio_find_dma_from_node(node->rb_right, start,
+ size, type);
+ return dma;
}
/**
--
1.9.1
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[PATCH v14 00/16] KVM PCIe/MSI passthrough on ARM/ARM64 Eric Auger <eric.auger@redhat.com> - 2016-10-12 15:30 +0200
[PATCH v14 14/16] vfio/type1: Check doorbell safety Eric Auger <eric.auger@redhat.com> - 2016-10-12 15:40 +0200
[PATCH v14 11/16] vfio/type1: Implement recursive vfio_find_dma_from_node Eric Auger <eric.auger@redhat.com> - 2016-10-12 15:40 +0200
[PATCH v14 09/16] vfio: Introduce a vfio_dma type field Eric Auger <eric.auger@redhat.com> - 2016-10-12 15:40 +0200
[PATCH v14 12/16] vfio/type1: Handle unmap/unpin and replay for VFIO_IOVA_RESERVED slots Eric Auger <eric.auger@redhat.com> - 2016-10-12 15:40 +0200
[PATCH v14 13/16] vfio: Allow reserved msi iova registration Eric Auger <eric.auger@redhat.com> - 2016-10-12 15:40 +0200
[PATCH v14 10/16] vfio/type1: vfio_find_dma accepting a type argument Eric Auger <eric.auger@redhat.com> - 2016-10-12 15:40 +0200
[PATCH v14 15/16] iommu/arm-smmu: Do not advertise IOMMU_CAP_INTR_REMAP Eric Auger <eric.auger@redhat.com> - 2016-10-12 15:40 +0200
Re: [PATCH v14 00/16] KVM PCIe/MSI passthrough on ARM/ARM64 Punit Agrawal <punit.agrawal@arm.com> - 2016-10-14 13:30 +0200
Re: [PATCH v14 00/16] KVM PCIe/MSI passthrough on ARM/ARM64 Auger Eric <eric.auger@redhat.com> - 2016-10-17 16:20 +0200
Re: [PATCH v14 00/16] KVM PCIe/MSI passthrough on ARM/ARM64 Punit Agrawal <punit.agrawal@arm.com> - 2016-10-17 17:20 +0200
Re: [PATCH v14 00/16] KVM PCIe/MSI passthrough on ARM/ARM64 Will Deacon <will.deacon@arm.com> - 2016-10-20 19:40 +0200
Re: [PATCH v14 00/16] KVM PCIe/MSI passthrough on ARM/ARM64 Auger Eric <eric.auger@redhat.com> - 2016-10-21 11:30 +0200
Re: [PATCH v14 00/16] KVM PCIe/MSI passthrough on ARM/ARM64 Robin Murphy <robin.murphy@arm.com> - 2016-10-24 21:40 +0200
csiph-web