All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kukjin Kim <kgene.kim@samsung.com>
To: Will Deacon <will.deacon@arm.com>
Cc: Kukjin Kim <kgene.kim@samsung.com>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>,
	"linux-samsung-soc@vger.kernel.org"
	<linux-samsung-soc@vger.kernel.org>,
	"rmk+kernel@arm.linux.org.uk" <rmk+kernel@arm.linux.org.uk>
Subject: Re: [PATCH] ARM: smp: allow get the core count from L2 control on A15
Date: Tue, 31 Jan 2012 23:21:28 +0900	[thread overview]
Message-ID: <4F27F8E8.1030703@samsung.com> (raw)
In-Reply-To: <20120131141313.GA31004@mudshark.cambridge.arm.com>

On 01/31/12 23:13, Will Deacon wrote:
> Hi Kukjin,
>
> On Tue, Jan 31, 2012 at 12:11:10PM +0000, Kukjin Kim wrote:
>>
>> Actually, the number of A15 CPU core gets from L2 control
>> register not SCU configuration.
>>
>> Suggested-by: Changhwan Youn<chaos.youn@samsung.com>
>> Signed-off-by: Kukjin Kim<kgene.kim@samsung.com>
>> Cc: Russell King<rmk+kernel@arm.linux.org.uk>
>> ---
>
> NAK.
>
>> diff --git a/arch/arm/include/asm/smp.h b/arch/arm/include/asm/smp.h
>> index 1e5717a..b67084f 100644
>> --- a/arch/arm/include/asm/smp.h
>> +++ b/arch/arm/include/asm/smp.h
>> @@ -71,6 +71,11 @@ extern void platform_secondary_init(unsigned int cpu);
>>   extern void platform_smp_prepare_cpus(unsigned int);
>>
>>   /*
>> + * Get the number of CPU cores from the L2 control register on A15
>> + */
>> +extern unsigned long a15_get_core_count(void);
>> +
>> +/*
>>    * Logical CPU mapping.
>>    */
>>   extern int __cpu_logical_map[NR_CPUS];
>> diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c
>> index 57db122..be4d31d 100644
>> --- a/arch/arm/kernel/smp.c
>> +++ b/arch/arm/kernel/smp.c
>> @@ -233,6 +233,22 @@ void __ref cpu_die(void)
>>   }
>>   #endif /* CONFIG_HOTPLUG_CPU */
>>
>> +/*
>> + * Get the number of CPU cores from the L2 control register on A15
>> + */
>> +unsigned long a15_get_core_count(void)
>> +{
>> +	unsigned long val;
>> +
>> +	/* Read L2 control register */
>> +	asm volatile("mrc p15, 1, %0, c9, c0, 2" : "=r"(val));
>> +
>> +	/* [25:24] of L2 control register means core count - 1 */
>> +	val = ((val>>  24)&  0x3) + 1;
>> +
>> +	return val;
>> +}
>
> This doesn't belong in smp.c but, more importantly, this doesn't work for
> multi-cluster configurations at all. Since all A15 implementations will be
> on new platforms, the code will be device-tree only and so we should use

Why not? As I know, current arm kernel ARMv7 arch can support A15 
without device-tree. And you know, the core number should be counted by 
L2 control register. no?

> that to determine the CPU topology as, unfortunately, there is no architected
> way of doing this.
>
> I believe Lorenzo posted some patches which you could look at.
>
OK, Would be better.

Thanks.

Best regards,
Kgene.
--
Kukjin Kim <kgene.kim@samsung.com>, Senior Engineer,
SW Solution Development Team, Samsung Electronics Co., Ltd.

WARNING: multiple messages have this Message-ID (diff)
From: kgene.kim@samsung.com (Kukjin Kim)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] ARM: smp: allow get the core count from L2 control on A15
Date: Tue, 31 Jan 2012 23:21:28 +0900	[thread overview]
Message-ID: <4F27F8E8.1030703@samsung.com> (raw)
In-Reply-To: <20120131141313.GA31004@mudshark.cambridge.arm.com>

