root/drivers/gpu/drm/i915/i915_priolist_types.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   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 
  21 #define I915_USER_PRIORITY_SHIFT 2
  22 #define I915_USER_PRIORITY(x) ((x) << I915_USER_PRIORITY_SHIFT)
  23 
  24 #define I915_PRIORITY_COUNT BIT(I915_USER_PRIORITY_SHIFT)
  25 #define I915_PRIORITY_MASK (I915_PRIORITY_COUNT - 1)
  26 
  27 #define I915_PRIORITY_WAIT              ((u8)BIT(0))
  28 #define I915_PRIORITY_NOSEMAPHORE       ((u8)BIT(1))
  29 
  30 /* Smallest priority value that cannot be bumped. */
  31 #define I915_PRIORITY_INVALID (INT_MIN | (u8)I915_PRIORITY_MASK)
  32 
  33 /*
  34  * Requests containing performance queries must not be preempted by
  35  * another context. They get scheduled with their default priority and
  36  * once they reach the execlist ports we ensure that they stick on the
  37  * HW until finished by pretending that they have maximum priority,
  38  * i.e. nothing can have higher priority and force us to usurp the
  39  * active request.
  40  */
  41 #define I915_PRIORITY_UNPREEMPTABLE INT_MAX
  42 
  43 #define __NO_PREEMPTION (I915_PRIORITY_WAIT)
  44 
  45 struct i915_priolist {
  46         struct list_head requests[I915_PRIORITY_COUNT];
  47         struct rb_node node;
  48         unsigned long used;
  49         int priority;
  50 };
  51 
  52 #endif /* _I915_PRIOLIST_TYPES_H_ */

/* [<][>][^][v][top][bottom][index][help] */