Module Name: src
Committed By: riastradh
Date: Sun Dec 19 12:33:57 UTC 2021
Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: intel_wakeref.c
intel_wakeref.h
src/sys/external/bsd/drm2/dist/drm/i915/gt: intel_engine_cs.c
intel_engine_pm.c intel_engine_pm.h intel_gt_pm.c
Log Message:
i915: Fix wakeref destruction.
To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_wakeref.c
cvs rdiff -u -r1.3 -r1.4 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_wakeref.h
cvs rdiff -u -r1.7 -r1.8 \
src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_engine_cs.c
cvs rdiff -u -r1.3 -r1.4 \
src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_engine_pm.c
cvs rdiff -u -r1.2 -r1.3 \
src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_engine_pm.h
cvs rdiff -u -r1.4 -r1.5 \
src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_gt_pm.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/i915/intel_wakeref.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_wakeref.c:1.4 src/sys/external/bsd/drm2/dist/drm/i915/intel_wakeref.c:1.5
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_wakeref.c:1.4 Sun Dec 19 12:32:15 2021
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_wakeref.c Sun Dec 19 12:33:57 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: intel_wakeref.c,v 1.4 2021/12/19 12:32:15 riastradh Exp $ */
+/* $NetBSD: intel_wakeref.c,v 1.5 2021/12/19 12:33:57 riastradh Exp $ */
/*
* SPDX-License-Identifier: MIT
@@ -7,7 +7,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: intel_wakeref.c,v 1.4 2021/12/19 12:32:15 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_wakeref.c,v 1.5 2021/12/19 12:33:57 riastradh Exp $");
#include <linux/wait_bit.h>
@@ -75,8 +75,6 @@ static void ____intel_wakeref_put_last(s
}
mutex_unlock(&wf->mutex);
- DRM_DESTROY_WAITQUEUE(&wf->wq);
- mutex_destroy(&wf->mutex);
}
void __intel_wakeref_put_last(struct intel_wakeref *wf, unsigned long flags)
@@ -120,6 +118,14 @@ void __intel_wakeref_init(struct intel_w
lockdep_init_map(&wf->work.lockdep_map, "wakeref.work", &key->work, 0);
}
+void
+intel_wakeref_fini(struct intel_wakeref *wf)
+{
+
+ DRM_DESTROY_WAITQUEUE(&wf->wq);
+ mutex_destroy(&wf->mutex);
+}
+
int intel_wakeref_wait_for_idle(struct intel_wakeref *wf)
{
int err;
Index: src/sys/external/bsd/drm2/dist/drm/i915/intel_wakeref.h
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_wakeref.h:1.3 src/sys/external/bsd/drm2/dist/drm/i915/intel_wakeref.h:1.4
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_wakeref.h:1.3 Sun Dec 19 11:49:11 2021
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_wakeref.h Sun Dec 19 12:33:57 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: intel_wakeref.h,v 1.3 2021/12/19 11:49:11 riastradh Exp $ */
+/* $NetBSD: intel_wakeref.h,v 1.4 2021/12/19 12:33:57 riastradh Exp $ */
/*
* SPDX-License-Identifier: MIT
@@ -64,6 +64,8 @@ void __intel_wakeref_init(struct intel_w
__intel_wakeref_init((wf), (rpm), (ops), &__key); \
} while (0)
+void intel_wakeref_fini(struct intel_wakeref *);
+
int __intel_wakeref_get_first(struct intel_wakeref *wf);
void __intel_wakeref_put_last(struct intel_wakeref *wf, unsigned long flags);
Index: src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_engine_cs.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_engine_cs.c:1.7 src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_engine_cs.c:1.8
--- src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_engine_cs.c:1.7 Sun Dec 19 12:32:15 2021
+++ src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_engine_cs.c Sun Dec 19 12:33:56 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: intel_engine_cs.c,v 1.7 2021/12/19 12:32:15 riastradh Exp $ */
+/* $NetBSD: intel_engine_cs.c,v 1.8 2021/12/19 12:33:56 riastradh Exp $ */
/*
* Copyright © 2016 Intel Corporation
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: intel_engine_cs.c,v 1.7 2021/12/19 12:32:15 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_engine_cs.c,v 1.8 2021/12/19 12:33:56 riastradh Exp $");
#include <drm/drm_print.h>
@@ -812,6 +812,7 @@ void intel_engine_cleanup_common(struct
cleanup_status_page(engine);
intel_engine_fini_retire(engine);
+ intel_engine_fini__pm(engine);
intel_engine_pool_fini(&engine->pool);
intel_engine_fini_breadcrumbs(engine);
intel_engine_cleanup_cmd_parser(engine);
Index: src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_engine_pm.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_engine_pm.c:1.3 src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_engine_pm.c:1.4
--- src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_engine_pm.c:1.3 Sun Dec 19 11:52:07 2021
+++ src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_engine_pm.c Sun Dec 19 12:33:56 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: intel_engine_pm.c,v 1.3 2021/12/19 11:52:07 riastradh Exp $ */
+/* $NetBSD: intel_engine_pm.c,v 1.4 2021/12/19 12:33:56 riastradh Exp $ */
/*
* SPDX-License-Identifier: MIT
@@ -7,7 +7,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: intel_engine_pm.c,v 1.3 2021/12/19 11:52:07 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_engine_pm.c,v 1.4 2021/12/19 12:33:56 riastradh Exp $");
#include "i915_drv.h"
@@ -292,6 +292,13 @@ void intel_engine_init__pm(struct intel_
intel_engine_init_heartbeat(engine);
}
+void
+intel_engine_fini__pm(struct intel_engine_cs *engine)
+{
+
+ intel_wakeref_fini(&engine->wakeref);
+}
+
#if IS_ENABLED(CONFIG_DRM_I915_SELFTEST)
#include "selftest_engine_pm.c"
#endif
Index: src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_engine_pm.h
diff -u src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_engine_pm.h:1.2 src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_engine_pm.h:1.3
--- src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_engine_pm.h:1.2 Sat Dec 18 23:45:30 2021
+++ src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_engine_pm.h Sun Dec 19 12:33:56 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: intel_engine_pm.h,v 1.2 2021/12/18 23:45:30 riastradh Exp $ */
+/* $NetBSD: intel_engine_pm.h,v 1.3 2021/12/19 12:33:56 riastradh Exp $ */
/*
* SPDX-License-Identifier: MIT
@@ -65,5 +65,6 @@ intel_engine_create_kernel_request(struc
}
void intel_engine_init__pm(struct intel_engine_cs *engine);
+void intel_engine_fini__pm(struct intel_engine_cs *engine);
#endif /* INTEL_ENGINE_PM_H */
Index: src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_gt_pm.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_gt_pm.c:1.4 src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_gt_pm.c:1.5
--- src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_gt_pm.c:1.4 Sun Dec 19 12:32:15 2021
+++ src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_gt_pm.c Sun Dec 19 12:33:56 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: intel_gt_pm.c,v 1.4 2021/12/19 12:32:15 riastradh Exp $ */
+/* $NetBSD: intel_gt_pm.c,v 1.5 2021/12/19 12:33:56 riastradh Exp $ */
/*
* SPDX-License-Identifier: MIT
@@ -7,7 +7,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: intel_gt_pm.c,v 1.4 2021/12/19 12:32:15 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_gt_pm.c,v 1.5 2021/12/19 12:33:56 riastradh Exp $");
#include <linux/suspend.h>
@@ -177,6 +177,7 @@ void intel_gt_pm_fini(struct intel_gt *g
{
intel_rps_fini(>->rps);
intel_rc6_fini(>->rc6);
+ intel_wakeref_fini(>->wakeref);
}
int intel_gt_resume(struct intel_gt *gt)