{
        struct device *dev = vmw_tt->dev_priv->dev->dev;
 
-       dma_unmap_sg(dev, vmw_tt->sgt.sgl, vmw_tt->sgt.nents,
-               DMA_BIDIRECTIONAL);
+       dma_unmap_sgtable(dev, &vmw_tt->sgt, DMA_BIDIRECTIONAL, 0);
        vmw_tt->sgt.nents = vmw_tt->sgt.orig_nents;
 }
 
 static int vmw_ttm_map_for_dma(struct vmw_ttm_tt *vmw_tt)
 {
        struct device *dev = vmw_tt->dev_priv->dev->dev;
-       int ret;
-
-       ret = dma_map_sg(dev, vmw_tt->sgt.sgl, vmw_tt->sgt.orig_nents,
-                        DMA_BIDIRECTIONAL);
-       if (unlikely(ret == 0))
-               return -ENOMEM;
 
-       vmw_tt->sgt.nents = ret;
-
-       return 0;
+       return dma_map_sgtable(dev, &vmw_tt->sgt, DMA_BIDIRECTIONAL, 0);
 }
 
 /**
                if (unlikely(ret != 0))
                        goto out_sg_alloc_fail;
 
-               if (vsgt->num_pages > vmw_tt->sgt.nents) {
+               if (vsgt->num_pages > vmw_tt->sgt.orig_nents) {
                        uint64_t over_alloc =
                                sgl_size * (vsgt->num_pages -
-                                           vmw_tt->sgt.nents);
+                                           vmw_tt->sgt.orig_nents);
 
                        ttm_mem_global_free(glob, over_alloc);
                        vmw_tt->sg_alloc_size -= over_alloc;