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"
18 struct i915_gem_context;
23 struct intel_context_ops {
24 int (*pin)(struct intel_context *ce);
25 void (*unpin)(struct intel_context *ce);
27 void (*reset)(struct intel_context *ce);
28 void (*destroy)(struct kref *kref);
32 * Powergating configuration for a particular (context,engine).
37 u8 min_eus_per_subslice;
38 u8 max_eus_per_subslice;
41 struct intel_context {
44 struct i915_gem_context *gem_context;
45 struct intel_engine_cs *engine;
46 struct intel_engine_cs *active;
48 struct list_head active_link;
49 struct list_head signal_link;
50 struct list_head signals;
52 struct i915_vma *state;
53 struct intel_ring *ring;
59 struct mutex pin_mutex; /* guards pinning and associated on-gpuing */
62 * active_tracker: Active tracker for the external rq activity
63 * on this intel_context object.
65 struct i915_active_request active_tracker;
67 const struct intel_context_ops *ops;
70 /** sseu: Control eu/slice partitioning */
71 struct intel_sseu sseu;
74 #endif /* __INTEL_CONTEXT_TYPES__ */