devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Antoine Ténart" <antoine.tenart@free-electrons.com>
To: Andrew Lunn <andrew@lunn.ch>
Cc: "Antoine Ténart" <antoine.tenart@free-electrons.com>,
	sebastian.hesselbarth@gmail.com,
	thomas.petazzoni@free-electrons.com, zmxu@marvell.com,
	devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
	alexandre.belloni@free-electrons.com, jszhang@marvell.com,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 1/5] ARM: berlin: add SMP support
Date: Mon, 2 Jun 2014 12:00:48 +0200	[thread overview]
Message-ID: <20140602100048.GA12162@kwain> (raw)
In-Reply-To: <20140602094715.GG28090@lunn.ch>

Hi Andrew,

On Mon, Jun 02, 2014 at 11:47:15AM +0200, Andrew Lunn wrote:
> On Mon, Jun 02, 2014 at 11:21:02AM +0200, Antoine Ténart wrote:
> > +
> > +static inline void berlin_reset_cpu(unsigned int cpu)
> > +{
> > +	u32 val;
> > +
> > +	val = readl(cpu_ctrl + CPU_RESET);
> > +	val |= BIT(cpu_logical_map(cpu));
> > +	writel(val, cpu_ctrl + CPU_RESET);
> > +}
> 
> Is this performing a reset on the CPU, or is it taking it out of reset?
> 
> If you are going to implement CPU hotplug at some point, you are going
> to want to be able to put the CPU into reset, i.e. power it off, and
> take it out of reset, i.e. power it on and getting it running. So it
> might help if we get these function names clear now.

It is performing a reset on the CPU. berlin_perform_reset_cpu() then?

> > +
> > +static void __init berlin_smp_prepare_cpus(unsigned int max_cpus)
> > +{
> > +	struct device_node *np;
> > +	void __iomem *scu_base;
> > +	void __iomem *vectors_base;
> > +
> > +	np = of_find_compatible_node(NULL, NULL, "arm,cortex-a9-scu");
> > +	scu_base = of_iomap(np, 0);
> > +	of_node_put(np);
> > +	if (!scu_base)
> > +		return;
> > +
> > +	np = of_find_compatible_node(NULL, NULL, "marvell,berlin-cpu-ctrl");
> > +	cpu_ctrl = of_iomap(np, 0);
> > +	of_node_put(np);
> > +	if (!cpu_ctrl)
> > +		goto unmap_scu;
> > +
> > +	vectors_base = ioremap(CONFIG_VECTORS_BASE, SZ_32K);
> > +	if (!vectors_base)
> > +		goto unmap_scu;
> > +
> > +	scu_enable(scu_base);
> > +	flush_cache_all();
> > +
> > +	/*
> > +	 * Write the first instruction the CPU will execute after being reseted
> > +	 * in the reset exception register.
> > +	 */
> > +	writel(boot_inst, vectors_base + RESET_VECT);
> > +
> > +	/*
> > +	 * Write the secondary startup address into the SW reset address
> > +	 * register. This is used by boot_inst.
> 
> Maybe it would be better to call this the reset address vector instead
> of address register. It is in the vector space after all.

I don't have a strong opinion on this. I can update the 'reset exception
register' as well then.

Antoine

-- 
Antoine Ténart, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

  reply	other threads:[~2014-06-02 10:00 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-06-02  9:21 [PATCH 0/5] ARM: Berlin: SMP support Antoine Ténart
2014-06-02  9:21 ` [PATCH 1/5] ARM: berlin: add " Antoine Ténart
2014-06-02  9:29   ` Russell King - ARM Linux
     [not found]     ` <20140602092913.GA933-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org>
2014-06-02  9:35       ` Antoine Ténart
     [not found]   ` <1401700866-24804-2-git-send-email-antoine.tenart-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
2014-06-02  9:47     ` Andrew Lunn
2014-06-02 10:00       ` Antoine Ténart [this message]
2014-06-02 10:03         ` Andrew Lunn
     [not found]           ` <20140602100332.GH28090-g2DYL2Zd6BY@public.gmane.org>
2014-06-02 10:27             ` Antoine Ténart
2014-06-03  6:19               ` Jisheng Zhang
2014-06-03  7:50                 ` Andrew Lunn
     [not found]                   ` <20140603075011.GA22742-g2DYL2Zd6BY@public.gmane.org>
2014-06-03  8:02                     ` Jisheng Zhang
2014-06-03  6:31     ` Jisheng Zhang
2014-06-03  7:10       ` Antoine Ténart
2014-06-03  7:18         ` Jisheng Zhang
2014-06-02  9:21 ` [PATCH 2/5] Documentation: bindings: document the Marvell Berlin enable-method Antoine Ténart
     [not found]   ` <1401700866-24804-3-git-send-email-antoine.tenart-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
2014-06-02 10:44     ` Mark Rutland
2014-06-02  9:21 ` [PATCH 3/5] Documentation: bindings: add the Berlin CPU control doc Antoine Ténart
2014-06-02  9:21 ` [PATCH 4/5] ARM: dts: berlin: add SMP related nodes and properties for BG2 Antoine Ténart
2014-06-02  9:21 ` [PATCH 5/5] ARM: dts: berlin: add SMP related nodes and properties for BG2Q Antoine Ténart
2014-06-02  9:35 ` [PATCH 0/5] ARM: Berlin: SMP support Andrew Lunn
     [not found]   ` <20140602093532.GF28090-g2DYL2Zd6BY@public.gmane.org>
2014-06-02  9:44     ` Antoine Ténart

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=20140602100048.GA12162@kwain \
    --to=antoine.tenart@free-electrons.com \
    --cc=alexandre.belloni@free-electrons.com \
    --cc=andrew@lunn.ch \
    --cc=devicetree@vger.kernel.org \
    --cc=jszhang@marvell.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=sebastian.hesselbarth@gmail.com \
    --cc=thomas.petazzoni@free-electrons.com \
    --cc=zmxu@marvell.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).