1 | /* |
2 | * SPDX-License-Identifier: MIT |
3 | * |
4 | * Copyright © 2018 Intel Corporation |
5 | */ |
6 | |
7 | #ifndef _I915_PRIOLIST_TYPES_H_ |
8 | #define _I915_PRIOLIST_TYPES_H_ |
9 | |
10 | #include <linux/list.h> |
11 | #include <linux/rbtree.h> |
12 | |
13 | #include <uapi/drm/i915_drm.h> |
14 | |
15 | enum { |
16 | I915_PRIORITY_MIN = I915_CONTEXT_MIN_USER_PRIORITY - 1, |
17 | I915_PRIORITY_NORMAL = I915_CONTEXT_DEFAULT_PRIORITY, |
18 | I915_PRIORITY_MAX = I915_CONTEXT_MAX_USER_PRIORITY + 1, |
19 | |
20 | /* A preemptive pulse used to monitor the health of each engine */ |
21 | I915_PRIORITY_HEARTBEAT, |
22 | |
23 | /* Interactive workload, scheduled for immediate pageflipping */ |
24 | I915_PRIORITY_DISPLAY, |
25 | }; |
26 | |
27 | /* Smallest priority value that cannot be bumped. */ |
28 | #define I915_PRIORITY_INVALID (INT_MIN) |
29 | |
30 | /* |
31 | * Requests containing performance queries must not be preempted by |
32 | * another context. They get scheduled with their default priority and |
33 | * once they reach the execlist ports we ensure that they stick on the |
34 | * HW until finished by pretending that they have maximum priority, |
35 | * i.e. nothing can have higher priority and force us to usurp the |
36 | * active request. |
37 | */ |
38 | #define I915_PRIORITY_UNPREEMPTABLE INT_MAX |
39 | #define I915_PRIORITY_BARRIER (I915_PRIORITY_UNPREEMPTABLE - 1) |
40 | |
41 | struct i915_priolist { |
42 | struct list_head requests; |
43 | struct rb_node node; |
44 | int priority; |
45 | }; |
46 | |
47 | #endif /* _I915_PRIOLIST_TYPES_H_ */ |
48 | |