| Date | Wed, 13 May 2020 19:46:39 -0400 (EDT) | From | Mathieu Desnoyers <> | Subject | Re: [patch V4 part 1 30/36] lockdep: Always inline lockdep_{off,on}() |
| |
----- On May 5, 2020, at 9:16 AM, Thomas Gleixner tglx@linutronix.de wrote: [...] > + * Split the recrursion counter in two to readily detect 'off' vs recursion.
recrursion -> recursion
> + */ > +#define LOCKDEP_RECURSION_BITS 16 > +#define LOCKDEP_OFF (1U << LOCKDEP_RECURSION_BITS) > +#define LOCKDEP_RECURSION_MASK (LOCKDEP_OFF - 1) > + > +/* > + * lockdep_{off,on}() are macros to avoid tracing and kprobes; not inlines due > + * to header dependencies. > + */ > + > +#define lockdep_off() \ > +do { \ > + current->lockdep_recursion += LOCKDEP_OFF; \ > +} while (0) > + > +#define lockdep_on() \ > +do { \ > + current->lockdep_recursion -= LOCKDEP_OFF; \ > +} while (0)
Now that those on/off are macros rather than functions, I wonder if adding compiler barriers would be relevant ?
Thanks,
Mathieu
> > extern void lockdep_register_key(struct lock_class_key *key); > extern void lockdep_unregister_key(struct lock_class_key *key); > --- a/kernel/locking/lockdep.c > +++ b/kernel/locking/lockdep.c > @@ -393,25 +393,6 @@ void lockdep_init_task(struct task_struc > task->lockdep_recursion = 0; > } > > -/* > - * Split the recrursion counter in two to readily detect 'off' vs recursion. > - */ > -#define LOCKDEP_RECURSION_BITS 16 > -#define LOCKDEP_OFF (1U << LOCKDEP_RECURSION_BITS) > -#define LOCKDEP_RECURSION_MASK (LOCKDEP_OFF - 1) > - > -void lockdep_off(void) > -{ > - current->lockdep_recursion += LOCKDEP_OFF; > -} > -EXPORT_SYMBOL(lockdep_off); > - > -void lockdep_on(void) > -{ > - current->lockdep_recursion -= LOCKDEP_OFF; > -} > -EXPORT_SYMBOL(lockdep_on); > - > static inline void lockdep_recursion_finish(void) > { > if (WARN_ON_ONCE(--current->lockdep_recursion))
-- Mathieu Desnoyers EfficiOS Inc. http://www.efficios.com
|