]>
Commit | Line | Data |
---|---|---|
98ff5c78 CW |
1 | /* |
2 | * SPDX-License-Identifier: MIT | |
3 | * | |
4 | * Copyright © 2018 Intel Corporation | |
5 | */ | |
6 | ||
7 | #ifndef _I915_SCHEDULER_H_ | |
8 | #define _I915_SCHEDULER_H_ | |
9 | ||
10 | #include <linux/bitops.h> | |
3a891a62 | 11 | #include <linux/list.h> |
e2f3496e | 12 | #include <linux/kernel.h> |
98ff5c78 | 13 | |
3a891a62 | 14 | #include "i915_scheduler_types.h" |
32eb6bcf CW |
15 | |
16 | #define priolist_for_each_request(it, plist, idx) \ | |
17 | for (idx = 0; idx < ARRAY_SIZE((plist)->requests); idx++) \ | |
18 | list_for_each_entry(it, &(plist)->requests[idx], sched.link) | |
19 | ||
20 | #define priolist_for_each_request_consume(it, n, plist, idx) \ | |
bd5d6781 CW |
21 | for (; \ |
22 | (plist)->used ? (idx = __ffs((plist)->used)), 1 : 0; \ | |
23 | (plist)->used &= ~BIT(idx)) \ | |
32eb6bcf | 24 | list_for_each_entry_safe(it, n, \ |
bd5d6781 | 25 | &(plist)->requests[idx], \ |
32eb6bcf CW |
26 | sched.link) |
27 | ||
e2f3496e CW |
28 | void i915_sched_node_init(struct i915_sched_node *node); |
29 | ||
30 | bool __i915_sched_node_add_dependency(struct i915_sched_node *node, | |
31 | struct i915_sched_node *signal, | |
32 | struct i915_dependency *dep, | |
33 | unsigned long flags); | |
34 | ||
32eb6bcf | 35 | int i915_sched_node_add_dependency(struct i915_sched_node *node, |
e2f3496e CW |
36 | struct i915_sched_node *signal); |
37 | ||
32eb6bcf | 38 | void i915_sched_node_fini(struct i915_sched_node *node); |
e2f3496e CW |
39 | |
40 | void i915_schedule(struct i915_request *request, | |
41 | const struct i915_sched_attr *attr); | |
42 | ||
e9eaf82d CW |
43 | void i915_schedule_bump_priority(struct i915_request *rq, unsigned int bump); |
44 | ||
e2f3496e CW |
45 | struct list_head * |
46 | i915_sched_lookup_priolist(struct intel_engine_cs *engine, int prio); | |
47 | ||
32eb6bcf CW |
48 | void __i915_priolist_free(struct i915_priolist *p); |
49 | static inline void i915_priolist_free(struct i915_priolist *p) | |
50 | { | |
51 | if (p->priority != I915_PRIORITY_NORMAL) | |
52 | __i915_priolist_free(p); | |
53 | } | |
54 | ||
98ff5c78 | 55 | #endif /* _I915_SCHEDULER_H_ */ |