From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754674AbcEBRTE (ORCPT ); Mon, 2 May 2016 13:19:04 -0400 Received: from relay2-d.mail.gandi.net ([217.70.183.194]:44081 "EHLO relay2-d.mail.gandi.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753818AbcEBRS4 (ORCPT ); Mon, 2 May 2016 13:18:56 -0400 X-Originating-IP: 50.39.163.18 Date: Mon, 2 May 2016 10:18:49 -0700 From: Josh Triplett To: Boqun Feng Cc: linux-kernel@vger.kernel.org, "Paul E. McKenney" Subject: Re: [RFC rcu/next] torture: Stop onoff task if there is only one cpu Message-ID: <20160502171848.GB4512@x> References: <1462156200-4811-1-git-send-email-boqun.feng@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1462156200-4811-1-git-send-email-boqun.feng@gmail.com> User-Agent: Mutt/1.6.0 (2016-04-01) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, May 02, 2016 at 10:30:00AM +0800, Boqun Feng wrote: > If the whole system has only one cpu, that cpu won't be able to be > offlined, so there is no need onoff task is stil running. > > Signed-off-by: Boqun Feng > --- > > I hit something like the following while I was running rcutorture > in a guest with only one vCPU: > > [ 31.197457] rcu-torture:torture_onoff task: offlining 0 > [ 31.197508] rcu-torture:torture_onoff task: offline 0 failed: errno -16 > > I know this is an expected behavior, but think we could just stop > the onoff task if there is only one cpu. I find it a little bit unfortunate that this kicks off a thread just to immediately exit that thread, rather than never starting it in the first place. However, it also seems like the most convenient solution here, and I don't see much point in going out of the way to optimize this test for uniprocessor systems. Reviewed-by: Josh Triplett > kernel/torture.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/kernel/torture.c b/kernel/torture.c > index fb39a06bbef5..a85b7d61d9dd 100644 > --- a/kernel/torture.c > +++ b/kernel/torture.c > @@ -194,6 +194,12 @@ torture_onoff(void *arg) > for_each_online_cpu(cpu) > maxcpu = cpu; > WARN_ON(maxcpu < 0); > + > + if (maxcpu == 0) { > + VERBOSE_TOROUT_STRING("only one cpu is found, onoff is impossible"); > + goto stop; > + } > + > if (onoff_holdoff > 0) { > VERBOSE_TOROUT_STRING("torture_onoff begin holdoff"); > schedule_timeout_interruptible(onoff_holdoff); > @@ -209,6 +215,8 @@ torture_onoff(void *arg) > &sum_online, &min_online, &max_online); > schedule_timeout_interruptible(onoff_interval); > } > + > +stop: > torture_kthread_stopping("torture_onoff"); > return 0; > } > -- > 2.8.0 >