]> git.baikalelectronics.ru Git - kernel.git/commit
genirq/irq_sim: Make the irq_work always run in hard irq context
authorSebastian Andrzej Siewior <bigeasy@linutronix.de>
Wed, 11 May 2022 11:07:50 +0000 (13:07 +0200)
committerThomas Gleixner <tglx@linutronix.de>
Sat, 14 May 2022 15:48:27 +0000 (17:48 +0200)
commit8f1dae898cfda726a99055e258a30521b6b5c0ad
tree5d2ccddb028c96dfb4bc1cf33605665796b6ee24
parent1822567b135d60f1210f4135add0ea64f22480a9
genirq/irq_sim: Make the irq_work always run in hard irq context

The IRQ simulator uses irq_work to trigger an interrupt. Without the
IRQ_WORK_HARD_IRQ flag the irq_work will be performed in thread context
on PREEMPT_RT. This causes locking errors later in handle_simple_irq()
which expects to be invoked with disabled interrupts.

Triggering individual interrupts in hardirq context should not lead to
unexpected high latencies since this is also what the hardware
controller does. Also it is used as a simulator so...

Use IRQ_WORK_INIT_HARD() to carry out the irq_work in hardirq context on
PREEMPT_RT.

Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lore.kernel.org/r/YnuZBoEVMGwKkLm+@linutronix.de
kernel/irq/irq_sim.c