All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stephen Warren <swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
To: Hiroshi Doyu <hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
Cc: "lorenzo.pieralisi-5wv7dgnIgG8@public.gmane.org"
	<lorenzo.pieralisi-5wv7dgnIgG8@public.gmane.org>,
	"Mark.Rutland-5wv7dgnIgG8@public.gmane.org"
	<Mark.Rutland-5wv7dgnIgG8@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: Thu, 10 Jan 2013 09:54:13 -0700	[thread overview]
Message-ID: <50EEF235.7070200@wwwdotorg.org> (raw)
In-Reply-To: <20130110.145813.1159140334089730421.hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>

On 01/10/2013 05:58 AM, Hiroshi Doyu wrote:
> Lorenzo Pieralisi <lorenzo.pieralisi-5wv7dgnIgG8@public.gmane.org> wrote @ Wed, 9 Jan 2013 16:17:00 +0100:
...
> With your "[PATCH] ARM: kernel: DT cpu map validity check helper
> function", my original patch gets as below. I think that the following
> "smp_detect_ncores()" function may be so generic that it could be
> moved in some common place than platform?
> 
> From f5f2a43952ce75fe061b3808b994c3ceb07f1af1 Mon Sep 17 00:00:00 2001
> From: Hiroshi Doyu <hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
> Date: Mon, 26 Nov 2012 12:25:14 +0200
> Subject: [PATCH 1/1] ARM: tegra: # of CPU cores detection w/ & w/o
>  HAVE_ARM_SCU
> 
> 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.

> diff --git a/arch/arm/mach-tegra/platsmp.c b/arch/arm/mach-tegra/platsmp.c

> +static int __init smp_detect_ncores(void)
> +{
> +	unsigned int ncores, mpidr;
> +	u32 l2ctlr;
> +	phys_addr_t pa;
> +
> +	mpidr = read_cpuid_mpidr();
> +	switch (mpidr) {
> +	case ARM_CPU_PART_CORTEX_A15:
> +		asm("mrc p15, 1, %0, c9, c0, 2\n" : "=r" (l2ctlr));
> +		ncores = ((l2ctlr >> 24) & 3) + 1;
> +		break;
> +	case ARM_CPU_PART_CORTEX_A9:
> +		/* Get SCU physical base */
> +		asm("mrc p15, 4, %0, c15, c0, 0" : "=r" (pa));
> +		scu_base = IO_ADDRESS(pa);
> +		ncores = scu_get_core_count(scu_base);
> +		break;
> +	default:
> +		pr_warn("Unsupported mpidr\n");
> +		ncores = 1;
> +		break;
> +	}
> +
> +	return ncores;
> +}

Why not just remove that function...

>  /*
>   * Initialise the CPU possible map early - this describes the CPUs
>   * which may be present or become present in the system.
>   */
>  static void __init tegra_smp_init_cpus(void)
>  {
> -	unsigned int i, ncores = scu_get_core_count(scu_base);
> -
> -	if (ncores > nr_cpu_ids) {
> -		pr_warn("SMP: %u cores greater than maximum (%u), clipping\n",
> -			ncores, nr_cpu_ids);
> -		ncores = nr_cpu_ids;
> +	if (!arm_dt_cpu_map_valid()) {
> +		unsigned int i, ncores;
> +
> +		ncores = smp_detect_ncores();

And just say "ncores = 1" here?

For Tegra, it's trivial to simply put the patch adding the required DT
nodes before this patch, and then there's no need for any
backwards-compatibility, since the nodes are guaranteed to be there.

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: Thu, 10 Jan 2013 09:54:13 -0700	[thread overview]
Message-ID: <50EEF235.7070200@wwwdotorg.org> (raw)
In-Reply-To: <20130110.145813.1159140334089730421.hdoyu@nvidia.com>

On 01/10/2013 05:58 AM, Hiroshi Doyu wrote:
> Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> wrote @ Wed, 9 Jan 2013 16:17:00 +0100:
...
> With your "[PATCH] ARM: kernel: DT cpu map validity check helper
> function", my original patch gets as below. I think that the following
> "smp_detect_ncores()" function may be so generic that it could be
> moved in some common place than platform?
> 
> From f5f2a43952ce75fe061b3808b994c3ceb07f1af1 Mon Sep 17 00:00:00 2001
> From: Hiroshi Doyu <hdoyu@nvidia.com>
> Date: Mon, 26 Nov 2012 12:25:14 +0200
> Subject: [PATCH 1/1] ARM: tegra: # of CPU cores detection w/ & w/o
>  HAVE_ARM_SCU
> 
> 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.

> diff --git a/arch/arm/mach-tegra/platsmp.c b/arch/arm/mach-tegra/platsmp.c

> +static int __init smp_detect_ncores(void)
> +{
> +	unsigned int ncores, mpidr;
> +	u32 l2ctlr;
> +	phys_addr_t pa;
> +
> +	mpidr = read_cpuid_mpidr();
> +	switch (mpidr) {
> +	case ARM_CPU_PART_CORTEX_A15:
> +		asm("mrc p15, 1, %0, c9, c0, 2\n" : "=r" (l2ctlr));
> +		ncores = ((l2ctlr >> 24) & 3) + 1;
> +		break;
> +	case ARM_CPU_PART_CORTEX_A9:
> +		/* Get SCU physical base */
> +		asm("mrc p15, 4, %0, c15, c0, 0" : "=r" (pa));
> +		scu_base = IO_ADDRESS(pa);
> +		ncores = scu_get_core_count(scu_base);
> +		break;
> +	default:
> +		pr_warn("Unsupported mpidr\n");
> +		ncores = 1;
> +		break;
> +	}
> +
> +	return ncores;
> +}

Why not just remove that function...

>  /*
>   * Initialise the CPU possible map early - this describes the CPUs
>   * which may be present or become present in the system.
>   */
>  static void __init tegra_smp_init_cpus(void)
>  {
> -	unsigned int i, ncores = scu_get_core_count(scu_base);
> -
> -	if (ncores > nr_cpu_ids) {
> -		pr_warn("SMP: %u cores greater than maximum (%u), clipping\n",
> -			ncores, nr_cpu_ids);
> -		ncores = nr_cpu_ids;
> +	if (!arm_dt_cpu_map_valid()) {
> +		unsigned int i, ncores;
> +
> +		ncores = smp_detect_ncores();

And just say "ncores = 1" here?

For Tegra, it's trivial to simply put the patch adding the required DT
nodes before this patch, and then there's no need for any
backwards-compatibility, since the nodes are guaranteed to be there.

  parent reply	other threads:[~2013-01-10 16:54 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 [this message]
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
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=50EEF235.7070200@wwwdotorg.org \
    --to=swarren-3lzwwm7+weoh9zmkesr00q@public.gmane.org \
    --cc=Mark.Rutland-5wv7dgnIgG8@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=lorenzo.pieralisi-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.