Re: [PATCH v4 14/16] locking/rwsem: Guard against making count negative

From: Peter Zijlstra
Date: Tue Apr 23 2019 - 15:34:51 EST


On Tue, Apr 23, 2019 at 03:12:16PM -0400, Waiman Long wrote:
> On 4/23/19 12:27 PM, Linus Torvalds wrote:
> > On Tue, Apr 23, 2019 at 7:17 AM Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote:
> >> I'm not aware of an architecture where disabling interrupts is faster
> >> than disabling preemption.
> > I don't thin kit ever is, but I'd worry a bit about the
> > preempt_enable() just because it also checks if need_resched() is true
> > when re-enabling preemption.
> >
> > So doing preempt_enable() as part of rwsem_read_trylock() might cause
> > us to schedule in *exactly* the wrong place,
>
> You are right on that. However, there is a variant called
> preempt_enable_no_resched() that doesn't have this side effect. So I am
> going to use that one instead.

Only if the very next line is schedule(). Otherwise you're very much not
going to use that function.