2 * SPDX-License-Identifier: MIT
4 * Copyright © 2019 Intel Corporation
7 #ifndef __INTEL_CONTEXT_TYPES__
8 #define __INTEL_CONTEXT_TYPES__
10 #include <linux/kref.h>
11 #include <linux/list.h>
12 #include <linux/mutex.h>
13 #include <linux/rbtree.h>
14 #include <linux/types.h>
16 #include "i915_active_types.h"
17 #include "intel_engine_types.h"
19 struct i915_gem_context;
24 struct intel_context_ops {
25 int (*pin)(struct intel_context *ce);
26 void (*unpin)(struct intel_context *ce);
28 void (*reset)(struct intel_context *ce);
29 void (*destroy)(struct kref *kref);
33 * Powergating configuration for a particular (context,engine).
38 u8 min_eus_per_subslice;
39 u8 max_eus_per_subslice;
42 struct intel_context {
45 struct i915_gem_context *gem_context;
46 struct intel_engine_cs *engine;
47 struct intel_engine_cs *active;
49 struct list_head active_link;
50 struct list_head signal_link;
51 struct list_head signals;
53 struct i915_vma *state;
54 struct intel_ring *ring;
60 struct mutex pin_mutex; /* guards pinning and associated on-gpuing */
62 intel_engine_mask_t saturated; /* submitting semaphores too late? */
65 * active_tracker: Active tracker for the external rq activity
66 * on this intel_context object.
68 struct i915_active_request active_tracker;
70 const struct intel_context_ops *ops;
73 /** sseu: Control eu/slice partitioning */
74 struct intel_sseu sseu;
77 #endif /* __INTEL_CONTEXT_TYPES__ */