Commit 124e46a8 authored by Atish Patra's avatar Atish Patra Committed by Paul Walmsley

dt-binding: cpu-topology: Move cpu-map to a common binding.

cpu-map binding can be used to described cpu topology for both
RISC-V & ARM. It makes more sense to move the binding to document
to a common place.

The relevant discussion can be found here.
https://lkml.org/lkml/2018/11/6/19Signed-off-by: default avatarAtish Patra <atish.patra@wdc.com>
Reviewed-by: default avatarSudeep Holla <sudeep.holla@arm.com>
Reviewed-by: default avatarRob Herring <robh@kernel.org>
Signed-off-by: default avatarPaul Walmsley <paul.walmsley@sifive.com>
parent 849b384f
=========================================== ===========================================
ARM topology binding description CPU topology binding description
=========================================== ===========================================
=========================================== ===========================================
1 - Introduction 1 - Introduction
=========================================== ===========================================
In an ARM system, the hierarchy of CPUs is defined through three entities that In a SMP system, the hierarchy of CPUs is defined through three entities that
are used to describe the layout of physical CPUs in the system: are used to describe the layout of physical CPUs in the system:
- socket - socket
...@@ -14,9 +14,6 @@ are used to describe the layout of physical CPUs in the system: ...@@ -14,9 +14,6 @@ are used to describe the layout of physical CPUs in the system:
- core - core
- thread - thread
The cpu nodes (bindings defined in [1]) represent the devices that
correspond to physical CPUs and are to be mapped to the hierarchy levels.
The bottom hierarchy level sits at core or thread level depending on whether The bottom hierarchy level sits at core or thread level depending on whether
symmetric multi-threading (SMT) is supported or not. symmetric multi-threading (SMT) is supported or not.
...@@ -25,33 +22,31 @@ threads existing in the system and map to the hierarchy level "thread" above. ...@@ -25,33 +22,31 @@ threads existing in the system and map to the hierarchy level "thread" above.
In systems where SMT is not supported "cpu" nodes represent all cores present In systems where SMT is not supported "cpu" nodes represent all cores present
in the system and map to the hierarchy level "core" above. in the system and map to the hierarchy level "core" above.
ARM topology bindings allow one to associate cpu nodes with hierarchical groups CPU topology bindings allow one to associate cpu nodes with hierarchical groups
corresponding to the system hierarchy; syntactically they are defined as device corresponding to the system hierarchy; syntactically they are defined as device
tree nodes. tree nodes.
The remainder of this document provides the topology bindings for ARM, based Currently, only ARM/RISC-V intend to use this cpu topology binding but it may be
on the Devicetree Specification, available from: used for any other architecture as well.
https://www.devicetree.org/specifications/ The cpu nodes, as per bindings defined in [4], represent the devices that
correspond to physical CPUs and are to be mapped to the hierarchy levels.
If not stated otherwise, whenever a reference to a cpu node phandle is made its
value must point to a cpu node compliant with the cpu node bindings as
documented in [1].
A topology description containing phandles to cpu nodes that are not compliant A topology description containing phandles to cpu nodes that are not compliant
with bindings standardized in [1] is therefore considered invalid. with bindings standardized in [4] is therefore considered invalid.
=========================================== ===========================================
2 - cpu-map node 2 - cpu-map node
=========================================== ===========================================
The ARM CPU topology is defined within the cpu-map node, which is a direct The ARM/RISC-V CPU topology is defined within the cpu-map node, which is a direct
child of the cpus node and provides a container where the actual topology child of the cpus node and provides a container where the actual topology
nodes are listed. nodes are listed.
- cpu-map node - cpu-map node
Usage: Optional - On ARM SMP systems provide CPUs topology to the OS. Usage: Optional - On SMP systems provide CPUs topology to the OS.
ARM uniprocessor systems do not require a topology Uniprocessor systems do not require a topology
description and therefore should not define a description and therefore should not define a
cpu-map node. cpu-map node.
...@@ -494,8 +489,65 @@ cpus { ...@@ -494,8 +489,65 @@ cpus {
}; };
}; };
Example 3: HiFive Unleashed (RISC-V 64 bit, 4 core system)
{
#address-cells = <2>;
#size-cells = <2>;
compatible = "sifive,fu540g", "sifive,fu500";
model = "sifive,hifive-unleashed-a00";
...
cpus {
#address-cells = <1>;
#size-cells = <0>;
cpu-map {
socket0 {
cluster0 {
core0 {
cpu = <&CPU1>;
};
core1 {
cpu = <&CPU2>;
};
core2 {
cpu0 = <&CPU2>;
};
core3 {
cpu0 = <&CPU3>;
};
};
};
};
CPU1: cpu@1 {
device_type = "cpu";
compatible = "sifive,rocket0", "riscv";
reg = <0x1>;
}
CPU2: cpu@2 {
device_type = "cpu";
compatible = "sifive,rocket0", "riscv";
reg = <0x2>;
}
CPU3: cpu@3 {
device_type = "cpu";
compatible = "sifive,rocket0", "riscv";
reg = <0x3>;
}
CPU4: cpu@4 {
device_type = "cpu";
compatible = "sifive,rocket0", "riscv";
reg = <0x4>;
}
}
};
=============================================================================== ===============================================================================
[1] ARM Linux kernel documentation [1] ARM Linux kernel documentation
Documentation/devicetree/bindings/arm/cpus.yaml Documentation/devicetree/bindings/arm/cpus.yaml
[2] Devicetree NUMA binding description [2] Devicetree NUMA binding description
Documentation/devicetree/bindings/numa.txt Documentation/devicetree/bindings/numa.txt
[3] RISC-V Linux kernel documentation
Documentation/devicetree/bindings/riscv/cpus.txt
[4] https://www.devicetree.org/specifications/
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment