From: catalin.marinas@arm.com (Catalin Marinas)
To: linux-arm-kernel@lists.infradead.org
Subject: maxcpus behavior in arm64
Date: Wed, 14 May 2014 13:57:36 +0100 [thread overview]
Message-ID: <20140514125736.GB19866@localhost> (raw)
In-Reply-To: <5372B469.6020109@codeaurora.org>
On Wed, May 14, 2014 at 01:10:17AM +0100, Rohit Vaswani wrote:
> On 5/13/2014 2:02 PM, Catalin Marinas wrote:
> > On Tue, May 13, 2014 at 07:56:01PM +0100, Rohit Vaswani wrote:
> >> I notice that the maxcpus behavior is different in arm64 than from how
> >> arm uses it.
> >> in arm64/kernel/smp.c - in smp_prepare_cpus, maxcpus is used to limit
> >> the cpu_present_mask.
> >> However in arm/kernel/smp.c - maxcpus is not used as a decision maker to
> >> set the cpu_preset_mask.
> >>
> >> Is this behavior expected and intentionally different in arm and arm64 ?
> >> This also means that in arm64 (unlike arm)- maxcpus cannot be used to
> >> boot a subset of total cpus with the
> >> option of getting the secondary cores online at a later point from
> >> userspace using hotplug.
> >> It seems like maxcpus is being treated like nr_cpus in arm64 ?
> > I don't think there is any particular reason, only that the code has
> > been derived from arm long time ago and it probably inherited the
> > original behaviour. In the meantime, arm got commit 7fa22bd5460 (ARM:
> > 6993/1: platsmp: Allow secondary cpu hotplug with maxcpus=1).
> >
> > I'm happy to change the behaviour for arm64. Basically we still call
> > cpu_prepare() for max_cpus but we initialise the present mask with
> > init_cpu_present(cpu_possible_mask) as we don't have physical hotplug
> > for the time being.
>
> Thanks. Initializing the present mask with possible mask is good.
> But, how would one call cpu_prepare on the other CPUS then ?
> Currently cpu_prepare is called only from smp_prepare_cpus. I was going
> to suggest calling cpu_prepare for each possible CPU.
> We could have the for_each_possible_cpu loop in smp_prepare_cpus not
> depend on max_cpus and call cpu_prepare for the possible cpus.
For PSCI this would be fine since cpu_prepare() does not bring the CPU
into the kernel. With spin-table, cpu_prepare brings the CPU up to the
holding_pen loop. But I don't see a reason why we couldn't do all steps
in smp_spin_table_cpu_boot() and simply ignore prepare (and we could get
rid of cpu_prepare altogether).
> I didn't really understand the part of physical hotplug - we have
> config_hotplug enabled
What I meant is that possible != present in case of physical hotplug.
--
Catalin
next prev parent reply other threads:[~2014-05-14 12:57 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-13 18:56 maxcpus behavior in arm64 Rohit Vaswani
2014-05-13 21:02 ` Catalin Marinas
2014-05-14 0:10 ` Rohit Vaswani
2014-05-14 12:57 ` Catalin Marinas [this message]
2014-05-14 17:49 ` Rohit Vaswani
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140514125736.GB19866@localhost \
--to=catalin.marinas@arm.com \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.