From: David Howells Fix the lack of certain non-LOCKDEP stub functions in linux/interrupt.h and also provide FRV with LOCKDEP variants. This is to be applied to -mm kernel since not all of the functions added exist in the main kernel. Signed-off-by: David Howells Acked-by: Ingo Molnar Signed-off-by: Andrew Morton --- include/asm-frv/irq.h | 44 ++++++++++++++++++++++++++++++++++++ include/linux/interrupt.h | 2 + 2 files changed, 46 insertions(+) diff -puN include/asm-frv/irq.h~lockdep-core-add-enable-disable_irq_irqsave-irqrestore-apis-frv-fix include/asm-frv/irq.h --- a/include/asm-frv/irq.h~lockdep-core-add-enable-disable_irq_irqsave-irqrestore-apis-frv-fix +++ a/include/asm-frv/irq.h @@ -30,4 +30,48 @@ static inline int irq_canonicalize(int i } #endif +#ifdef CONFIG_LOCKDEP +/* + * Special lockdep variants of irq disabling/enabling. + * These should be used for locking constructs that + * know that a particular irq context which is disabled, + * and which is the only irq-context user of a lock, + * that it's safe to take the lock in the irq-disabled + * section without disabling hardirqs. + * + * On !CONFIG_LOCKDEP they are equivalent to the normal + * irq disable/enable methods. + */ +static inline void disable_irq_nosync_lockdep(unsigned int irq) +{ + disable_irq_nosync(irq); + local_irq_disable(); +} + +static inline void disable_irq_nosync_lockdep_irqsave(unsigned int irq, + unsigned long *flags) +{ + disable_irq_nosync(irq); + local_irq_save(*flags); +} + +static inline void disable_irq_lockdep(unsigned int irq) +{ + disable_irq(irq); + local_irq_disable(); +} + +static inline void enable_irq_lockdep(unsigned int irq) +{ + local_irq_enable(); + enable_irq(irq); +} + +static inline void enable_irq_lockdep_irqrestore(unsigned int irq, + unsigned long *flags) +{ + local_irq_restore(*flags); + enable_irq(irq); +} +#endif /* CONFIG_LOCKDEP */ #endif /* _ASM_IRQ_H_ */ diff -puN include/linux/interrupt.h~lockdep-core-add-enable-disable_irq_irqsave-irqrestore-apis-frv-fix include/linux/interrupt.h --- a/include/linux/interrupt.h~lockdep-core-add-enable-disable_irq_irqsave-irqrestore-apis-frv-fix +++ a/include/linux/interrupt.h @@ -178,6 +178,8 @@ static inline int disable_irq_wake(unsig # define disable_irq_nosync_lockdep(irq) disable_irq_nosync(irq) # define disable_irq_lockdep(irq) disable_irq(irq) # define enable_irq_lockdep(irq) enable_irq(irq) +# define disable_irq_nosync_lockdep_irqsave(irq, flags) disable_irq_nosync(irq) +# define enable_irq_lockdep_irqrestore(irq, flags) enable_irq(irq) # endif #endif /* CONFIG_GENERIC_HARDIRQS */ _