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)