From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754555AbcLaIUZ (ORCPT ); Sat, 31 Dec 2016 03:20:25 -0500 Received: from mout.gmx.net ([212.227.15.15]:58457 "EHLO mout.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750696AbcLaIUY (ORCPT ); Sat, 31 Dec 2016 03:20:24 -0500 Message-ID: <1483172410.9872.2.camel@gmx.de> Subject: [patch-rt] softirq: Move ksoftirqd_running() under !CONFIG_PREEMPT_RT_FULL From: Mike Galbraith To: Sebastian Andrzej Siewior , Thomas Gleixner Cc: LKML , linux-rt-users , Steven Rostedt Date: Sat, 31 Dec 2016 09:20:10 +0100 In-Reply-To: <20161223163213.szj43nv7rnelkbty@linutronix.de> References: <20161223163213.szj43nv7rnelkbty@linutronix.de> Content-Type: text/plain; charset="us-ascii" X-Mailer: Evolution 3.16.5 Mime-Version: 1.0 Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K0:ePqAQjHwvD3UsZllWY6vcv4KIhDixOydx1IoHgPGmoqbqDa/03A +WMg284VTQEVpTeBeBf3jnsLgGWVU2plDtvg0Yow6qyGHmgrGZlD9aVqBp7NJ96/9rOcsYn JFK5Wi+ltXAZ58y6IOxn6iLn1d6eRCs98FK2MPF8CnqfDmRS5qFLhdgqdymIExNhd9SAexK /DfV/+BikC1bm+pQcZLVQ== X-UI-Out-Filterresults: notjunk:1;V01:K0:nHlhZqKCl1w=:w9C7BZw1qbJMLeRNa8hFw9 hMb6+nccqrkQU9Lhc4L+0s4J3Y9wHYaW22/7b8aieMbohtIaJ6LOBxNKfJyYlvjvbrNccjbJg K4tTw5EPi8eO8GbJnyy+RiDKZdIefXmNpwqQdoOG6V8QtlChKZgVxcWZs4y83eMsharmyAiTw vQB64ZSsc75UO3SoeWS2Il6rPcc7mJRhIDrGJ9k1y2JFRYpEH187gDSusr4gWolK3lnH7XV8u /rxVVUVhAenJ/ZyIENFBTFJcvRalgyjP1GQ2mTSgaGXXd9ejJTqIZFGHO4M3eOMx9/2ASmGcY ExbevtNecPyectbT7dlpuggoHkT54L45JuzzdK8Bx9Oi3J9yxhd8klifPAoC25FQC85NWxmp7 b6B/vDdbMAU9E9GHxcEHq9Ie4BvjBWVraLWbtU3uzPaHGTK7Ln8bsz29uyUk8a/fRTrfwaSWU HtA6CXCsUW+vqaVPScz1/mronkZFub0MPnt5ZvPOxozEpR30AdV2JEOAdHrjPnsN94NR+KcZa HwS4dKSTo/4YqyVF/gzsHhR8TC/ujE6nABWnc9bwPn82RKHuL/I8noADeqQ7nygVS9N1SBSNP T6w4zs6W8RNdAUWGOirP/5WpifdQjz8D4jZOnWQ1WqlCz9mm5p+bAmfehJUO/zDqvaGymKsds P+Foo3uUBF1/FJ6B7nZkSTE3tKQF0TEIYAZqsxRpX99fBYUE0Na/3N0aKYFYYB0HIpkjKHWy7 891qL9Kx096Xz+8kI1MoDVE/hlB9A4ivW/W881+azBiuuzXbmNZymsi47ZM6qfcyDLVs9Vv6q 8JFp1Tz Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Otherwise, ktimersoftd may not be awakened when it has work to do. [ 84.087571] NOHZ: local_softirq_pending 02 [ 84.087593] NOHZ: local_softirq_pending 02 [ 84.087598] NOHZ: local_softirq_pending 02 [ 84.087904] NOHZ: local_softirq_pending 02 [ 84.088526] NOHZ: local_softirq_pending 02 [ 84.088899] NOHZ: local_softirq_pending 02 [ 84.089463] NOHZ: local_softirq_pending 02 [ 115.013470] NOHZ: local_softirq_pending 02 [ 115.013601] NOHZ: local_softirq_pending 02 [ 115.013709] NOHZ: local_softirq_pending 02 Signed-off-by: Mike Galbraith --- kernel/softirq.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) --- a/kernel/softirq.c +++ b/kernel/softirq.c @@ -206,6 +206,7 @@ static void handle_softirq(unsigned int } } +#ifndef CONFIG_PREEMPT_RT_FULL /* * If ksoftirqd is scheduled, we do not want to process pending softirqs * right now. Let ksoftirqd handle this at its own rate, to get fairness. @@ -217,7 +218,6 @@ static bool ksoftirqd_running(void) return tsk && (tsk->state == TASK_RUNNING); } -#ifndef CONFIG_PREEMPT_RT_FULL static inline int ksoftirqd_softirq_pending(void) { return local_softirq_pending(); @@ -794,13 +794,10 @@ void irq_enter(void) static inline void invoke_softirq(void) { -#ifdef CONFIG_PREEMPT_RT_FULL - unsigned long flags; -#endif - +#ifndef CONFIG_PREEMPT_RT_FULL if (ksoftirqd_running()) return; -#ifndef CONFIG_PREEMPT_RT_FULL + if (!force_irqthreads) { #ifdef CONFIG_HAVE_IRQ_EXIT_ON_IRQ_STACK /* @@ -821,6 +818,7 @@ static inline void invoke_softirq(void) wakeup_softirqd(); } #else /* PREEMPT_RT_FULL */ + unsigned long flags; local_irq_save(flags); if (__this_cpu_read(ksoftirqd) &&