mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
lockdep: Annotate irq_work
Mark irq_work items with IRQ_WORK_HARD_IRQ which should be invoked in hardirq context even on PREEMPT_RT. IRQ_WORK without this flag will be invoked in softirq context on PREEMPT_RT. Set ->irq_config to 1 for the IRQ_WORK items which are invoked in softirq context so lockdep knows that these can safely acquire a spinlock_t. Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Link: https://lkml.kernel.org/r/20200321113242.643576700@linutronix.de
This commit is contained in:
parent
40db173965
commit
49915ac35c
5 changed files with 19 additions and 0 deletions
|
@ -69,6 +69,17 @@ do { \
|
|||
current->irq_config = 0; \
|
||||
} while (0)
|
||||
|
||||
# define lockdep_irq_work_enter(__work) \
|
||||
do { \
|
||||
if (!(atomic_read(&__work->flags) & IRQ_WORK_HARD_IRQ))\
|
||||
current->irq_config = 1; \
|
||||
} while (0)
|
||||
# define lockdep_irq_work_exit(__work) \
|
||||
do { \
|
||||
if (!(atomic_read(&__work->flags) & IRQ_WORK_HARD_IRQ))\
|
||||
current->irq_config = 0; \
|
||||
} while (0)
|
||||
|
||||
#else
|
||||
# define trace_hardirqs_on() do { } while (0)
|
||||
# define trace_hardirqs_off() do { } while (0)
|
||||
|
@ -83,6 +94,8 @@ do { \
|
|||
# define lockdep_softirq_exit() do { } while (0)
|
||||
# define lockdep_hrtimer_enter(__hrtimer) do { } while (0)
|
||||
# define lockdep_hrtimer_exit(__hrtimer) do { } while (0)
|
||||
# define lockdep_irq_work_enter(__work) do { } while (0)
|
||||
# define lockdep_irq_work_exit(__work) do { } while (0)
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_IRQSOFF_TRACER) || \
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue