From: elder@linaro.org (Alex Elder)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v4 1/5] devicetree: bindings: document Broadcom CPU enable method
Date: Wed, 28 May 2014 08:58:13 -0500 [thread overview]
Message-ID: <5385EB75.4090202@linaro.org> (raw)
In-Reply-To: <20140528133428.GB29219@e102568-lin.cambridge.arm.com>
On 05/28/2014 08:34 AM, Lorenzo Pieralisi wrote:
> On Wed, May 28, 2014 at 01:22:06PM +0100, Alex Elder wrote:
>> On 05/28/2014 05:36 AM, Lorenzo Pieralisi wrote:
>>> On Wed, May 28, 2014 at 04:30:47AM +0100, Alex Elder wrote:
>>>> On 05/27/2014 06:49 AM, Lorenzo Pieralisi wrote:
>>>>> On Tue, May 20, 2014 at 06:43:46PM +0100, Alex Elder wrote:
>>>>>> Broadcom mobile SoCs use a ROM-implemented holding pen for
>>>>>> controlled boot of secondary cores. A special register is
>>>>>> used to communicate to the ROM that a secondary core should
>>>>>> start executing kernel code. This enable method is currently
>>>>>> used for members of the bcm281xx and bcm21664 SoC families.
>>>>>>
>>>>>> The use of an enable method also allows the SMP operation vector to
>>>>>> be assigned as a result of device tree content for these SoCs.
>>>>>>
>>>>>> Signed-off-by: Alex Elder <elder@linaro.org>
>>>>>
>>>>> This is getting out of control, it is absolutely ghastly. I wonder how
>>>>> I can manage to keep cpus.txt updated if anyone with a boot method
>>>>> du jour adds into cpus.txt, and honestly in this specific case it is even
>>>>> hard to understand why.
>>>>
>>>> OK, in this message I'll focus on the particulars of this
>>>> proposed binding.
>>>>
>>>>> Can't it be done with bindings for the relative register address space
>>>>> (regmap ?) and platform code just calls the registers driver to set-up the
>>>>> jump address ? It is platform specific code anyway there is no way you
>>>>> can make this generic.
>>>>
>>>> I want to clarify what you're after here.
>>>>
>>>> My aim is to add SMP support for a class of Broadcom SMP
>>>> machines. To do so, I'm told I need to use the technique
>>>> of assigning the SMP operations vector as a result of
>>>> identifying an enable method in the DT.
>>>>
>>>> For 32-bit ARM, there are no generic "enable-method" values.
>>>> (I did attempt to create one for "spin-table" but that was
>>>> rejected by Russell King.) For the machines I'm trying to
>>>> enable, secondary CPUS start out spinning in a ROM-based
>>>> holding pen, and there is no need for a kernel-based one.
>>>>
>>>> However, like a spin-table/holding pen enable method, a
>>>> memory location is required for coordination between the
>>>> boot CPU running kernel code and secondary CPUs running ROM
>>>> code. My proposal specifies it using a special numeric
>>>> property value named "secondary-boot-reg" in the "cpus"
>>>> node in the DT.
>>>>
>>>> And as I understand it, the issue you have relates to how
>>>> this memory location is specified.
>>>
>>> The issue I have relates to cluttering cpus.txt with all
>>> sorts of platform specific SMP boot hacks.
>>
>> OK, as I mentioned in my other message, I totally
>> agree with you here. It's a total (and building)
>> mess. I discussed this with Mark Rutland at ELC
>> last month and suggested splitting that stuff out
>> of "cpus.txt", which I have now proposed with a
>> patch.
>> https://lkml.org/lkml/2014/5/8/545
>
> I think this makes sense, I will review that patchset, and with this
> approach agreed I am ok with adding a platform specific boot method,
> since it is split up "nicely", do not bother adding a specific driver
> to poke a register (it will be fun to see the number of files we have
> to add to /cpu-enable-method though, big fun).
Great!
I used the existing documentation and the code as a guide in
crafting the text of those descriptions. Some of them I had
to speculate though--especially for ARM64 (for which there is
documentation but nothing in the tree that uses it). So it
needs some informed feedback.
> I still think that it is high time we started pushing back on these
> platform hacks and move towards a common interface like PSCI to boot
> (and suspend) ARM processors, there is no reason whatsoever why this
> can't be done on the platforms you are trying to get merged unless I am
> missing something.
We have no need for anything other than SMP startup at this point
on this platform. If the framework were there for me to use I
would have used it.
Thanks again for working through this with me.
-Alex
> Lorenzo
>
WARNING: multiple messages have this Message-ID (diff)
From: Alex Elder <elder-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
To: Lorenzo Pieralisi <lorenzo.pieralisi-5wv7dgnIgG8@public.gmane.org>
Cc: "mporter-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org"
<mporter-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
"bcm-xK7y4jjYLqYh9ZMKESR00Q@public.gmane.org"
<bcm-xK7y4jjYLqYh9ZMKESR00Q@public.gmane.org>,
"linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org"
<linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org>,
"devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
"arnd-r2nGTMty4D4@public.gmane.org"
<arnd-r2nGTMty4D4@public.gmane.org>,
"sboyd-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org"
<sboyd-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>,
"bcm-kernel-feedback-list-dY08KVG/lbpWk0Htik3J/w@public.gmane.org"
<bcm-kernel-feedback-list-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>,
"linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org"
<linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org>,
"linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
"linux-doc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<linux-doc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
"galak-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org"
<galak-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>,
"ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg@public.gmane.org"
<ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg@public.gmane.org>,
"jason-NLaQJdtUoK4Be96aLqz0jA@public.gmane.org"
<jason-NLaQJdtUoK4Be96aLqz0jA@public.gmane.org>,
Mark Rutland <Mark.Rutland-5wv7dgnIgG8@public.gmane.org>,
Pawel Moll <Pawel.Moll-5wv7dgnIgG8@public.gmane.org>,
"rdunlap-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org"
<rdunlap-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>,
"rjui-dY08KVG/lbpWk0Htik3J/w@public.gmane.org"
<rjui-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>r
Subject: Re: [PATCH v4 1/5] devicetree: bindings: document Broadcom CPU enable method
Date: Wed, 28 May 2014 08:58:13 -0500 [thread overview]
Message-ID: <5385EB75.4090202@linaro.org> (raw)
In-Reply-To: <20140528133428.GB29219-7AyDDHkRsp3ZROr8t4l/smS4ubULX0JqMm0uRHvK7Nw@public.gmane.org>
On 05/28/2014 08:34 AM, Lorenzo Pieralisi wrote:
> On Wed, May 28, 2014 at 01:22:06PM +0100, Alex Elder wrote:
>> On 05/28/2014 05:36 AM, Lorenzo Pieralisi wrote:
>>> On Wed, May 28, 2014 at 04:30:47AM +0100, Alex Elder wrote:
>>>> On 05/27/2014 06:49 AM, Lorenzo Pieralisi wrote:
>>>>> On Tue, May 20, 2014 at 06:43:46PM +0100, Alex Elder wrote:
>>>>>> Broadcom mobile SoCs use a ROM-implemented holding pen for
>>>>>> controlled boot of secondary cores. A special register is
>>>>>> used to communicate to the ROM that a secondary core should
>>>>>> start executing kernel code. This enable method is currently
>>>>>> used for members of the bcm281xx and bcm21664 SoC families.
>>>>>>
>>>>>> The use of an enable method also allows the SMP operation vector to
>>>>>> be assigned as a result of device tree content for these SoCs.
>>>>>>
>>>>>> Signed-off-by: Alex Elder <elder-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
>>>>>
>>>>> This is getting out of control, it is absolutely ghastly. I wonder how
>>>>> I can manage to keep cpus.txt updated if anyone with a boot method
>>>>> du jour adds into cpus.txt, and honestly in this specific case it is even
>>>>> hard to understand why.
>>>>
>>>> OK, in this message I'll focus on the particulars of this
>>>> proposed binding.
>>>>
>>>>> Can't it be done with bindings for the relative register address space
>>>>> (regmap ?) and platform code just calls the registers driver to set-up the
>>>>> jump address ? It is platform specific code anyway there is no way you
>>>>> can make this generic.
>>>>
>>>> I want to clarify what you're after here.
>>>>
>>>> My aim is to add SMP support for a class of Broadcom SMP
>>>> machines. To do so, I'm told I need to use the technique
>>>> of assigning the SMP operations vector as a result of
>>>> identifying an enable method in the DT.
>>>>
>>>> For 32-bit ARM, there are no generic "enable-method" values.
>>>> (I did attempt to create one for "spin-table" but that was
>>>> rejected by Russell King.) For the machines I'm trying to
>>>> enable, secondary CPUS start out spinning in a ROM-based
>>>> holding pen, and there is no need for a kernel-based one.
>>>>
>>>> However, like a spin-table/holding pen enable method, a
>>>> memory location is required for coordination between the
>>>> boot CPU running kernel code and secondary CPUs running ROM
>>>> code. My proposal specifies it using a special numeric
>>>> property value named "secondary-boot-reg" in the "cpus"
>>>> node in the DT.
>>>>
>>>> And as I understand it, the issue you have relates to how
>>>> this memory location is specified.
>>>
>>> The issue I have relates to cluttering cpus.txt with all
>>> sorts of platform specific SMP boot hacks.
>>
>> OK, as I mentioned in my other message, I totally
>> agree with you here. It's a total (and building)
>> mess. I discussed this with Mark Rutland at ELC
>> last month and suggested splitting that stuff out
>> of "cpus.txt", which I have now proposed with a
>> patch.
>> https://lkml.org/lkml/2014/5/8/545
>
> I think this makes sense, I will review that patchset, and with this
> approach agreed I am ok with adding a platform specific boot method,
> since it is split up "nicely", do not bother adding a specific driver
> to poke a register (it will be fun to see the number of files we have
> to add to /cpu-enable-method though, big fun).
Great!
I used the existing documentation and the code as a guide in
crafting the text of those descriptions. Some of them I had
to speculate though--especially for ARM64 (for which there is
documentation but nothing in the tree that uses it). So it
needs some informed feedback.
> I still think that it is high time we started pushing back on these
> platform hacks and move towards a common interface like PSCI to boot
> (and suspend) ARM processors, there is no reason whatsoever why this
> can't be done on the platforms you are trying to get merged unless I am
> missing something.
We have no need for anything other than SMP startup at this point
on this platform. If the framework were there for me to use I
would have used it.
Thanks again for working through this with me.
-Alex
> Lorenzo
>
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
WARNING: multiple messages have this Message-ID (diff)
From: Alex Elder <elder@linaro.org>
To: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Cc: "mporter@linaro.org" <mporter@linaro.org>,
"bcm@fixthebug.org" <bcm@fixthebug.org>,
"linux@arm.linux.org.uk" <linux@arm.linux.org.uk>,
"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
"arnd@arndb.de" <arnd@arndb.de>,
"sboyd@codeaurora.org" <sboyd@codeaurora.org>,
"bcm-kernel-feedback-list@broadcom.com"
<bcm-kernel-feedback-list@broadcom.com>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-doc@vger.kernel.org" <linux-doc@vger.kernel.org>,
"galak@codeaurora.org" <galak@codeaurora.org>,
"ijc+devicetree@hellion.org.uk" <ijc+devicetree@hellion.org.uk>,
"jason@lakedaemon.net" <jason@lakedaemon.net>,
Mark Rutland <Mark.Rutland@arm.com>,
Pawel Moll <Pawel.Moll@arm.com>,
"rdunlap@infradead.org" <rdunlap@infradead.org>,
"rjui@broadcom.com" <rjui@broadcom.com>,
"robh+dt@kernel.org" <robh+dt@kernel.org>,
"rvaswani@codeaurora.org" <rvaswani@codeaurora.org>
Subject: Re: [PATCH v4 1/5] devicetree: bindings: document Broadcom CPU enable method
Date: Wed, 28 May 2014 08:58:13 -0500 [thread overview]
Message-ID: <5385EB75.4090202@linaro.org> (raw)
In-Reply-To: <20140528133428.GB29219@e102568-lin.cambridge.arm.com>
On 05/28/2014 08:34 AM, Lorenzo Pieralisi wrote:
> On Wed, May 28, 2014 at 01:22:06PM +0100, Alex Elder wrote:
>> On 05/28/2014 05:36 AM, Lorenzo Pieralisi wrote:
>>> On Wed, May 28, 2014 at 04:30:47AM +0100, Alex Elder wrote:
>>>> On 05/27/2014 06:49 AM, Lorenzo Pieralisi wrote:
>>>>> On Tue, May 20, 2014 at 06:43:46PM +0100, Alex Elder wrote:
>>>>>> Broadcom mobile SoCs use a ROM-implemented holding pen for
>>>>>> controlled boot of secondary cores. A special register is
>>>>>> used to communicate to the ROM that a secondary core should
>>>>>> start executing kernel code. This enable method is currently
>>>>>> used for members of the bcm281xx and bcm21664 SoC families.
>>>>>>
>>>>>> The use of an enable method also allows the SMP operation vector to
>>>>>> be assigned as a result of device tree content for these SoCs.
>>>>>>
>>>>>> Signed-off-by: Alex Elder <elder@linaro.org>
>>>>>
>>>>> This is getting out of control, it is absolutely ghastly. I wonder how
>>>>> I can manage to keep cpus.txt updated if anyone with a boot method
>>>>> du jour adds into cpus.txt, and honestly in this specific case it is even
>>>>> hard to understand why.
>>>>
>>>> OK, in this message I'll focus on the particulars of this
>>>> proposed binding.
>>>>
>>>>> Can't it be done with bindings for the relative register address space
>>>>> (regmap ?) and platform code just calls the registers driver to set-up the
>>>>> jump address ? It is platform specific code anyway there is no way you
>>>>> can make this generic.
>>>>
>>>> I want to clarify what you're after here.
>>>>
>>>> My aim is to add SMP support for a class of Broadcom SMP
>>>> machines. To do so, I'm told I need to use the technique
>>>> of assigning the SMP operations vector as a result of
>>>> identifying an enable method in the DT.
>>>>
>>>> For 32-bit ARM, there are no generic "enable-method" values.
>>>> (I did attempt to create one for "spin-table" but that was
>>>> rejected by Russell King.) For the machines I'm trying to
>>>> enable, secondary CPUS start out spinning in a ROM-based
>>>> holding pen, and there is no need for a kernel-based one.
>>>>
>>>> However, like a spin-table/holding pen enable method, a
>>>> memory location is required for coordination between the
>>>> boot CPU running kernel code and secondary CPUs running ROM
>>>> code. My proposal specifies it using a special numeric
>>>> property value named "secondary-boot-reg" in the "cpus"
>>>> node in the DT.
>>>>
>>>> And as I understand it, the issue you have relates to how
>>>> this memory location is specified.
>>>
>>> The issue I have relates to cluttering cpus.txt with all
>>> sorts of platform specific SMP boot hacks.
>>
>> OK, as I mentioned in my other message, I totally
>> agree with you here. It's a total (and building)
>> mess. I discussed this with Mark Rutland at ELC
>> last month and suggested splitting that stuff out
>> of "cpus.txt", which I have now proposed with a
>> patch.
>> https://lkml.org/lkml/2014/5/8/545
>
> I think this makes sense, I will review that patchset, and with this
> approach agreed I am ok with adding a platform specific boot method,
> since it is split up "nicely", do not bother adding a specific driver
> to poke a register (it will be fun to see the number of files we have
> to add to /cpu-enable-method though, big fun).
Great!
I used the existing documentation and the code as a guide in
crafting the text of those descriptions. Some of them I had
to speculate though--especially for ARM64 (for which there is
documentation but nothing in the tree that uses it). So it
needs some informed feedback.
> I still think that it is high time we started pushing back on these
> platform hacks and move towards a common interface like PSCI to boot
> (and suspend) ARM processors, there is no reason whatsoever why this
> can't be done on the platforms you are trying to get merged unless I am
> missing something.
We have no need for anything other than SMP startup at this point
on this platform. If the framework were there for me to use I
would have used it.
Thanks again for working through this with me.
-Alex
> Lorenzo
>
next prev parent reply other threads:[~2014-05-28 13:58 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-20 17:43 [PATCH v4 0/5] ARM: SMP: support Broadcom mobile SoCs Alex Elder
2014-05-20 17:43 ` Alex Elder
2014-05-20 17:43 ` [PATCH v4 1/5] devicetree: bindings: document Broadcom CPU enable method Alex Elder
2014-05-20 17:43 ` Alex Elder
2014-05-20 17:43 ` Alex Elder
2014-05-27 11:49 ` Lorenzo Pieralisi
2014-05-27 11:49 ` Lorenzo Pieralisi
2014-05-27 11:49 ` Lorenzo Pieralisi
2014-05-27 13:43 ` Alex Elder
2014-05-27 13:43 ` Alex Elder
2014-05-27 13:43 ` Alex Elder
2014-05-28 3:30 ` Alex Elder
2014-05-28 3:30 ` Alex Elder
2014-05-28 3:30 ` Alex Elder
2014-05-28 10:36 ` Lorenzo Pieralisi
2014-05-28 10:36 ` Lorenzo Pieralisi
2014-05-28 10:36 ` Lorenzo Pieralisi
2014-05-28 12:22 ` Alex Elder
2014-05-28 12:22 ` Alex Elder
2014-05-28 12:22 ` Alex Elder
2014-05-28 13:34 ` Lorenzo Pieralisi
2014-05-28 13:34 ` Lorenzo Pieralisi
2014-05-28 13:34 ` Lorenzo Pieralisi
2014-05-28 13:58 ` Alex Elder [this message]
2014-05-28 13:58 ` Alex Elder
2014-05-28 13:58 ` Alex Elder
2014-05-20 17:43 ` [PATCH v4 2/5] ARM: add SMP support for Broadcom mobile SoCs Alex Elder
2014-05-20 17:43 ` Alex Elder
2014-05-20 17:43 ` Alex Elder
2014-05-20 17:43 ` [PATCH v4 3/5] ARM: configs: enable SMP in bcm_defconfig Alex Elder
2014-05-20 17:43 ` Alex Elder
2014-05-20 17:43 ` [PATCH v4 4/5] ARM: dts: enable SMP support for bcm28155 Alex Elder
2014-05-20 17:43 ` Alex Elder
2014-05-20 17:43 ` [PATCH v4 5/5] ARM: dts: enable SMP support for bcm21664 Alex Elder
2014-05-20 17:43 ` Alex Elder
-- strict thread matches above, loose matches on Subject: below --
2014-05-20 17:40 [PATCH v4 0/5] ARM: SMP: support Broadcom mobile SoCs Alex Elder
2014-05-20 17:40 ` [PATCH v4 1/5] devicetree: bindings: document Broadcom CPU enable method Alex Elder
2014-05-20 17:40 ` Alex Elder
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=5385EB75.4090202@linaro.org \
--to=elder@linaro.org \
--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.