[ofa-general] [Fwd: [PATCH] ib: release locks in the proper order]
Steven Rostedt
srostedt at redhat.com
Wed Oct 8 20:20:16 PDT 2008
Roland Dreier wrote:
> > The problem arised with RT. RT converts spin_locks and rwlocks as
> > well as rwsems into priority inheritance mutexes. With rwlocks and
> > rwsems it becomes a bit more complex, since they can have multiple
> > owners. To accomplish this, the tasks have an array field of all
> > reader locks (rwlocks or sems) that they hold. But the unlock expected
> > the last taken lock to be released, to keep the array clean (just
> > decrement the length).
>
> I see -- basically this is an internal implementation quirk of how RT
> handles rwsems. Sort of like the way spin_lock_irqsave() and
> spin_unlock_irqrestore() used to have to be in the same function, with a
> local flags variable, because of strange details of the sparc architecture.
>
> I'm actually OK with applying this patch because of that implementation
> quirk, assuming that it helps with the RT tree, and assuming someone is
> actually using this codepath with the RT patch applied and getting
> bitten by this in practice. But I'm even more OK with dropping the
> patch if you're going to fix this RT quirk anyway ;)
>
We found this quirk from someone reporting hitting it in the ib driver ;-)
but ...
> So let me know what you think.
>
I just fixed the quirk. You can drop the patch.
Thanks,
-- Steve
More information about the general
mailing list