[PATCH DNM v4 6/6] arm64: dts: qcom: kaanapali: Add MPAM MSC nodes for the L2 caches
From: Yin Li
Date: Wed Oct 28 2026 - 07:49:25 EST
Add an MPAM MSC device node for each L2 cache. Each MSC is nested
directly under its L2 cache node so that the cache node is the MSC's
parent device and its CPU affinity is derived from that cache.
The L2 cache nodes are placed directly under the root node, using
'ranges' to map the MSC's register region to the physical address space.
The MSC register size is 0x2000: the Kaanapali platform implements the
MPAM registers up to offset 0x1FFF as permitted by the MPAM
specification when MPAMCFG_MBW_PBM is not implemented.
The nodes are disabled by default. Production firmware does not expose
MSC register access to the OS, so these nodes can only be enabled on a
local test setup where firmware permits direct MMIO access to the MSCs.
This DTS is therefore only an example for other platform DT authors and
is not intended to be merged.
Co-developed-by: Huang Yiwei <huang.yiwei@xxxxxxxxxxxxxxxx>
Signed-off-by: Huang Yiwei <huang.yiwei@xxxxxxxxxxxxxxxx>
Signed-off-by: Yin Li <yin.li@xxxxxxxxxxxxxxxx>
---
arch/arm64/boot/dts/qcom/kaanapali.dtsi | 52 +++++++++++++++++++++++++--------
1 file changed, 40 insertions(+), 12 deletions(-)
diff --git a/arch/arm64/boot/dts/qcom/kaanapali.dtsi b/arch/arm64/boot/dts/qcom/kaanapali.dtsi
index e48a179d0722..10aee29a1ba8 100644
--- a/arch/arm64/boot/dts/qcom/kaanapali.dtsi
+++ b/arch/arm64/boot/dts/qcom/kaanapali.dtsi
@@ -49,12 +49,6 @@ cpu0: cpu@0 {
power-domains = <&cpu_pd0>, <&scmi_perf 0>;
power-domain-names = "psci", "perf";
#cooling-cells = <2>;
-
- l2_0: l2-cache {
- compatible = "cache";
- cache-level = <2>;
- cache-unified;
- };
};
cpu1: cpu@100 {
@@ -121,12 +115,6 @@ cpu6: cpu@10000 {
power-domains = <&cpu_pd6>, <&scmi_perf 1>;
power-domain-names = "psci", "perf";
#cooling-cells = <2>;
-
- l2_1: l2-cache {
- compatible = "cache";
- cache-level = <2>;
- cache-unified;
- };
};
cpu7: cpu@10100 {
@@ -532,6 +520,46 @@ soccp_smp2p_in: slave-kernel {
};
};
+ l2_0: cache@19870000 {
+ compatible = "qcom,kaanapali-l2-cache", "cache";
+ cache-level = <2>;
+ cache-unified;
+ cache-size = <0xc00000>;
+ reg = <0x0 0x19870000 0x0 0x2000>;
+ ranges = <0x0 0x0 0x19870000 0x2000>;
+
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ msc@0 {
+ compatible = "arm,mpam-msc";
+ reg = <0x0 0x2000>;
+ arm,not-ready-us = <1>;
+ status = "disabled";
+ };
+
+ };
+
+ l2_1: cache@1a870000 {
+ compatible = "qcom,kaanapali-l2-cache", "cache";
+ cache-level = <2>;
+ cache-unified;
+ cache-size = <0xc00000>;
+ reg = <0x0 0x1a870000 0x0 0x2000>;
+ ranges = <0x0 0x0 0x1a870000 0x2000>;
+
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ msc@0 {
+ compatible = "arm,mpam-msc";
+ reg = <0x0 0x2000>;
+ arm,not-ready-us = <1>;
+ status = "disabled";
+ };
+
+ };
+
soc: soc@0 {
compatible = "simple-bus";
--
2.34.1