Module Name:    src
Committed By:   riastradh
Date:           Sun Dec 19 12:30:48 UTC 2021

Modified Files:
        src/sys/external/bsd/drm2/dist/drm/amd/amdgpu: amdgpu_vm.c
        src/sys/external/bsd/drm2/dist/drm/scheduler: sched_entity.c

Log Message:
drm: add destruction.

Author: phone <m...@netbsd.org>
Committer: Taylor R Campbell <riastr...@netbsd.org>


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 \
    src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_vm.c
cvs rdiff -u -r1.3 -r1.4 \
    src/sys/external/bsd/drm2/dist/drm/scheduler/sched_entity.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_vm.c
diff -u src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_vm.c:1.7 src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_vm.c:1.8
--- src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_vm.c:1.7	Sun Dec 19 12:22:37 2021
+++ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_vm.c	Sun Dec 19 12:30:47 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: amdgpu_vm.c,v 1.7 2021/12/19 12:22:37 riastradh Exp $	*/
+/*	$NetBSD: amdgpu_vm.c,v 1.8 2021/12/19 12:30:47 riastradh Exp $	*/
 
 /*
  * Copyright 2008 Advanced Micro Devices, Inc.
@@ -28,7 +28,7 @@
  *          Jerome Glisse
  */
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: amdgpu_vm.c,v 1.7 2021/12/19 12:22:37 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: amdgpu_vm.c,v 1.8 2021/12/19 12:30:47 riastradh Exp $");
 
 #include <linux/dma-fence-array.h>
 #include <linux/interval_tree_generic.h>
@@ -2836,7 +2836,7 @@ int amdgpu_vm_init(struct amdgpu_device 
 				  adev->vm_manager.vm_pte_scheds,
 				  adev->vm_manager.vm_pte_num_scheds, NULL);
 	if (r)
-		return r;
+		goto error_free_destroylock;
 
 	r = drm_sched_entity_init(&vm->delayed, DRM_SCHED_PRIORITY_NORMAL,
 				  adev->vm_manager.vm_pte_scheds,
@@ -2926,10 +2926,14 @@ error_free_delayed:
 	dma_fence_put(vm->last_direct);
 	dma_fence_put(vm->last_delayed);
 	drm_sched_entity_destroy(&vm->delayed);
+	mutex_destroy(&vm->eviction_lock);
 
 error_free_direct:
 	drm_sched_entity_destroy(&vm->direct);
 
+error_free_destroylock:
+	spin_lock_destroy(&vm->invalidated_lock);
+
 	return r;
 }
 

Index: src/sys/external/bsd/drm2/dist/drm/scheduler/sched_entity.c
diff -u src/sys/external/bsd/drm2/dist/drm/scheduler/sched_entity.c:1.3 src/sys/external/bsd/drm2/dist/drm/scheduler/sched_entity.c:1.4
--- src/sys/external/bsd/drm2/dist/drm/scheduler/sched_entity.c:1.3	Sun Dec 19 12:23:16 2021
+++ src/sys/external/bsd/drm2/dist/drm/scheduler/sched_entity.c	Sun Dec 19 12:30:47 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: sched_entity.c,v 1.3 2021/12/19 12:23:16 riastradh Exp $	*/
+/*	$NetBSD: sched_entity.c,v 1.4 2021/12/19 12:30:47 riastradh Exp $	*/
 
 /*
  * Copyright 2015 Advanced Micro Devices, Inc.
@@ -24,7 +24,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: sched_entity.c,v 1.3 2021/12/19 12:23:16 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sched_entity.c,v 1.4 2021/12/19 12:30:47 riastradh Exp $");
 
 #include <linux/kthread.h>
 #include <linux/slab.h>
@@ -302,6 +302,8 @@ void drm_sched_entity_fini(struct drm_sc
 		drm_sched_rq_remove_entity(entity->rq, entity);
 	}
 
+	spin_lock_destroy(&entity->rq_lock);
+
 	/* Consumption of existing IBs wasn't completed. Forcefully
 	 * remove them here.
 	 */
@@ -324,6 +326,8 @@ void drm_sched_entity_fini(struct drm_sc
 		drm_sched_entity_kill_jobs(entity);
 	}
 
+	destroy_completion(&entity->entity_idle);
+
 	dma_fence_put(entity->last_scheduled);
 	entity->last_scheduled = NULL;
 }

Reply via email to