arm64: dts: tegra: CPU and cache node updates
Subsystems (2)
cover arm64: dts: tegra: CPU and cache node updates
- Fixes for Tegra234/264 device tree CPU compatible string.
- Populate CPU and L2 cache nodes for Tegra264.
Sumit Gupta (3):
arm64: dts: tegra234: Fix CPU compatible string to cortex-a78ae
arm64: dts: tegra264: Fix CPU1 node unit-address
arm64: dts: tegra264: Populate CPU and L2 cache nodes
arch/arm64/boot/dts/nvidia/tegra234.dtsi | 24 +- arch/arm64/boot/dts/nvidia/tegra264.dtsi | 323 ++++++++++++++++++++++- 2 files changed, 334 insertions(+), 13 deletions(-)
Signature · 1 line
2.34.1
PATCH 1/3 arm64: dts: tegra234: Fix CPU compatible string to cortex-a78ae
The Tegra234 SoC uses Cortex-A78AE cores, not Cortex-A78. Update the compatible string for all CPU nodes to match the actual hardware.
Tegra234 hardware reports:
# head /proc/cpuinfo | egrep 'implementer|part' CPU implementer : 0x41 CPU part : 0xd42
Which maps to (from arch/arm64/include/asm/cputype.h):
#define ARM_CPU_IMP_ARM 0x41
#define ARM_CPU_PART_CORTEX_A78AE 0xD42
--- arch/arm64/boot/dts/nvidia/tegra234.dtsi | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-)
arch/arm64/boot/dts/nvidia/tegra234.dtsi +12 -12
@@ -5339,7 +5339,7 @@ cpus { #size-cells = <0>; cpu0_0: cpu@0 { - compatible = "arm,cortex-a78"; + compatible = "arm,cortex-a78ae"; device_type = "cpu"; reg = <0x00000>;
@@ -5358,7 +5358,7 @@ cpu0_0: cpu@0 { }; cpu0_1: cpu@100 { - compatible = "arm,cortex-a78"; + compatible = "arm,cortex-a78ae"; device_type = "cpu"; reg = <0x00100>;
@@ -5377,7 +5377,7 @@ cpu0_1: cpu@100 { }; cpu0_2: cpu@200 { - compatible = "arm,cortex-a78"; + compatible = "arm,cortex-a78ae"; device_type = "cpu"; reg = <0x00200>;
@@ -5396,7 +5396,7 @@ cpu0_2: cpu@200 { }; cpu0_3: cpu@300 { - compatible = "arm,cortex-a78"; + compatible = "arm,cortex-a78ae"; device_type = "cpu"; reg = <0x00300>;
@@ -5415,7 +5415,7 @@ cpu0_3: cpu@300 { }; cpu1_0: cpu@10000 { - compatible = "arm,cortex-a78"; + compatible = "arm,cortex-a78ae"; device_type = "cpu"; reg = <0x10000>;
@@ -5434,7 +5434,7 @@ cpu1_0: cpu@10000 { }; cpu1_1: cpu@10100 { - compatible = "arm,cortex-a78"; + compatible = "arm,cortex-a78ae"; device_type = "cpu"; reg = <0x10100>;
@@ -5453,7 +5453,7 @@ cpu1_1: cpu@10100 { }; cpu1_2: cpu@10200 { - compatible = "arm,cortex-a78"; + compatible = "arm,cortex-a78ae"; device_type = "cpu"; reg = <0x10200>;
@@ -5472,7 +5472,7 @@ cpu1_2: cpu@10200 { }; cpu1_3: cpu@10300 { - compatible = "arm,cortex-a78"; + compatible = "arm,cortex-a78ae"; device_type = "cpu"; reg = <0x10300>;
@@ -5491,7 +5491,7 @@ cpu1_3: cpu@10300 { }; cpu2_0: cpu@20000 { - compatible = "arm,cortex-a78"; + compatible = "arm,cortex-a78ae"; device_type = "cpu"; reg = <0x20000>;
@@ -5510,7 +5510,7 @@ cpu2_0: cpu@20000 { }; cpu2_1: cpu@20100 { - compatible = "arm,cortex-a78"; + compatible = "arm,cortex-a78ae"; device_type = "cpu"; reg = <0x20100>;
@@ -5529,7 +5529,7 @@ cpu2_1: cpu@20100 { }; cpu2_2: cpu@20200 { - compatible = "arm,cortex-a78"; + compatible = "arm,cortex-a78ae"; device_type = "cpu"; reg = <0x20200>;
@@ -5548,7 +5548,7 @@ cpu2_2: cpu@20200 { }; cpu2_3: cpu@20300 { - compatible = "arm,cortex-a78"; + compatible = "arm,cortex-a78ae"; device_type = "cpu"; reg = <0x20300>;
Signature · 1 line
2.34.1
PATCH 2/3 arm64: dts: tegra264: Fix CPU1 node unit-address
In reply to Sumit GuptaFix the unit-address of cpu1 node to match its reg property value.
--- arch/arm64/boot/dts/nvidia/tegra264.dtsi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm64/boot/dts/nvidia/tegra264.dtsi +1 -1
@@ -3788,7 +3788,7 @@ cpu0: cpu@0 { d-cache-sets = <256>; }; - cpu1: cpu@1 { + cpu1: cpu@10000 { compatible = "arm,neoverse-v3ae"; device_type = "cpu"; reg = <0x10000>;
Signature · 1 line
2.34.1
PATCH 3/3 arm64: dts: tegra264: Populate CPU and L2 cache nodes
In reply to Sumit GuptaAdd the remaining 12 CPU nodes and all 14 L2 cache nodes for the Tegra264 CPU Complex, which comprises up to 14 ARM Neoverse V3AE CPUs. Each CPU has its own private 1MB L2 cache.
--- arch/arm64/boot/dts/nvidia/tegra264.dtsi | 321 +++++++++++++++++++++++ 1 file changed, 321 insertions(+)
arch/arm64/boot/dts/nvidia/tegra264.dtsi +321 -0
@@ -3786,6 +3786,7 @@ cpu0: cpu@0 { d-cache-size = <65536>; d-cache-line-size = <64>; d-cache-sets = <256>; + next-level-cache = <&l2c0>; }; cpu1: cpu@10000 {
@@ -3801,7 +3802,327 @@ cpu1: cpu@10000 { d-cache-size = <65536>; d-cache-line-size = <64>; d-cache-sets = <256>; + next-level-cache = <&l2c1>; }; + + cpu2: cpu@20000 { + compatible = "arm,neoverse-v3ae"; + device_type = "cpu"; + reg = <0x20000>; + + enable-method = "psci"; + + i-cache-size = <65536>; + i-cache-line-size = <64>; + i-cache-sets = <256>; + d-cache-size = <65536>; + d-cache-line-size = <64>; + d-cache-sets = <256>; + next-level-cache = <&l2c2>; + }; + + cpu3: cpu@30000 { + compatible = "arm,neoverse-v3ae"; + device_type = "cpu"; + reg = <0x30000>; + + enable-method = "psci"; + + i-cache-size = <65536>; + i-cache-line-size = <64>; + i-cache-sets = <256>; + d-cache-size = <65536>; + d-cache-line-size = <64>; + d-cache-sets = <256>; + next-level-cache = <&l2c3>; + }; + + cpu4: cpu@40000 { + compatible = "arm,neoverse-v3ae"; + device_type = "cpu"; + reg = <0x40000>; + + enable-method = "psci"; + + i-cache-size = <65536>; + i-cache-line-size = <64>; + i-cache-sets = <256>; + d-cache-size = <65536>; + d-cache-line-size = <64>; + d-cache-sets = <256>; + next-level-cache = <&l2c4>; + }; + + cpu5: cpu@50000 { + compatible = "arm,neoverse-v3ae"; + device_type = "cpu"; + reg = <0x50000>; + + enable-method = "psci"; + + i-cache-size = <65536>; + i-cache-line-size = <64>; + i-cache-sets = <256>; + d-cache-size = <65536>; + d-cache-line-size = <64>; + d-cache-sets = <256>; + next-level-cache = <&l2c5>; + }; + + cpu6: cpu@60000 { + compatible = "arm,neoverse-v3ae"; + device_type = "cpu"; + reg = <0x60000>; + + enable-method = "psci"; + + i-cache-size = <65536>; + i-cache-line-size = <64>; + i-cache-sets = <256>; + d-cache-size = <65536>; + d-cache-line-size = <64>; + d-cache-sets = <256>; + next-level-cache = <&l2c6>; + }; + + cpu7: cpu@70000 { + compatible = "arm,neoverse-v3ae"; + device_type = "cpu"; + reg = <0x70000>; + + enable-method = "psci"; + + i-cache-size = <65536>; + i-cache-line-size = <64>; + i-cache-sets = <256>; + d-cache-size = <65536>; + d-cache-line-size = <64>; + d-cache-sets = <256>; + next-level-cache = <&l2c7>; + }; + + cpu8: cpu@80000 { + compatible = "arm,neoverse-v3ae"; + device_type = "cpu"; + reg = <0x80000>; + + enable-method = "psci"; + + i-cache-size = <65536>; + i-cache-line-size = <64>; + i-cache-sets = <256>; + d-cache-size = <65536>; + d-cache-line-size = <64>; + d-cache-sets = <256>; + next-level-cache = <&l2c8>; + }; + + cpu9: cpu@90000 { + compatible = "arm,neoverse-v3ae"; + device_type = "cpu"; + reg = <0x90000>; + + enable-method = "psci"; + + i-cache-size = <65536>; + i-cache-line-size = <64>; + i-cache-sets = <256>; + d-cache-size = <65536>; + d-cache-line-size = <64>; + d-cache-sets = <256>; + next-level-cache = <&l2c9>; + }; + + cpu10: cpu@a0000 { + compatible = "arm,neoverse-v3ae"; + device_type = "cpu"; + reg = <0xa0000>; + + enable-method = "psci"; + + i-cache-size = <65536>; + i-cache-line-size = <64>; + i-cache-sets = <256>; + d-cache-size = <65536>; + d-cache-line-size = <64>; + d-cache-sets = <256>; + next-level-cache = <&l2c10>; + }; + + cpu11: cpu@b0000 { + compatible = "arm,neoverse-v3ae"; + device_type = "cpu"; + reg = <0xb0000>; + + enable-method = "psci"; + + i-cache-size = <65536>; + i-cache-line-size = <64>; + i-cache-sets = <256>; + d-cache-size = <65536>; + d-cache-line-size = <64>; + d-cache-sets = <256>; + next-level-cache = <&l2c11>; + }; + + cpu12: cpu@c0000 { + compatible = "arm,neoverse-v3ae"; + device_type = "cpu"; + reg = <0xc0000>; + + enable-method = "psci"; + + i-cache-size = <65536>; + i-cache-line-size = <64>; + i-cache-sets = <256>; + d-cache-size = <65536>; + d-cache-line-size = <64>; + d-cache-sets = <256>; + next-level-cache = <&l2c12>; + }; + + cpu13: cpu@d0000 { + compatible = "arm,neoverse-v3ae"; + device_type = "cpu"; + reg = <0xd0000>; + + enable-method = "psci"; + + i-cache-size = <65536>; + i-cache-line-size = <64>; + i-cache-sets = <256>; + d-cache-size = <65536>; + d-cache-line-size = <64>; + d-cache-sets = <256>; + next-level-cache = <&l2c13>; + }; + + l2c0: l2-cache-0 { + compatible = "cache"; + cache-level = <2>; + cache-size = <1048576>; + cache-line-size = <64>; + cache-sets = <2048>; + cache-unified; + }; + + l2c1: l2-cache-1 { + compatible = "cache"; + cache-level = <2>; + cache-size = <1048576>; + cache-line-size = <64>; + cache-sets = <2048>; + cache-unified; + }; + + l2c2: l2-cache-2 { + compatible = "cache"; + cache-level = <2>; + cache-size = <1048576>; + cache-line-size = <64>; + cache-sets = <2048>; + cache-unified; + }; + + l2c3: l2-cache-3 { + compatible = "cache"; + cache-level = <2>; + cache-size = <1048576>; + cache-line-size = <64>; + cache-sets = <2048>; + cache-unified; + }; + + l2c4: l2-cache-4 { + compatible = "cache"; + cache-level = <2>; + cache-size = <1048576>; + cache-line-size = <64>; + cache-sets = <2048>; + cache-unified; + }; + + l2c5: l2-cache-5 { + compatible = "cache"; + cache-level = <2>; + cache-size = <1048576>; + cache-line-size = <64>; + cache-sets = <2048>; + cache-unified; + }; + + l2c6: l2-cache-6 { + compatible = "cache"; + cache-level = <2>; + cache-size = <1048576>; + cache-line-size = <64>; + cache-sets = <2048>; + cache-unified; + }; + + l2c7: l2-cache-7 { + compatible = "cache"; + cache-level = <2>; + cache-size = <1048576>; + cache-line-size = <64>; + cache-sets = <2048>; + cache-unified; + }; + + l2c8: l2-cache-8 { + compatible = "cache"; + cache-level = <2>; + cache-size = <1048576>; + cache-line-size = <64>; + cache-sets = <2048>; + cache-unified; + }; + + l2c9: l2-cache-9 { + compatible = "cache"; + cache-level = <2>; + cache-size = <1048576>; + cache-line-size = <64>; + cache-sets = <2048>; + cache-unified; + }; + + l2c10: l2-cache-10 { + compatible = "cache"; + cache-level = <2>; + cache-size = <1048576>; + cache-line-size = <64>; + cache-sets = <2048>; + cache-unified; + }; + + l2c11: l2-cache-11 { + compatible = "cache"; + cache-level = <2>; + cache-size = <1048576>; + cache-line-size = <64>; + cache-sets = <2048>; + cache-unified; + }; + + l2c12: l2-cache-12 { + compatible = "cache"; + cache-level = <2>; + cache-size = <1048576>; + cache-line-size = <64>; + cache-sets = <2048>; + cache-unified; + }; + + l2c13: l2-cache-13 { + compatible = "cache"; + cache-level = <2>; + cache-size = <1048576>; + cache-line-size = <64>; + cache-sets = <2048>; + cache-unified; + }; + }; bpmp: bpmp {
Signature · 1 line
2.34.1
Quoted 12 lines · Sumit Gupta
- Fixes for Tegra234/264 device tree CPU compatible string.
- Populate CPU and L2 cache nodes for Tegra264.Sumit Gupta (3):
arm64: dts: tegra234: Fix CPU compatible string to cortex-a78ae
arm64: dts: tegra264: Fix CPU1 node unit-address
arm64: dts: tegra264: Populate CPU and L2 cache nodesarch/arm64/boot/dts/nvidia/tegra234.dtsi | 24 +- arch/arm64/boot/dts/nvidia/tegra264.dtsi | 323 ++++++++++++++++++++++- 2 files changed, 334 insertions(+), 13 deletions(-)
A gentle reminder on this series, which got missed and is pending.
I have verified it still applies cleanly on top of linux-next. Please take a look when you get a chance.
Thanks,
Sumit
From: Thierry Reding <[email protected]>
Quoted 9 lines · Sumit Gupta
- Fixes for Tegra234/264 device tree CPU compatible string.
- Populate CPU and L2 cache nodes for Tegra264.Sumit Gupta (3):
arm64: dts: tegra234: Fix CPU compatible string to cortex-a78ae
arm64: dts: tegra264: Fix CPU1 node unit-address
arm64: dts: tegra264: Populate CPU and L2 cache nodes[...]
Applied, thanks!
[1/3] arm64: dts: tegra234: Fix CPU compatible string to cortex-a78ae
commit: 2e1f4664c1be73065070d8b380a3c7440f98f6a4
[2/3] arm64: dts: tegra264: Fix CPU1 node unit-address
commit: c003ea35f934a9e6672ea02778f07f08cb6f13ad
[3/3] arm64: dts: tegra264: Populate CPU and L2 cache nodes
commit: 1199de78b2ca6439e83a565fe39eb4fed67d70b8Best regards,
Signature · 1 line
Thierry Reding <[email protected]>