Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1761915AbZLPJHd (ORCPT ); Wed, 16 Dec 2009 04:07:33 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1761886AbZLPJHX (ORCPT ); Wed, 16 Dec 2009 04:07:23 -0500 Received: from mail-pz0-f188.google.com ([209.85.222.188]:54178 "EHLO mail-pz0-f188.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1760538AbZLPJHN convert rfc822-to-8bit (ORCPT ); Wed, 16 Dec 2009 04:07:13 -0500 DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=OCxPitGtRbbg19ItuYiMPbV+0kZs5sELXSy5VxawpD00WBsA3Ifa4XY2evHrLLH35W SS847NJaxPuZ2xjuhw0iwPjpYKbN14eEYxG2xUIf3abzuuajk5zPM6VhUoEblDsBG0vJ 1xDETM1Kjx4MLA+owx2S04AZgmVMhYhsnZLUk= MIME-Version: 1.0 In-Reply-To: <4B289955.2010705@in.ibm.com> References: <4B2224C7.1020908@in.ibm.com> <7b6bb4a50912152225p4f5dde13re83c439407c16eaf@mail.gmail.com> <4B288131.2050306@in.ibm.com> <7b6bb4a50912152245v61a7f1ebgb41f4857134f3476@mail.gmail.com> <4B288413.2070704@in.ibm.com> <1260947890.8023.1281.camel@laptop> <7b6bb4a50912152357m75aea5dfl6fe063d716517baf@mail.gmail.com> <4B289955.2010705@in.ibm.com> Date: Wed, 16 Dec 2009 17:07:11 +0800 Message-ID: <7b6bb4a50912160107j1c8348b6p235844193e3ee977@mail.gmail.com> Subject: Re: [Next] CPU Hotplug test failures on powerpc From: Xiaotian Feng To: Sachin Sant Cc: Peter Zijlstra , "Linux/PPC Development" , linux-kernel , Ingo Molnar , linux-next@vger.kernel.org, Benjamin Herrenschmidt Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8BIT Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2955 Lines: 111 On Wed, Dec 16, 2009 at 4:24 PM, Sachin Sant wrote: > Xiaotian Feng wrote: >> >> Could follow be possible?  We know there's cpu 0 and cpu 1, >> >> offline cpu1 > done >> offline cpu0 > false >> >> consider this in cpu_down code, >> >> >> int __ref cpu_down(unsigned int cpu) >> { >> >>        set_cpu_active(cpu, false); // here, we set cpu 0 to inactive >> >>        synchronize_sched(); >> >>        err = _cpu_down(cpu, 0); >> out: >> >> } >> >> Then in _cpu_down code: >> >> static int __ref _cpu_down(unsigned int cpu, int tasks_frozen) >> { >> >>        if (num_online_cpus() == 1)        // if we're trying to >> offline cpu0, num_online_cpus will be 1 >>                return -EBUSY;                    // after return back >> to cpu_down, we didn't change cpu 0 back to active >> >>        if (!cpu_online(cpu)) >>                return -EINVAL; >> >>        if (!alloc_cpumask_var(&old_allowed, GFP_KERNEL)) >>                return -ENOMEM; >> >> } >> >> Then cpu 0 is not active, but online, then we try to offline cpu1, ....... >> This can not be exposed because x86 does not have >> /sys/devices/system/cpu0/online. >> I guess following patch fixes this bug. >> > > Just tested this one on the POWER box and the test passed. > I did not observe the hang. Thanks for confirm, I will send formatted patch to upstream then:-) > > Thanks > -Sachin > >> --- >> diff --git a/kernel/cpu.c b/kernel/cpu.c >> index 291ac58..21ddace 100644 >> --- a/kernel/cpu.c >> +++ b/kernel/cpu.c >> @@ -199,14 +199,18 @@ static int __ref _cpu_down(unsigned int cpu, int >> tasks_frozen) >>                .hcpu = hcpu, >>        }; >> >> -       if (num_online_cpus() == 1) >> +       if (num_online_cpus() == 1) { >> +               set_cpu_active(cpu, true); >>                return -EBUSY; >> +       } >> >>        if (!cpu_online(cpu)) >>                return -EINVAL; >> >> -       if (!alloc_cpumask_var(&old_allowed, GFP_KERNEL)) >> +       if (!alloc_cpumask_var(&old_allowed, GFP_KERNEL)) { >> +               set_cpu_active(cpu, true); >>                return -ENOMEM; >> +       } >> >>        cpu_hotplug_begin(); >>        err = __raw_notifier_call_chain(&cpu_chain, CPU_DOWN_PREPARE | mod, >> >> >> >>> >>> Unless of course, I messed up, which appears to be rather likely given >>> these problems ;-) >>> >>> >>> >> >> > > > -- > > --------------------------------- > Sachin Sant > IBM Linux Technology Center > India Systems and Technology Labs > Bangalore, India > --------------------------------- > > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/