Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

arm64: dts: sprd: Split PMU nodes for heterogeneous CPUs

Arm heterogeneous configurations should have separate PMU nodes for each
CPU uarch as the uarch specific events can be different. The
"arm,armv8-pmuv3" compatible is also intended for s/w models rather than
specific uarch implementations.

Signed-off-by: Rob Herring <robh@kernel.org>
Link: https://lore.kernel.org/r/20240412222923.3873814-1-robh@kernel.org
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>

authored by

Rob Herring and committed by
Krzysztof Kozlowski
b32e036a 1613e604

+20 -8
+10 -4
arch/arm64/boot/dts/sprd/ums512.dtsi
··· 136 136 <GIC_PPI 10 IRQ_TYPE_LEVEL_HIGH>; /* Hipervisor PPI */ 137 137 }; 138 138 139 - pmu { 140 - compatible = "arm,armv8-pmuv3"; 139 + pmu-a55 { 140 + compatible = "arm,cortex-a55-pmu"; 141 141 interrupts = <GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>, 142 142 <GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>, 143 143 <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>, 144 144 <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>, 145 145 <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>, 146 - <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>, 147 - <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>, 146 + <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>; 147 + interrupt-affinity = <&CPU0>, <&CPU1>, <&CPU2>, <&CPU3>, <&CPU4>, <&CPU5>; 148 + }; 149 + 150 + pmu-a75 { 151 + compatible = "arm,cortex-a75-pmu"; 152 + interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>, 148 153 <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>; 154 + interrupt-affinity = <&CPU6>, <&CPU7>; 149 155 }; 150 156 151 157 soc: soc {
+10 -4
arch/arm64/boot/dts/sprd/ums9620.dtsi
··· 144 144 <GIC_PPI 10 IRQ_TYPE_LEVEL_HIGH>; /* Hipervisor PPI */ 145 145 }; 146 146 147 - pmu { 148 - compatible = "arm,armv8-pmuv3"; 147 + pmu-a55 { 148 + compatible = "arm,cortex-a55-pmu"; 149 149 interrupts = <GIC_SPI 177 IRQ_TYPE_LEVEL_HIGH>, 150 150 <GIC_SPI 178 IRQ_TYPE_LEVEL_HIGH>, 151 151 <GIC_SPI 179 IRQ_TYPE_LEVEL_HIGH>, 152 - <GIC_SPI 180 IRQ_TYPE_LEVEL_HIGH>, 153 - <GIC_SPI 181 IRQ_TYPE_LEVEL_HIGH>, 152 + <GIC_SPI 180 IRQ_TYPE_LEVEL_HIGH>; 153 + interrupt-affinity = <&CPU0>, <&CPU1>, <&CPU2>, <&CPU3>; 154 + }; 155 + 156 + pmu-a76 { 157 + compatible = "arm,cortex-a76-pmu"; 158 + interrupts = <GIC_SPI 181 IRQ_TYPE_LEVEL_HIGH>, 154 159 <GIC_SPI 182 IRQ_TYPE_LEVEL_HIGH>, 155 160 <GIC_SPI 183 IRQ_TYPE_LEVEL_HIGH>, 156 161 <GIC_SPI 184 IRQ_TYPE_LEVEL_HIGH>; 162 + interrupt-affinity = <&CPU4>, <&CPU5>, <&CPU6>, <&CPU7>; 157 163 }; 158 164 159 165 soc: soc {