Skip to content
Commit eb33ae96 authored by Sebastian Andrzej Siewior's avatar Sebastian Andrzej Siewior Committed by Bruce Ashfield
Browse files

irq_work: Allow irq_work_sync() to sleep if irq_work() no IRQ support.



irq_work() triggers instantly an interrupt if supported by the
architecture. Otherwise the work will be processed on the next timer
tick. In worst case irq_work_sync() could spin up to a jiffy.

irq_work_sync() is usually used in tear down context which is fully
preemptible. Based on review irq_work_sync() is invoked from preemptible
context and there is one waiter at a time. This qualifies it to use
rcuwait for synchronisation.

Let irq_work_sync() synchornize with rcuwait if the architecture
processes irqwork via the timer tick.

Signed-off-by: default avatarSebastian Andrzej Siewior <bigeasy@linutronix.de>
parent 5cc8d9c2
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment