Commit b5e7a2f1 authored by Rob Clark's avatar Rob Clark
Browse files

drm/msm: Collapse vma close and delete

parent da0e1407
Loading
Loading
Loading
Loading
+3 −13
Original line number Diff line number Diff line
@@ -349,15 +349,6 @@ static struct msm_gem_vma *lookup_vma(struct drm_gem_object *obj,
	return NULL;
}

static void del_vma(struct msm_gem_vma *vma)
{
	if (!vma)
		return;

	list_del(&vma->list);
	kfree(vma);
}

/*
 * If close is true, this also closes the VMA (releasing the allocated
 * iova range) in addition to removing the iommu mapping.  In the eviction
@@ -368,11 +359,11 @@ static void
put_iova_spaces(struct drm_gem_object *obj, bool close)
{
	struct msm_gem_object *msm_obj = to_msm_bo(obj);
	struct msm_gem_vma *vma;
	struct msm_gem_vma *vma, *tmp;

	msm_gem_assert_locked(obj);

	list_for_each_entry(vma, &msm_obj->vmas, list) {
	list_for_each_entry_safe(vma, tmp, &msm_obj->vmas, list) {
		if (vma->vm) {
			msm_gem_vma_purge(vma);
			if (close)
@@ -391,7 +382,7 @@ put_iova_vmas(struct drm_gem_object *obj)
	msm_gem_assert_locked(obj);

	list_for_each_entry_safe(vma, tmp, &msm_obj->vmas, list) {
		del_vma(vma);
		msm_gem_vma_close(vma);
	}
}

@@ -556,7 +547,6 @@ static int clear_iova(struct drm_gem_object *obj,

	msm_gem_vma_purge(vma);
	msm_gem_vma_close(vma);
	del_vma(vma);

	return 0;
}
+2 −0
Original line number Diff line number Diff line
@@ -102,8 +102,10 @@ void msm_gem_vma_close(struct msm_gem_vma *vma)
	spin_unlock(&vm->lock);

	vma->iova = 0;
	list_del(&vma->list);

	msm_gem_vm_put(vm);
	kfree(vma);
}

/* Create a new vma and allocate an iova for it */