]> git.baikalelectronics.ru Git - kernel.git/commit
softirq: Add RT specific softirq accounting
authorThomas Gleixner <tglx@linutronix.de>
Tue, 9 Mar 2021 08:55:53 +0000 (09:55 +0100)
committerThomas Gleixner <tglx@linutronix.de>
Wed, 17 Mar 2021 15:34:08 +0000 (16:34 +0100)
commit771e941a1e19288116cfb5e9ebcde5848e4d5690
tree2f1a1bd80bd1c0a018bb881bab907c476b2c1e28
parent9fb1e46ce1a9663b759a637de051d74fd9b8c58d
softirq: Add RT specific softirq accounting

RT requires the softirq processing and local bottomhalf disabled regions to
be preemptible. Using the normal preempt count based serialization is
therefore not possible because this implicitely disables preemption.

RT kernels use a per CPU local lock to serialize bottomhalfs. As
local_bh_disable() can nest the lock can only be acquired on the outermost
invocation of local_bh_disable() and released when the nest count becomes
zero. Tasks which hold the local lock can be preempted so its required to
keep track of the nest count per task.

Add a RT only counter to task struct and adjust the relevant macros in
preempt.h.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Tested-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Tested-by: Paul E. McKenney <paulmck@kernel.org>
Reviewed-by: Frederic Weisbecker <frederic@kernel.org>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lore.kernel.org/r/20210309085726.983627589@linutronix.de
include/linux/hardirq.h
include/linux/preempt.h
include/linux/sched.h