mirror of https://gitee.com/openkylin/linux.git
drm/i915: Wrap the protected active RCU dereference in a helper
As we do the lockdep protected RCU lookup in a couple of places, refactor that code to a common helper i915_gem_active_raw(). Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> Link: http://patchwork.freedesktop.org/patch/msgid/1470728222-10243-2-git-send-email-chris@chris-wilson.co.uk
This commit is contained in:
parent
2e7ba01494
commit
385384a82c
|
@ -359,6 +359,21 @@ __i915_gem_active_peek(const struct i915_gem_active *active)
|
|||
return rcu_dereference_protected(active->request, 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* i915_gem_active_raw - return the active request
|
||||
* @active - the active tracker
|
||||
*
|
||||
* i915_gem_active_raw() returns the current request being tracked, or NULL.
|
||||
* It does not obtain a reference on the request for the caller, so the caller
|
||||
* must hold struct_mutex.
|
||||
*/
|
||||
static inline struct drm_i915_gem_request *
|
||||
i915_gem_active_raw(const struct i915_gem_active *active, struct mutex *mutex)
|
||||
{
|
||||
return rcu_dereference_protected(active->request,
|
||||
lockdep_is_held(mutex));
|
||||
}
|
||||
|
||||
/**
|
||||
* i915_gem_active_peek - report the active request being monitored
|
||||
* @active - the active tracker
|
||||
|
@ -372,8 +387,7 @@ i915_gem_active_peek(const struct i915_gem_active *active, struct mutex *mutex)
|
|||
{
|
||||
struct drm_i915_gem_request *request;
|
||||
|
||||
request = rcu_dereference_protected(active->request,
|
||||
lockdep_is_held(mutex));
|
||||
request = i915_gem_active_raw(active, mutex);
|
||||
if (!request || i915_gem_request_completed(request))
|
||||
return NULL;
|
||||
|
||||
|
@ -614,8 +628,7 @@ i915_gem_active_retire(struct i915_gem_active *active,
|
|||
struct drm_i915_gem_request *request;
|
||||
int ret;
|
||||
|
||||
request = rcu_dereference_protected(active->request,
|
||||
lockdep_is_held(mutex));
|
||||
request = i915_gem_active_raw(active, mutex);
|
||||
if (!request)
|
||||
return 0;
|
||||
|
||||
|
|
Loading…
Reference in New Issue