On Wed, Apr 15, 2015 at 10:03:56AM +0100, Chris Wilson wrote: > On Fri, Apr 10, 2015 at 11:14:56AM +0200, Daniel Vetter wrote: > > On Tue, Apr 7, 2015 at 6:28 PM, Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> wrote: > > > /* Pinned buffers may be scanout, so flush the cache */ > > > - if (obj->pin_display) > > > + if (obj->pin_display) { > > > + ret = i915_mutex_lock_interruptible(dev); > > > + if (ret) > > > + goto unref; > > > > I think and ACCESS_ONCE here and in the previous one would be good. > > Wanted to do that and merge both, but they seem to conflict with the > > lack of read-read ... > > What do you want to accomplish with ACCESS_ONCE()? Unfortunately as we > can't use it on bitfields. making sure that gcc doesn't reload the variable when it shuffles basic blocks around. Admittedly unlikely. The point is not to do an atomic load but just to ensure that we have a consistent value, no matter how obtained so. But I guess we need to open-code the ACCESS_ONCE with a (volatile bool) cast. The other reason is that it serves as a nice reminder to the reader that something tricky is going on, and that the lockless reading of ->pin_display is intentional. -Daniel -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx