From: Vasant Hegde <hegdevasant@linux.vnet.ibm.com>
To: Paul Mackerras <paulus@samba.org>
Cc: linuxppc-dev@ozlabs.org
Subject: Re: [PATCH] powerpc: Use ibm, chip-id property to compute cpu_core_mask if available
Date: Fri, 09 Aug 2013 12:52:12 +0530 [thread overview]
Message-ID: <520498A4.9050805@linux.vnet.ibm.com> (raw)
In-Reply-To: <20130704030506.GA2396@iris.ozlabs.ibm.com>
On 07/04/2013 08:35 AM, Paul Mackerras wrote:
> Some systems have an ibm,chip-id property in the cpu nodes in the
> device tree. On these systems, we now use that to compute the
> cpu_core_mask (i.e. the set of core siblings) rather than looking
> at cache properties.
>
Paul,
I wanted to test this patch but not able to apply this patch on top of Linux
tree. Looks like I'm missing traverse_core_siblings() related patch. I searched
in ppc mailing list and couldn't figure out.
Can you point me to related patch?
-Vasant
> Signed-off-by: Paul Mackerras <paulus@samba.org>
> ---
> diff --git a/arch/powerpc/kernel/smp.c b/arch/powerpc/kernel/smp.c
> index b72d8c9..3b7a118 100644
> --- a/arch/powerpc/kernel/smp.c
> +++ b/arch/powerpc/kernel/smp.c
> @@ -587,6 +587,32 @@ int cpu_first_thread_of_core(int core)
> }
> EXPORT_SYMBOL_GPL(cpu_first_thread_of_core);
>
> +static void traverse_siblings_chip_id(int cpu, int add, int chipid)
> +{
> + const struct cpumask *mask;
> + struct device_node *np;
> + int i, plen;
> + const int *prop;
> +
> + mask = add ? cpu_online_mask : cpu_present_mask;
> + for_each_cpu(i, mask) {
> + np = of_get_cpu_node(i, NULL);
> + if (!np)
> + continue;
> + prop = of_get_property(np, "ibm,chip-id", &plen);
> + if (prop && plen == sizeof(int) && *prop == chipid) {
> + if (add) {
> + cpumask_set_cpu(cpu, cpu_core_mask(i));
> + cpumask_set_cpu(i, cpu_core_mask(cpu));
> + } else {
> + cpumask_clear_cpu(cpu, cpu_core_mask(i));
> + cpumask_clear_cpu(i, cpu_core_mask(cpu));
> + }
> + }
> + of_node_put(np);
> + }
> +}
> +
> /* Must be called when no change can occur to cpu_present_mask,
> * i.e. during cpu online or offline.
> */
> @@ -611,14 +637,29 @@ static struct device_node *cpu_to_l2cache(int cpu)
>
> static void traverse_core_siblings(int cpu, int add)
> {
> - struct device_node *l2_cache;
> + struct device_node *l2_cache, *np;
> const struct cpumask *mask;
> - int i;
> + int i, chip, plen;
> + const int *prop;
> +
> + /* First see if we have ibm,chip-id properties in cpu nodes */
> + np = of_get_cpu_node(cpu, NULL);
> + if (np) {
> + chip = -1;
> + prop = of_get_property(np, "ibm,chip-id", &plen);
> + if (prop && plen == sizeof(int))
> + chip = *(int *)prop;
> + of_node_put(np);
> + if (chip >= 0) {
> + traverse_siblings_chip_id(cpu, add, chip);
> + return;
> + }
> + }
>
> l2_cache = cpu_to_l2cache(cpu);
> mask = add ? cpu_online_mask : cpu_present_mask;
> for_each_cpu(i, mask) {
> - struct device_node *np = cpu_to_l2cache(i);
> + np = cpu_to_l2cache(i);
> if (!np)
> continue;
> if (np == l2_cache) {
> _______________________________________________
> Linuxppc-dev mailing list
> Linuxppc-dev@lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/linuxppc-dev
>
next prev parent reply other threads:[~2013-08-09 7:21 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-04 3:05 [PATCH] powerpc: Use ibm,chip-id property to compute cpu_core_mask if available Paul Mackerras
2013-08-09 7:22 ` Vasant Hegde [this message]
2013-08-10 3:44 ` Paul Mackerras
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=520498A4.9050805@linux.vnet.ibm.com \
--to=hegdevasant@linux.vnet.ibm.com \
--cc=linuxppc-dev@ozlabs.org \
--cc=paulus@samba.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.