On 01/31/12 23:13, Will Deacon wrote:
> Hi Kukjin,
>
> On Tue, Jan 31, 2012 at 12:11:10PM +0000, Kukjin Kim wrote:
>>
>> Actually, the number of A15 CPU core gets from L2 control
>> register not SCU configuration.
>>
>> Suggested-by: Changhwan Youn<chaos.youn@samsung.com>
>> Signed-off-by: Kukjin Kim<kgene.kim@samsung.com>
>> Cc: Russell King<rmk+kernel@arm.linux.org.uk>
>> ---
>
> NAK.
>
>> diff --git a/arch/arm/include/asm/smp.h b/arch/arm/include/asm/smp.h
>> index 1e5717a..b67084f 100644
>> --- a/arch/arm/include/asm/smp.h
>> +++ b/arch/arm/include/asm/smp.h
>> @@ -71,6 +71,11 @@ extern void platform_secondary_init(unsigned int cpu);
>>   extern void platform_smp_prepare_cpus(unsigned int);
>>
>>   /*
>> + * Get the number of CPU cores from the L2 control register on A15
>> + */
>> +extern unsigned long a15_get_core_count(void);
>> +
>> +/*
>>    * Logical CPU mapping.
>>    */
>>   extern int __cpu_logical_map[NR_CPUS];
>> diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c
>> index 57db122..be4d31d 100644
>> --- a/arch/arm/kernel/smp.c
>> +++ b/arch/arm/kernel/smp.c
>> @@ -233,6 +233,22 @@ void __ref cpu_die(void)
>>   }
>>   #endif /* CONFIG_HOTPLUG_CPU */
>>
>> +/*
>> + * Get the number of CPU cores from the L2 control register on A15
>> + */
>> +unsigned long a15_get_core_count(void)
>> +{
>> +	unsigned long val;
>> +
>> +	/* Read L2 control register */
>> +	asm volatile("mrc p15, 1, %0, c9, c0, 2" : "=r"(val));
>> +
>> +	/* [25:24] of L2 control register means core count - 1 */
>> +	val = ((val>>  24)&  0x3) + 1;
>> +
>> +	return val;
>> +}
>
> This doesn't belong in smp.c but, more importantly, this doesn't work for
> multi-cluster configurations at all. Since all A15 implementations will be
> on new platforms, the code will be device-tree only and so we should use

Why not? As I know, current arm kernel ARMv7 arch can support A15 
without device-tree. And you know, the core number should be counted by 
L2 control register. no?

> that to determine the CPU topology as, unfortunately, there is no architected
> way of doing this.
>
> I believe Lorenzo posted some patches which you could look at.
>
OK, Would be better.

Thanks.

Best regards,
Kgene.
--
Kukjin Kim <kgene.kim@samsung.com>, Senior Engineer,
SW Solution Development Team, Samsung Electronics Co., Ltd.

  reply	other threads:[~2012-01-31 14:21 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-01-31 12:11 [PATCH] ARM: smp: allow get the core count from L2 control on A15 Kukjin Kim
2012-01-31 12:11 ` Kukjin Kim
2012-01-31 14:13 ` Will Deacon
2012-01-31 14:13   ` Will Deacon
2012-01-31 14:21   ` Kukjin Kim [this message]
2012-01-31 14:21     ` Kukjin Kim
2012-01-31 14:32     ` Will Deacon
2012-01-31 14:32       ` Will Deacon
2012-01-31 14:40       ` Kukjin Kim
2012-01-31 14:40         ` Kukjin Kim
2012-01-31 15:20         ` Lorenzo Pieralisi
2012-01-31 15:20           ` Lorenzo Pieralisi
2012-01-31 18:03 ` Russell King - ARM Linux
2012-01-31 18:03   ` Russell King - ARM Linux

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=4F27F8E8.1030703@samsung.com \
    --to=kgene.kim@samsung.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-samsung-soc@vger.kernel.org \
    --cc=rmk+kernel@arm.linux.org.uk \
    --cc=will.deacon@arm.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 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.