[PATCH v2 0/4] irq_work: PREEMPT_RT bits

From: Sebastian Andrzej Siewior
Date: Wed Oct 06 2021 - 07:19:13 EST


This is v2 of the series. v1 can be found at
https://lkml.kernel.org/20210927211919.310855-1-bigeasy@xxxxxxxxxxxxx

Changelog:
v1…v2:
- Drop "irq_work: Ensure that irq_work runs in in-IRQ context". This
triggers if a CPU goes down.

- #3 now uses per-CPU threads with the lowest RT priority instead of
the timer softirq.

This are the PREEMPT_RT bits for irq_work. The annotation for
IRQ_WORK_HARD_IRQ was already merged except for one missed annotation.
Patch #3 introduces the required processing split of callbacks with are
really invoked from hard-irq context and those which are processed in a
per-CPU thread. Unless "LAZY" the thread is woken from the irq_work
hardirq.

This has been done as quite a few them acquire locks which need to sleep
on PREEMPT_RT and must not be invoked in hardirq context. We can not
delay all of them since a few need to be invoked hardirq context in
order to work properly (NOHZ, scheduler, …).

Sebastian