[PATCH RFC 13/15] dt-bindings: arm: Fix MPAM MSC binding schema and examples

From: Yin Li

Date: Tue Aug 11 2026 - 09:50:29 EST


Fix multiple issues in the MPAM MSC device tree binding:

Schema fixes:
- Move maintainers field before description to follow standard field order
- Change compatible from fixed items list to oneOf to allow both standalone
arm,mpam-msc and the two-item arm,mpam-memory-controller-msc +
arm,mpam-msc combination
- Constrain numa-node-id as uint32 with description instead of
unconstrained
- Add phandle-array type constraint to cpus property
- Fix bracket spacing to pass yamllint

Example fixes:
- Replace arm,dsu-l3-cache with foo,a-l3-cache (no upstream schema exists)
- Fix msc@41000 reg address from 0x0 to 0x41000 to match unit-address
- Fix ris@2 reg value from 0 to 2 to match unit-address
- Add arm,mpam-device phandle reference and remove TODO comment
- Remove unnecessary blank lines for consistency

Co-developed-by: Huang Yiwei <huang.yiwei@xxxxxxxxxxxxxxxx>
Signed-off-by: Huang Yiwei <huang.yiwei@xxxxxxxxxxxxxxxx>
Signed-off-by: Yin Li <yin.li@xxxxxxxxxxxxxxxx>
---
.../devicetree/bindings/arm/arm,mpam-msc.yaml | 39 ++++++++++++----------
1 file changed, 21 insertions(+), 18 deletions(-)

diff --git a/Documentation/devicetree/bindings/arm/arm,mpam-msc.yaml b/Documentation/devicetree/bindings/arm/arm,mpam-msc.yaml
index 53a6fdbbf05f..3c7b13a23ff2 100644
--- a/Documentation/devicetree/bindings/arm/arm,mpam-msc.yaml
+++ b/Documentation/devicetree/bindings/arm/arm,mpam-msc.yaml
@@ -6,19 +6,21 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#

title: Arm Memory System Resource Partitioning and Monitoring (MPAM)

+maintainers:
+ - Rob Herring <robh@xxxxxxxxxx>
+
description: |
The Arm MPAM specification can be found here:

https://developer.arm.com/documentation/ddi0598/latest

-maintainers:
- - Rob Herring <robh@xxxxxxxxxx>
-
properties:
compatible:
- items:
+ oneOf:
- const: arm,mpam-msc # Further details are discoverable
- - const: arm,mpam-memory-controller-msc
+ - items:
+ - const: arm,mpam-memory-controller-msc
+ - const: arm,mpam-msc

reg:
maxItems: 1
@@ -34,7 +36,7 @@ properties:
interrupt-names:
oneOf:
- items:
- - enum: [ error, overflow ]
+ - enum: [error, overflow]
- items:
- const: error
- const: overflow
@@ -44,7 +46,9 @@ properties:
accurate after a settings change. For more information, see the
Not-Ready (NRDY) bit description in the MPAM specification.

- numa-node-id: true # see NUMA binding
+ numa-node-id:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description: NUMA node identifier for the memory resource this MSC controls.

'#address-cells':
const: 1
@@ -72,16 +76,17 @@ patternProperties:
maximum: 0xf

cpus:
+ $ref: /schemas/types.yaml#/definitions/phandle-array
description:
- Phandle(s) to the CPU node(s) this RIS belongs to. By default, the parent
- device's affinity is used.
+ Phandle(s) to the CPU node(s) this RIS belongs to. By default, the
+ parent device's affinity is used.

arm,mpam-device:
$ref: /schemas/types.yaml#/definitions/phandle
description:
By default, the MPAM enabled device associated with a RIS is the MSC's
- parent node. It is possible for each RIS to be associated with different
- devices in which case 'arm,mpam-device' should be used.
+ parent node. It is possible for each RIS to be associated with
+ different devices in which case 'arm,mpam-device' should be used.

required:
- compatible
@@ -92,14 +97,14 @@ required:
- reg

dependencies:
- interrupts: [ interrupt-names ]
+ interrupts: [interrupt-names]

additionalProperties: false

examples:
- |
L3: cache-controller@30000000 {
- compatible = "arm,dsu-l3-cache", "cache";
+ compatible = "foo,a-l3-cache", "cache";
cache-level = <3>;
cache-unified;

@@ -109,7 +114,6 @@ examples:

msc@10000 {
compatible = "arm,mpam-msc";
-
reg = <0x10000 0x2000>;
interrupts = <1>, <2>;
interrupt-names = "error", "overflow";
@@ -145,7 +149,7 @@ examples:

msc@41000 {
compatible = "arm,mpam-msc";
- reg = <0 0x1000>;
+ reg = <0x41000 0x1000>;
interrupts = <5>, <6>;
interrupt-names = "error", "overflow";
arm,not-ready-us = <1>;
@@ -155,8 +159,8 @@ examples:

ris@2 {
compatible = "arm,mpam-cache";
- reg = <0>;
- // TODO: How to map to device(s)?
+ reg = <2>;
+ arm,mpam-device = <&L3>;
};
};
};
@@ -173,7 +177,6 @@ examples:

msc@10000 {
compatible = "arm,mpam-msc";
-
reg = <0x10000 0x2000>;
interrupts = <7>;
interrupt-names = "overflow";

--
2.34.1