• Sebastian Andrzej Siewior's avatar
    irq_work: Allow irq_work_sync() to sleep if irq_work() no IRQ support. · 1ab991dc
    Sebastian Andrzej Siewior authored
    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>