[Intel-gfx] [PATCH v6 10/14] drm/i915/kvmgt: Support setting dma map for huge pages
Du, Changbin
changbin.du at intel.com
Mon May 14 23:51:49 UTC 2018
Hi Auld,
Thanks for your review.
On Thu, May 10, 2018 at 03:31:03PM +0100, Matthew Auld wrote:
> On 8 May 2018 at 10:05, <changbin.du at intel.com> wrote:
> > From: Changbin Du <changbin.du at intel.com>
> > +static int gvt_dma_map_page(struct intel_vgpu *vgpu, unsigned long gfn,
> > + dma_addr_t *dma_addr, unsigned long size)
> > +{
> > + struct device *dev = &vgpu->gvt->dev_priv->drm.pdev->dev;
> > + struct page *page = NULL;
> > + int ret;
> > +
> > + ret = gvt_pin_guest_page(vgpu, gfn, size, &page);
> > + if (ret)
> > + return ret;
> > +
> > /* Setup DMA mapping. */
> > - page = pfn_to_page(pfn);
> > - *dma_addr = dma_map_page(dev, page, 0, PAGE_SIZE,
> > - PCI_DMA_BIDIRECTIONAL);
> > - if (dma_mapping_error(dev, *dma_addr)) {
> > - gvt_vgpu_err("DMA mapping failed for gfn 0x%lx\n", gfn);
> > - vfio_unpin_pages(mdev_dev(vgpu->vdev.mdev), &gfn, 1);
> > - return -ENOMEM;
> > + *dma_addr = dma_map_page(dev, page, 0, size, PCI_DMA_BIDIRECTIONAL);
>
> Do we not need to check if the dma addr we get back is not aligned to
> the requested page-size, where we would then fall back to splitting
> the 2M shadow entry?
AFAIK, our IOMMU driver always allocates size aligned base IOVA. So the dma addr must
align to the requested page-size. Thanks!
--
Thanks,
Changbin Du
More information about the intel-gvt-dev
mailing list