Lines Matching refs:vma
41 /* Actually unmap memory for the vma */
42 void msm_gem_vma_purge(struct msm_gem_vma *vma)
44 struct msm_gem_address_space *aspace = vma->aspace;
45 unsigned size = vma->node.size;
48 if (!vma->mapped)
51 aspace->mmu->funcs->unmap(aspace->mmu, vma->iova, size);
53 vma->mapped = false;
56 /* Map and pin vma: */
58 msm_gem_vma_map(struct msm_gem_vma *vma, int prot,
61 struct msm_gem_address_space *aspace = vma->aspace;
64 if (GEM_WARN_ON(!vma->iova))
67 if (vma->mapped)
70 vma->mapped = true;
84 ret = aspace->mmu->funcs->map(aspace->mmu, vma->iova, sgt, size, prot);
87 vma->mapped = false;
94 void msm_gem_vma_close(struct msm_gem_vma *vma)
96 struct msm_gem_address_space *aspace = vma->aspace;
98 GEM_WARN_ON(vma->mapped);
101 if (vma->iova)
102 drm_mm_remove_node(&vma->node);
105 vma->iova = 0;
112 struct msm_gem_vma *vma;
114 vma = kzalloc(sizeof(*vma), GFP_KERNEL);
115 if (!vma)
118 vma->aspace = aspace;
120 return vma;
123 /* Initialize a new vma and allocate an iova for it */
124 int msm_gem_vma_init(struct msm_gem_vma *vma, int size,
127 struct msm_gem_address_space *aspace = vma->aspace;
133 if (GEM_WARN_ON(vma->iova))
137 ret = drm_mm_insert_node_in_range(&aspace->mm, &vma->node,
145 vma->iova = vma->node.start;
146 vma->mapped = false;