Commit d96bb620 authored by Chris Wilson's avatar Chris Wilson
Browse files

drm/i915/gem: Silence sparse for RCU protection inside the constructor



Inside the constructor, while cloning, we need to replace the
dst->engines. Having forgotten that dst->engines is marked as RCU
protected, we need to add the appropriate annotations to make sparse
happy.

Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20191114225736.616885-5-chris@chris-wilson.co.uk
parent 7936a22d
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -2009,7 +2009,8 @@ static int clone_engines(struct i915_gem_context *dst,
	user_engines = i915_gem_context_user_engines(src);
	i915_gem_context_unlock_engines(src);

	free_engines(dst->engines);
	/* Serialised by constructor */
	free_engines(__context_engines_static(dst));
	RCU_INIT_POINTER(dst->engines, clone);
	if (user_engines)
		i915_gem_context_set_user_engines(dst);
@@ -2044,7 +2045,8 @@ static int clone_sseu(struct i915_gem_context *dst,
	unsigned long n;
	int err;

	clone = dst->engines; /* no locking required; sole access */
	/* no locking required; sole access under constructor*/
	clone = __context_engines_static(dst);
	if (e->num_engines != clone->num_engines) {
		err = -EINVAL;
		goto unlock;