Module Name: src Committed By: riastradh Date: Sun Dec 19 11:37:50 UTC 2021
Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: i915_scheduler.c i915_scheduler.h src/sys/external/bsd/drm2/dist/drm/i915/gt: intel_lrc.c Log Message: i915: Initialize the rbtree. To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 \ src/sys/external/bsd/drm2/dist/drm/i915/i915_scheduler.c cvs rdiff -u -r1.2 -r1.3 \ src/sys/external/bsd/drm2/dist/drm/i915/i915_scheduler.h cvs rdiff -u -r1.2 -r1.3 \ src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_lrc.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/i915_scheduler.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_scheduler.c:1.4 src/sys/external/bsd/drm2/dist/drm/i915/i915_scheduler.c:1.5 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_scheduler.c:1.4 Sun Dec 19 11:37:41 2021 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_scheduler.c Sun Dec 19 11:37:50 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_scheduler.c,v 1.4 2021/12/19 11:37:41 riastradh Exp $ */ +/* $NetBSD: i915_scheduler.c,v 1.5 2021/12/19 11:37:50 riastradh Exp $ */ /* * SPDX-License-Identifier: MIT @@ -7,7 +7,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: i915_scheduler.c,v 1.4 2021/12/19 11:37:41 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_scheduler.c,v 1.5 2021/12/19 11:37:50 riastradh Exp $"); #include <linux/mutex.h> @@ -82,6 +82,50 @@ static void assert_priolists(struct inte } } +#ifdef __NetBSD__ + +static int +compare_priolists(void *cookie, const void *va, const void *vb) +{ + const struct i915_priolist *a = va; + const struct i915_priolist *b = vb; + + if (a->priority < b->priority) + return -1; + if (a->priority > b->priority) + return +1; + return 0; +} + +static int +compare_priolist_key(void *cookie, const void *vp, const void *vk) +{ + const struct i915_priolist *p = vp; + const int *priorityp = vk, priority = *priorityp; + + if (p->priority < priority) + return -1; + if (p->priority > priority) + return -1; + return 0; +} + +static const rb_tree_ops_t i915_priolist_rb_ops = { + .rbto_compare_nodes = compare_priolists, + .rbto_compare_key = compare_priolist_key, + .rbto_node_offset = offsetof(struct i915_priolist, node), +}; + +void +i915_sched_init(struct intel_engine_execlists *execlists) +{ + + rb_tree_init(&execlists->queue.rb_root.rbr_tree, + &i915_priolist_rb_ops); +} + +#endif + struct list_head * i915_sched_lookup_priolist(struct intel_engine_cs *engine, int prio) { Index: src/sys/external/bsd/drm2/dist/drm/i915/i915_scheduler.h diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_scheduler.h:1.2 src/sys/external/bsd/drm2/dist/drm/i915/i915_scheduler.h:1.3 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_scheduler.h:1.2 Sat Dec 18 23:45:28 2021 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_scheduler.h Sun Dec 19 11:37:50 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_scheduler.h,v 1.2 2021/12/18 23:45:28 riastradh Exp $ */ +/* $NetBSD: i915_scheduler.h,v 1.3 2021/12/19 11:37:50 riastradh Exp $ */ /* * SPDX-License-Identifier: MIT @@ -55,4 +55,6 @@ static inline void i915_priolist_free(st __i915_priolist_free(p); } +void i915_sched_init(struct intel_engine_execlists *); + #endif /* _I915_SCHEDULER_H_ */ Index: src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_lrc.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_lrc.c:1.2 src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_lrc.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_lrc.c:1.2 Sat Dec 18 23:45:30 2021 +++ src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_lrc.c Sun Dec 19 11:37:50 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_lrc.c,v 1.2 2021/12/18 23:45:30 riastradh Exp $ */ +/* $NetBSD: intel_lrc.c,v 1.3 2021/12/19 11:37:50 riastradh Exp $ */ /* * Copyright © 2014 Intel Corporation @@ -134,7 +134,7 @@ * */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: intel_lrc.c,v 1.2 2021/12/18 23:45:30 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_lrc.c,v 1.3 2021/12/19 11:37:50 riastradh Exp $"); #include <linux/interrupt.h> @@ -4326,6 +4326,8 @@ int intel_execlists_submission_setup(str struct intel_uncore *uncore = engine->uncore; u32 base = engine->mmio_base; + i915_sched_init(&engine->execlists); + tasklet_init(&engine->execlists.tasklet, execlists_submission_tasklet, (unsigned long)engine); timer_setup(&engine->execlists.timer, execlists_timeslice, 0);