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; }