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 <[email protected]>
Committer: Taylor R Campbell <[email protected]>
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;
}