From: Scott Wood <scottwood@freescale.com>
To: Zhao Chenhui <chenhui.zhao@freescale.com>
Cc: linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org,
r58472@freescale.com
Subject: Re: [PATCH v2 12/15] powerpc/85xx: add time base sync support for e6500
Date: Thu, 25 Apr 2013 19:07:24 -0500 [thread overview]
Message-ID: <1366934844.30341.16@snotra> (raw)
In-Reply-To: <20130425002818.GE3172@localhost.localdomain> (from chenhui.zhao@freescale.com on Wed Apr 24 19:28:18 2013)
On 04/24/2013 07:28:18 PM, Zhao Chenhui wrote:
> On Wed, Apr 24, 2013 at 05:38:16PM -0500, Scott Wood wrote:
> > On 04/24/2013 06:29:29 AM, Zhao Chenhui wrote:
> > >On Tue, Apr 23, 2013 at 07:04:06PM -0500, Scott Wood wrote:
> > >> On 04/19/2013 05:47:45 AM, Zhao Chenhui wrote:
> > >> >From: Chen-Hui Zhao <chenhui.zhao@freescale.com>
> > >> >
> > >> >For e6500, two threads in one core share one time base. Just =20
> need
> > >> >to do time base sync on first thread of one core, and skip it on
> > >> >the other thread.
> > >> >
> > >> >Signed-off-by: Zhao Chenhui <chenhui.zhao@freescale.com>
> > >> >Signed-off-by: Li Yang <leoli@freescale.com>
> > >> >Signed-off-by: Andy Fleming <afleming@freescale.com>
> > >> >---
> > >> > arch/powerpc/platforms/85xx/smp.c | 52
> > >> >+++++++++++++++++++++++++++++++-----
> > >> > 1 files changed, 44 insertions(+), 8 deletions(-)
> > >> >
> > >> >diff --git a/arch/powerpc/platforms/85xx/smp.c
> > >> >b/arch/powerpc/platforms/85xx/smp.c
> > >> >index 74d8cde..5f3eee3 100644
> > >> >--- a/arch/powerpc/platforms/85xx/smp.c
> > >> >+++ b/arch/powerpc/platforms/85xx/smp.c
> > >> >@@ -53,26 +55,40 @@ static inline u32 get_phy_cpu_mask(void)
> > >> > u32 mask;
> > >> > int cpu;
> > >> >
> > >> >- mask =3D 1 << cur_booting_core;
> > >> >- for_each_online_cpu(cpu)
> > >> >- mask |=3D 1 << get_hard_smp_processor_id(cpu);
> > >> >+ if (smt_capable()) {
> > >> >+ /* two threads in one core share one time base =20
> */
> > >> >+ mask =3D 1 << =20
> cpu_core_index_of_thread(cur_booting_core);
> > >> >+ for_each_online_cpu(cpu)
> > >> >+ mask |=3D 1 << cpu_core_index_of_thread(
> > >> >+ =20
> get_hard_smp_processor_id(cpu));
> > >> >+ } else {
> > >> >+ mask =3D 1 << cur_booting_core;
> > >> >+ for_each_online_cpu(cpu)
> > >> >+ mask |=3D 1 << =20
> get_hard_smp_processor_id(cpu);
> > >> >+ }
> > >>
> > >> Where is smt_capable defined()? I assume somewhere in the =20
> patchset
> > >> but it's a pain to search 12 patches...
> > >>
> > >
> > >It is defined in arch/powerpc/include/asm/topology.h.
> > > #define smt_capable() (cpu_has_feature(CPU_FTR_SMT))
> > >
> > >Thanks for your review again.
> >
> > We shouldn't base it on CPU_FTR_SMT. For example, e6500 doesn't
> > claim that feature yet, except in our SDK kernel. That doesn't
> > change the topology of CPU numbering.
> >
>=20
> Then, where can I get the thread information? dts?
> Or, wait for upstream of the thread suppport of e6500.
It's an inherent property of e6500 (outside of some virtualization =20
scenarios, but you wouldn't run this code under a hypervisor) that you =20
have two threads per core (whether Linux uses them or not). Or you =20
could read TMCFG0[NTHRD] if you know you're on a chip that has TMRs but =20
aren't positive it's an e6500, but I wouldn't bother. If we do ever =20
have such a chip, there are probably other things that will need =20
updating.
> > >static inline u32 get_phy_cpu_mask(void)
> > >{
> > > u32 mask;
> > > int cpu;
> > >
> > > mask =3D 1 << cpu_core_index_of_thread(cur_booting_core);
> > > for_each_online_cpu(cpu)
> > > mask |=3D 1 << cpu_core_index_of_thread(
> > > get_hard_smp_processor_id(cpu));
> > >
> > > return mask;
> > >}
> >
> > Likewise, this will get it wrong if SMT is disabled or not yet
> > implemented on a core.
> >
> > -Scott
>=20
> Let's look into cpu_core_index_of_thread() in =20
> arch/powerpc/kernel/smp.c.
>=20
> int cpu_core_index_of_thread(int cpu)
> {
> return cpu >> threads_shift;
> }
>=20
> If no thread, the threads_shift is equal to 0. It can work with no
> thread.
My point is that if threads are disabled, threads_shift will be 0, but =20
e6500 cores will still be numbered 0, 2, 4, etc.
> Perhaps, I should submit this patch after the thread patches for =20
> e6500.
Why?
-Scott=
WARNING: multiple messages have this Message-ID (diff)
From: Scott Wood <scottwood@freescale.com>
To: Zhao Chenhui <chenhui.zhao@freescale.com>
Cc: <linuxppc-dev@lists.ozlabs.org>, <linux-kernel@vger.kernel.org>,
<r58472@freescale.com>
Subject: Re: [PATCH v2 12/15] powerpc/85xx: add time base sync support for e6500
Date: Thu, 25 Apr 2013 19:07:24 -0500 [thread overview]
Message-ID: <1366934844.30341.16@snotra> (raw)
In-Reply-To: <20130425002818.GE3172@localhost.localdomain> (from chenhui.zhao@freescale.com on Wed Apr 24 19:28:18 2013)
On 04/24/2013 07:28:18 PM, Zhao Chenhui wrote:
> On Wed, Apr 24, 2013 at 05:38:16PM -0500, Scott Wood wrote:
> > On 04/24/2013 06:29:29 AM, Zhao Chenhui wrote:
> > >On Tue, Apr 23, 2013 at 07:04:06PM -0500, Scott Wood wrote:
> > >> On 04/19/2013 05:47:45 AM, Zhao Chenhui wrote:
> > >> >From: Chen-Hui Zhao <chenhui.zhao@freescale.com>
> > >> >
> > >> >For e6500, two threads in one core share one time base. Just
> need
> > >> >to do time base sync on first thread of one core, and skip it on
> > >> >the other thread.
> > >> >
> > >> >Signed-off-by: Zhao Chenhui <chenhui.zhao@freescale.com>
> > >> >Signed-off-by: Li Yang <leoli@freescale.com>
> > >> >Signed-off-by: Andy Fleming <afleming@freescale.com>
> > >> >---
> > >> > arch/powerpc/platforms/85xx/smp.c | 52
> > >> >+++++++++++++++++++++++++++++++-----
> > >> > 1 files changed, 44 insertions(+), 8 deletions(-)
> > >> >
> > >> >diff --git a/arch/powerpc/platforms/85xx/smp.c
> > >> >b/arch/powerpc/platforms/85xx/smp.c
> > >> >index 74d8cde..5f3eee3 100644
> > >> >--- a/arch/powerpc/platforms/85xx/smp.c
> > >> >+++ b/arch/powerpc/platforms/85xx/smp.c
> > >> >@@ -53,26 +55,40 @@ static inline u32 get_phy_cpu_mask(void)
> > >> > u32 mask;
> > >> > int cpu;
> > >> >
> > >> >- mask = 1 << cur_booting_core;
> > >> >- for_each_online_cpu(cpu)
> > >> >- mask |= 1 << get_hard_smp_processor_id(cpu);
> > >> >+ if (smt_capable()) {
> > >> >+ /* two threads in one core share one time base
> */
> > >> >+ mask = 1 <<
> cpu_core_index_of_thread(cur_booting_core);
> > >> >+ for_each_online_cpu(cpu)
> > >> >+ mask |= 1 << cpu_core_index_of_thread(
> > >> >+
> get_hard_smp_processor_id(cpu));
> > >> >+ } else {
> > >> >+ mask = 1 << cur_booting_core;
> > >> >+ for_each_online_cpu(cpu)
> > >> >+ mask |= 1 <<
> get_hard_smp_processor_id(cpu);
> > >> >+ }
> > >>
> > >> Where is smt_capable defined()? I assume somewhere in the
> patchset
> > >> but it's a pain to search 12 patches...
> > >>
> > >
> > >It is defined in arch/powerpc/include/asm/topology.h.
> > > #define smt_capable() (cpu_has_feature(CPU_FTR_SMT))
> > >
> > >Thanks for your review again.
> >
> > We shouldn't base it on CPU_FTR_SMT. For example, e6500 doesn't
> > claim that feature yet, except in our SDK kernel. That doesn't
> > change the topology of CPU numbering.
> >
>
> Then, where can I get the thread information? dts?
> Or, wait for upstream of the thread suppport of e6500.
It's an inherent property of e6500 (outside of some virtualization
scenarios, but you wouldn't run this code under a hypervisor) that you
have two threads per core (whether Linux uses them or not). Or you
could read TMCFG0[NTHRD] if you know you're on a chip that has TMRs but
aren't positive it's an e6500, but I wouldn't bother. If we do ever
have such a chip, there are probably other things that will need
updating.
> > >static inline u32 get_phy_cpu_mask(void)
> > >{
> > > u32 mask;
> > > int cpu;
> > >
> > > mask = 1 << cpu_core_index_of_thread(cur_booting_core);
> > > for_each_online_cpu(cpu)
> > > mask |= 1 << cpu_core_index_of_thread(
> > > get_hard_smp_processor_id(cpu));
> > >
> > > return mask;
> > >}
> >
> > Likewise, this will get it wrong if SMT is disabled or not yet
> > implemented on a core.
> >
> > -Scott
>
> Let's look into cpu_core_index_of_thread() in
> arch/powerpc/kernel/smp.c.
>
> int cpu_core_index_of_thread(int cpu)
> {
> return cpu >> threads_shift;
> }
>
> If no thread, the threads_shift is equal to 0. It can work with no
> thread.
My point is that if threads are disabled, threads_shift will be 0, but
e6500 cores will still be numbered 0, 2, 4, etc.
> Perhaps, I should submit this patch after the thread patches for
> e6500.
Why?
-Scott
next prev parent reply other threads:[~2013-04-26 0:07 UTC|newest]
Thread overview: 66+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-04-19 10:47 [PATCH v2 01/15] powerpc/85xx: cache operations for Freescale SoCs based on BOOK3E Zhao Chenhui
2013-04-19 10:47 ` Zhao Chenhui
2013-04-19 10:47 ` [PATCH v2 02/15] powerpc/85xx: add sleep and deep sleep support Zhao Chenhui
2013-04-19 10:47 ` Zhao Chenhui
2013-04-23 23:53 ` Scott Wood
2013-04-23 23:53 ` Scott Wood
2013-04-28 10:20 ` Zhao Chenhui
2013-04-28 10:20 ` Zhao Chenhui
2013-04-19 10:47 ` [PATCH v2 03/15] fsl_pmc: Add API to enable device as wakeup event source Zhao Chenhui
2013-04-19 10:47 ` Zhao Chenhui
2013-04-19 10:47 ` [PATCH v2 04/15] pm: add power node to dts Zhao Chenhui
2013-04-19 10:47 ` Zhao Chenhui
2013-04-19 10:47 ` [PATCH v2 05/15] fsl_pmc: update device bindings Zhao Chenhui
2013-04-19 10:47 ` Zhao Chenhui
2013-06-03 22:43 ` Scott Wood
2013-06-03 22:43 ` Scott Wood
2013-04-19 10:47 ` [PATCH v2 06/15] powerpc/85xx: add support to JOG feature using cpufreq interface Zhao Chenhui
2013-04-19 10:47 ` Zhao Chenhui
2013-04-22 3:25 ` Viresh Kumar
2013-04-22 10:56 ` Zhao Chenhui
2013-04-22 10:56 ` Zhao Chenhui
2013-04-22 10:56 ` Zhao Chenhui
2013-04-19 10:47 ` [PATCH v2 07/15] powerpc/85xx: add time base sync for SoCs based on e500mc/e5500 Zhao Chenhui
2013-04-19 10:47 ` Zhao Chenhui
2013-04-23 23:58 ` Scott Wood
2013-04-23 23:58 ` Scott Wood
2013-04-19 10:47 ` [PATCH v2 08/15] powerpc/85xx: add cpu hotplug support for e500mc/e5500 Zhao Chenhui
2013-04-19 10:47 ` Zhao Chenhui
2013-04-19 10:47 ` [PATCH v2 09/15] powerpc/rcpm: add sleep feature for SoCs using RCPM Zhao Chenhui
2013-04-19 10:47 ` Zhao Chenhui
2013-04-19 10:47 ` [PATCH v2 10/15] powerpc/85xx: fix 64-bit support for cpu hotplug Zhao Chenhui
2013-04-19 10:47 ` Zhao Chenhui
2013-04-19 10:47 ` [PATCH v2 11/15] powerpc/rcpm: add struct ccsr_rcpm_v2 Zhao Chenhui
2013-04-19 10:47 ` Zhao Chenhui
2013-04-19 10:47 ` [PATCH v2 12/15] powerpc/85xx: add time base sync support for e6500 Zhao Chenhui
2013-04-19 10:47 ` Zhao Chenhui
2013-04-24 0:04 ` Scott Wood
2013-04-24 0:04 ` Scott Wood
2013-04-24 11:29 ` Zhao Chenhui
2013-04-24 11:29 ` Zhao Chenhui
2013-04-24 22:38 ` Scott Wood
2013-04-24 22:38 ` Scott Wood
2013-04-25 0:28 ` Zhao Chenhui
2013-04-25 0:28 ` Zhao Chenhui
2013-04-26 0:07 ` Scott Wood [this message]
2013-04-26 0:07 ` Scott Wood
2013-04-28 9:56 ` Zhao Chenhui
2013-04-28 9:56 ` Zhao Chenhui
2013-04-29 20:18 ` Scott Wood
2013-04-29 20:18 ` Scott Wood
2013-04-19 10:47 ` [PATCH v2 13/15] powerpc/85xx: add support for e6500 L1 cache operation Zhao Chenhui
2013-04-19 10:47 ` Zhao Chenhui
2013-04-24 0:00 ` Scott Wood
2013-04-24 0:00 ` Scott Wood
2013-04-24 11:14 ` Zhao Chenhui
2013-04-24 11:14 ` Zhao Chenhui
2013-04-19 10:47 ` [PATCH v2 14/15] powerpc/smp: add cpu hotplug support for e6500 Zhao Chenhui
2013-04-19 10:47 ` Zhao Chenhui
2013-04-19 10:47 ` [PATCH v2 15/15] powerpc/rcpm: add sleep support for T4/B4 chips Zhao Chenhui
2013-04-19 10:47 ` Zhao Chenhui
2013-04-23 9:53 ` [linuxppc-release] [PATCH v2 01/15] powerpc/85xx: cache operations for Freescale SoCs based on BOOK3E Zhao Chenhui
2013-04-23 9:53 ` Zhao Chenhui
2013-04-23 23:46 ` Scott Wood
2013-04-23 23:46 ` Scott Wood
2013-04-24 11:08 ` Zhao Chenhui
2013-04-24 11:08 ` Zhao Chenhui
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=1366934844.30341.16@snotra \
--to=scottwood@freescale.com \
--cc=chenhui.zhao@freescale.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=r58472@freescale.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.