Message ID | 20221111162729.3381835-1-robh@kernel.org (mailing list archive) |
---|---|
State | Handled Elsewhere, archived |
Headers | show |
Series | dt-bindings: thermal: thermal-idle: Fix example paths | expand |
On Fri, 11 Nov 2022 10:27:29 -0600, Rob Herring wrote: > The reference by path (&{/cpus/cpu@101/thermal-idle}) in the example causes > an error with new version of dtc: > > FATAL ERROR: Can't generate fixup for reference to path &{/cpus/cpu@100/thermal-idle} > > This is because the examples are built as an overlay and absolute paths > are not valid as references must be by label. The path was also not > resolvable because, by default, examples are placed under 'example-N' > nodes. > > As the example contains top-level nodes, the root node must be explicit for > the example to be extracted as-is. This changes the indentation for the > whole example, but the existing indentation is a mess of of random amounts. > Clean this up to be 4 spaces everywhere. > > Signed-off-by: Rob Herring <robh@kernel.org> > --- > The dtc update is in my tree, so I'd prefer to take this via the DT > tree. > > .../bindings/thermal/thermal-idle.yaml | 154 +++++++++--------- > 1 file changed, 80 insertions(+), 74 deletions(-) > Applied, thanks!
On 11/11/2022 17:27, Rob Herring wrote: > The reference by path (&{/cpus/cpu@101/thermal-idle}) in the example causes > an error with new version of dtc: > > FATAL ERROR: Can't generate fixup for reference to path &{/cpus/cpu@100/thermal-idle} > > This is because the examples are built as an overlay and absolute paths > are not valid as references must be by label. The path was also not > resolvable because, by default, examples are placed under 'example-N' > nodes. > > As the example contains top-level nodes, the root node must be explicit for > the example to be extracted as-is. This changes the indentation for the > whole example, but the existing indentation is a mess of of random amounts. > Clean this up to be 4 spaces everywhere. > > Signed-off-by: Rob Herring <robh@kernel.org> > --- > The dtc update is in my tree, so I'd prefer to take this via the DT > tree. > > .../bindings/thermal/thermal-idle.yaml | 154 +++++++++--------- > 1 file changed, 80 insertions(+), 74 deletions(-) > > diff --git a/Documentation/devicetree/bindings/thermal/thermal-idle.yaml b/Documentation/devicetree/bindings/thermal/thermal-idle.yaml > index cc938d7ad1f3..72d85eb64247 100644 > --- a/Documentation/devicetree/bindings/thermal/thermal-idle.yaml > +++ b/Documentation/devicetree/bindings/thermal/thermal-idle.yaml > @@ -48,99 +48,105 @@ additionalProperties: false > > examples: > - | > - #include <dt-bindings/thermal/thermal.h> > + /{ > + #include <dt-bindings/thermal/thermal.h> > > - // Example: Combining idle cooling device on big CPUs with cpufreq cooling device > - cpus { > + compatible = "foo"; > + model = "foo"; > + #address-cells = <1>; > + #size-cells = <1>; > + > + // Example: Combining idle cooling device on big CPUs with cpufreq cooling device > + cpus { > #address-cells = <2>; > #size-cells = <0>; > > /* ... */ > > - cpu_b0: cpu@100 { > - device_type = "cpu"; > - compatible = "arm,cortex-a72"; > - reg = <0x0 0x100>; > - enable-method = "psci"; > - capacity-dmips-mhz = <1024>; > - dynamic-power-coefficient = <436>; > - #cooling-cells = <2>; /* min followed by max */ > - cpu-idle-states = <&CPU_SLEEP>, <&CLUSTER_SLEEP>; > - thermal-idle { > - #cooling-cells = <2>; > - duration-us = <10000>; > - exit-latency-us = <500>; > - }; > + cpu_b0: cpu@100 { > + device_type = "cpu"; > + compatible = "arm,cortex-a72"; > + reg = <0x0 0x100>; > + enable-method = "psci"; > + capacity-dmips-mhz = <1024>; > + dynamic-power-coefficient = <436>; > + #cooling-cells = <2>; /* min followed by max */ > + cpu-idle-states = <&CPU_SLEEP>, <&CLUSTER_SLEEP>; > + thermal-idle { > + #cooling-cells = <2>; > + duration-us = <10000>; > + exit-latency-us = <500>; > + }; > + }; > + > + cpu_b1: cpu@101 { > + device_type = "cpu"; > + compatible = "arm,cortex-a72"; > + reg = <0x0 0x101>; > + enable-method = "psci"; > + capacity-dmips-mhz = <1024>; > + dynamic-power-coefficient = <436>; > + #cooling-cells = <2>; /* min followed by max */ > + cpu-idle-states = <&CPU_SLEEP>, <&CLUSTER_SLEEP>; > + thermal-idle { > + #cooling-cells = <2>; > + duration-us = <10000>; > + exit-latency-us = <500>; > }; > + }; > > - cpu_b1: cpu@101 { > - device_type = "cpu"; > - compatible = "arm,cortex-a72"; > - reg = <0x0 0x101>; > - enable-method = "psci"; > - capacity-dmips-mhz = <1024>; > - dynamic-power-coefficient = <436>; > - #cooling-cells = <2>; /* min followed by max */ > - cpu-idle-states = <&CPU_SLEEP>, <&CLUSTER_SLEEP>; > - thermal-idle { > - #cooling-cells = <2>; > - duration-us = <10000>; > - exit-latency-us = <500>; > - }; > - }; > - > - /* ... */ > + /* ... */ > > - }; > + }; > > - /* ... */ > + /* ... */ > > - thermal_zones { > - cpu_thermal: cpu { > + thermal_zones { > + cpu_thermal: cpu { > polling-delay-passive = <100>; > polling-delay = <1000>; > > /* ... */ > > trips { > - cpu_alert0: cpu_alert0 { > - temperature = <65000>; > - hysteresis = <2000>; > - type = "passive"; > - }; > - > - cpu_alert1: cpu_alert1 { > - temperature = <70000>; > - hysteresis = <2000>; > - type = "passive"; > - }; > - > - cpu_alert2: cpu_alert2 { > - temperature = <75000>; > - hysteresis = <2000>; > - type = "passive"; > - }; > - > - cpu_crit: cpu_crit { > - temperature = <95000>; > - hysteresis = <2000>; > - type = "critical"; > - }; > + cpu_alert0: cpu_alert0 { > + temperature = <65000>; > + hysteresis = <2000>; > + type = "passive"; > + }; > + > + cpu_alert1: cpu_alert1 { > + temperature = <70000>; > + hysteresis = <2000>; > + type = "passive"; > + }; > + > + cpu_alert2: cpu_alert2 { > + temperature = <75000>; > + hysteresis = <2000>; > + type = "passive"; > + }; > + > + cpu_crit: cpu_crit { > + temperature = <95000>; > + hysteresis = <2000>; > + type = "critical"; > + }; > }; > > cooling-maps { > - map0 { > - trip = <&cpu_alert1>; > - cooling-device = <&{/cpus/cpu@100/thermal-idle} 0 15 >, > - <&{/cpus/cpu@101/thermal-idle} 0 15>; > - }; > - > - map1 { > - trip = <&cpu_alert2>; > - cooling-device = > - <&cpu_b0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, > - <&cpu_b1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; > - }; > + map0 { > + trip = <&cpu_alert1>; > + cooling-device = <&cpu_b0 0 15 >, > + <&cpu_b1 0 15>; This is pointing to the DVFS cooling device, not the idle cooling device. Should it be <&cpu_b0_idle 0 15> and that label defined in thermal_idle ? > + }; > + > + map1 { > + trip = <&cpu_alert2>; > + cooling-device = <&cpu_b0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, > + <&cpu_b1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; > + }; > }; > - }; > + }; > + }; > };
On Tue, Dec 6, 2022 at 11:15 AM Daniel Lezcano <daniel.lezcano@linaro.org> wrote: > > On 11/11/2022 17:27, Rob Herring wrote: > > The reference by path (&{/cpus/cpu@101/thermal-idle}) in the example causes > > an error with new version of dtc: > > > > FATAL ERROR: Can't generate fixup for reference to path &{/cpus/cpu@100/thermal-idle} > > > > This is because the examples are built as an overlay and absolute paths > > are not valid as references must be by label. The path was also not > > resolvable because, by default, examples are placed under 'example-N' > > nodes. > > > > As the example contains top-level nodes, the root node must be explicit for > > the example to be extracted as-is. This changes the indentation for the > > whole example, but the existing indentation is a mess of of random amounts. > > Clean this up to be 4 spaces everywhere. > > > > Signed-off-by: Rob Herring <robh@kernel.org> > > --- > > The dtc update is in my tree, so I'd prefer to take this via the DT > > tree. > > > > .../bindings/thermal/thermal-idle.yaml | 154 +++++++++--------- > > 1 file changed, 80 insertions(+), 74 deletions(-) > > > > diff --git a/Documentation/devicetree/bindings/thermal/thermal-idle.yaml b/Documentation/devicetree/bindings/thermal/thermal-idle.yaml > > index cc938d7ad1f3..72d85eb64247 100644 > > --- a/Documentation/devicetree/bindings/thermal/thermal-idle.yaml > > +++ b/Documentation/devicetree/bindings/thermal/thermal-idle.yaml > > @@ -48,99 +48,105 @@ additionalProperties: false > > > > examples: > > - | > > - #include <dt-bindings/thermal/thermal.h> > > + /{ > > + #include <dt-bindings/thermal/thermal.h> > > > > - // Example: Combining idle cooling device on big CPUs with cpufreq cooling device > > - cpus { > > + compatible = "foo"; > > + model = "foo"; > > + #address-cells = <1>; > > + #size-cells = <1>; > > + > > + // Example: Combining idle cooling device on big CPUs with cpufreq cooling device > > + cpus { > > #address-cells = <2>; > > #size-cells = <0>; > > > > /* ... */ > > > > - cpu_b0: cpu@100 { > > - device_type = "cpu"; > > - compatible = "arm,cortex-a72"; > > - reg = <0x0 0x100>; > > - enable-method = "psci"; > > - capacity-dmips-mhz = <1024>; > > - dynamic-power-coefficient = <436>; > > - #cooling-cells = <2>; /* min followed by max */ > > - cpu-idle-states = <&CPU_SLEEP>, <&CLUSTER_SLEEP>; > > - thermal-idle { > > - #cooling-cells = <2>; > > - duration-us = <10000>; > > - exit-latency-us = <500>; > > - }; > > + cpu_b0: cpu@100 { > > + device_type = "cpu"; > > + compatible = "arm,cortex-a72"; > > + reg = <0x0 0x100>; > > + enable-method = "psci"; > > + capacity-dmips-mhz = <1024>; > > + dynamic-power-coefficient = <436>; > > + #cooling-cells = <2>; /* min followed by max */ > > + cpu-idle-states = <&CPU_SLEEP>, <&CLUSTER_SLEEP>; > > + thermal-idle { > > + #cooling-cells = <2>; > > + duration-us = <10000>; > > + exit-latency-us = <500>; > > + }; > > + }; > > + > > + cpu_b1: cpu@101 { > > + device_type = "cpu"; > > + compatible = "arm,cortex-a72"; > > + reg = <0x0 0x101>; > > + enable-method = "psci"; > > + capacity-dmips-mhz = <1024>; > > + dynamic-power-coefficient = <436>; > > + #cooling-cells = <2>; /* min followed by max */ > > + cpu-idle-states = <&CPU_SLEEP>, <&CLUSTER_SLEEP>; > > + thermal-idle { > > + #cooling-cells = <2>; > > + duration-us = <10000>; > > + exit-latency-us = <500>; > > }; > > + }; > > > > - cpu_b1: cpu@101 { > > - device_type = "cpu"; > > - compatible = "arm,cortex-a72"; > > - reg = <0x0 0x101>; > > - enable-method = "psci"; > > - capacity-dmips-mhz = <1024>; > > - dynamic-power-coefficient = <436>; > > - #cooling-cells = <2>; /* min followed by max */ > > - cpu-idle-states = <&CPU_SLEEP>, <&CLUSTER_SLEEP>; > > - thermal-idle { > > - #cooling-cells = <2>; > > - duration-us = <10000>; > > - exit-latency-us = <500>; > > - }; > > - }; > > - > > - /* ... */ > > + /* ... */ > > > > - }; > > + }; > > > > - /* ... */ > > + /* ... */ > > > > - thermal_zones { > > - cpu_thermal: cpu { > > + thermal_zones { > > + cpu_thermal: cpu { > > polling-delay-passive = <100>; > > polling-delay = <1000>; > > > > /* ... */ > > > > trips { > > - cpu_alert0: cpu_alert0 { > > - temperature = <65000>; > > - hysteresis = <2000>; > > - type = "passive"; > > - }; > > - > > - cpu_alert1: cpu_alert1 { > > - temperature = <70000>; > > - hysteresis = <2000>; > > - type = "passive"; > > - }; > > - > > - cpu_alert2: cpu_alert2 { > > - temperature = <75000>; > > - hysteresis = <2000>; > > - type = "passive"; > > - }; > > - > > - cpu_crit: cpu_crit { > > - temperature = <95000>; > > - hysteresis = <2000>; > > - type = "critical"; > > - }; > > + cpu_alert0: cpu_alert0 { > > + temperature = <65000>; > > + hysteresis = <2000>; > > + type = "passive"; > > + }; > > + > > + cpu_alert1: cpu_alert1 { > > + temperature = <70000>; > > + hysteresis = <2000>; > > + type = "passive"; > > + }; > > + > > + cpu_alert2: cpu_alert2 { > > + temperature = <75000>; > > + hysteresis = <2000>; > > + type = "passive"; > > + }; > > + > > + cpu_crit: cpu_crit { > > + temperature = <95000>; > > + hysteresis = <2000>; > > + type = "critical"; > > + }; > > }; > > > > cooling-maps { > > - map0 { > > - trip = <&cpu_alert1>; > > - cooling-device = <&{/cpus/cpu@100/thermal-idle} 0 15 >, > > - <&{/cpus/cpu@101/thermal-idle} 0 15>; > > - }; > > - > > - map1 { > > - trip = <&cpu_alert2>; > > - cooling-device = > > - <&cpu_b0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, > > - <&cpu_b1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; > > - }; > > + map0 { > > + trip = <&cpu_alert1>; > > + cooling-device = <&cpu_b0 0 15 >, > > + <&cpu_b1 0 15>; > > This is pointing to the DVFS cooling device, not the idle cooling > device. Should it be <&cpu_b0_idle 0 15> and that label defined in > thermal_idle ? Ah, yes indeed. I'll fix that up with a label to the correct node. And note that 'thermal-idle' needs to be added to cpu node schema. That one currently allows anything extra which I'm working on addressing. Rob
diff --git a/Documentation/devicetree/bindings/thermal/thermal-idle.yaml b/Documentation/devicetree/bindings/thermal/thermal-idle.yaml index cc938d7ad1f3..72d85eb64247 100644 --- a/Documentation/devicetree/bindings/thermal/thermal-idle.yaml +++ b/Documentation/devicetree/bindings/thermal/thermal-idle.yaml @@ -48,99 +48,105 @@ additionalProperties: false examples: - | - #include <dt-bindings/thermal/thermal.h> + /{ + #include <dt-bindings/thermal/thermal.h> - // Example: Combining idle cooling device on big CPUs with cpufreq cooling device - cpus { + compatible = "foo"; + model = "foo"; + #address-cells = <1>; + #size-cells = <1>; + + // Example: Combining idle cooling device on big CPUs with cpufreq cooling device + cpus { #address-cells = <2>; #size-cells = <0>; /* ... */ - cpu_b0: cpu@100 { - device_type = "cpu"; - compatible = "arm,cortex-a72"; - reg = <0x0 0x100>; - enable-method = "psci"; - capacity-dmips-mhz = <1024>; - dynamic-power-coefficient = <436>; - #cooling-cells = <2>; /* min followed by max */ - cpu-idle-states = <&CPU_SLEEP>, <&CLUSTER_SLEEP>; - thermal-idle { - #cooling-cells = <2>; - duration-us = <10000>; - exit-latency-us = <500>; - }; + cpu_b0: cpu@100 { + device_type = "cpu"; + compatible = "arm,cortex-a72"; + reg = <0x0 0x100>; + enable-method = "psci"; + capacity-dmips-mhz = <1024>; + dynamic-power-coefficient = <436>; + #cooling-cells = <2>; /* min followed by max */ + cpu-idle-states = <&CPU_SLEEP>, <&CLUSTER_SLEEP>; + thermal-idle { + #cooling-cells = <2>; + duration-us = <10000>; + exit-latency-us = <500>; + }; + }; + + cpu_b1: cpu@101 { + device_type = "cpu"; + compatible = "arm,cortex-a72"; + reg = <0x0 0x101>; + enable-method = "psci"; + capacity-dmips-mhz = <1024>; + dynamic-power-coefficient = <436>; + #cooling-cells = <2>; /* min followed by max */ + cpu-idle-states = <&CPU_SLEEP>, <&CLUSTER_SLEEP>; + thermal-idle { + #cooling-cells = <2>; + duration-us = <10000>; + exit-latency-us = <500>; }; + }; - cpu_b1: cpu@101 { - device_type = "cpu"; - compatible = "arm,cortex-a72"; - reg = <0x0 0x101>; - enable-method = "psci"; - capacity-dmips-mhz = <1024>; - dynamic-power-coefficient = <436>; - #cooling-cells = <2>; /* min followed by max */ - cpu-idle-states = <&CPU_SLEEP>, <&CLUSTER_SLEEP>; - thermal-idle { - #cooling-cells = <2>; - duration-us = <10000>; - exit-latency-us = <500>; - }; - }; - - /* ... */ + /* ... */ - }; + }; - /* ... */ + /* ... */ - thermal_zones { - cpu_thermal: cpu { + thermal_zones { + cpu_thermal: cpu { polling-delay-passive = <100>; polling-delay = <1000>; /* ... */ trips { - cpu_alert0: cpu_alert0 { - temperature = <65000>; - hysteresis = <2000>; - type = "passive"; - }; - - cpu_alert1: cpu_alert1 { - temperature = <70000>; - hysteresis = <2000>; - type = "passive"; - }; - - cpu_alert2: cpu_alert2 { - temperature = <75000>; - hysteresis = <2000>; - type = "passive"; - }; - - cpu_crit: cpu_crit { - temperature = <95000>; - hysteresis = <2000>; - type = "critical"; - }; + cpu_alert0: cpu_alert0 { + temperature = <65000>; + hysteresis = <2000>; + type = "passive"; + }; + + cpu_alert1: cpu_alert1 { + temperature = <70000>; + hysteresis = <2000>; + type = "passive"; + }; + + cpu_alert2: cpu_alert2 { + temperature = <75000>; + hysteresis = <2000>; + type = "passive"; + }; + + cpu_crit: cpu_crit { + temperature = <95000>; + hysteresis = <2000>; + type = "critical"; + }; }; cooling-maps { - map0 { - trip = <&cpu_alert1>; - cooling-device = <&{/cpus/cpu@100/thermal-idle} 0 15 >, - <&{/cpus/cpu@101/thermal-idle} 0 15>; - }; - - map1 { - trip = <&cpu_alert2>; - cooling-device = - <&cpu_b0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, - <&cpu_b1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; - }; + map0 { + trip = <&cpu_alert1>; + cooling-device = <&cpu_b0 0 15 >, + <&cpu_b1 0 15>; + }; + + map1 { + trip = <&cpu_alert2>; + cooling-device = <&cpu_b0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, + <&cpu_b1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; }; - }; + }; + }; };
The reference by path (&{/cpus/cpu@101/thermal-idle}) in the example causes an error with new version of dtc: FATAL ERROR: Can't generate fixup for reference to path &{/cpus/cpu@100/thermal-idle} This is because the examples are built as an overlay and absolute paths are not valid as references must be by label. The path was also not resolvable because, by default, examples are placed under 'example-N' nodes. As the example contains top-level nodes, the root node must be explicit for the example to be extracted as-is. This changes the indentation for the whole example, but the existing indentation is a mess of of random amounts. Clean this up to be 4 spaces everywhere. Signed-off-by: Rob Herring <robh@kernel.org> --- The dtc update is in my tree, so I'd prefer to take this via the DT tree. .../bindings/thermal/thermal-idle.yaml | 154 +++++++++--------- 1 file changed, 80 insertions(+), 74 deletions(-)