From: lorenzo.pieralisi@arm.com (Lorenzo Pieralisi)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 1/4] arm64: topology: Implement basic CPU topology support
Date: Tue, 25 Feb 2014 16:54:11 +0000 [thread overview]
Message-ID: <20140225165411.GA3883@red-moon> (raw)
In-Reply-To: <1393302345-18253-2-git-send-email-broonie@kernel.org>
Hi Mark,
On Tue, Feb 25, 2014 at 04:25:42AM +0000, Mark Brown wrote:
> From: Mark Brown <broonie@linaro.org>
>
> Add basic CPU topology support to arm64, based on the existing pre-v8
> code and some work done by Mark Hambleton. This patch does not
> implement any topology discovery support since that should be based on
> information from firmware, it merely implements the scaffolding for
> integration of topology support in the architecture.
>
> No locking of the topology data is done since it is only modified during
> CPU bringup with external serialisation from the SMP code.
>
> The goal is to separate the architecture hookup for providing topology
> information from the DT parsing in order to ease review and avoid
> blocking the architecture code (which will be built on by other work)
> with the DT code review by providing something simple and basic.
>
> A following patch will implement support for parsing the DT topology
> bindings for ARM, similar patches will be needed for ACPI.
>
> Signed-off-by: Mark Brown <broonie@linaro.org>
I have been clobbering the code with some random dts configs, running on
top of the patch attached (to make code compliant with default if DT
info is missing for some CPUs). Can you give it a go please and run your
tests against it (I have just put it together) ? It should simplify things,
thoughts ?
AFAIK it should be correct, at least the info required by the scheduler
is reset to default (include/linux/topology.h) if DT nodes are
misconfigured. It applies on top of your series.
Thanks,
Lorenzo
-- >8 --
Subject: [PATCH] arm64: kernel: update topology discovery code
If the device tree does not contain topology information for a CPU,
kernel code should set-up topology information for the CPU according
to the default values defined in Documentation/cputopology.txt.
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
---
arch/arm64/kernel/topology.c | 34 +++++++++++++---------------------
1 files changed, 13 insertions(+), 21 deletions(-)
diff --git a/arch/arm64/kernel/topology.c b/arch/arm64/kernel/topology.c
index e85560a..22ce390 100644
--- a/arch/arm64/kernel/topology.c
+++ b/arch/arm64/kernel/topology.c
@@ -317,6 +317,18 @@ static void update_siblings_masks(unsigned int cpuid)
struct cpu_topology *cpu_topo, *cpuid_topo = &cpu_topology[cpuid];
int cpu;
+ if (cpuid_topo->cluster_id == -1) {
+ /*
+ * DT does not contain topology information for this cpu
+ * reset it to default behaviour
+ */
+ pr_warn("CPU%u: No topology information configured\n", cpuid);
+ cpuid_topo->core_id = 0;
+ cpumask_set_cpu(cpuid, &cpuid_topo->core_sibling);
+ cpumask_set_cpu(cpuid, &cpuid_topo->thread_sibling);
+ return;
+ }
+
/* update core and thread sibling masks */
for_each_possible_cpu(cpu) {
cpu_topo = &cpu_topology[cpu];
@@ -339,14 +351,7 @@ static void update_siblings_masks(unsigned int cpuid)
void store_cpu_topology(unsigned int cpuid)
{
- struct cpu_topology *cpuid_topo = &cpu_topology[cpuid];
-
- /* Something should have picked a topology by the time we get here */
- if (cpuid_topo->core_id == -1)
- pr_warn("CPU%u: No topology information configured\n", cpuid);
- else
- update_siblings_masks(cpuid);
-
+ update_siblings_masks(cpuid);
update_cpu_power(cpuid);
}
@@ -372,17 +377,4 @@ void __init init_cpu_topology(void)
}
parse_dt_topology();
-
- /*
- * Assign all remaining CPUs to a cluster so the scheduler
- * doesn't get confused.
- */
- for_each_possible_cpu(cpu) {
- struct cpu_topology *cpu_topo = &cpu_topology[cpu];
-
- if (cpu_topo->cluster_id == -1) {
- cpu_topo->cluster_id = INT_MAX;
- cpu_topo->core_id = cpu;
- }
- }
}
--
1.7.5.4
next prev parent reply other threads:[~2014-02-25 16:54 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-25 4:25 [PATCH 0/4] arm64: topology: CPU topology support Mark Brown
2014-02-25 4:25 ` [PATCH 1/4] arm64: topology: Implement basic " Mark Brown
2014-02-25 16:54 ` Lorenzo Pieralisi [this message]
2014-02-26 0:50 ` Mark Brown
2014-02-26 12:32 ` Lorenzo Pieralisi
2014-02-26 14:46 ` Mark Brown
2014-02-26 15:48 ` Catalin Marinas
2014-02-26 17:50 ` Lorenzo Pieralisi
2014-02-27 4:30 ` Mark Brown
2014-02-27 4:20 ` Mark Brown
2014-02-25 4:25 ` [PATCH 2/4] arm64: topology: Add support for topology DT bindings Mark Brown
2014-02-25 4:25 ` [PATCH 3/4] arm64: topology: Tell the scheduler about the relative power of cores Mark Brown
2014-02-25 4:25 ` [PATCH 4/4] arm64: topology: Provide relative power numbers for cores Mark Brown
-- strict thread matches above, loose matches on Subject: below --
2014-02-26 0:48 [PATCH 0/4] arm64: Topology Mark Brown
2014-02-26 0:48 ` [PATCH 1/4] arm64: topology: Implement basic CPU topology support Mark Brown
2014-02-11 22:06 Mark Brown
2014-02-10 13:02 Mark Brown
2014-02-10 16:22 ` Catalin Marinas
2014-02-10 16:46 ` Mark Brown
2014-02-11 8:15 ` Vincent Guittot
2014-02-11 10:34 ` Will Deacon
2014-02-11 13:18 ` Vincent Guittot
2014-02-11 14:07 ` Catalin Marinas
2014-02-11 14:46 ` Vincent Guittot
2014-02-11 22:04 ` Mark Brown
2014-02-12 8:04 ` Vincent Guittot
2014-02-12 10:27 ` Catalin Marinas
2014-02-12 12:34 ` Mark Brown
2014-02-21 15:01 ` Lorenzo Pieralisi
2014-02-22 2:06 ` Mark Brown
2014-02-22 12:26 ` Lorenzo Pieralisi
2014-02-23 2:09 ` Mark Brown
2014-01-15 11:38 [PATCH v12 0/4] arm64 topology Mark Brown
2014-01-15 11:38 ` [PATCH 1/4] arm64: topology: Implement basic CPU topology support Mark Brown
2014-01-12 19:20 [PATCH v11 0/4] ARMv8 cpu topology Mark Brown
2014-01-12 19:20 ` [PATCH 1/4] arm64: topology: Implement basic CPU topology support Mark Brown
2014-01-13 16:10 ` Lorenzo Pieralisi
2014-01-13 16:30 ` Mark Brown
2014-01-13 17:44 ` Lorenzo Pieralisi
2014-01-14 8:17 ` Vincent Guittot
2014-01-13 16:44 ` Vincent Guittot
2014-01-13 17:33 ` Lorenzo Pieralisi
2014-01-08 19:12 Mark Brown
2014-01-09 11:48 ` Catalin Marinas
2014-01-08 17:10 Mark Brown
2014-01-08 18:30 ` Lorenzo Pieralisi
2014-01-08 18:40 ` Mark Brown
2014-01-09 12:40 ` Lorenzo Pieralisi
2013-12-19 20:06 [PATCH 0/4] arm64 " Mark Brown
2013-12-19 20:06 ` [PATCH 1/4] arm64: topology: Implement basic CPU " Mark Brown
2013-12-16 16:49 Mark Brown
2013-12-17 17:06 ` Lorenzo Pieralisi
2013-12-17 19:55 ` Mark Brown
2013-12-18 17:39 ` Lorenzo Pieralisi
2013-12-18 18:00 ` Mark Brown
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=20140225165411.GA3883@red-moon \
--to=lorenzo.pieralisi@arm.com \
--cc=linux-arm-kernel@lists.infradead.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).