Displaying 3 results from an estimated 3 matches for "nouveau_vm_unmap".
2012 Nov 21
2
[PATCH] drm/nouveau: fix takedown in move_notify
...+1139,22 @@ nouveau_bo_move_ntfy(struct ttm_buffer_object *bo, struct ttm_mem_reg *new_mem)
 	if (bo->destroy != nouveau_bo_del_ttm)
 		return;
 
+	if (!new_mem) {
+		while (!list_empty(&nvbo->vma_list)) {
+			vma = list_first_entry(&nvbo->vma_list, struct nouveau_vma, head);
+
+			nouveau_vm_unmap(vma);
+			nouveau_vm_put(vma);
+			list_del(&vma->head);
+		}
+		return;
+	}
+
 	list_for_each_entry(vma, &nvbo->vma_list, head) {
-		if (new_mem && new_mem->mem_type == TTM_PL_VRAM) {
+		if (new_mem->mem_type == TTM_PL_VRAM) {
 			nouveau_vm_map(vma, new_mem->mm_node...
2012 Oct 12
0
[PATCH 2/3] drm/nouveau: add reservation to nouveau_bo_vma_del
....mem_type != TTM_PL_SYSTEM) {
+			ttm_bo_reserve(&nvbo->bo, false, false, false, 0);
 			spin_lock(&nvbo->bo.bdev->fence_lock);
 			ttm_bo_wait(&nvbo->bo, false, false, false);
 			spin_unlock(&nvbo->bo.bdev->fence_lock);
+			ttm_bo_unreserve(&nvbo->bo);
+			nouveau_vm_unmap(vma);
+		}
+
+		nouveau_vm_put(vma);
+		list_del(&vma->head);
+	}
+}
+
+void
+nouveau_bo_vma_del_reserved(struct nouveau_bo *nvbo, struct nouveau_vma *vma)
+{
+	if (vma->node) {
+		if (nvbo->bo.mem.mem_type != TTM_PL_SYSTEM) {
+			ttm_bo_wait(&nvbo->bo, false, false, false);...
2013 Sep 02
0
[PATCH] drm/nv50-: fix tiled memory layout checks
..._entry(vma, &nvbo->vma_list, head) {
-		if (new_mem && new_mem->mem_type == TTM_PL_VRAM) {
+		if (!new_mem ||
+		    old_mem->mem_type == TTM_PL_VRAM ||
+		    (old_mem->mem_type == TTM_PL_TT &&
+		     nvbo->page_shift == vma->vm->vmm->spg_shift))
+		    nouveau_vm_unmap(vma);
+
+		if (!new_mem)
+			continue;
+
+		if (new_mem->mem_type == TTM_PL_VRAM) {
 			nouveau_vm_map(vma, new_mem->mm_node);
 		} else
 		if (new_mem && new_mem->mem_type == TTM_PL_TT &&
@@ -1185,8 +1193,6 @@ nouveau_bo_move_ntfy(struct ttm_buffer_object *bo, struct ttm_m...