All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stephen Warren <swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
To: Mark Rutland <mark.rutland-5wv7dgnIgG8@public.gmane.org>
Cc: Hiroshi Doyu <hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>,
	"linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	"linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org"
	<linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org>
Subject: Re: [v2 3/9] ARM: tegra: # of CPU cores detection w/ & w/o HAVE_ARM_SCU
Date: Tue, 08 Jan 2013 12:32:32 -0700	[thread overview]
Message-ID: <50EC7450.4070806@wwwdotorg.org> (raw)
In-Reply-To: <20130108162056.GA28618-NuALmloUBlrZROr8t4l/smS4ubULX0JqMm0uRHvK7Nw@public.gmane.org>

On 01/08/2013 09:21 AM, Mark Rutland wrote:
> On Tue, Jan 08, 2013 at 02:53:42PM +0000, Hiroshi Doyu wrote:
>> Mark Rutland <mark.rutland-5wv7dgnIgG8@public.gmane.org> wrote @ Tue, 8 Jan 2013 15:28:28 +0100:
>>> On Tue, Jan 08, 2013 at 12:47:37PM +0000, Hiroshi Doyu wrote:
>>>> The method to detect the number of CPU cores on Cortex-A9 MPCore and
>>>> Cortex-A15 MPCore is different. On Cortex-A9 MPCore we can get this
>>>> information from the Snoop Control Unit(SCU). On Cortex-A15 MPCore we
>>>> have to read it from the system coprocessor(CP15), because the SCU on
>>>> Cortex-A15 MPCore does not have software readable registers. This
>>>> patch selects the correct method at runtime based on the CPU ID.
...
>>>>  static void __init tegra_smp_init_cpus(void)
>>>>  {
>>>> -	unsigned int i, ncores = scu_get_core_count(scu_base);
>>>> +	unsigned int i, cpu_id, ncores;
>>>> +	u32 l2ctlr;
>>>> +	phys_addr_t pa;
>>>> +
>>>> +	cpu_id = read_cpuid(CPUID_ID) & CPU_MASK;
>>>> +	switch (cpu_id) {
>>>> +	case CPU_CORTEX_A15:
>>>> +		asm("mrc p15, 1, %0, c9, c0, 2\n" : "=r" (l2ctlr));
>>>> +		ncores = ((l2ctlr >> 24) & 3) + 1;
>>>> +		break;
>>>
>>> [...]
>>>
>>> As mentioned last time [1], you should get this information from the dt
>>> instead.
>>
>> Most of platsmp.c:.smp_init_cpus() implementations seem just to
>> overwrite # of cores by SCU/MRC detection. Is there any implementation
>> to use the DT's # and skip SCU/MRC detection in .smp_init_cpus()?
> 
> As far as I can see, there's no other platform which just relies on
> arm_dt_init_cpu_maps. Until recently, it didn't exist, so that makes some
> sense. As far as I can see, for the Tegra 114 you only need your smp_init_cpus
> to call set_smp_cross_call(gic_raise_softirq). Everything else you do seems to
> be handled by arm_dt_init_cpus.
> 
> I think the best option would be to have a separate smp_ops for your dt
> platforms where we know cpu nodes are populated (e.g. Tegra 114), where
> smp_init_cpus is different to that for non-dt platforms. That way non dt
> platforms can keep the SCU hack for now, and won't be broken, and the dt
> platforms are far removed from the SCU hack and just use common infrastructure.

Tegra doesn't have any non-DT support now.

If we're going to make Tegra114 read the CPU information from DT, then
I'd rather just switch over all Tegra platforms to requiring CPU nodes
in the DT. We have few enough SoC variants that it should be easy to
switch everything to DT before adding Tegra114 support without causing
any problems.

But that all said, I'm not convinced it's a good idea to force the
information to be present in DT when it's just duplicating stuff that
can be runtime-probed from the HW...

WARNING: multiple messages have this Message-ID (diff)
From: swarren@wwwdotorg.org (Stephen Warren)
To: linux-arm-kernel@lists.infradead.org
Subject: [v2 3/9] ARM: tegra: # of CPU cores detection w/ & w/o HAVE_ARM_SCU
Date: Tue, 08 Jan 2013 12:32:32 -0700	[thread overview]
Message-ID: <50EC7450.4070806@wwwdotorg.org> (raw)
In-Reply-To: <20130108162056.GA28618@e106331-lin.cambridge.arm.com>

On 01/08/2013 09:21 AM, Mark Rutland wrote:
> On Tue, Jan 08, 2013 at 02:53:42PM +0000, Hiroshi Doyu wrote:
>> Mark Rutland <mark.rutland@arm.com> wrote @ Tue, 8 Jan 2013 15:28:28 +0100:
>>> On Tue, Jan 08, 2013 at 12:47:37PM +0000, Hiroshi Doyu wrote:
>>>> The method to detect the number of CPU cores on Cortex-A9 MPCore and
>>>> Cortex-A15 MPCore is different. On Cortex-A9 MPCore we can get this
>>>> information from the Snoop Control Unit(SCU). On Cortex-A15 MPCore we
>>>> have to read it from the system coprocessor(CP15), because the SCU on
>>>> Cortex-A15 MPCore does not have software readable registers. This
>>>> patch selects the correct method at runtime based on the CPU ID.
...
>>>>  static void __init tegra_smp_init_cpus(void)
>>>>  {
>>>> -	unsigned int i, ncores = scu_get_core_count(scu_base);
>>>> +	unsigned int i, cpu_id, ncores;
>>>> +	u32 l2ctlr;
>>>> +	phys_addr_t pa;
>>>> +
>>>> +	cpu_id = read_cpuid(CPUID_ID) & CPU_MASK;
>>>> +	switch (cpu_id) {
>>>> +	case CPU_CORTEX_A15:
>>>> +		asm("mrc p15, 1, %0, c9, c0, 2\n" : "=r" (l2ctlr));
>>>> +		ncores = ((l2ctlr >> 24) & 3) + 1;
>>>> +		break;
>>>
>>> [...]
>>>
>>> As mentioned last time [1], you should get this information from the dt
>>> instead.
>>
>> Most of platsmp.c:.smp_init_cpus() implementations seem just to
>> overwrite # of cores by SCU/MRC detection. Is there any implementation
>> to use the DT's # and skip SCU/MRC detection in .smp_init_cpus()?
> 
> As far as I can see, there's no other platform which just relies on
> arm_dt_init_cpu_maps. Until recently, it didn't exist, so that makes some
> sense. As far as I can see, for the Tegra 114 you only need your smp_init_cpus
> to call set_smp_cross_call(gic_raise_softirq). Everything else you do seems to
> be handled by arm_dt_init_cpus.
> 
> I think the best option would be to have a separate smp_ops for your dt
> platforms where we know cpu nodes are populated (e.g. Tegra 114), where
> smp_init_cpus is different to that for non-dt platforms. That way non dt
> platforms can keep the SCU hack for now, and won't be broken, and the dt
> platforms are far removed from the SCU hack and just use common infrastructure.

Tegra doesn't have any non-DT support now.

If we're going to make Tegra114 read the CPU information from DT, then
I'd rather just switch over all Tegra platforms to requiring CPU nodes
in the DT. We have few enough SoC variants that it should be easy to
switch everything to DT before adding Tegra114 support without causing
any problems.

But that all said, I'm not convinced it's a good idea to force the
information to be present in DT when it's just duplicating stuff that
can be runtime-probed from the HW...

  parent reply	other threads:[~2013-01-08 19:32 UTC|newest]

Thread overview: 100+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-08 12:47 [v2 0/9] ARM: Initial support for Tegra 114 SoC Hiroshi Doyu
2013-01-08 12:47 ` Hiroshi Doyu
     [not found] ` <1357649263-1098-1-git-send-email-hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-01-08 12:47   ` [v2 1/9] ARM: tegra: fuse: Add chipid TEGRA114 0x35 Hiroshi Doyu
2013-01-08 12:47     ` Hiroshi Doyu
2013-01-08 12:47   ` [v2 2/9] HACK: ARM: tegra: Use CLK_IGNORE_UNUSED for Tegra 114 SoC Hiroshi Doyu
2013-01-08 12:47     ` Hiroshi Doyu
     [not found]     ` <1357649263-1098-3-git-send-email-hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-01-08 22:52       ` Stephen Warren
2013-01-08 22:52         ` Stephen Warren
2013-01-08 12:47   ` [v2 3/9] ARM: tegra: # of CPU cores detection w/ & w/o HAVE_ARM_SCU Hiroshi Doyu
2013-01-08 12:47     ` Hiroshi Doyu
     [not found]     ` <1357649263-1098-4-git-send-email-hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-01-08 14:26       ` Russell King - ARM Linux
2013-01-08 14:26         ` Russell King - ARM Linux
     [not found]         ` <20130108142651.GB3931-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org>
2013-01-09  5:46           ` Hiroshi Doyu
2013-01-09  5:46             ` Hiroshi Doyu
     [not found]             ` <20130109.074651.1513003283585604525.hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-01-09  6:07               ` Joseph Lo
2013-01-09  6:07                 ` Joseph Lo
     [not found]                 ` <1357711661.28383.1.camel-yx3yKKdKkHfc7b1ADBJPm0n48jw8i0AO@public.gmane.org>
2013-01-09  6:25                   ` Hiroshi Doyu
2013-01-09  6:25                     ` Hiroshi Doyu
2013-01-08 14:28       ` Mark Rutland
2013-01-08 14:28         ` Mark Rutland
     [not found]         ` <20130108142828.GD2718-NuALmloUBlrZROr8t4l/smS4ubULX0JqMm0uRHvK7Nw@public.gmane.org>
2013-01-08 14:53           ` Hiroshi Doyu
2013-01-08 14:53             ` Hiroshi Doyu
     [not found]             ` <20130108.165342.1996373920678167735.hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-01-08 16:21               ` Mark Rutland
2013-01-08 16:21                 ` Mark Rutland
     [not found]                 ` <20130108162056.GA28618-NuALmloUBlrZROr8t4l/smS4ubULX0JqMm0uRHvK7Nw@public.gmane.org>
2013-01-08 17:11                   ` Lorenzo Pieralisi
2013-01-08 17:11                     ` Lorenzo Pieralisi
     [not found]                     ` <20130108171103.GA7417-7AyDDHkRsp3ZROr8t4l/smS4ubULX0JqMm0uRHvK7Nw@public.gmane.org>
2013-01-09 11:46                       ` Hiroshi Doyu
2013-01-09 11:46                         ` Hiroshi Doyu
     [not found]                         ` <20130109.134641.1582472136842052082.hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-01-09 15:17                           ` Lorenzo Pieralisi
2013-01-09 15:17                             ` Lorenzo Pieralisi
     [not found]                             ` <20130109151700.GB22147-7AyDDHkRsp3ZROr8t4l/smS4ubULX0JqMm0uRHvK7Nw@public.gmane.org>
2013-01-10 12:58                               ` Hiroshi Doyu
2013-01-10 12:58                                 ` Hiroshi Doyu
     [not found]                                 ` <20130110.145813.1159140334089730421.hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-01-10 13:47                                   ` Lorenzo Pieralisi
2013-01-10 13:47                                     ` Lorenzo Pieralisi
     [not found]                                     ` <20130110134723.GF4728-7AyDDHkRsp3ZROr8t4l/smS4ubULX0JqMm0uRHvK7Nw@public.gmane.org>
2013-01-10 14:03                                       ` Hiroshi Doyu
2013-01-10 14:03                                         ` Hiroshi Doyu
     [not found]                                         ` <20130110.160350.1128715111526546076.hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-01-10 14:33                                           ` Lorenzo Pieralisi
2013-01-10 14:33                                             ` Lorenzo Pieralisi
     [not found]                                             ` <20130110143334.GG4728-7AyDDHkRsp3ZROr8t4l/smS4ubULX0JqMm0uRHvK7Nw@public.gmane.org>
2013-01-10 14:59                                               ` Hiroshi Doyu
2013-01-10 14:59                                                 ` Hiroshi Doyu
2013-01-10 16:54                                   ` Stephen Warren
2013-01-10 16:54                                     ` Stephen Warren
     [not found]                                     ` <50EEF235.7070200-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2013-01-11 10:11                                       ` Lorenzo Pieralisi
2013-01-11 10:11                                         ` Lorenzo Pieralisi
     [not found]                                         ` <20130111101134.GC30538-7AyDDHkRsp3ZROr8t4l/smS4ubULX0JqMm0uRHvK7Nw@public.gmane.org>
2013-01-11 11:56                                           ` Hiroshi Doyu
2013-01-11 11:56                                             ` Hiroshi Doyu
2013-01-08 19:32                   ` Stephen Warren [this message]
2013-01-08 19:32                     ` Stephen Warren
     [not found]                     ` <50EC7450.4070806-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2013-01-09  5:49                       ` Hiroshi Doyu
2013-01-09  5:49                         ` Hiroshi Doyu
     [not found]                         ` <20130109.074946.1167125688535781408.hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-01-09 11:34                           ` Lorenzo Pieralisi
2013-01-09 11:34                             ` Lorenzo Pieralisi
     [not found]                             ` <20130109113432.GA22147-7AyDDHkRsp3ZROr8t4l/smS4ubULX0JqMm0uRHvK7Nw@public.gmane.org>
2013-01-09 16:17                               ` Stephen Warren
2013-01-09 16:17                                 ` Stephen Warren
     [not found]                                 ` <50ED980B.9060909-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2013-01-09 18:07                                   ` Lorenzo Pieralisi
2013-01-09 18:07                                     ` Lorenzo Pieralisi
     [not found]                                     ` <20130109180713.GC30931-7AyDDHkRsp3ZROr8t4l/smS4ubULX0JqMm0uRHvK7Nw@public.gmane.org>
2013-01-10  6:53                                       ` Hiroshi Doyu
2013-01-10  6:53                                         ` Hiroshi Doyu
2013-01-10  6:31                               ` Hiroshi Doyu
2013-01-10  6:31                                 ` Hiroshi Doyu
     [not found]                                 ` <20130110.083143.258958175573018571.hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-01-10  9:51                                   ` Lorenzo Pieralisi
2013-01-10  9:51                                     ` Lorenzo Pieralisi
2013-01-08 12:47   ` [v2 4/9] clocksource: tegra: Reorganize funcs by clock functionarities Hiroshi Doyu
2013-01-08 12:47     ` Hiroshi Doyu
2013-01-08 12:47   ` [v2 5/9] clocksource: tegra: Enable ARM arch_timer with TSC Hiroshi Doyu
2013-01-08 12:47     ` Hiroshi Doyu
     [not found]     ` <1357649263-1098-6-git-send-email-hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-01-08 16:07       ` Marc Zyngier
2013-01-08 16:07         ` Marc Zyngier
     [not found]         ` <50EC444B.5060206-5wv7dgnIgG8@public.gmane.org>
2013-01-08 22:41           ` Stephen Warren
2013-01-08 22:41             ` Stephen Warren
     [not found]             ` <50ECA0A6.4090307-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2013-01-09  6:00               ` Hiroshi Doyu
2013-01-09  6:00                 ` Hiroshi Doyu
     [not found]                 ` <20130109.080031.1063344100374199123.hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-01-09  6:40                   ` Stephen Warren
2013-01-09  6:40                     ` Stephen Warren
     [not found]                     ` <50ED10F1.30001-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2013-01-09  6:55                       ` Hiroshi Doyu
2013-01-09  6:55                         ` Hiroshi Doyu
2013-01-09  5:57           ` Hiroshi Doyu
2013-01-09  5:57             ` Hiroshi Doyu
     [not found]             ` <20130109.075708.1662067562960541635.hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-01-09  7:43               ` Santosh Shilimkar
2013-01-09  7:43                 ` Santosh Shilimkar
2013-01-09  9:01                 ` Marc Zyngier
2013-01-09  9:01                   ` Marc Zyngier
2013-01-10 15:03                   ` Hiroshi Doyu
2013-01-10 15:03                     ` Hiroshi Doyu
     [not found]                     ` <20130110.170300.1995294118512465281.hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-01-10 15:10                       ` Marc Zyngier
2013-01-10 15:10                         ` Marc Zyngier
2013-01-08 12:47   ` [v2 6/9] ARM: dt: tegra114: Add new SoC base, Tegra 114 SoC Hiroshi Doyu
2013-01-08 12:47     ` Hiroshi Doyu
     [not found]     ` <1357649263-1098-7-git-send-email-hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-01-08 22:49       ` Stephen Warren
2013-01-08 22:49         ` Stephen Warren
     [not found]         ` <50ECA277.5050907-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2013-01-10 12:35           ` Hiroshi Doyu
2013-01-10 12:35             ` Hiroshi Doyu
2013-01-08 12:47   ` [v2 7/9] ARM: dt: tegra114: Add new board, Dalmore Hiroshi Doyu
2013-01-08 12:47     ` Hiroshi Doyu
2013-01-08 12:47   ` [v2 8/9] ARM: dt: tegra114: Add new board, Pluto Hiroshi Doyu
2013-01-08 12:47     ` Hiroshi Doyu
2013-01-08 12:47   ` [v2 9/9] ARM: tegra: Add initial support for Tegra 114 SoC Hiroshi Doyu
2013-01-08 12:47     ` Hiroshi Doyu
     [not found]     ` <1357649263-1098-10-git-send-email-hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-01-08 22:52       ` Stephen Warren
2013-01-08 22:52         ` Stephen Warren

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=50EC7450.4070806@wwwdotorg.org \
    --to=swarren-3lzwwm7+weoh9zmkesr00q@public.gmane.org \
    --cc=hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org \
    --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
    --cc=linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=mark.rutland-5wv7dgnIgG8@public.gmane.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.