diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2018-07-06 11:39:46 +0100 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2018-07-06 18:22:43 +0100 |
commit | 5c3f8c221c77ccdce3c2a8b96d196e5f4e2dac0c (patch) | |
tree | 99bf2a6ad213c15e7131eb697085d487c77ea19d /drivers/gpu/drm/i915/i915_request.h | |
parent | e6bb1d7f1adfcd24ac7d82ab157a8b8809a0d2c8 (diff) | |
download | linux-stable-5c3f8c221c77ccdce3c2a8b96d196e5f4e2dac0c.tar.gz linux-stable-5c3f8c221c77ccdce3c2a8b96d196e5f4e2dac0c.tar.bz2 linux-stable-5c3f8c221c77ccdce3c2a8b96d196e5f4e2dac0c.zip |
drm/i915: Track vma activity per fence.context, not per engine
In the next patch, we will want to be able to use more flexible request
timelines that can hop between engines. From the vma pov, we can then
not rely on the binding of this request to an engine and so can not
ensure that different requests are ordered through a per-engine
timeline, and so we must track activity of all timelines. (We track
activity on the vma itself to prevent unbinding from HW before the HW
has finished accessing it.)
v2: Switch to a rbtree for 32b safety (since using u64 as a radixtree
index is fraught with aliasing of unsigned longs).
v3: s/lookup_active/active_instance/ because we can never agree on names
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180706103947.15919-5-chris@chris-wilson.co.uk
Diffstat (limited to 'drivers/gpu/drm/i915/i915_request.h')
-rw-r--r-- | drivers/gpu/drm/i915/i915_request.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/i915_request.h b/drivers/gpu/drm/i915/i915_request.h index a355a081485f..e1c9365dfefb 100644 --- a/drivers/gpu/drm/i915/i915_request.h +++ b/drivers/gpu/drm/i915/i915_request.h @@ -380,6 +380,7 @@ static inline void init_request_active(struct i915_gem_active *active, i915_gem_retire_fn retire) { + RCU_INIT_POINTER(active->request, NULL); INIT_LIST_HEAD(&active->link); active->retire = retire ?: i915_gem_retire_noop; } |