[RFC PATCH 0/1] softirq: Allow to drop the softirq-BKL lock on PREEMPT_RT

Sebastian Andrzej Siewior posted 1 patch 3 months, 4 weeks ago
kernel/Kconfig.preempt | 13 +++++++
kernel/softirq.c       | 83 ++++++++++++++++++++++++++++++++----------
2 files changed, 76 insertions(+), 20 deletions(-)
[RFC PATCH 0/1] softirq: Allow to drop the softirq-BKL lock on PREEMPT_RT
Posted by Sebastian Andrzej Siewior 3 months, 4 weeks ago
After auditing the tree most of the local-BH locks are in tree now or
the code has been changed to avoid the per-CPU ressource.

There are still a few places missing. While those are worked on, this
patch allows to test the unlocked behaviour. Without the explicit
softirq synchronisation, one softirq can interrupt and nest within.

This is what the behaviour can look like:

|     ktimers/20-204  [020] ..s.1   33.291036: softirq_entry: vec=1 [action=TIMER]
|     ktimers/20-204  [020] d.s42   33.291054: sched_wakeup: comm=kworker/u133:3 pid=1215 prio=120 target_cpu=020
|     ktimers/20-204  [020] d.H22   33.291146: irq_handler_entry: irq=37 name=ahci[0000:00:1f.2]
|     ktimers/20-204  [020] d.H22   33.291147: irq_handler_exit: irq=37 ret=handled
|     ktimers/20-204  [020] dNH52   33.291152: sched_wakeup: comm=irq/37-ahci[000 pid=810 prio=49 target_cpu=020
|     ktimers/20-204  [020] d.s22   33.291162: sched_switch: prev_comm=ktimers/20 prev_pid=204 prev_prio=98 prev_state=R+ ==> next_comm=irq/37-ahci[000 next_pid=810 next_prio=49
|irq/37-ahci[000-810  [020] D..12   33.291177: softirq_raise: vec=4 [action=BLOCK]
|irq/37-ahci[000-810  [020] ..s.1   33.291179: softirq_entry: vec=4 [action=BLOCK]
^^
|irq/37-ahci[000-810  [020] ..s.1   33.291187: softirq_exit: vec=4 [action=BLOCK]
|irq/37-ahci[000-810  [020] d..2.   33.291195: sched_switch: prev_comm=irq/37-ahci[000 prev_pid=810 prev_prio=49 prev_state=S ==> next_comm=ktimers/20 next_pid=204 next_prio=98
|     ktimers/20-204  [020] ..s.1   33.291227: softirq_exit: vec=1 [action=TIMER]


Sebastian Andrzej Siewior (1):
  softirq: Allow to drop the softirq-BKL lock on PREEMPT_RT

 kernel/Kconfig.preempt | 13 +++++++
 kernel/softirq.c       | 83 ++++++++++++++++++++++++++++++++----------
 2 files changed, 76 insertions(+), 20 deletions(-)

-- 
2.49.0