From mboxrd@z Thu Jan 1 00:00:00 1970 From: james.morse@arm.com (James Morse) Date: Thu, 07 Apr 2016 10:18:54 +0100 Subject: [PATCH 5/5] arm64: Fix behavior of maxcpus=N In-Reply-To: <1459941854-5190-6-git-send-email-suzuki.poulose@arm.com> References: <1459941854-5190-1-git-send-email-suzuki.poulose@arm.com> <1459941854-5190-6-git-send-email-suzuki.poulose@arm.com> Message-ID: <570625FE.4040001@arm.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org Hi Suzuki, On 06/04/16 12:24, Suzuki K Poulose wrote: > maxcpu=n sets the number of CPUs activated at boot time to a max of n, > but allowing the remaining CPUs to be brought up later if the user > decides to do so. However, on arm64 due to various reasons, we disallowed > hotplugging CPUs beyond n, by marking them not present. Now that > we have checks in place to make sure the hotplugged CPUs have compatible > features with system and requires no new errata, relax the restriction. > diff --git a/arch/arm64/kernel/smp.c b/arch/arm64/kernel/smp.c > index b2d5f4e..0988ccc 100644 > --- a/arch/arm64/kernel/smp.c > +++ b/arch/arm64/kernel/smp.c > @@ -659,21 +659,12 @@ void __init smp_prepare_cpus(unsigned int max_cpus) > if (max_cpus > ncores) > max_cpus = ncores; This "if (max_cpus > ncores)" is the only user of max_cpus left in this function, and 'ncores' isn't used for anything else. Dead code? > - /* Don't bother if we're effectively UP */ > - if (max_cpus <= 1) > - return; > - > /* > * Initialise the present map (which describes the set of CPUs > * actually populated at the present time) and release the > * secondaries from the bootloader. > - * > - * Make sure we online at most (max_cpus - 1) additional CPUs. > */ > - max_cpus--; > for_each_possible_cpu(cpu) { > - if (max_cpus == 0) > - break; > > if (cpu == smp_processor_id()) > continue; > @@ -686,7 +677,6 @@ void __init smp_prepare_cpus(unsigned int max_cpus) > continue; > > set_cpu_present(cpu, true); > - max_cpus--; > } > } > > Thanks, James From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755438AbcDGJUc (ORCPT ); Thu, 7 Apr 2016 05:20:32 -0400 Received: from foss.arm.com ([217.140.101.70]:60992 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753335AbcDGJUa (ORCPT ); Thu, 7 Apr 2016 05:20:30 -0400 Message-ID: <570625FE.4040001@arm.com> Date: Thu, 07 Apr 2016 10:18:54 +0100 From: James Morse User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Icedove/31.6.0 MIME-Version: 1.0 To: Suzuki K Poulose CC: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, marc.zyngier@arm.com, will.deacon@arm.com, catalin.marinas@arm.com, mark.rutland@arm.com, Vadim.Lomovtsev@caviumnetworks.com Subject: Re: [PATCH 5/5] arm64: Fix behavior of maxcpus=N References: <1459941854-5190-1-git-send-email-suzuki.poulose@arm.com> <1459941854-5190-6-git-send-email-suzuki.poulose@arm.com> In-Reply-To: <1459941854-5190-6-git-send-email-suzuki.poulose@arm.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Suzuki, On 06/04/16 12:24, Suzuki K Poulose wrote: > maxcpu=n sets the number of CPUs activated at boot time to a max of n, > but allowing the remaining CPUs to be brought up later if the user > decides to do so. However, on arm64 due to various reasons, we disallowed > hotplugging CPUs beyond n, by marking them not present. Now that > we have checks in place to make sure the hotplugged CPUs have compatible > features with system and requires no new errata, relax the restriction. > diff --git a/arch/arm64/kernel/smp.c b/arch/arm64/kernel/smp.c > index b2d5f4e..0988ccc 100644 > --- a/arch/arm64/kernel/smp.c > +++ b/arch/arm64/kernel/smp.c > @@ -659,21 +659,12 @@ void __init smp_prepare_cpus(unsigned int max_cpus) > if (max_cpus > ncores) > max_cpus = ncores; This "if (max_cpus > ncores)" is the only user of max_cpus left in this function, and 'ncores' isn't used for anything else. Dead code? > - /* Don't bother if we're effectively UP */ > - if (max_cpus <= 1) > - return; > - > /* > * Initialise the present map (which describes the set of CPUs > * actually populated at the present time) and release the > * secondaries from the bootloader. > - * > - * Make sure we online at most (max_cpus - 1) additional CPUs. > */ > - max_cpus--; > for_each_possible_cpu(cpu) { > - if (max_cpus == 0) > - break; > > if (cpu == smp_processor_id()) > continue; > @@ -686,7 +677,6 @@ void __init smp_prepare_cpus(unsigned int max_cpus) > continue; > > set_cpu_present(cpu, true); > - max_cpus--; > } > } > > Thanks, James