aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChuanxiao Dong <chuanxiao.dong@intel.com>2017-02-14 04:15:54 -0500
committerZhenyu Wang <zhenyuw@linux.intel.com>2017-02-14 04:35:39 -0500
commit4a0b3444da3ce1090d0f894f4e343756a94ab8c3 (patch)
tree7f8a303902da4c70155005da454dd7cb66629444
parentbc6a1c85795256cd7b44bc1dd264fe3144b8b6f8 (diff)
drm/i915/gvt: return error code if dma map iova failed
When doing dma map failed for a pfn, kvmgt should unpin the pfn and return error code to device module driver Signed-off-by: Chuanxiao Dong <chuanxiao.dong@intel.com> Cc: xinda.zhao@intel.com Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
-rw-r--r--drivers/gpu/drm/i915/gvt/kvmgt.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/gvt/kvmgt.c b/drivers/gpu/drm/i915/gvt/kvmgt.c
index c429ed033fc4..10c3a4b95a92 100644
--- a/drivers/gpu/drm/i915/gvt/kvmgt.c
+++ b/drivers/gpu/drm/i915/gvt/kvmgt.c
@@ -1402,8 +1402,11 @@ static unsigned long kvmgt_gfn_to_pfn(unsigned long handle, unsigned long gfn)
1402 } 1402 }
1403 /* transfer to host iova for GFX to use DMA */ 1403 /* transfer to host iova for GFX to use DMA */
1404 rc = gvt_dma_map_iova(info->vgpu, pfn, &iova); 1404 rc = gvt_dma_map_iova(info->vgpu, pfn, &iova);
1405 if (rc) 1405 if (rc) {
1406 gvt_err("gvt_dma_map_iova failed for gfn: 0x%lx\n", gfn); 1406 gvt_err("gvt_dma_map_iova failed for gfn: 0x%lx\n", gfn);
1407 vfio_unpin_pages(dev, &gfn, 1);
1408 return INTEL_GVT_INVALID_ADDR;
1409 }
1407 1410
1408 gvt_cache_add(info->vgpu, gfn, iova); 1411 gvt_cache_add(info->vgpu, gfn, iova);
1409 return iova; 1412 return iova;