Re: [PATCH v3] vfio/type1: Adopt fast IOTLB flush interface when unmap IOVAs

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Alex / Joerg,

On 1/24/18 5:04 AM, Alex Williamson wrote:
@@ -648,12 +685,40 @@ static int vfio_iommu_type1_unpin_pages(void *iommu_data,
  	return i > npage ? npage : (i > 0 ? i : -EINVAL);
  }
+static size_t try_unmap_unpin_fast(struct vfio_domain *domain, dma_addr_t iova,
+				   size_t len, phys_addr_t phys,
+				   struct list_head *unmapped_regions)
+{
+	struct vfio_regions *entry;
+	size_t unmapped;
+
+	entry = kzalloc(sizeof(*entry), GFP_KERNEL);
+	if (!entry)
+		return -ENOMEM;
+
+	unmapped = iommu_unmap_fast(domain->domain, iova, len);
+	if (WARN_ON(!unmapped)) {
+		kfree(entry);
+		return -EINVAL;
+	}
Not sure about the handling of this, the zero check is just a
consistency validation.  If there's nothing mapped where we think there
should be something mapped, we warn and throw out the whole vfio_dma.
After this patch, such an error gets warned twice, which doesn't
really seem to be an improvement.


Since iommu_unmap() and iommu_unmap_fast() can return errors, instead of just zero check,
we should also check for errors, warn, and bail out the whole vfio_dma.

Thanks,
Suravee



[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux