Re: [PATCH 1/2] locking/mutex: remove rcu_read_lock/unlock as we already disabled preemption

From: Xu, Yanfei
Date: Mon Sep 27 2021 - 05:29:14 EST




On 9/27/21 8:46 AM, Waiman Long wrote:
[Please note: This e-mail is from an EXTERNAL e-mail address]

On 9/26/21 3:16 PM, Waiman Long wrote:
On 9/26/21 6:16 AM, Yanfei Xu wrote:
preempt_disable/enable() is equal to RCU read-side crital section,
and the mutex lock slowpath disable the preemption throughout the
entire slowpath. Let's remove the rcu_read_lock/unlock for saving
some cycles in hot codes.

The description is wrong. Preemption is disabled only in the
optimistic spinning code which is not the complete slowpath. Even
though it may sound reasonable that disable preemption is likely to
prevent reaching quiescent state, but I am not totally sure that will
always be the case as there are different RCU favors.

It does look like that disable preemption can serve as a substitute for
rcu_read_lock(). However, I will suggest that you also insert a comment
saying so and the task structure won't go away during the spinning period.


Will send v2, thanks.

Yanfei

Cheers,
Longman