Re: [RFC PATCH 02/12] locking/lockdep: Add a new terminal lock type

From: Peter Zijlstra
Date: Sat Nov 10 2018 - 17:43:28 EST


On Thu, Nov 08, 2018 at 03:34:18PM -0500, Waiman Long wrote:
> A terminal lock is a lock where further locking or unlocking on another
> lock is not allowed. IOW, no forward dependency is permitted.
>
> With such a restriction in place, we don't really need to do a full
> validation of the lock chain involving a terminal lock. Instead,
> we just check if there is any further locking or unlocking on another
> lock when a terminal lock is being held.

> @@ -263,6 +270,7 @@ struct held_lock {
> unsigned int hardirqs_off:1;
> unsigned int references:12; /* 32 bits */
> unsigned int pin_count;
> + unsigned int flags;
> };

I'm thinking we can easily steal some bits off of the pin_count field if
we have to.