Module Name: src
Committed By: riastradh
Date: Sun Dec 19 11:34:46 UTC 2021
Modified Files:
src/sys/external/bsd/drm2/dist/drm: drm_atomic.c
src/sys/external/bsd/drm2/dist/drm/nouveau: nouveau_bios.c
nouveau_dmem.c nouveau_drm.c nouveau_fbcon.c nouveau_svm.c
src/sys/external/bsd/drm2/dist/drm/nouveau/dispnv50:
nouveau_dispnv50_disp.c
src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/core:
nouveau_nvkm_core_client.c nouveau_nvkm_core_engine.c
nouveau_nvkm_core_subdev.c
src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/engine/disp:
nouveau_nvkm_engine_disp_dp.c
src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/engine/fifo:
nouveau_nvkm_engine_fifo_base.c
src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/engine/gr:
nouveau_nvkm_engine_gr_gf100.c nouveau_nvkm_engine_gr_nv04.c
nouveau_nvkm_engine_gr_nv10.c nouveau_nvkm_engine_gr_nv50.c
src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/falcon:
nouveau_nvkm_falcon_base.c nouveau_nvkm_falcon_cmdq.c
nouveau_nvkm_falcon_msgq.c nouveau_nvkm_falcon_qmgr.c
src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/bar:
nouveau_nvkm_subdev_bar_base.c
src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/fuse:
nouveau_nvkm_subdev_fuse_base.c
src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/instmem:
nouveau_nvkm_subdev_instmem_base.c
nouveau_nvkm_subdev_instmem_gk20a.c
src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/mc:
nouveau_nvkm_subdev_mc_base.c nouveau_nvkm_subdev_mc_gp100.c priv.h
src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/mmu:
nouveau_nvkm_subdev_mmu_vmm.c
src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/therm:
nouveau_nvkm_subdev_therm_base.c nouveau_nvkm_subdev_therm_fan.c
nouveau_nvkm_subdev_therm_fantog.c priv.h
src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/timer:
nouveau_nvkm_subdev_timer_base.c
Log Message:
nouveau: ashes to ashes, dust to dust, mutex inited must later destruct
To generate a diff of this commit:
cvs rdiff -u -r1.11 -r1.12 src/sys/external/bsd/drm2/dist/drm/drm_atomic.c
cvs rdiff -u -r1.5 -r1.6 \
src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_bios.c
cvs rdiff -u -r1.2 -r1.3 \
src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_dmem.c \
src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_svm.c
cvs rdiff -u -r1.22 -r1.23 \
src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.c
cvs rdiff -u -r1.14 -r1.15 \
src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_fbcon.c
cvs rdiff -u -r1.5 -r1.6 \
src/sys/external/bsd/drm2/dist/drm/nouveau/dispnv50/nouveau_dispnv50_disp.c
cvs rdiff -u -r1.5 -r1.6 \
src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/core/nouveau_nvkm_core_client.c
cvs rdiff -u -r1.4 -r1.5 \
src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/core/nouveau_nvkm_core_engine.c
\
src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/core/nouveau_nvkm_core_subdev.c
cvs rdiff -u -r1.3 -r1.4 \
src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/engine/disp/nouveau_nvkm_engine_disp_dp.c
cvs rdiff -u -r1.3 -r1.4 \
src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/engine/fifo/nouveau_nvkm_engine_fifo_base.c
cvs rdiff -u -r1.6 -r1.7 \
src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/engine/gr/nouveau_nvkm_engine_gr_gf100.c
cvs rdiff -u -r1.3 -r1.4 \
src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/engine/gr/nouveau_nvkm_engine_gr_nv04.c
\
src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/engine/gr/nouveau_nvkm_engine_gr_nv10.c
\
src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/engine/gr/nouveau_nvkm_engine_gr_nv50.c
cvs rdiff -u -r1.3 -r1.4 \
src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/falcon/nouveau_nvkm_falcon_base.c
\
src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/falcon/nouveau_nvkm_falcon_cmdq.c
\
src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/falcon/nouveau_nvkm_falcon_msgq.c
\
src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/falcon/nouveau_nvkm_falcon_qmgr.c
cvs rdiff -u -r1.3 -r1.4 \
src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/bar/nouveau_nvkm_subdev_bar_base.c
cvs rdiff -u -r1.3 -r1.4 \
src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/fuse/nouveau_nvkm_subdev_fuse_base.c
cvs rdiff -u -r1.7 -r1.8 \
src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/instmem/nouveau_nvkm_subdev_instmem_base.c
\
src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/instmem/nouveau_nvkm_subdev_instmem_gk20a.c
cvs rdiff -u -r1.3 -r1.4 \
src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/mc/nouveau_nvkm_subdev_mc_base.c
\
src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/mc/priv.h
cvs rdiff -u -r1.2 -r1.3 \
src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/mc/nouveau_nvkm_subdev_mc_gp100.c
cvs rdiff -u -r1.3 -r1.4 \
src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/mmu/nouveau_nvkm_subdev_mmu_vmm.c
cvs rdiff -u -r1.3 -r1.4 \
src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/therm/nouveau_nvkm_subdev_therm_base.c
\
src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/therm/nouveau_nvkm_subdev_therm_fan.c
\
src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/therm/nouveau_nvkm_subdev_therm_fantog.c
\
src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/therm/priv.h
cvs rdiff -u -r1.5 -r1.6 \
src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/timer/nouveau_nvkm_subdev_timer_base.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/drm_atomic.c
diff -u src/sys/external/bsd/drm2/dist/drm/drm_atomic.c:1.11 src/sys/external/bsd/drm2/dist/drm/drm_atomic.c:1.12
--- src/sys/external/bsd/drm2/dist/drm/drm_atomic.c:1.11 Sun Dec 19 00:55:34 2021
+++ src/sys/external/bsd/drm2/dist/drm/drm_atomic.c Sun Dec 19 11:34:44 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: drm_atomic.c,v 1.11 2021/12/19 00:55:34 riastradh Exp $ */
+/* $NetBSD: drm_atomic.c,v 1.12 2021/12/19 11:34:44 riastradh Exp $ */
/*
* Copyright (C) 2014 Red Hat
@@ -29,7 +29,7 @@
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: drm_atomic.c,v 1.11 2021/12/19 00:55:34 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_atomic.c,v 1.12 2021/12/19 11:34:44 riastradh Exp $");
#include <linux/sync_file.h>
@@ -52,6 +52,11 @@ void __drm_crtc_commit_free(struct kref
struct drm_crtc_commit *commit =
container_of(kref, struct drm_crtc_commit, ref);
+#ifdef __NetBSD__
+ destroy_completion(&commit->flip_done);
+ destroy_completion(&commit->hw_done);
+ destroy_completion(&commit->cleanup_done);
+#endif
kfree(commit);
}
EXPORT_SYMBOL(__drm_crtc_commit_free);
Index: src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_bios.c
diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_bios.c:1.5 src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_bios.c:1.6
--- src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_bios.c:1.5 Sat Dec 18 23:45:32 2021
+++ src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_bios.c Sun Dec 19 11:34:44 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: nouveau_bios.c,v 1.5 2021/12/18 23:45:32 riastradh Exp $ */
+/* $NetBSD: nouveau_bios.c,v 1.6 2021/12/19 11:34:44 riastradh Exp $ */
/*
* Copyright 2005-2006 Erik Waling
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nouveau_bios.c,v 1.5 2021/12/18 23:45:32 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nouveau_bios.c,v 1.6 2021/12/19 11:34:44 riastradh Exp $");
#include "nouveau_drv.h"
#include "nouveau_reg.h"
@@ -2132,4 +2132,8 @@ nouveau_bios_init(struct drm_device *dev
void
nouveau_bios_takedown(struct drm_device *dev)
{
+ struct nouveau_drm *drm = nouveau_drm(dev);
+ struct nvbios *legacy = &drm->vbios;
+
+ spin_lock_destroy(&legacy->lock);
}
Index: src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_dmem.c
diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_dmem.c:1.2 src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_dmem.c:1.3
--- src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_dmem.c:1.2 Sat Dec 18 23:45:32 2021
+++ src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_dmem.c Sun Dec 19 11:34:44 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: nouveau_dmem.c,v 1.2 2021/12/18 23:45:32 riastradh Exp $ */
+/* $NetBSD: nouveau_dmem.c,v 1.3 2021/12/19 11:34:44 riastradh Exp $ */
/*
* Copyright 2018 Red Hat Inc.
@@ -22,7 +22,7 @@
* OTHER DEALINGS IN THE SOFTWARE.
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nouveau_dmem.c,v 1.2 2021/12/18 23:45:32 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nouveau_dmem.c,v 1.3 2021/12/19 11:34:44 riastradh Exp $");
#include "nouveau_dmem.h"
#include "nouveau_drv.h"
@@ -409,6 +409,7 @@ nouveau_dmem_fini(struct nouveau_drm *dr
nouveau_bo_ref(NULL, &chunk->bo);
}
list_del(&chunk->list);
+ spin_lock_destroy(&chunk->lock);
kfree(chunk);
}
@@ -558,6 +559,7 @@ nouveau_dmem_init(struct nouveau_drm *dr
NV_INFO(drm, "DMEM: registered %ldMB of device memory\n", size >> 20);
return;
out_free:
+ mutex_destroy(&drm->dmem->mutex);
kfree(drm->dmem);
drm->dmem = NULL;
}
Index: src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_svm.c
diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_svm.c:1.2 src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_svm.c:1.3
--- src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_svm.c:1.2 Sat Dec 18 23:45:32 2021
+++ src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_svm.c Sun Dec 19 11:34:44 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: nouveau_svm.c,v 1.2 2021/12/18 23:45:32 riastradh Exp $ */
+/* $NetBSD: nouveau_svm.c,v 1.3 2021/12/19 11:34:44 riastradh Exp $ */
/*
* Copyright 2018 Red Hat Inc.
@@ -22,7 +22,7 @@
* OTHER DEALINGS IN THE SOFTWARE.
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nouveau_svm.c,v 1.2 2021/12/18 23:45:32 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nouveau_svm.c,v 1.3 2021/12/19 11:34:44 riastradh Exp $");
#include "nouveau_svm.h"
#include "nouveau_drv.h"
@@ -305,6 +305,7 @@ nouveau_svmm_fini(struct nouveau_svmm **
svmm->vmm = NULL;
mutex_unlock(&svmm->mutex);
mmu_notifier_put(&svmm->notifier);
+ mutex_destroy(&svmm->mutex);
*psvmm = NULL;
}
}
@@ -364,6 +365,7 @@ out_mm_unlock:
up_write(¤t->mm->mmap_sem);
out_free:
mutex_unlock(&cli->mutex);
+ mutex_destroy(&svmm->mutex);
kfree(svmm);
return ret;
}
Index: src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.c
diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.c:1.22 src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.c:1.23
--- src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.c:1.22 Sun Dec 19 10:51:56 2021
+++ src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.c Sun Dec 19 11:34:44 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: nouveau_drm.c,v 1.22 2021/12/19 10:51:56 riastradh Exp $ */
+/* $NetBSD: nouveau_drm.c,v 1.23 2021/12/19 11:34:44 riastradh Exp $ */
/*
* Copyright 2012 Red Hat Inc.
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nouveau_drm.c,v 1.22 2021/12/19 10:51:56 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nouveau_drm.c,v 1.23 2021/12/19 11:34:44 riastradh Exp $");
#include <linux/console.h>
#include <linux/delay.h>
@@ -203,6 +203,8 @@ nouveau_cli_fini(struct nouveau_cli *cli
mutex_lock(&cli->drm->master.lock);
nvif_client_fini(&cli->base);
mutex_unlock(&cli->drm->master.lock);
+ mutex_destroy(&cli->lock);
+ mutex_destroy(&cli->mutex);
}
static int
@@ -610,6 +612,7 @@ fail_bios:
nouveau_ttm_fini(drm);
fail_ttm:
nouveau_vga_fini(drm);
+ spin_lock_destroy(&drm->tile.lock);
nouveau_cli_fini(&drm->client);
fail_master:
nouveau_cli_fini(&drm->master);
@@ -645,6 +648,8 @@ nouveau_drm_device_fini(struct drm_devic
nouveau_ttm_fini(drm);
nouveau_vga_fini(drm);
+ spin_lock_destroy(&drm->tile.lock);
+
nouveau_cli_fini(&drm->client);
nouveau_cli_fini(&drm->master);
kfree(drm);
Index: src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_fbcon.c
diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_fbcon.c:1.14 src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_fbcon.c:1.15
--- src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_fbcon.c:1.14 Sun Dec 19 10:51:56 2021
+++ src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_fbcon.c Sun Dec 19 11:34:44 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: nouveau_fbcon.c,v 1.14 2021/12/19 10:51:56 riastradh Exp $ */
+/* $NetBSD: nouveau_fbcon.c,v 1.15 2021/12/19 11:34:44 riastradh Exp $ */
/*
* Copyright © 2007 David Airlie
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nouveau_fbcon.c,v 1.14 2021/12/19 10:51:56 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nouveau_fbcon.c,v 1.15 2021/12/19 11:34:44 riastradh Exp $");
#include <linux/module.h>
#include <linux/kernel.h>
@@ -679,6 +679,7 @@ nouveau_fbcon_fini(struct drm_device *de
nouveau_fbcon_accel_fini(dev);
nouveau_fbcon_destroy(dev, drm->fbcon);
+ mutex_destroy(&drm->fbcon->hotplug_lock);
kfree(drm->fbcon);
drm->fbcon = NULL;
}
Index: src/sys/external/bsd/drm2/dist/drm/nouveau/dispnv50/nouveau_dispnv50_disp.c
diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/dispnv50/nouveau_dispnv50_disp.c:1.5 src/sys/external/bsd/drm2/dist/drm/nouveau/dispnv50/nouveau_dispnv50_disp.c:1.6
--- src/sys/external/bsd/drm2/dist/drm/nouveau/dispnv50/nouveau_dispnv50_disp.c:1.5 Sun Dec 19 10:49:47 2021
+++ src/sys/external/bsd/drm2/dist/drm/nouveau/dispnv50/nouveau_dispnv50_disp.c Sun Dec 19 11:34:44 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: nouveau_dispnv50_disp.c,v 1.5 2021/12/19 10:49:47 riastradh Exp $ */
+/* $NetBSD: nouveau_dispnv50_disp.c,v 1.6 2021/12/19 11:34:44 riastradh Exp $ */
/*
* Copyright 2011 Red Hat Inc.
@@ -24,7 +24,7 @@
* Authors: Ben Skeggs
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nouveau_dispnv50_disp.c,v 1.5 2021/12/19 10:49:47 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nouveau_dispnv50_disp.c,v 1.6 2021/12/19 11:34:44 riastradh Exp $");
#include "disp.h"
#include "atom.h"
@@ -2455,6 +2455,7 @@ nv50_display_destroy(struct drm_device *
nouveau_bo_ref(NULL, &disp->sync);
nouveau_display(dev)->priv = NULL;
+ mutex_destroy(&disp->mutex);
kfree(disp);
}
Index: src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/core/nouveau_nvkm_core_client.c
diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/core/nouveau_nvkm_core_client.c:1.5 src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/core/nouveau_nvkm_core_client.c:1.6
--- src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/core/nouveau_nvkm_core_client.c:1.5 Sun Dec 19 10:51:57 2021
+++ src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/core/nouveau_nvkm_core_client.c Sun Dec 19 11:34:44 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: nouveau_nvkm_core_client.c,v 1.5 2021/12/19 10:51:57 riastradh Exp $ */
+/* $NetBSD: nouveau_nvkm_core_client.c,v 1.6 2021/12/19 11:34:44 riastradh Exp $ */
/*
* Copyright 2012 Red Hat Inc.
@@ -24,7 +24,7 @@
* Authors: Ben Skeggs
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm_core_client.c,v 1.5 2021/12/19 10:51:57 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm_core_client.c,v 1.6 2021/12/19 11:34:44 riastradh Exp $");
#include <core/client.h>
#include <core/device.h>
@@ -276,6 +276,7 @@ nvkm_client_dtor(struct nvkm_object *obj
int i;
for (i = 0; i < ARRAY_SIZE(client->notify); i++)
nvkm_client_notify_del(client, i);
+ spin_lock_destroy(&client->lock);
return client;
}
Index: src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/core/nouveau_nvkm_core_engine.c
diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/core/nouveau_nvkm_core_engine.c:1.4 src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/core/nouveau_nvkm_core_engine.c:1.5
--- src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/core/nouveau_nvkm_core_engine.c:1.4 Sat Dec 18 23:45:34 2021
+++ src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/core/nouveau_nvkm_core_engine.c Sun Dec 19 11:34:44 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: nouveau_nvkm_core_engine.c,v 1.4 2021/12/18 23:45:34 riastradh Exp $ */
+/* $NetBSD: nouveau_nvkm_core_engine.c,v 1.5 2021/12/19 11:34:44 riastradh Exp $ */
/*
* Copyright 2012 Red Hat Inc.
@@ -24,7 +24,7 @@
* Authors: Ben Skeggs
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm_core_engine.c,v 1.4 2021/12/18 23:45:34 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm_core_engine.c,v 1.5 2021/12/19 11:34:44 riastradh Exp $");
#include <core/engine.h>
#include <core/device.h>
@@ -159,6 +159,7 @@ static void *
nvkm_engine_dtor(struct nvkm_subdev *subdev)
{
struct nvkm_engine *engine = nvkm_engine(subdev);
+ spin_lock_destroy(&engine->lock);
if (engine->func->dtor)
return engine->func->dtor(engine);
return engine;
Index: src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/core/nouveau_nvkm_core_subdev.c
diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/core/nouveau_nvkm_core_subdev.c:1.4 src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/core/nouveau_nvkm_core_subdev.c:1.5
--- src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/core/nouveau_nvkm_core_subdev.c:1.4 Sat Dec 18 23:45:34 2021
+++ src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/core/nouveau_nvkm_core_subdev.c Sun Dec 19 11:34:44 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: nouveau_nvkm_core_subdev.c,v 1.4 2021/12/18 23:45:34 riastradh Exp $ */
+/* $NetBSD: nouveau_nvkm_core_subdev.c,v 1.5 2021/12/19 11:34:44 riastradh Exp $ */
/*
* Copyright 2012 Red Hat Inc.
@@ -24,13 +24,15 @@
* Authors: Ben Skeggs
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm_core_subdev.c,v 1.4 2021/12/18 23:45:34 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm_core_subdev.c,v 1.5 2021/12/19 11:34:44 riastradh Exp $");
#include <core/subdev.h>
#include <core/device.h>
#include <core/option.h>
#include <subdev/mc.h>
+#include <linux/nbsd-namespace.h>
+
static struct lock_class_key nvkm_subdev_lock_class[NVKM_SUBDEV_NR];
const char *
@@ -208,6 +210,7 @@ nvkm_subdev_del(struct nvkm_subdev **psu
*psubdev = subdev->func->dtor(subdev);
time = ktime_to_us(ktime_get()) - time;
nvkm_trace(subdev, "destroy completed in %"PRId64"us\n", time);
+ mutex_destroy(&subdev->mutex);
kfree(*psubdev);
*psubdev = NULL;
}
Index: src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/engine/disp/nouveau_nvkm_engine_disp_dp.c
diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/engine/disp/nouveau_nvkm_engine_disp_dp.c:1.3 src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/engine/disp/nouveau_nvkm_engine_disp_dp.c:1.4
--- src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/engine/disp/nouveau_nvkm_engine_disp_dp.c:1.3 Sun Dec 19 10:51:57 2021
+++ src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/engine/disp/nouveau_nvkm_engine_disp_dp.c Sun Dec 19 11:34:45 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: nouveau_nvkm_engine_disp_dp.c,v 1.3 2021/12/19 10:51:57 riastradh Exp $ */
+/* $NetBSD: nouveau_nvkm_engine_disp_dp.c,v 1.4 2021/12/19 11:34:45 riastradh Exp $ */
/*
* Copyright 2014 Red Hat Inc.
@@ -24,7 +24,7 @@
* Authors: Ben Skeggs
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm_engine_disp_dp.c,v 1.3 2021/12/19 10:51:57 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm_engine_disp_dp.c,v 1.4 2021/12/19 11:34:45 riastradh Exp $");
#include "dp.h"
#include "conn.h"
@@ -617,6 +617,7 @@ nvkm_dp_dtor(struct nvkm_outp *outp)
{
struct nvkm_dp *dp = nvkm_dp(outp);
nvkm_notify_fini(&dp->hpd);
+ mutex_destroy(&dp->mutex);
return dp;
}
Index: src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/engine/fifo/nouveau_nvkm_engine_fifo_base.c
diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/engine/fifo/nouveau_nvkm_engine_fifo_base.c:1.3 src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/engine/fifo/nouveau_nvkm_engine_fifo_base.c:1.4
--- src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/engine/fifo/nouveau_nvkm_engine_fifo_base.c:1.3 Sat Dec 18 23:45:35 2021
+++ src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/engine/fifo/nouveau_nvkm_engine_fifo_base.c Sun Dec 19 11:34:45 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: nouveau_nvkm_engine_fifo_base.c,v 1.3 2021/12/18 23:45:35 riastradh Exp $ */
+/* $NetBSD: nouveau_nvkm_engine_fifo_base.c,v 1.4 2021/12/19 11:34:45 riastradh Exp $ */
/*
* Copyright 2012 Red Hat Inc.
@@ -24,7 +24,7 @@
* Authors: Ben Skeggs
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm_engine_fifo_base.c,v 1.3 2021/12/18 23:45:35 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm_engine_fifo_base.c,v 1.4 2021/12/19 11:34:45 riastradh Exp $");
#include "priv.h"
#include "chan.h"
@@ -339,6 +339,7 @@ nvkm_fifo_dtor(struct nvkm_engine *engin
nvkm_event_fini(&fifo->kevent);
nvkm_event_fini(&fifo->cevent);
nvkm_event_fini(&fifo->uevent);
+ spin_lock_destroy(&fifo->lock);
return data;
}
Index: src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/engine/gr/nouveau_nvkm_engine_gr_gf100.c
diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/engine/gr/nouveau_nvkm_engine_gr_gf100.c:1.6 src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/engine/gr/nouveau_nvkm_engine_gr_gf100.c:1.7
--- src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/engine/gr/nouveau_nvkm_engine_gr_gf100.c:1.6 Sun Dec 19 10:51:57 2021
+++ src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/engine/gr/nouveau_nvkm_engine_gr_gf100.c Sun Dec 19 11:34:45 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: nouveau_nvkm_engine_gr_gf100.c,v 1.6 2021/12/19 10:51:57 riastradh Exp $ */
+/* $NetBSD: nouveau_nvkm_engine_gr_gf100.c,v 1.7 2021/12/19 11:34:45 riastradh Exp $ */
/*
* Copyright 2012 Red Hat Inc.
@@ -24,7 +24,7 @@
* Authors: Ben Skeggs
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm_engine_gr_gf100.c,v 1.6 2021/12/19 10:51:57 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm_engine_gr_gf100.c,v 1.7 2021/12/19 11:34:45 riastradh Exp $");
#include "gf100.h"
#include "ctxgf100.h"
@@ -2033,6 +2033,8 @@ gf100_gr_dtor(struct nvkm_gr *base)
vfree(gr->sw_ctx);
vfree(gr->sw_nonctx);
+ mutex_destroy(&gr->fecs.mutex);
+
return gr;
}
Index: src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/engine/gr/nouveau_nvkm_engine_gr_nv04.c
diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/engine/gr/nouveau_nvkm_engine_gr_nv04.c:1.3 src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/engine/gr/nouveau_nvkm_engine_gr_nv04.c:1.4
--- src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/engine/gr/nouveau_nvkm_engine_gr_nv04.c:1.3 Sat Dec 18 23:45:36 2021
+++ src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/engine/gr/nouveau_nvkm_engine_gr_nv04.c Sun Dec 19 11:34:45 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: nouveau_nvkm_engine_gr_nv04.c,v 1.3 2021/12/18 23:45:36 riastradh Exp $ */
+/* $NetBSD: nouveau_nvkm_engine_gr_nv04.c,v 1.4 2021/12/19 11:34:45 riastradh Exp $ */
/*
* Copyright 2007 Stephane Marchesin
@@ -24,7 +24,7 @@
* DEALINGS IN THE SOFTWARE.
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm_engine_gr_nv04.c,v 1.3 2021/12/18 23:45:36 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm_engine_gr_nv04.c,v 1.4 2021/12/19 11:34:45 riastradh Exp $");
#include "priv.h"
#include "regs.h"
@@ -1366,9 +1366,17 @@ nv04_gr_init(struct nvkm_gr *base)
return 0;
}
+static void *
+nv04_gr_dtor(struct nvkm_gr *gr)
+{
+ spin_lock_destroy(&nv04_gr(gr)->lock);
+ return gr;
+}
+
static const struct nvkm_gr_func
nv04_gr = {
.init = nv04_gr_init,
+ .dtor = nv04_gr_dtor,
.intr = nv04_gr_intr,
.chan_new = nv04_gr_chan_new,
.sclass = {
Index: src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/engine/gr/nouveau_nvkm_engine_gr_nv10.c
diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/engine/gr/nouveau_nvkm_engine_gr_nv10.c:1.3 src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/engine/gr/nouveau_nvkm_engine_gr_nv10.c:1.4
--- src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/engine/gr/nouveau_nvkm_engine_gr_nv10.c:1.3 Sat Dec 18 23:45:36 2021
+++ src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/engine/gr/nouveau_nvkm_engine_gr_nv10.c Sun Dec 19 11:34:45 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: nouveau_nvkm_engine_gr_nv10.c,v 1.3 2021/12/18 23:45:36 riastradh Exp $ */
+/* $NetBSD: nouveau_nvkm_engine_gr_nv10.c,v 1.4 2021/12/19 11:34:45 riastradh Exp $ */
/*
* Copyright 2007 Matthieu CASTET <[email protected]>
@@ -24,7 +24,7 @@
* DEALINGS IN THE SOFTWARE.
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm_engine_gr_nv10.c,v 1.3 2021/12/18 23:45:36 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm_engine_gr_nv10.c,v 1.4 2021/12/19 11:34:45 riastradh Exp $");
#include "nv10.h"
#include "regs.h"
@@ -1190,9 +1190,17 @@ nv10_gr_new_(const struct nvkm_gr_func *
return nvkm_gr_ctor(func, device, index, true, &gr->base);
}
+static void *
+nv10_gr_dtor(struct nvkm_gr *gr)
+{
+ spin_lock_destroy(&nv10_gr(gr)->lock);
+ return gr;
+}
+
static const struct nvkm_gr_func
nv10_gr = {
.init = nv10_gr_init,
+ .dtor = nv10_gr_dtor,
.intr = nv10_gr_intr,
.tile = nv10_gr_tile,
.chan_new = nv10_gr_chan_new,
Index: src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/engine/gr/nouveau_nvkm_engine_gr_nv50.c
diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/engine/gr/nouveau_nvkm_engine_gr_nv50.c:1.3 src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/engine/gr/nouveau_nvkm_engine_gr_nv50.c:1.4
--- src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/engine/gr/nouveau_nvkm_engine_gr_nv50.c:1.3 Sat Dec 18 23:45:36 2021
+++ src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/engine/gr/nouveau_nvkm_engine_gr_nv50.c Sun Dec 19 11:34:45 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: nouveau_nvkm_engine_gr_nv50.c,v 1.3 2021/12/18 23:45:36 riastradh Exp $ */
+/* $NetBSD: nouveau_nvkm_engine_gr_nv50.c,v 1.4 2021/12/19 11:34:45 riastradh Exp $ */
/*
* Copyright 2012 Red Hat Inc.
@@ -24,7 +24,7 @@
* Authors: Ben Skeggs
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm_engine_gr_nv50.c,v 1.3 2021/12/18 23:45:36 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm_engine_gr_nv50.c,v 1.4 2021/12/19 11:34:45 riastradh Exp $");
#include "nv50.h"
@@ -778,9 +778,17 @@ nv50_gr_new_(const struct nvkm_gr_func *
return nvkm_gr_ctor(func, device, index, true, &gr->base);
}
+static void *
+nv50_gr_dtor(struct nvkm_gr *gr)
+{
+ spin_lock_destroy(&nv50_gr(gr)->lock);
+ return gr;
+}
+
static const struct nvkm_gr_func
nv50_gr = {
.init = nv50_gr_init,
+ .dtor = nv50_gr_dtor,
.intr = nv50_gr_intr,
.chan_new = nv50_gr_chan_new,
.units = nv50_gr_units,
Index: src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/falcon/nouveau_nvkm_falcon_base.c
diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/falcon/nouveau_nvkm_falcon_base.c:1.3 src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/falcon/nouveau_nvkm_falcon_base.c:1.4
--- src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/falcon/nouveau_nvkm_falcon_base.c:1.3 Sun Dec 19 10:51:57 2021
+++ src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/falcon/nouveau_nvkm_falcon_base.c Sun Dec 19 11:34:45 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: nouveau_nvkm_falcon_base.c,v 1.3 2021/12/19 10:51:57 riastradh Exp $ */
+/* $NetBSD: nouveau_nvkm_falcon_base.c,v 1.4 2021/12/19 11:34:45 riastradh Exp $ */
/*
* Copyright (c) 2016, NVIDIA CORPORATION. All rights reserved.
@@ -22,7 +22,7 @@
* DEALINGS IN THE SOFTWARE.
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm_falcon_base.c,v 1.3 2021/12/19 10:51:57 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm_falcon_base.c,v 1.4 2021/12/19 11:34:45 riastradh Exp $");
#include "priv.h"
@@ -232,6 +232,8 @@ nvkm_falcon_del(struct nvkm_falcon **pfa
{
if (*pfalcon) {
nvkm_falcon_dtor(*pfalcon);
+ mutex_destroy(&(*pfalcon)->mutex);
+ mutex_destroy(&(*pfalcon)->dmem_mutex);
kfree(*pfalcon);
*pfalcon = NULL;
}
Index: src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/falcon/nouveau_nvkm_falcon_cmdq.c
diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/falcon/nouveau_nvkm_falcon_cmdq.c:1.3 src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/falcon/nouveau_nvkm_falcon_cmdq.c:1.4
--- src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/falcon/nouveau_nvkm_falcon_cmdq.c:1.3 Sun Dec 19 10:51:57 2021
+++ src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/falcon/nouveau_nvkm_falcon_cmdq.c Sun Dec 19 11:34:45 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: nouveau_nvkm_falcon_cmdq.c,v 1.3 2021/12/19 10:51:57 riastradh Exp $ */
+/* $NetBSD: nouveau_nvkm_falcon_cmdq.c,v 1.4 2021/12/19 11:34:45 riastradh Exp $ */
/*
* Copyright (c) 2017, NVIDIA CORPORATION. All rights reserved.
@@ -23,7 +23,7 @@
*
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm_falcon_cmdq.c,v 1.3 2021/12/19 10:51:57 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm_falcon_cmdq.c,v 1.4 2021/12/19 11:34:45 riastradh Exp $");
#include "qmgr.h"
@@ -199,6 +199,8 @@ nvkm_falcon_cmdq_del(struct nvkm_falcon_
{
struct nvkm_falcon_cmdq *cmdq = *pcmdq;
if (cmdq) {
+ destroy_completion(&cmdq->ready);
+ mutex_destroy(&cmdq->mutex);
kfree(*pcmdq);
*pcmdq = NULL;
}
Index: src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/falcon/nouveau_nvkm_falcon_msgq.c
diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/falcon/nouveau_nvkm_falcon_msgq.c:1.3 src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/falcon/nouveau_nvkm_falcon_msgq.c:1.4
--- src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/falcon/nouveau_nvkm_falcon_msgq.c:1.3 Sun Dec 19 10:51:57 2021
+++ src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/falcon/nouveau_nvkm_falcon_msgq.c Sun Dec 19 11:34:45 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: nouveau_nvkm_falcon_msgq.c,v 1.3 2021/12/19 10:51:57 riastradh Exp $ */
+/* $NetBSD: nouveau_nvkm_falcon_msgq.c,v 1.4 2021/12/19 11:34:45 riastradh Exp $ */
/*
* Copyright (c) 2017, NVIDIA CORPORATION. All rights reserved.
@@ -23,7 +23,7 @@
*
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm_falcon_msgq.c,v 1.3 2021/12/19 10:51:57 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm_falcon_msgq.c,v 1.4 2021/12/19 11:34:45 riastradh Exp $");
#include "qmgr.h"
@@ -199,6 +199,7 @@ nvkm_falcon_msgq_del(struct nvkm_falcon_
{
struct nvkm_falcon_msgq *msgq = *pmsgq;
if (msgq) {
+ mutex_destroy(&msgq->mutex);
kfree(*pmsgq);
*pmsgq = NULL;
}
Index: src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/falcon/nouveau_nvkm_falcon_qmgr.c
diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/falcon/nouveau_nvkm_falcon_qmgr.c:1.3 src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/falcon/nouveau_nvkm_falcon_qmgr.c:1.4
--- src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/falcon/nouveau_nvkm_falcon_qmgr.c:1.3 Sun Dec 19 10:51:57 2021
+++ src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/falcon/nouveau_nvkm_falcon_qmgr.c Sun Dec 19 11:34:45 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: nouveau_nvkm_falcon_qmgr.c,v 1.3 2021/12/19 10:51:57 riastradh Exp $ */
+/* $NetBSD: nouveau_nvkm_falcon_qmgr.c,v 1.4 2021/12/19 11:34:45 riastradh Exp $ */
/*
* Copyright (c) 2017, NVIDIA CORPORATION. All rights reserved.
@@ -23,7 +23,7 @@
*
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm_falcon_qmgr.c,v 1.3 2021/12/19 10:51:57 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm_falcon_qmgr.c,v 1.4 2021/12/19 11:34:45 riastradh Exp $");
#include "qmgr.h"
@@ -68,6 +68,7 @@ nvkm_falcon_qmgr_del(struct nvkm_falcon_
{
struct nvkm_falcon_qmgr *qmgr = *pqmgr;
if (qmgr) {
+ mutex_destroy(&qmgr->seq.mutex);
kfree(*pqmgr);
*pqmgr = NULL;
}
Index: src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/bar/nouveau_nvkm_subdev_bar_base.c
diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/bar/nouveau_nvkm_subdev_bar_base.c:1.3 src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/bar/nouveau_nvkm_subdev_bar_base.c:1.4
--- src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/bar/nouveau_nvkm_subdev_bar_base.c:1.3 Sat Dec 18 23:45:38 2021
+++ src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/bar/nouveau_nvkm_subdev_bar_base.c Sun Dec 19 11:34:45 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: nouveau_nvkm_subdev_bar_base.c,v 1.3 2021/12/18 23:45:38 riastradh Exp $ */
+/* $NetBSD: nouveau_nvkm_subdev_bar_base.c,v 1.4 2021/12/19 11:34:45 riastradh Exp $ */
/*
* Copyright 2012 Red Hat Inc.
@@ -24,7 +24,7 @@
* Authors: Ben Skeggs
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm_subdev_bar_base.c,v 1.3 2021/12/18 23:45:38 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm_subdev_bar_base.c,v 1.4 2021/12/19 11:34:45 riastradh Exp $");
#include "priv.h"
@@ -126,6 +126,7 @@ nvkm_bar_dtor(struct nvkm_subdev *subdev
{
struct nvkm_bar *bar = nvkm_bar(subdev);
nvkm_bar_bar2_fini(subdev->device);
+ spin_lock_destroy(&bar->lock);
return bar->func->dtor(bar);
}
Index: src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/fuse/nouveau_nvkm_subdev_fuse_base.c
diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/fuse/nouveau_nvkm_subdev_fuse_base.c:1.3 src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/fuse/nouveau_nvkm_subdev_fuse_base.c:1.4
--- src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/fuse/nouveau_nvkm_subdev_fuse_base.c:1.3 Sat Dec 18 23:45:39 2021
+++ src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/fuse/nouveau_nvkm_subdev_fuse_base.c Sun Dec 19 11:34:45 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: nouveau_nvkm_subdev_fuse_base.c,v 1.3 2021/12/18 23:45:39 riastradh Exp $ */
+/* $NetBSD: nouveau_nvkm_subdev_fuse_base.c,v 1.4 2021/12/19 11:34:45 riastradh Exp $ */
/*
* Copyright 2014 Martin Peres
@@ -24,7 +24,7 @@
* Authors: Martin Peres
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm_subdev_fuse_base.c,v 1.3 2021/12/18 23:45:39 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm_subdev_fuse_base.c,v 1.4 2021/12/19 11:34:45 riastradh Exp $");
#include "priv.h"
@@ -37,6 +37,7 @@ nvkm_fuse_read(struct nvkm_fuse *fuse, u
static void *
nvkm_fuse_dtor(struct nvkm_subdev *subdev)
{
+ spin_lock_destroy(&nvkm_fuse(subdev)->lock);
return nvkm_fuse(subdev);
}
Index: src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/instmem/nouveau_nvkm_subdev_instmem_base.c
diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/instmem/nouveau_nvkm_subdev_instmem_base.c:1.7 src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/instmem/nouveau_nvkm_subdev_instmem_base.c:1.8
--- src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/instmem/nouveau_nvkm_subdev_instmem_base.c:1.7 Sun Dec 19 10:51:58 2021
+++ src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/instmem/nouveau_nvkm_subdev_instmem_base.c Sun Dec 19 11:34:45 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: nouveau_nvkm_subdev_instmem_base.c,v 1.7 2021/12/19 10:51:58 riastradh Exp $ */
+/* $NetBSD: nouveau_nvkm_subdev_instmem_base.c,v 1.8 2021/12/19 11:34:45 riastradh Exp $ */
/*
* Copyright 2012 Red Hat Inc.
@@ -24,7 +24,7 @@
* Authors: Ben Skeggs
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm_subdev_instmem_base.c,v 1.7 2021/12/19 10:51:58 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm_subdev_instmem_base.c,v 1.8 2021/12/19 11:34:45 riastradh Exp $");
#include "priv.h"
@@ -264,6 +264,7 @@ static void *
nvkm_instmem_dtor(struct nvkm_subdev *subdev)
{
struct nvkm_instmem *imem = nvkm_instmem(subdev);
+ spin_lock_destroy(&imem->lock);
if (imem->func->dtor)
return imem->func->dtor(imem);
return imem;
Index: src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/instmem/nouveau_nvkm_subdev_instmem_gk20a.c
diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/instmem/nouveau_nvkm_subdev_instmem_gk20a.c:1.7 src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/instmem/nouveau_nvkm_subdev_instmem_gk20a.c:1.8
--- src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/instmem/nouveau_nvkm_subdev_instmem_gk20a.c:1.7 Sun Dec 19 10:51:58 2021
+++ src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/instmem/nouveau_nvkm_subdev_instmem_gk20a.c Sun Dec 19 11:34:45 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: nouveau_nvkm_subdev_instmem_gk20a.c,v 1.7 2021/12/19 10:51:58 riastradh Exp $ */
+/* $NetBSD: nouveau_nvkm_subdev_instmem_gk20a.c,v 1.8 2021/12/19 11:34:45 riastradh Exp $ */
/*
* Copyright (c) 2015, NVIDIA CORPORATION. All rights reserved.
@@ -44,7 +44,7 @@
* goes beyond a certain threshold. At the moment this limit is 1MB.
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm_subdev_instmem_gk20a.c,v 1.7 2021/12/19 10:51:58 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm_subdev_instmem_gk20a.c,v 1.8 2021/12/19 11:34:45 riastradh Exp $");
#include "priv.h"
@@ -662,6 +662,8 @@ gk20a_instmem_dtor(struct nvkm_instmem *
nvkm_warn(&base->subdev, "instobj vmap area not empty! "
"0x%x bytes still mapped\n", imem->vaddr_use);
+ mutex_destroy(&imem->lock);
+
return imem;
}
Index: src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/mc/nouveau_nvkm_subdev_mc_base.c
diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/mc/nouveau_nvkm_subdev_mc_base.c:1.3 src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/mc/nouveau_nvkm_subdev_mc_base.c:1.4
--- src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/mc/nouveau_nvkm_subdev_mc_base.c:1.3 Sat Dec 18 23:45:40 2021
+++ src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/mc/nouveau_nvkm_subdev_mc_base.c Sun Dec 19 11:34:45 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: nouveau_nvkm_subdev_mc_base.c,v 1.3 2021/12/18 23:45:40 riastradh Exp $ */
+/* $NetBSD: nouveau_nvkm_subdev_mc_base.c,v 1.4 2021/12/19 11:34:45 riastradh Exp $ */
/*
* Copyright 2012 Red Hat Inc.
@@ -24,7 +24,7 @@
* Authors: Ben Skeggs
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm_subdev_mc_base.c,v 1.3 2021/12/18 23:45:40 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm_subdev_mc_base.c,v 1.4 2021/12/19 11:34:45 riastradh Exp $");
#include "priv.h"
@@ -199,6 +199,9 @@ nvkm_mc_init(struct nvkm_subdev *subdev)
static void *
nvkm_mc_dtor(struct nvkm_subdev *subdev)
{
+ struct nvkm_mc *mc = nvkm_mc(subdev);
+ if (mc->func->dtor)
+ return mc->func->dtor(mc);
return nvkm_mc(subdev);
}
Index: src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/mc/priv.h
diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/mc/priv.h:1.3 src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/mc/priv.h:1.4
--- src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/mc/priv.h:1.3 Sat Dec 18 23:45:40 2021
+++ src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/mc/priv.h Sun Dec 19 11:34:45 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: priv.h,v 1.3 2021/12/18 23:45:40 riastradh Exp $ */
+/* $NetBSD: priv.h,v 1.4 2021/12/19 11:34:45 riastradh Exp $ */
/* SPDX-License-Identifier: MIT */
#ifndef __NVKM_MC_PRIV_H__
@@ -19,6 +19,7 @@ struct nvkm_mc_map {
struct nvkm_mc_func {
void (*init)(struct nvkm_mc *);
+ void *(*dtor)(struct nvkm_mc *);
const struct nvkm_mc_map *intr;
/* disable reporting of interrupts to host */
void (*intr_unarm)(struct nvkm_mc *);
Index: src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/mc/nouveau_nvkm_subdev_mc_gp100.c
diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/mc/nouveau_nvkm_subdev_mc_gp100.c:1.2 src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/mc/nouveau_nvkm_subdev_mc_gp100.c:1.3
--- src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/mc/nouveau_nvkm_subdev_mc_gp100.c:1.2 Sat Dec 18 23:45:40 2021
+++ src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/mc/nouveau_nvkm_subdev_mc_gp100.c Sun Dec 19 11:34:45 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: nouveau_nvkm_subdev_mc_gp100.c,v 1.2 2021/12/18 23:45:40 riastradh Exp $ */
+/* $NetBSD: nouveau_nvkm_subdev_mc_gp100.c,v 1.3 2021/12/19 11:34:45 riastradh Exp $ */
/*
* Copyright 2012 Red Hat Inc.
@@ -24,7 +24,7 @@
* Authors: Ben Skeggs
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm_subdev_mc_gp100.c,v 1.2 2021/12/18 23:45:40 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm_subdev_mc_gp100.c,v 1.3 2021/12/19 11:34:45 riastradh Exp $");
#define gp100_mc(p) container_of((p), struct gp100_mc, base)
#include "priv.h"
@@ -98,9 +98,17 @@ gp100_mc_intr[] = {
{},
};
+static void *
+nv50_mc_dtor(struct nvkm_mc *mc)
+{
+ spin_lock_destroy(&gp100_mc(mc)->lock);
+ return mc;
+}
+
static const struct nvkm_mc_func
gp100_mc = {
.init = nv50_mc_init,
+ .dtor = nv50_mc_dtor,
.intr = gp100_mc_intr,
.intr_unarm = gp100_mc_intr_unarm,
.intr_rearm = gp100_mc_intr_rearm,
Index: src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/mmu/nouveau_nvkm_subdev_mmu_vmm.c
diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/mmu/nouveau_nvkm_subdev_mmu_vmm.c:1.3 src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/mmu/nouveau_nvkm_subdev_mmu_vmm.c:1.4
--- src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/mmu/nouveau_nvkm_subdev_mmu_vmm.c:1.3 Sun Dec 19 10:51:58 2021
+++ src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/mmu/nouveau_nvkm_subdev_mmu_vmm.c Sun Dec 19 11:34:46 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: nouveau_nvkm_subdev_mmu_vmm.c,v 1.3 2021/12/19 10:51:58 riastradh Exp $ */
+/* $NetBSD: nouveau_nvkm_subdev_mmu_vmm.c,v 1.4 2021/12/19 11:34:46 riastradh Exp $ */
/*
* Copyright 2017 Red Hat Inc.
@@ -22,7 +22,7 @@
* OTHER DEALINGS IN THE SOFTWARE.
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm_subdev_mmu_vmm.c,v 1.3 2021/12/19 10:51:58 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm_subdev_mmu_vmm.c,v 1.4 2021/12/19 11:34:46 riastradh Exp $");
#define NVKM_VMM_LEVELS_MAX 5
#include "vmm.h"
@@ -1138,6 +1138,8 @@ nvkm_vmm_dtor(struct nvkm_vmm *vmm)
nvkm_mmu_ptc_put(vmm->mmu, true, &vmm->pd->pt[0]);
nvkm_vmm_pt_del(&vmm->pd);
}
+
+ mutex_destroy(&vmm->mutex);
}
static int
Index: src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/therm/nouveau_nvkm_subdev_therm_base.c
diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/therm/nouveau_nvkm_subdev_therm_base.c:1.3 src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/therm/nouveau_nvkm_subdev_therm_base.c:1.4
--- src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/therm/nouveau_nvkm_subdev_therm_base.c:1.3 Sat Dec 18 23:45:41 2021
+++ src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/therm/nouveau_nvkm_subdev_therm_base.c Sun Dec 19 11:34:46 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: nouveau_nvkm_subdev_therm_base.c,v 1.3 2021/12/18 23:45:41 riastradh Exp $ */
+/* $NetBSD: nouveau_nvkm_subdev_therm_base.c,v 1.4 2021/12/19 11:34:46 riastradh Exp $ */
/*
* Copyright 2012 The Nouveau community
@@ -24,7 +24,7 @@
* Authors: Martin Peres
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm_subdev_therm_base.c,v 1.3 2021/12/18 23:45:41 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm_subdev_therm_base.c,v 1.4 2021/12/19 11:34:46 riastradh Exp $");
#include "priv.h"
@@ -414,7 +414,10 @@ static void *
nvkm_therm_dtor(struct nvkm_subdev *subdev)
{
struct nvkm_therm *therm = nvkm_therm(subdev);
+ nvkm_therm_fan_dtor(therm);
kfree(therm->fan);
+ spin_lock_destroy(&therm->sensor.alarm_program_lock);
+ spin_lock_destroy(&therm->lock);
return therm;
}
Index: src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/therm/nouveau_nvkm_subdev_therm_fan.c
diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/therm/nouveau_nvkm_subdev_therm_fan.c:1.3 src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/therm/nouveau_nvkm_subdev_therm_fan.c:1.4
--- src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/therm/nouveau_nvkm_subdev_therm_fan.c:1.3 Sat Dec 18 23:45:41 2021
+++ src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/therm/nouveau_nvkm_subdev_therm_fan.c Sun Dec 19 11:34:46 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: nouveau_nvkm_subdev_therm_fan.c,v 1.3 2021/12/18 23:45:41 riastradh Exp $ */
+/* $NetBSD: nouveau_nvkm_subdev_therm_fan.c,v 1.4 2021/12/19 11:34:46 riastradh Exp $ */
/*
* Copyright 2012 Red Hat Inc.
@@ -25,7 +25,7 @@
* Martin Peres
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm_subdev_therm_fan.c,v 1.3 2021/12/18 23:45:41 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm_subdev_therm_fan.c,v 1.4 2021/12/19 11:34:46 riastradh Exp $");
#include "priv.h"
@@ -228,6 +228,14 @@ nvkm_therm_fan_fini(struct nvkm_therm *t
return 0;
}
+void
+nvkm_therm_fan_dtor(struct nvkm_therm *therm)
+{
+ if (therm->fan->dtor)
+ therm->fan->dtor(therm->fan);
+ spin_lock_destroy(&therm->fan->lock);
+}
+
int
nvkm_therm_fan_ctor(struct nvkm_therm *therm)
{
Index: src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/therm/nouveau_nvkm_subdev_therm_fantog.c
diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/therm/nouveau_nvkm_subdev_therm_fantog.c:1.3 src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/therm/nouveau_nvkm_subdev_therm_fantog.c:1.4
--- src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/therm/nouveau_nvkm_subdev_therm_fantog.c:1.3 Sat Dec 18 23:45:41 2021
+++ src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/therm/nouveau_nvkm_subdev_therm_fantog.c Sun Dec 19 11:34:46 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: nouveau_nvkm_subdev_therm_fantog.c,v 1.3 2021/12/18 23:45:41 riastradh Exp $ */
+/* $NetBSD: nouveau_nvkm_subdev_therm_fantog.c,v 1.4 2021/12/19 11:34:46 riastradh Exp $ */
/*
* Copyright 2012 The Nouveau community
@@ -24,7 +24,7 @@
* Authors: Martin Peres
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm_subdev_therm_fantog.c,v 1.3 2021/12/18 23:45:41 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm_subdev_therm_fantog.c,v 1.4 2021/12/19 11:34:46 riastradh Exp $");
#include "priv.h"
@@ -92,6 +92,13 @@ nvkm_fantog_set(struct nvkm_therm *therm
return 0;
}
+static void
+nvkm_fantog_dtor(struct nvkm_fan *base)
+{
+ struct nvkm_fantog *fan = container_of(base, struct nvkm_fantog, base);
+ spin_lock_destroy(&fan->lock);
+}
+
int
nvkm_fantog_create(struct nvkm_therm *therm, struct dcb_gpio_func *func)
{
@@ -112,6 +119,7 @@ nvkm_fantog_create(struct nvkm_therm *th
fan->base.type = "toggle";
fan->base.get = nvkm_fantog_get;
fan->base.set = nvkm_fantog_set;
+ fan->base.dtor = nvkm_fantog_dtor;
nvkm_alarm_init(&fan->alarm, nvkm_fantog_alarm);
fan->period_us = 100000; /* 10Hz */
fan->percent = 100;
Index: src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/therm/priv.h
diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/therm/priv.h:1.3 src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/therm/priv.h:1.4
--- src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/therm/priv.h:1.3 Sat Dec 18 23:45:41 2021
+++ src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/therm/priv.h Sun Dec 19 11:34:46 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: priv.h,v 1.3 2021/12/18 23:45:41 riastradh Exp $ */
+/* $NetBSD: priv.h,v 1.4 2021/12/19 11:34:46 riastradh Exp $ */
#ifndef __NVTHERM_PRIV_H__
#define __NVTHERM_PRIV_H__
@@ -50,6 +50,7 @@ struct nvkm_fan {
int (*get)(struct nvkm_therm *);
int (*set)(struct nvkm_therm *, int percent);
+ void (*dtor)(struct nvkm_fan *);
struct dcb_gpio_func tach;
};
@@ -63,6 +64,7 @@ void nvkm_therm_ic_ctor(struct nvkm_ther
int nvkm_therm_sensor_ctor(struct nvkm_therm *);
int nvkm_therm_fan_ctor(struct nvkm_therm *);
+void nvkm_therm_fan_dtor(struct nvkm_therm *);
int nvkm_therm_fan_init(struct nvkm_therm *);
int nvkm_therm_fan_fini(struct nvkm_therm *, bool suspend);
int nvkm_therm_fan_get(struct nvkm_therm *);
Index: src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/timer/nouveau_nvkm_subdev_timer_base.c
diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/timer/nouveau_nvkm_subdev_timer_base.c:1.5 src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/timer/nouveau_nvkm_subdev_timer_base.c:1.6
--- src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/timer/nouveau_nvkm_subdev_timer_base.c:1.5 Sun Dec 19 10:51:59 2021
+++ src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/timer/nouveau_nvkm_subdev_timer_base.c Sun Dec 19 11:34:46 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: nouveau_nvkm_subdev_timer_base.c,v 1.5 2021/12/19 10:51:59 riastradh Exp $ */
+/* $NetBSD: nouveau_nvkm_subdev_timer_base.c,v 1.6 2021/12/19 11:34:46 riastradh Exp $ */
/*
* Copyright 2012 Red Hat Inc.
@@ -24,7 +24,7 @@
* Authors: Ben Skeggs
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm_subdev_timer_base.c,v 1.5 2021/12/19 10:51:59 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm_subdev_timer_base.c,v 1.6 2021/12/19 11:34:46 riastradh Exp $");
#include "priv.h"
@@ -176,6 +176,7 @@ nvkm_timer_init(struct nvkm_subdev *subd
static void *
nvkm_timer_dtor(struct nvkm_subdev *subdev)
{
+ spin_lock_destroy(&nvkm_timer(subdev)->lock);
return nvkm_timer(subdev);
}