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