From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756222Ab1ALWWX (ORCPT ); Wed, 12 Jan 2011 17:22:23 -0500 Received: from e4.ny.us.ibm.com ([32.97.182.144]:38688 "EHLO e4.ny.us.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756058Ab1ALWWW (ORCPT ); Wed, 12 Jan 2011 17:22:22 -0500 Date: Wed, 12 Jan 2011 14:22:19 -0800 From: "Paul E. McKenney" To: Russell King Cc: Linux Kernel List Subject: Re: INFO: task rcu_kthread:6 blocked for more than 120 seconds. Message-ID: <20110112222219.GA17328@linux.vnet.ibm.com> Reply-To: paulmck@linux.vnet.ibm.com References: <20110112174300.GA6504@flint.arm.linux.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110112174300.GA6504@flint.arm.linux.org.uk> User-Agent: Mutt/1.5.20 (2009-06-14) X-Content-Scanned: Fidelis XPS MAILER Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Jan 12, 2011 at 05:43:00PM +0000, Russell King wrote: > I'm seeing rcu_kthread get stuck from time to time on ARM Versatile PB > (ARM926). Kernel is based upon commit 9e9bc973 (immediately prior to > the merge of the OMAP tree.) > > ~ # ps aux|grep rcu > root 6 0.0 0.0 0 0 ? S 02:31 0:01 [rcu_kthread] > root 502 9.0 0.3 3740 472 ttyAMA0 S+ 02:59 0:00 grep rcu > ~ # ps aux|grep rcu > root 6 0.0 0.0 0 0 ? D 02:31 0:01 [rcu_kthread] > root 504 0.0 0.3 3740 472 ttyAMA0 S+ 03:00 0:00 grep rcu > ~ # ps aux|grep rcu > root 6 0.0 0.0 0 0 ? D 02:31 0:01 [rcu_kthread] > root 506 0.0 0.3 3740 472 ttyAMA0 S+ 03:00 0:00 grep rcu > ~ # ps aux|grep rcu > root 6 0.0 0.0 0 0 ? D 02:31 0:01 [rcu_kthread] > root 508 0.0 0.3 3740 472 ttyAMA0 S+ 03:00 0:00 grep rcu > ~ # cat /proc/6/wchan > rcu_kthread > ~ # INFO: task rcu_kthread:6 blocked for more than 120 seconds. > "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. > rcu_kthread D c02c6684 0 6 2 0x00000000 > Backtrace: > [] (schedule+0x0/0x354) from [] (rcu_kthread+0x78/0xf4) > [] (rcu_kthread+0x0/0xf4) from [] (kthread+0x88/0x90) > [] (kthread+0x0/0x90) from [] (do_exit+0x0/0x5f8) > r7:00000013 r6:c004d12c r5:c0063324 r4:c181df28 > no locks held by rcu_kthread/6. Does the following patch help? Thanx, Paul ------------------------------------------------------------------------ commit 70ce43253a4465211a9c51e33d56a417c759a718 Author: Paul E. McKenney Date: Wed Jan 12 14:18:11 2011 -0800 rcu: avoid pointless blocked-task warnings If the RCU callback-processing kthread has nothing to do, it parks in a wait_event(). If RCU remains idle for more than two minutes, the kernel complains about this. This commit changes from wait_event() to wait_event_interruptible() to prevent the kernel from complaining just because RCU is idle. Reported-by: Russell King Signed-off-by: Paul E. McKenney diff --git a/kernel/rcutiny.c b/kernel/rcutiny.c index 0344937..0c343b9 100644 --- a/kernel/rcutiny.c +++ b/kernel/rcutiny.c @@ -189,7 +189,8 @@ static int rcu_kthread(void *arg) unsigned long flags; for (;;) { - wait_event(rcu_kthread_wq, have_rcu_kthread_work != 0); + wait_event_interruptible(rcu_kthread_wq, + have_rcu_kthread_work != 0); morework = rcu_boost(); local_irq_save(flags); work = have_rcu_kthread_work;