On Tue, 23 Apr 2013 23:15:29 -0700 Ben Widawsky <ben at bwidawsk.net> wrote: > Because our context refcounting doesn't grab a ref at lookup time, it is > unsafe to do so without the lock. > > NOTE: We don't have an easy way to put the assertion in the lookup > function which is where this really belongs. Context switching is good > enough because it actually asserts even more correctness by protecting > the default_context. > > Signed-off-by: Ben Widawsky <ben at bwidawsk.net> > --- > drivers/gpu/drm/i915/i915_gem_context.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/gpu/drm/i915/i915_gem_context.c b/drivers/gpu/drm/i915/i915_gem_context.c > index a1e8ecb..411ace0 100644 > --- a/drivers/gpu/drm/i915/i915_gem_context.c > +++ b/drivers/gpu/drm/i915/i915_gem_context.c > @@ -444,6 +444,8 @@ int i915_switch_context(struct intel_ring_buffer *ring, > if (dev_priv->hw_contexts_disabled) > return 0; > > + BUG_ON(!mutex_is_locked(&dev_priv->dev->struct_mutex)); > + > if (ring != &dev_priv->ring[RCS]) > return 0; > Simple enough. Reviewed-by: Jesse Barnes <jbarnes at virtuousgeek.org> We usually do WARN_ONs for this stuff though, in case a user actually does hit it, it may not be fatal so why crash the machine? But that's a minor distinction since we shouldn't hit this except in development anyway. -- Jesse Barnes, Intel Open Source Technology Center