aboutsummaryrefslogtreecommitdiff
path: root/kernel/softirq.c
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2012-01-31 13:01:27 +0100
committerSteven Rostedt <rostedt@goodmis.org>2013-11-13 11:21:13 -0500
commite0c7eee431fc0610fe8eda3a26da5d27e41c2a71 (patch)
treefe206e6303adbb19a4279e079c0cff1f46e89afe /kernel/softirq.c
parent67e7442d917708b3a23b6e3bd83f0054dc6ea209 (diff)
genirq: Allow disabling of softirq processing in irq thread context
The processing of softirqs in irq thread context is a performance gain for the non-rt workloads of a system, but it's counterproductive for interrupts which are explicitely related to the realtime workload. Allow such interrupts to prevent softirq processing in their thread context. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Cc: stable-rt@vger.kernel.org
Diffstat (limited to 'kernel/softirq.c')
-rw-r--r--kernel/softirq.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/kernel/softirq.c b/kernel/softirq.c
index a22b8a43af0d..fdd1a4d9c8b4 100644
--- a/kernel/softirq.c
+++ b/kernel/softirq.c
@@ -425,6 +425,13 @@ void local_bh_enable_ip(unsigned long ip)
}
EXPORT_SYMBOL(local_bh_enable_ip);
+void _local_bh_enable(void)
+{
+ current->softirq_nestcnt--;
+ migrate_enable();
+}
+EXPORT_SYMBOL(_local_bh_enable);
+
/* For tracing */
int notrace __in_softirq(void)
{