All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC-help needed 0/3] ARM: dts: thermal: Fix Odroid XU3-Lite overheat
@ 2016-02-17  6:55 ` Krzysztof Kozlowski
  0 siblings, 0 replies; 36+ messages in thread
From: Krzysztof Kozlowski @ 2016-02-17  6:55 UTC (permalink / raw)
  To: Kukjin Kim, Krzysztof Kozlowski, Lukasz Majewski,
	linux-arm-kernel, linux-samsung-soc, linux-kernel, linux-pm
  Cc: Zhang Rui, Eduardo Valentin, Viresh Kumar,
	Bartlomiej Zolnierkiewicz, Javier Martinez Canillas

Hi,

I mentioned overheating problem of Odroid XU3-Lite after enabling
cpufreq-dt (when busy in a quite warm room). [0]

The patchset tries to fix this by adding CPU cooling device.
Unfortunately apparently I screwed something because on next-20160216
it does not help.

The fan works at full but CPU cooler is not enabled.

Patchset adds 2 additional trip points (so total 5). First 3 trip
points enable the fan. The new two trip points should trigger CPU
cooler.

However after reaching last fan trip point, the thermal zone stops
sending updates to the step-wise governor.
The last log for thermal_zone0 is:

[ 1366.604672] thermal thermal_zone0: last_temperature=71000, current_temperature=71000
[ 1366.604699] thermal thermal_zone0: Trip0[type=0,temp=50000]:trend=0,throttle=1
                                                     instance->upper:
                                                        instance->lower:
                                                           throttle:
[ 1366.604713] thermal cooling_device0: cur_state=0, 1, 0, throttle: 1
[ 1366.604725] thermal cooling_device0: CUR_state=0, 1, 0, throttle: 1
[ 1366.604735] thermal cooling_device0: old_target=1, target=1
[ 1366.604754] thermal thermal_zone0: Trip1[type=0,temp=60000]:trend=0,throttle=1
[ 1366.604776] thermal cooling_device0: cur_state=0, 2, 1, throttle: 1
[ 1366.604786] thermal cooling_device0: CUR_state=0, 2, 1, throttle: 1
[ 1366.604796] thermal cooling_device0: old_target=2, target=2
[ 1366.604810] thermal thermal_zone0: Trip2[type=0,temp=70000]:trend=0,throttle=1
[ 1366.604821] thermal cooling_device0: cur_state=0, 3, 2, throttle: 1
[ 1366.604832] thermal cooling_device0: CUR_state=0, 3, 2, throttle: 1
[ 1366.604841] thermal cooling_device0: old_target=3, target=3
[ 1366.604856] thermal thermal_zone0: Trip4[type=1,temp=90000]:trend=0,throttle=0
[ 1366.604869] thermal cooling_device1: cur_state=0, 3, 0, throttle: 0
[ 1366.604879] thermal cooling_device1: CUR_state=0, 3, 0, throttle: 0
[ 1366.604889] thermal cooling_device1: old_target=-1, target=-1
[ 1366.604901] thermal cooling_device2: cur_state=0, 3, 0, throttle: 0
[ 1366.604911] thermal cooling_device2: CUR_state=0, 3, 0, throttle: 0
[ 1366.604921] thermal cooling_device2: old_target=-1, target=-1
[ 1366.604935] thermal thermal_zone0: Trip5[type=1,temp=110000]:trend=0,throttle=0
[ 1366.604946] thermal cooling_device1: cur_state=0, 7, 7, throttle: 0
[ 1366.604957] thermal cooling_device1: CUR_state=0, 7, 7, throttle: 0
[ 1366.604967] thermal cooling_device1: old_target=-1, target=-1
[ 1366.604977] thermal cooling_device2: cur_state=0, 11, 11, throttle: 0
[ 1366.604988] thermal cooling_device2: CUR_state=0, 11, 11, throttle: 0
[ 1366.604997] thermal cooling_device2: old_target=-1, target=-1

After this, the temperature in zone0 rises but cooling devices do not
receive any pokes...

Did I make some mistake or this is thermal issue?


[0] http://www.spinics.net/lists/arm-kernel/msg482748.html


Best regards,
Krzysztof


Krzysztof Kozlowski (3):
  ARM: dts: Add cooling levels for CPUs on exynos5420
  ARM: dts: Add cooling levels for CPUs on exynos5422/5800
  ARM: dts: Don't overheat the Odroid XU3-Lite on high load

 arch/arm/boot/dts/exynos5420-cpus.dtsi        |  6 ++++
 arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi | 41 +++++++++++++++++++++++++++
 arch/arm/boot/dts/exynos5422-cpus.dtsi        |  6 ++++
 3 files changed, 53 insertions(+)

-- 
2.5.0

^ permalink raw reply	[flat|nested] 36+ messages in thread

* [RFC-help needed 0/3] ARM: dts: thermal: Fix Odroid XU3-Lite overheat
@ 2016-02-17  6:55 ` Krzysztof Kozlowski
  0 siblings, 0 replies; 36+ messages in thread
From: Krzysztof Kozlowski @ 2016-02-17  6:55 UTC (permalink / raw)
  To: linux-arm-kernel

Hi,

I mentioned overheating problem of Odroid XU3-Lite after enabling
cpufreq-dt (when busy in a quite warm room). [0]

The patchset tries to fix this by adding CPU cooling device.
Unfortunately apparently I screwed something because on next-20160216
it does not help.

The fan works at full but CPU cooler is not enabled.

Patchset adds 2 additional trip points (so total 5). First 3 trip
points enable the fan. The new two trip points should trigger CPU
cooler.

However after reaching last fan trip point, the thermal zone stops
sending updates to the step-wise governor.
The last log for thermal_zone0 is:

[ 1366.604672] thermal thermal_zone0: last_temperature=71000, current_temperature=71000
[ 1366.604699] thermal thermal_zone0: Trip0[type=0,temp=50000]:trend=0,throttle=1
                                                     instance->upper:
                                                        instance->lower:
                                                           throttle:
[ 1366.604713] thermal cooling_device0: cur_state=0, 1, 0, throttle: 1
[ 1366.604725] thermal cooling_device0: CUR_state=0, 1, 0, throttle: 1
[ 1366.604735] thermal cooling_device0: old_target=1, target=1
[ 1366.604754] thermal thermal_zone0: Trip1[type=0,temp=60000]:trend=0,throttle=1
[ 1366.604776] thermal cooling_device0: cur_state=0, 2, 1, throttle: 1
[ 1366.604786] thermal cooling_device0: CUR_state=0, 2, 1, throttle: 1
[ 1366.604796] thermal cooling_device0: old_target=2, target=2
[ 1366.604810] thermal thermal_zone0: Trip2[type=0,temp=70000]:trend=0,throttle=1
[ 1366.604821] thermal cooling_device0: cur_state=0, 3, 2, throttle: 1
[ 1366.604832] thermal cooling_device0: CUR_state=0, 3, 2, throttle: 1
[ 1366.604841] thermal cooling_device0: old_target=3, target=3
[ 1366.604856] thermal thermal_zone0: Trip4[type=1,temp=90000]:trend=0,throttle=0
[ 1366.604869] thermal cooling_device1: cur_state=0, 3, 0, throttle: 0
[ 1366.604879] thermal cooling_device1: CUR_state=0, 3, 0, throttle: 0
[ 1366.604889] thermal cooling_device1: old_target=-1, target=-1
[ 1366.604901] thermal cooling_device2: cur_state=0, 3, 0, throttle: 0
[ 1366.604911] thermal cooling_device2: CUR_state=0, 3, 0, throttle: 0
[ 1366.604921] thermal cooling_device2: old_target=-1, target=-1
[ 1366.604935] thermal thermal_zone0: Trip5[type=1,temp=110000]:trend=0,throttle=0
[ 1366.604946] thermal cooling_device1: cur_state=0, 7, 7, throttle: 0
[ 1366.604957] thermal cooling_device1: CUR_state=0, 7, 7, throttle: 0
[ 1366.604967] thermal cooling_device1: old_target=-1, target=-1
[ 1366.604977] thermal cooling_device2: cur_state=0, 11, 11, throttle: 0
[ 1366.604988] thermal cooling_device2: CUR_state=0, 11, 11, throttle: 0
[ 1366.604997] thermal cooling_device2: old_target=-1, target=-1

After this, the temperature in zone0 rises but cooling devices do not
receive any pokes...

Did I make some mistake or this is thermal issue?


[0] http://www.spinics.net/lists/arm-kernel/msg482748.html


Best regards,
Krzysztof


Krzysztof Kozlowski (3):
  ARM: dts: Add cooling levels for CPUs on exynos5420
  ARM: dts: Add cooling levels for CPUs on exynos5422/5800
  ARM: dts: Don't overheat the Odroid XU3-Lite on high load

 arch/arm/boot/dts/exynos5420-cpus.dtsi        |  6 ++++
 arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi | 41 +++++++++++++++++++++++++++
 arch/arm/boot/dts/exynos5422-cpus.dtsi        |  6 ++++
 3 files changed, 53 insertions(+)

-- 
2.5.0

^ permalink raw reply	[flat|nested] 36+ messages in thread

* [RFC 1/3] ARM: dts: Add cooling levels for CPUs on exynos5420
  2016-02-17  6:55 ` Krzysztof Kozlowski
@ 2016-02-17  6:55   ` Krzysztof Kozlowski
  -1 siblings, 0 replies; 36+ messages in thread
From: Krzysztof Kozlowski @ 2016-02-17  6:55 UTC (permalink / raw)
  To: Kukjin Kim, Krzysztof Kozlowski, Lukasz Majewski,
	linux-arm-kernel, linux-samsung-soc, linux-kernel, linux-pm
  Cc: Zhang Rui, Eduardo Valentin, Viresh Kumar,
	Bartlomiej Zolnierkiewicz, Javier Martinez Canillas

On Exynos5420 we support 8 cpufreq steps (600-1300 MHz) for LITTLE and
12 steps for big core (700-1800 MHz). Add respective cooling cells.

Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
---
 arch/arm/boot/dts/exynos5420-cpus.dtsi | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/arch/arm/boot/dts/exynos5420-cpus.dtsi b/arch/arm/boot/dts/exynos5420-cpus.dtsi
index 261d25173f61..498ae82e1cb2 100644
--- a/arch/arm/boot/dts/exynos5420-cpus.dtsi
+++ b/arch/arm/boot/dts/exynos5420-cpus.dtsi
@@ -33,6 +33,9 @@
 			clock-frequency = <1800000000>;
 			cci-control-port = <&cci_control1>;
 			operating-points-v2 = <&cluster_a15_opp_table>;
+			cooling-min-level = <0>;
+			cooling-max-level = <11>;
+			#cooling-cells = <2>; /* min followed by max */
 		};
 
 		cpu1: cpu@1 {
@@ -70,6 +73,9 @@
 			clock-frequency = <1000000000>;
 			cci-control-port = <&cci_control0>;
 			operating-points-v2 = <&cluster_a7_opp_table>;
+			cooling-min-level = <0>;
+			cooling-max-level = <7>;
+			#cooling-cells = <2>; /* min followed by max */
 		};
 
 		cpu5: cpu@101 {
-- 
2.5.0

^ permalink raw reply related	[flat|nested] 36+ messages in thread

* [RFC 1/3] ARM: dts: Add cooling levels for CPUs on exynos5420
@ 2016-02-17  6:55   ` Krzysztof Kozlowski
  0 siblings, 0 replies; 36+ messages in thread
From: Krzysztof Kozlowski @ 2016-02-17  6:55 UTC (permalink / raw)
  To: linux-arm-kernel

On Exynos5420 we support 8 cpufreq steps (600-1300 MHz) for LITTLE and
12 steps for big core (700-1800 MHz). Add respective cooling cells.

Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
---
 arch/arm/boot/dts/exynos5420-cpus.dtsi | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/arch/arm/boot/dts/exynos5420-cpus.dtsi b/arch/arm/boot/dts/exynos5420-cpus.dtsi
index 261d25173f61..498ae82e1cb2 100644
--- a/arch/arm/boot/dts/exynos5420-cpus.dtsi
+++ b/arch/arm/boot/dts/exynos5420-cpus.dtsi
@@ -33,6 +33,9 @@
 			clock-frequency = <1800000000>;
 			cci-control-port = <&cci_control1>;
 			operating-points-v2 = <&cluster_a15_opp_table>;
+			cooling-min-level = <0>;
+			cooling-max-level = <11>;
+			#cooling-cells = <2>; /* min followed by max */
 		};
 
 		cpu1: cpu at 1 {
@@ -70,6 +73,9 @@
 			clock-frequency = <1000000000>;
 			cci-control-port = <&cci_control0>;
 			operating-points-v2 = <&cluster_a7_opp_table>;
+			cooling-min-level = <0>;
+			cooling-max-level = <7>;
+			#cooling-cells = <2>; /* min followed by max */
 		};
 
 		cpu5: cpu at 101 {
-- 
2.5.0

^ permalink raw reply related	[flat|nested] 36+ messages in thread

* [RFC 2/3] ARM: dts: Add cooling levels for CPUs on exynos5422/5800
  2016-02-17  6:55 ` Krzysztof Kozlowski
@ 2016-02-17  6:55   ` Krzysztof Kozlowski
  -1 siblings, 0 replies; 36+ messages in thread
From: Krzysztof Kozlowski @ 2016-02-17  6:55 UTC (permalink / raw)
  To: Kukjin Kim, Krzysztof Kozlowski, Lukasz Majewski,
	linux-arm-kernel, linux-samsung-soc, linux-kernel, linux-pm
  Cc: Zhang Rui, Eduardo Valentin, Viresh Kumar,
	Bartlomiej Zolnierkiewicz, Javier Martinez Canillas

On Exynos5422 and Exynos5800 we support 12 cpufreq steps (200-1300 MHz) for LITTLE
and 18 steps for big core (200-1700 MHz). Add respective cooling cells.

Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
---
 arch/arm/boot/dts/exynos5422-cpus.dtsi | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/arch/arm/boot/dts/exynos5422-cpus.dtsi b/arch/arm/boot/dts/exynos5422-cpus.dtsi
index 9b46b9fbac4e..858bb7f57d76 100644
--- a/arch/arm/boot/dts/exynos5422-cpus.dtsi
+++ b/arch/arm/boot/dts/exynos5422-cpus.dtsi
@@ -32,6 +32,9 @@
 			clock-frequency = <1000000000>;
 			cci-control-port = <&cci_control0>;
 			operating-points-v2 = <&cluster_a7_opp_table>;
+			cooling-min-level = <0>;
+			cooling-max-level = <11>;
+			#cooling-cells = <2>; /* min followed by max */
 		};
 
 		cpu1: cpu@101 {
@@ -69,6 +72,9 @@
 			clock-frequency = <1800000000>;
 			cci-control-port = <&cci_control1>;
 			operating-points-v2 = <&cluster_a15_opp_table>;
+			cooling-min-level = <0>;
+			cooling-max-level = <15>;
+			#cooling-cells = <2>; /* min followed by max */
 		};
 
 		cpu5: cpu@1 {
-- 
2.5.0

^ permalink raw reply related	[flat|nested] 36+ messages in thread

* [RFC 2/3] ARM: dts: Add cooling levels for CPUs on exynos5422/5800
@ 2016-02-17  6:55   ` Krzysztof Kozlowski
  0 siblings, 0 replies; 36+ messages in thread
From: Krzysztof Kozlowski @ 2016-02-17  6:55 UTC (permalink / raw)
  To: linux-arm-kernel

On Exynos5422 and Exynos5800 we support 12 cpufreq steps (200-1300 MHz) for LITTLE
and 18 steps for big core (200-1700 MHz). Add respective cooling cells.

Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
---
 arch/arm/boot/dts/exynos5422-cpus.dtsi | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/arch/arm/boot/dts/exynos5422-cpus.dtsi b/arch/arm/boot/dts/exynos5422-cpus.dtsi
index 9b46b9fbac4e..858bb7f57d76 100644
--- a/arch/arm/boot/dts/exynos5422-cpus.dtsi
+++ b/arch/arm/boot/dts/exynos5422-cpus.dtsi
@@ -32,6 +32,9 @@
 			clock-frequency = <1000000000>;
 			cci-control-port = <&cci_control0>;
 			operating-points-v2 = <&cluster_a7_opp_table>;
+			cooling-min-level = <0>;
+			cooling-max-level = <11>;
+			#cooling-cells = <2>; /* min followed by max */
 		};
 
 		cpu1: cpu at 101 {
@@ -69,6 +72,9 @@
 			clock-frequency = <1800000000>;
 			cci-control-port = <&cci_control1>;
 			operating-points-v2 = <&cluster_a15_opp_table>;
+			cooling-min-level = <0>;
+			cooling-max-level = <15>;
+			#cooling-cells = <2>; /* min followed by max */
 		};
 
 		cpu5: cpu at 1 {
-- 
2.5.0

^ permalink raw reply related	[flat|nested] 36+ messages in thread

* [RFC 3/3] ARM: dts: Don't overheat the Odroid XU3-Lite on high load
  2016-02-17  6:55 ` Krzysztof Kozlowski
@ 2016-02-17  6:55   ` Krzysztof Kozlowski
  -1 siblings, 0 replies; 36+ messages in thread
From: Krzysztof Kozlowski @ 2016-02-17  6:55 UTC (permalink / raw)
  To: Kukjin Kim, Krzysztof Kozlowski, Lukasz Majewski,
	linux-arm-kernel, linux-samsung-soc, linux-kernel, linux-pm
  Cc: Zhang Rui, Eduardo Valentin, Viresh Kumar,
	Bartlomiej Zolnierkiewicz, Javier Martinez Canillas

After adding cpufreq-dt support to Exynos542x, the Odroid XU3-Lite can
be easily overheated when launching eight CPU-intensive tasks:
	thermal thermal_zone3: critical temperature reached(121 C),shutting down

This seems to be specific to Odroid XU3-Lite board which officially
supports lower frequencies than regular XU3 or XU4. When working at
maximum CPU speed (1800 MHz big and 1300 MHz LITTLE) in warmer place for
longer time, the fan fails to cool down the board and it reaches
critical temperature.

Add CPU cooling to Exynos5422/5800 to fix this issue. When reaching 95
degrees of Celsius, the board will slow down by 3 steps (around
1400/1000 MHz). When reaching 110 degrees of Celsius go to 600 MHz.

Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
---
 arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi | 41 +++++++++++++++++++++++++++
 1 file changed, 41 insertions(+)

diff --git a/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi b/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
index 2b289d7c0d13..66073ce29aee 100644
--- a/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
+++ b/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
@@ -34,6 +34,16 @@
 					hysteresis = <5000>; /* millicelsius */
 					type = "active";
 				};
+				cpu_alert3: cpu-alert-3 {
+					temperature = <95000>; /* millicelsius */
+					hysteresis = <5000>; /* millicelsius */
+					type = "passive";
+				};
+				cpu_alert4: cpu-alert-4 {
+					temperature = <110000>; /* millicelsius */
+					hysteresis = <5000>; /* millicelsius */
+					type = "passive";
+				};
 				cpu_crit0: cpu-crit-0 {
 					temperature = <120000>; /* millicelsius */
 					hysteresis = <0>; /* millicelsius */
@@ -53,6 +63,37 @@
 				     trip = <&cpu_alert2>;
 				     cooling-device = <&fan0 2 3>;
 				};
+
+				/*
+				 * When reaching cpu_alert3, reduce CPU
+				 * by 3 steps. On Exynos5422/5800 that would
+				 * be: 1400 MHz and 1000 MHz.
+				 */
+				map3 {
+				     trip = <&cpu_alert3>;
+				     cooling-device = <&cpu0 3 3>;
+				};
+				map4 {
+				     trip = <&cpu_alert3>;
+				     cooling-device = <&cpu4 3 3>;
+				};
+
+				/*
+				 * When reaching cpu_alert4, reduce CPU
+				 * to 600 MHz (11 steps for big, 7 steps for
+				 * LITTLE).
+				 * Exynos5420 has less OPPs and reversed
+				 * numbering of CPUs (big/LITTLE) so this
+				 * would not match.
+				 */
+				map5 {
+				     trip = <&cpu_alert4>;
+				     cooling-device = <&cpu0 7 7>;
+				};
+				map6 {
+				     trip = <&cpu_alert4>;
+				     cooling-device = <&cpu4 11 11>;
+				};
 			};
 		};
 	};
-- 
2.5.0

^ permalink raw reply related	[flat|nested] 36+ messages in thread

* [RFC 3/3] ARM: dts: Don't overheat the Odroid XU3-Lite on high load
@ 2016-02-17  6:55   ` Krzysztof Kozlowski
  0 siblings, 0 replies; 36+ messages in thread
From: Krzysztof Kozlowski @ 2016-02-17  6:55 UTC (permalink / raw)
  To: linux-arm-kernel

After adding cpufreq-dt support to Exynos542x, the Odroid XU3-Lite can
be easily overheated when launching eight CPU-intensive tasks:
	thermal thermal_zone3: critical temperature reached(121 C),shutting down

This seems to be specific to Odroid XU3-Lite board which officially
supports lower frequencies than regular XU3 or XU4. When working at
maximum CPU speed (1800 MHz big and 1300 MHz LITTLE) in warmer place for
longer time, the fan fails to cool down the board and it reaches
critical temperature.

Add CPU cooling to Exynos5422/5800 to fix this issue. When reaching 95
degrees of Celsius, the board will slow down by 3 steps (around
1400/1000 MHz). When reaching 110 degrees of Celsius go to 600 MHz.

Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
---
 arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi | 41 +++++++++++++++++++++++++++
 1 file changed, 41 insertions(+)

diff --git a/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi b/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
index 2b289d7c0d13..66073ce29aee 100644
--- a/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
+++ b/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
@@ -34,6 +34,16 @@
 					hysteresis = <5000>; /* millicelsius */
 					type = "active";
 				};
+				cpu_alert3: cpu-alert-3 {
+					temperature = <95000>; /* millicelsius */
+					hysteresis = <5000>; /* millicelsius */
+					type = "passive";
+				};
+				cpu_alert4: cpu-alert-4 {
+					temperature = <110000>; /* millicelsius */
+					hysteresis = <5000>; /* millicelsius */
+					type = "passive";
+				};
 				cpu_crit0: cpu-crit-0 {
 					temperature = <120000>; /* millicelsius */
 					hysteresis = <0>; /* millicelsius */
@@ -53,6 +63,37 @@
 				     trip = <&cpu_alert2>;
 				     cooling-device = <&fan0 2 3>;
 				};
+
+				/*
+				 * When reaching cpu_alert3, reduce CPU
+				 * by 3 steps. On Exynos5422/5800 that would
+				 * be: 1400 MHz and 1000 MHz.
+				 */
+				map3 {
+				     trip = <&cpu_alert3>;
+				     cooling-device = <&cpu0 3 3>;
+				};
+				map4 {
+				     trip = <&cpu_alert3>;
+				     cooling-device = <&cpu4 3 3>;
+				};
+
+				/*
+				 * When reaching cpu_alert4, reduce CPU
+				 * to 600 MHz (11 steps for big, 7 steps for
+				 * LITTLE).
+				 * Exynos5420 has less OPPs and reversed
+				 * numbering of CPUs (big/LITTLE) so this
+				 * would not match.
+				 */
+				map5 {
+				     trip = <&cpu_alert4>;
+				     cooling-device = <&cpu0 7 7>;
+				};
+				map6 {
+				     trip = <&cpu_alert4>;
+				     cooling-device = <&cpu4 11 11>;
+				};
 			};
 		};
 	};
-- 
2.5.0

^ permalink raw reply related	[flat|nested] 36+ messages in thread

* Re: [RFC 1/3] ARM: dts: Add cooling levels for CPUs on exynos5420
  2016-02-17  6:55   ` Krzysztof Kozlowski
@ 2016-02-17  7:01     ` Viresh Kumar
  -1 siblings, 0 replies; 36+ messages in thread
From: Viresh Kumar @ 2016-02-17  7:01 UTC (permalink / raw)
  To: Krzysztof Kozlowski
  Cc: Kukjin Kim, Lukasz Majewski, linux-arm-kernel, linux-samsung-soc,
	linux-kernel, linux-pm, Zhang Rui, Eduardo Valentin,
	Bartlomiej Zolnierkiewicz, Javier Martinez Canillas

On 17-02-16, 15:55, Krzysztof Kozlowski wrote:
> On Exynos5420 we support 8 cpufreq steps (600-1300 MHz) for LITTLE and
> 12 steps for big core (700-1800 MHz). Add respective cooling cells.
> 
> Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
> ---
>  arch/arm/boot/dts/exynos5420-cpus.dtsi | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/arch/arm/boot/dts/exynos5420-cpus.dtsi b/arch/arm/boot/dts/exynos5420-cpus.dtsi
> index 261d25173f61..498ae82e1cb2 100644
> --- a/arch/arm/boot/dts/exynos5420-cpus.dtsi
> +++ b/arch/arm/boot/dts/exynos5420-cpus.dtsi
> @@ -33,6 +33,9 @@
>  			clock-frequency = <1800000000>;
>  			cci-control-port = <&cci_control1>;
>  			operating-points-v2 = <&cluster_a15_opp_table>;
> +			cooling-min-level = <0>;
> +			cooling-max-level = <11>;
> +			#cooling-cells = <2>; /* min followed by max */
>  		};
>  
>  		cpu1: cpu@1 {
> @@ -70,6 +73,9 @@
>  			clock-frequency = <1000000000>;
>  			cci-control-port = <&cci_control0>;
>  			operating-points-v2 = <&cluster_a7_opp_table>;
> +			cooling-min-level = <0>;
> +			cooling-max-level = <7>;
> +			#cooling-cells = <2>; /* min followed by max */
>  		};

Though it wouldn't matter (for the issue you are getting), but this should be
added for all the CPUs in case some other CPU is booted first.

-- 
viresh

^ permalink raw reply	[flat|nested] 36+ messages in thread

* [RFC 1/3] ARM: dts: Add cooling levels for CPUs on exynos5420
@ 2016-02-17  7:01     ` Viresh Kumar
  0 siblings, 0 replies; 36+ messages in thread
From: Viresh Kumar @ 2016-02-17  7:01 UTC (permalink / raw)
  To: linux-arm-kernel

On 17-02-16, 15:55, Krzysztof Kozlowski wrote:
> On Exynos5420 we support 8 cpufreq steps (600-1300 MHz) for LITTLE and
> 12 steps for big core (700-1800 MHz). Add respective cooling cells.
> 
> Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
> ---
>  arch/arm/boot/dts/exynos5420-cpus.dtsi | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/arch/arm/boot/dts/exynos5420-cpus.dtsi b/arch/arm/boot/dts/exynos5420-cpus.dtsi
> index 261d25173f61..498ae82e1cb2 100644
> --- a/arch/arm/boot/dts/exynos5420-cpus.dtsi
> +++ b/arch/arm/boot/dts/exynos5420-cpus.dtsi
> @@ -33,6 +33,9 @@
>  			clock-frequency = <1800000000>;
>  			cci-control-port = <&cci_control1>;
>  			operating-points-v2 = <&cluster_a15_opp_table>;
> +			cooling-min-level = <0>;
> +			cooling-max-level = <11>;
> +			#cooling-cells = <2>; /* min followed by max */
>  		};
>  
>  		cpu1: cpu at 1 {
> @@ -70,6 +73,9 @@
>  			clock-frequency = <1000000000>;
>  			cci-control-port = <&cci_control0>;
>  			operating-points-v2 = <&cluster_a7_opp_table>;
> +			cooling-min-level = <0>;
> +			cooling-max-level = <7>;
> +			#cooling-cells = <2>; /* min followed by max */
>  		};

Though it wouldn't matter (for the issue you are getting), but this should be
added for all the CPUs in case some other CPU is booted first.

-- 
viresh

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [RFC 1/3] ARM: dts: Add cooling levels for CPUs on exynos5420
  2016-02-17  7:01     ` Viresh Kumar
@ 2016-02-17  7:05       ` Krzysztof Kozlowski
  -1 siblings, 0 replies; 36+ messages in thread
From: Krzysztof Kozlowski @ 2016-02-17  7:05 UTC (permalink / raw)
  To: Viresh Kumar
  Cc: Kukjin Kim, Lukasz Majewski, linux-arm-kernel, linux-samsung-soc,
	linux-kernel, linux-pm, Zhang Rui, Eduardo Valentin,
	Bartlomiej Zolnierkiewicz, Javier Martinez Canillas

On 17.02.2016 16:01, Viresh Kumar wrote:
> On 17-02-16, 15:55, Krzysztof Kozlowski wrote:
>> On Exynos5420 we support 8 cpufreq steps (600-1300 MHz) for LITTLE and
>> 12 steps for big core (700-1800 MHz). Add respective cooling cells.
>>
>> Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
>> ---
>>  arch/arm/boot/dts/exynos5420-cpus.dtsi | 6 ++++++
>>  1 file changed, 6 insertions(+)
>>
>> diff --git a/arch/arm/boot/dts/exynos5420-cpus.dtsi b/arch/arm/boot/dts/exynos5420-cpus.dtsi
>> index 261d25173f61..498ae82e1cb2 100644
>> --- a/arch/arm/boot/dts/exynos5420-cpus.dtsi
>> +++ b/arch/arm/boot/dts/exynos5420-cpus.dtsi
>> @@ -33,6 +33,9 @@
>>  			clock-frequency = <1800000000>;
>>  			cci-control-port = <&cci_control1>;
>>  			operating-points-v2 = <&cluster_a15_opp_table>;
>> +			cooling-min-level = <0>;
>> +			cooling-max-level = <11>;
>> +			#cooling-cells = <2>; /* min followed by max */
>>  		};
>>  
>>  		cpu1: cpu@1 {
>> @@ -70,6 +73,9 @@
>>  			clock-frequency = <1000000000>;
>>  			cci-control-port = <&cci_control0>;
>>  			operating-points-v2 = <&cluster_a7_opp_table>;
>> +			cooling-min-level = <0>;
>> +			cooling-max-level = <7>;
>> +			#cooling-cells = <2>; /* min followed by max */
>>  		};
> 
> Though it wouldn't matter (for the issue you are getting), but this should be
> added for all the CPUs in case some other CPU is booted first.

Thanks! I'll fix it also for patch 2/3.

Best regards,
Krzysztof

^ permalink raw reply	[flat|nested] 36+ messages in thread

* [RFC 1/3] ARM: dts: Add cooling levels for CPUs on exynos5420
@ 2016-02-17  7:05       ` Krzysztof Kozlowski
  0 siblings, 0 replies; 36+ messages in thread
From: Krzysztof Kozlowski @ 2016-02-17  7:05 UTC (permalink / raw)
  To: linux-arm-kernel

On 17.02.2016 16:01, Viresh Kumar wrote:
> On 17-02-16, 15:55, Krzysztof Kozlowski wrote:
>> On Exynos5420 we support 8 cpufreq steps (600-1300 MHz) for LITTLE and
>> 12 steps for big core (700-1800 MHz). Add respective cooling cells.
>>
>> Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
>> ---
>>  arch/arm/boot/dts/exynos5420-cpus.dtsi | 6 ++++++
>>  1 file changed, 6 insertions(+)
>>
>> diff --git a/arch/arm/boot/dts/exynos5420-cpus.dtsi b/arch/arm/boot/dts/exynos5420-cpus.dtsi
>> index 261d25173f61..498ae82e1cb2 100644
>> --- a/arch/arm/boot/dts/exynos5420-cpus.dtsi
>> +++ b/arch/arm/boot/dts/exynos5420-cpus.dtsi
>> @@ -33,6 +33,9 @@
>>  			clock-frequency = <1800000000>;
>>  			cci-control-port = <&cci_control1>;
>>  			operating-points-v2 = <&cluster_a15_opp_table>;
>> +			cooling-min-level = <0>;
>> +			cooling-max-level = <11>;
>> +			#cooling-cells = <2>; /* min followed by max */
>>  		};
>>  
>>  		cpu1: cpu at 1 {
>> @@ -70,6 +73,9 @@
>>  			clock-frequency = <1000000000>;
>>  			cci-control-port = <&cci_control0>;
>>  			operating-points-v2 = <&cluster_a7_opp_table>;
>> +			cooling-min-level = <0>;
>> +			cooling-max-level = <7>;
>> +			#cooling-cells = <2>; /* min followed by max */
>>  		};
> 
> Though it wouldn't matter (for the issue you are getting), but this should be
> added for all the CPUs in case some other CPU is booted first.

Thanks! I'll fix it also for patch 2/3.

Best regards,
Krzysztof

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [RFC 3/3] ARM: dts: Don't overheat the Odroid XU3-Lite on high load
  2016-02-17  6:55   ` Krzysztof Kozlowski
  (?)
@ 2016-02-17 19:53     ` Anand Moon
  -1 siblings, 0 replies; 36+ messages in thread
From: Anand Moon @ 2016-02-17 19:53 UTC (permalink / raw)
  To: Krzysztof Kozlowski
  Cc: Kukjin Kim, Lukasz Majewski, linux-arm-kernel, linux-samsung-soc,
	Linux Kernel, Linux PM list, Zhang Rui, Eduardo Valentin,
	Viresh Kumar, Bartlomiej Zolnierkiewicz,
	Javier Martinez Canillas

Hi Krzysztof,

On 17 February 2016 at 12:25, Krzysztof Kozlowski
<k.kozlowski@samsung.com> wrote:
> After adding cpufreq-dt support to Exynos542x, the Odroid XU3-Lite can
> be easily overheated when launching eight CPU-intensive tasks:
>         thermal thermal_zone3: critical temperature reached(121 C),shutting down
>
> This seems to be specific to Odroid XU3-Lite board which officially
> supports lower frequencies than regular XU3 or XU4. When working at
> maximum CPU speed (1800 MHz big and 1300 MHz LITTLE) in warmer place for
> longer time, the fan fails to cool down the board and it reaches
> critical temperature.
>
> Add CPU cooling to Exynos5422/5800 to fix this issue. When reaching 95
> degrees of Celsius, the board will slow down by 3 steps (around
> 1400/1000 MHz). When reaching 110 degrees of Celsius go to 600 MHz.
>
> Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
> ---
>  arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi | 41 +++++++++++++++++++++++++++
>  1 file changed, 41 insertions(+)
>
> diff --git a/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi b/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
> index 2b289d7c0d13..66073ce29aee 100644
> --- a/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
> +++ b/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
> @@ -34,6 +34,16 @@
>                                         hysteresis = <5000>; /* millicelsius */
>                                         type = "active";
>                                 };
> +                               cpu_alert3: cpu-alert-3 {
> +                                       temperature = <95000>; /* millicelsius */
> +                                       hysteresis = <5000>; /* millicelsius */
> +                                       type = "passive";
> +                               };
> +                               cpu_alert4: cpu-alert-4 {
> +                                       temperature = <110000>; /* millicelsius */
> +                                       hysteresis = <5000>; /* millicelsius */
> +                                       type = "passive";
> +                               };
>                                 cpu_crit0: cpu-crit-0 {
>                                         temperature = <120000>; /* millicelsius */
>                                         hysteresis = <0>; /* millicelsius */
> @@ -53,6 +63,37 @@
>                                      trip = <&cpu_alert2>;
>                                      cooling-device = <&fan0 2 3>;
>                                 };
> +
> +                               /*
> +                                * When reaching cpu_alert3, reduce CPU
> +                                * by 3 steps. On Exynos5422/5800 that would
> +                                * be: 1400 MHz and 1000 MHz.
> +                                */
> +                               map3 {
> +                                    trip = <&cpu_alert3>;
> +                                    cooling-device = <&cpu0 3 3>;
> +                               };
> +                               map4 {
> +                                    trip = <&cpu_alert3>;
> +                                    cooling-device = <&cpu4 3 3>;
> +                               };
> +
> +                               /*
> +                                * When reaching cpu_alert4, reduce CPU
> +                                * to 600 MHz (11 steps for big, 7 steps for
> +                                * LITTLE).
> +                                * Exynos5420 has less OPPs and reversed
> +                                * numbering of CPUs (big/LITTLE) so this
> +                                * would not match.
> +                                */
> +                               map5 {
> +                                    trip = <&cpu_alert4>;
> +                                    cooling-device = <&cpu0 7 7>;
> +                               };
> +                               map6 {
> +                                    trip = <&cpu_alert4>;
> +                                    cooling-device = <&cpu4 11 11>;
> +                               };
>                         };
>                 };
>         };
> --
> 2.5.0
>

could you append this patch with following changes.

diff --git a/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
b/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
index 66073ce..4e72637 100644
--- a/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
+++ b/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
@@ -16,8 +16,8 @@
        thermal-zones {
                cpu0_thermal: cpu0-thermal {
                        thermal-sensors = <&tmu_cpu0 0>;
-                       polling-delay-passive = <0>;
-                       polling-delay = <0>;
+                       polling-delay-passive = <250>; /* milliseconds */
+                       polling-delay = <500>; /* milliseconds */
                        trips {
                                cpu_alert0: cpu-alert-0 {
                                        temperature = <50000>; /*
millicelsius */
---
On running linaro pm-qa diagnostic tool
----------------------------------------------------------

thermal_01.28: checking 'thermal_zone2'/'trip_point_2_temp' ='110000'...    Ok
thermal_01.29: checking 'cdev0_trip_point' exists in
'/sys/devices/virtual/thermal/thermal_zone0'... Ok
thermal_01.30: checking 'thermal_zone0/cdev0_trip_point' valid binding...   Ok
thermal_01.31: checking 'cdev4_trip_point' exists in
'/sys/devices/virtual/thermal/thermal_zone0'... Ok
thermal_01.32: checking 'thermal_zone0/cdev4_trip_point' valid binding...   Err
thermal_01.33: checking 'cdev4_trip_point' exists in
'/sys/devices/virtual/thermal/thermal_zone0'... Ok
thermal_01.34: checking 'thermal_zone0/cdev4_trip_point' valid binding...   Err
thermal_01.35: checking 'cdev4_trip_point' exists in
'/sys/devices/virtual/thermal/thermal_zone0'... Ok
thermal_01.36: checking 'thermal_zone0/cdev4_trip_point' valid binding...   Err
thermal_01.37: checking 'cdev4_trip_point' exists in
'/sys/devices/virtual/thermal/thermal_zone0'... Ok
thermal_01.38: checking 'thermal_zone0/cdev4_trip_point' valid binding...   Err

thermal_01: fail
-------------------------------------------------------
I also got lot's of error.

root@odroidxu4l:~# cpu[ 3050.847663] cpu cpu4: Failed to find dev_opp: -19
[ 3171.640836] cpu cpu4: device_opp_debug_create_link: Failed to create link
[ 3171.646197] cpu cpu4: _add_list_dev: Failed to register opp debugfs (-12)
[ 3171.653574] cpu cpu7: device_opp_debug_create_link: Failed to create link
[ 3171.659752] cpu cpu7: _add_list_dev: Failed to register opp debugfs (-12)
[ 3171.697011] cpu cpu5: cpufreq_init: failed to get clk: -2
[ 3171.732505] cpu cpu6: cpufreq_init: failed to get clk: -2
[ 3171.768160] cpu cpu7: cpufreq_init: failed to get clk: -2

Tested on Odroid-XU4

Reviewed-by: Anand Moon <linux.amoon@gmail.com>
Tested-by: Anand Moon <linux.amoon@gmail.com>

Best Regards
-Anand Moon

> --
> To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply related	[flat|nested] 36+ messages in thread

* Re: [RFC 3/3] ARM: dts: Don't overheat the Odroid XU3-Lite on high load
@ 2016-02-17 19:53     ` Anand Moon
  0 siblings, 0 replies; 36+ messages in thread
From: Anand Moon @ 2016-02-17 19:53 UTC (permalink / raw)
  To: Krzysztof Kozlowski
  Cc: Kukjin Kim, Lukasz Majewski, linux-arm-kernel, linux-samsung-soc,
	Linux Kernel, Linux PM list, Zhang Rui, Eduardo Valentin,
	Viresh Kumar, Bartlomiej Zolnierkiewicz,
	Javier Martinez Canillas

Hi Krzysztof,

On 17 February 2016 at 12:25, Krzysztof Kozlowski
<k.kozlowski@samsung.com> wrote:
> After adding cpufreq-dt support to Exynos542x, the Odroid XU3-Lite can
> be easily overheated when launching eight CPU-intensive tasks:
>         thermal thermal_zone3: critical temperature reached(121 C),shutting down
>
> This seems to be specific to Odroid XU3-Lite board which officially
> supports lower frequencies than regular XU3 or XU4. When working at
> maximum CPU speed (1800 MHz big and 1300 MHz LITTLE) in warmer place for
> longer time, the fan fails to cool down the board and it reaches
> critical temperature.
>
> Add CPU cooling to Exynos5422/5800 to fix this issue. When reaching 95
> degrees of Celsius, the board will slow down by 3 steps (around
> 1400/1000 MHz). When reaching 110 degrees of Celsius go to 600 MHz.
>
> Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
> ---
>  arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi | 41 +++++++++++++++++++++++++++
>  1 file changed, 41 insertions(+)
>
> diff --git a/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi b/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
> index 2b289d7c0d13..66073ce29aee 100644
> --- a/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
> +++ b/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
> @@ -34,6 +34,16 @@
>                                         hysteresis = <5000>; /* millicelsius */
>                                         type = "active";
>                                 };
> +                               cpu_alert3: cpu-alert-3 {
> +                                       temperature = <95000>; /* millicelsius */
> +                                       hysteresis = <5000>; /* millicelsius */
> +                                       type = "passive";
> +                               };
> +                               cpu_alert4: cpu-alert-4 {
> +                                       temperature = <110000>; /* millicelsius */
> +                                       hysteresis = <5000>; /* millicelsius */
> +                                       type = "passive";
> +                               };
>                                 cpu_crit0: cpu-crit-0 {
>                                         temperature = <120000>; /* millicelsius */
>                                         hysteresis = <0>; /* millicelsius */
> @@ -53,6 +63,37 @@
>                                      trip = <&cpu_alert2>;
>                                      cooling-device = <&fan0 2 3>;
>                                 };
> +
> +                               /*
> +                                * When reaching cpu_alert3, reduce CPU
> +                                * by 3 steps. On Exynos5422/5800 that would
> +                                * be: 1400 MHz and 1000 MHz.
> +                                */
> +                               map3 {
> +                                    trip = <&cpu_alert3>;
> +                                    cooling-device = <&cpu0 3 3>;
> +                               };
> +                               map4 {
> +                                    trip = <&cpu_alert3>;
> +                                    cooling-device = <&cpu4 3 3>;
> +                               };
> +
> +                               /*
> +                                * When reaching cpu_alert4, reduce CPU
> +                                * to 600 MHz (11 steps for big, 7 steps for
> +                                * LITTLE).
> +                                * Exynos5420 has less OPPs and reversed
> +                                * numbering of CPUs (big/LITTLE) so this
> +                                * would not match.
> +                                */
> +                               map5 {
> +                                    trip = <&cpu_alert4>;
> +                                    cooling-device = <&cpu0 7 7>;
> +                               };
> +                               map6 {
> +                                    trip = <&cpu_alert4>;
> +                                    cooling-device = <&cpu4 11 11>;
> +                               };
>                         };
>                 };
>         };
> --
> 2.5.0
>

could you append this patch with following changes.

diff --git a/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
b/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
index 66073ce..4e72637 100644
--- a/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
+++ b/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
@@ -16,8 +16,8 @@
        thermal-zones {
                cpu0_thermal: cpu0-thermal {
                        thermal-sensors = <&tmu_cpu0 0>;
-                       polling-delay-passive = <0>;
-                       polling-delay = <0>;
+                       polling-delay-passive = <250>; /* milliseconds */
+                       polling-delay = <500>; /* milliseconds */
                        trips {
                                cpu_alert0: cpu-alert-0 {
                                        temperature = <50000>; /*
millicelsius */
---
On running linaro pm-qa diagnostic tool
----------------------------------------------------------

thermal_01.28: checking 'thermal_zone2'/'trip_point_2_temp' ='110000'...    Ok
thermal_01.29: checking 'cdev0_trip_point' exists in
'/sys/devices/virtual/thermal/thermal_zone0'... Ok
thermal_01.30: checking 'thermal_zone0/cdev0_trip_point' valid binding...   Ok
thermal_01.31: checking 'cdev4_trip_point' exists in
'/sys/devices/virtual/thermal/thermal_zone0'... Ok
thermal_01.32: checking 'thermal_zone0/cdev4_trip_point' valid binding...   Err
thermal_01.33: checking 'cdev4_trip_point' exists in
'/sys/devices/virtual/thermal/thermal_zone0'... Ok
thermal_01.34: checking 'thermal_zone0/cdev4_trip_point' valid binding...   Err
thermal_01.35: checking 'cdev4_trip_point' exists in
'/sys/devices/virtual/thermal/thermal_zone0'... Ok
thermal_01.36: checking 'thermal_zone0/cdev4_trip_point' valid binding...   Err
thermal_01.37: checking 'cdev4_trip_point' exists in
'/sys/devices/virtual/thermal/thermal_zone0'... Ok
thermal_01.38: checking 'thermal_zone0/cdev4_trip_point' valid binding...   Err

thermal_01: fail
-------------------------------------------------------
I also got lot's of error.

root@odroidxu4l:~# cpu[ 3050.847663] cpu cpu4: Failed to find dev_opp: -19
[ 3171.640836] cpu cpu4: device_opp_debug_create_link: Failed to create link
[ 3171.646197] cpu cpu4: _add_list_dev: Failed to register opp debugfs (-12)
[ 3171.653574] cpu cpu7: device_opp_debug_create_link: Failed to create link
[ 3171.659752] cpu cpu7: _add_list_dev: Failed to register opp debugfs (-12)
[ 3171.697011] cpu cpu5: cpufreq_init: failed to get clk: -2
[ 3171.732505] cpu cpu6: cpufreq_init: failed to get clk: -2
[ 3171.768160] cpu cpu7: cpufreq_init: failed to get clk: -2

Tested on Odroid-XU4

Reviewed-by: Anand Moon <linux.amoon@gmail.com>
Tested-by: Anand Moon <linux.amoon@gmail.com>

Best Regards
-Anand Moon

> --
> To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply related	[flat|nested] 36+ messages in thread

* [RFC 3/3] ARM: dts: Don't overheat the Odroid XU3-Lite on high load
@ 2016-02-17 19:53     ` Anand Moon
  0 siblings, 0 replies; 36+ messages in thread
From: Anand Moon @ 2016-02-17 19:53 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Krzysztof,

On 17 February 2016 at 12:25, Krzysztof Kozlowski
<k.kozlowski@samsung.com> wrote:
> After adding cpufreq-dt support to Exynos542x, the Odroid XU3-Lite can
> be easily overheated when launching eight CPU-intensive tasks:
>         thermal thermal_zone3: critical temperature reached(121 C),shutting down
>
> This seems to be specific to Odroid XU3-Lite board which officially
> supports lower frequencies than regular XU3 or XU4. When working at
> maximum CPU speed (1800 MHz big and 1300 MHz LITTLE) in warmer place for
> longer time, the fan fails to cool down the board and it reaches
> critical temperature.
>
> Add CPU cooling to Exynos5422/5800 to fix this issue. When reaching 95
> degrees of Celsius, the board will slow down by 3 steps (around
> 1400/1000 MHz). When reaching 110 degrees of Celsius go to 600 MHz.
>
> Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
> ---
>  arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi | 41 +++++++++++++++++++++++++++
>  1 file changed, 41 insertions(+)
>
> diff --git a/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi b/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
> index 2b289d7c0d13..66073ce29aee 100644
> --- a/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
> +++ b/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
> @@ -34,6 +34,16 @@
>                                         hysteresis = <5000>; /* millicelsius */
>                                         type = "active";
>                                 };
> +                               cpu_alert3: cpu-alert-3 {
> +                                       temperature = <95000>; /* millicelsius */
> +                                       hysteresis = <5000>; /* millicelsius */
> +                                       type = "passive";
> +                               };
> +                               cpu_alert4: cpu-alert-4 {
> +                                       temperature = <110000>; /* millicelsius */
> +                                       hysteresis = <5000>; /* millicelsius */
> +                                       type = "passive";
> +                               };
>                                 cpu_crit0: cpu-crit-0 {
>                                         temperature = <120000>; /* millicelsius */
>                                         hysteresis = <0>; /* millicelsius */
> @@ -53,6 +63,37 @@
>                                      trip = <&cpu_alert2>;
>                                      cooling-device = <&fan0 2 3>;
>                                 };
> +
> +                               /*
> +                                * When reaching cpu_alert3, reduce CPU
> +                                * by 3 steps. On Exynos5422/5800 that would
> +                                * be: 1400 MHz and 1000 MHz.
> +                                */
> +                               map3 {
> +                                    trip = <&cpu_alert3>;
> +                                    cooling-device = <&cpu0 3 3>;
> +                               };
> +                               map4 {
> +                                    trip = <&cpu_alert3>;
> +                                    cooling-device = <&cpu4 3 3>;
> +                               };
> +
> +                               /*
> +                                * When reaching cpu_alert4, reduce CPU
> +                                * to 600 MHz (11 steps for big, 7 steps for
> +                                * LITTLE).
> +                                * Exynos5420 has less OPPs and reversed
> +                                * numbering of CPUs (big/LITTLE) so this
> +                                * would not match.
> +                                */
> +                               map5 {
> +                                    trip = <&cpu_alert4>;
> +                                    cooling-device = <&cpu0 7 7>;
> +                               };
> +                               map6 {
> +                                    trip = <&cpu_alert4>;
> +                                    cooling-device = <&cpu4 11 11>;
> +                               };
>                         };
>                 };
>         };
> --
> 2.5.0
>

could you append this patch with following changes.

diff --git a/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
b/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
index 66073ce..4e72637 100644
--- a/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
+++ b/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
@@ -16,8 +16,8 @@
        thermal-zones {
                cpu0_thermal: cpu0-thermal {
                        thermal-sensors = <&tmu_cpu0 0>;
-                       polling-delay-passive = <0>;
-                       polling-delay = <0>;
+                       polling-delay-passive = <250>; /* milliseconds */
+                       polling-delay = <500>; /* milliseconds */
                        trips {
                                cpu_alert0: cpu-alert-0 {
                                        temperature = <50000>; /*
millicelsius */
---
On running linaro pm-qa diagnostic tool
----------------------------------------------------------

thermal_01.28: checking 'thermal_zone2'/'trip_point_2_temp' ='110000'...    Ok
thermal_01.29: checking 'cdev0_trip_point' exists in
'/sys/devices/virtual/thermal/thermal_zone0'... Ok
thermal_01.30: checking 'thermal_zone0/cdev0_trip_point' valid binding...   Ok
thermal_01.31: checking 'cdev4_trip_point' exists in
'/sys/devices/virtual/thermal/thermal_zone0'... Ok
thermal_01.32: checking 'thermal_zone0/cdev4_trip_point' valid binding...   Err
thermal_01.33: checking 'cdev4_trip_point' exists in
'/sys/devices/virtual/thermal/thermal_zone0'... Ok
thermal_01.34: checking 'thermal_zone0/cdev4_trip_point' valid binding...   Err
thermal_01.35: checking 'cdev4_trip_point' exists in
'/sys/devices/virtual/thermal/thermal_zone0'... Ok
thermal_01.36: checking 'thermal_zone0/cdev4_trip_point' valid binding...   Err
thermal_01.37: checking 'cdev4_trip_point' exists in
'/sys/devices/virtual/thermal/thermal_zone0'... Ok
thermal_01.38: checking 'thermal_zone0/cdev4_trip_point' valid binding...   Err

thermal_01: fail
-------------------------------------------------------
I also got lot's of error.

root at odroidxu4l:~# cpu[ 3050.847663] cpu cpu4: Failed to find dev_opp: -19
[ 3171.640836] cpu cpu4: device_opp_debug_create_link: Failed to create link
[ 3171.646197] cpu cpu4: _add_list_dev: Failed to register opp debugfs (-12)
[ 3171.653574] cpu cpu7: device_opp_debug_create_link: Failed to create link
[ 3171.659752] cpu cpu7: _add_list_dev: Failed to register opp debugfs (-12)
[ 3171.697011] cpu cpu5: cpufreq_init: failed to get clk: -2
[ 3171.732505] cpu cpu6: cpufreq_init: failed to get clk: -2
[ 3171.768160] cpu cpu7: cpufreq_init: failed to get clk: -2

Tested on Odroid-XU4

Reviewed-by: Anand Moon <linux.amoon@gmail.com>
Tested-by: Anand Moon <linux.amoon@gmail.com>

Best Regards
-Anand Moon

> --
> To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
> the body of a message to majordomo at vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply related	[flat|nested] 36+ messages in thread

* Re: [RFC 3/3] ARM: dts: Don't overheat the Odroid XU3-Lite on high load
  2016-02-17 19:53     ` Anand Moon
  (?)
@ 2016-02-18  1:47       ` Krzysztof Kozlowski
  -1 siblings, 0 replies; 36+ messages in thread
From: Krzysztof Kozlowski @ 2016-02-18  1:47 UTC (permalink / raw)
  To: Anand Moon
  Cc: Kukjin Kim, Lukasz Majewski, linux-arm-kernel, linux-samsung-soc,
	Linux Kernel, Linux PM list, Zhang Rui, Eduardo Valentin,
	Viresh Kumar, Bartlomiej Zolnierkiewicz,
	Javier Martinez Canillas

On 18.02.2016 04:53, Anand Moon wrote:
> Hi Krzysztof,
> 
> On 17 February 2016 at 12:25, Krzysztof Kozlowski
> <k.kozlowski@samsung.com> wrote:
>> After adding cpufreq-dt support to Exynos542x, the Odroid XU3-Lite can
>> be easily overheated when launching eight CPU-intensive tasks:
>>         thermal thermal_zone3: critical temperature reached(121 C),shutting down
>>
>> This seems to be specific to Odroid XU3-Lite board which officially
>> supports lower frequencies than regular XU3 or XU4. When working at
>> maximum CPU speed (1800 MHz big and 1300 MHz LITTLE) in warmer place for
>> longer time, the fan fails to cool down the board and it reaches
>> critical temperature.
>>
>> Add CPU cooling to Exynos5422/5800 to fix this issue. When reaching 95
>> degrees of Celsius, the board will slow down by 3 steps (around
>> 1400/1000 MHz). When reaching 110 degrees of Celsius go to 600 MHz.
>>
>> Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
>> ---
>>  arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi | 41 +++++++++++++++++++++++++++
>>  1 file changed, 41 insertions(+)
>>
>> diff --git a/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi b/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
>> index 2b289d7c0d13..66073ce29aee 100644
>> --- a/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
>> +++ b/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
>> @@ -34,6 +34,16 @@
>>                                         hysteresis = <5000>; /* millicelsius */
>>                                         type = "active";
>>                                 };
>> +                               cpu_alert3: cpu-alert-3 {
>> +                                       temperature = <95000>; /* millicelsius */
>> +                                       hysteresis = <5000>; /* millicelsius */
>> +                                       type = "passive";
>> +                               };
>> +                               cpu_alert4: cpu-alert-4 {
>> +                                       temperature = <110000>; /* millicelsius */
>> +                                       hysteresis = <5000>; /* millicelsius */
>> +                                       type = "passive";
>> +                               };
>>                                 cpu_crit0: cpu-crit-0 {
>>                                         temperature = <120000>; /* millicelsius */
>>                                         hysteresis = <0>; /* millicelsius */
>> @@ -53,6 +63,37 @@
>>                                      trip = <&cpu_alert2>;
>>                                      cooling-device = <&fan0 2 3>;
>>                                 };
>> +
>> +                               /*
>> +                                * When reaching cpu_alert3, reduce CPU
>> +                                * by 3 steps. On Exynos5422/5800 that would
>> +                                * be: 1400 MHz and 1000 MHz.
>> +                                */
>> +                               map3 {
>> +                                    trip = <&cpu_alert3>;
>> +                                    cooling-device = <&cpu0 3 3>;
>> +                               };
>> +                               map4 {
>> +                                    trip = <&cpu_alert3>;
>> +                                    cooling-device = <&cpu4 3 3>;
>> +                               };
>> +
>> +                               /*
>> +                                * When reaching cpu_alert4, reduce CPU
>> +                                * to 600 MHz (11 steps for big, 7 steps for
>> +                                * LITTLE).
>> +                                * Exynos5420 has less OPPs and reversed
>> +                                * numbering of CPUs (big/LITTLE) so this
>> +                                * would not match.
>> +                                */
>> +                               map5 {
>> +                                    trip = <&cpu_alert4>;
>> +                                    cooling-device = <&cpu0 7 7>;
>> +                               };
>> +                               map6 {
>> +                                    trip = <&cpu_alert4>;
>> +                                    cooling-device = <&cpu4 11 11>;
>> +                               };
>>                         };
>>                 };
>>         };
>> --
>> 2.5.0
>>
> 
> could you append this patch with following changes.

Could you describe why?

> diff --git a/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
> b/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
> index 66073ce..4e72637 100644
> --- a/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
> +++ b/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
> @@ -16,8 +16,8 @@
>         thermal-zones {
>                 cpu0_thermal: cpu0-thermal {
>                         thermal-sensors = <&tmu_cpu0 0>;
> -                       polling-delay-passive = <0>;
> -                       polling-delay = <0>;
> +                       polling-delay-passive = <250>; /* milliseconds */
> +                       polling-delay = <500>; /* milliseconds */
>                         trips {
>                                 cpu_alert0: cpu-alert-0 {
>                                         temperature = <50000>; /*
> millicelsius */
> ---
> On running linaro pm-qa diagnostic tool
> ----------------------------------------------------------
> 
> thermal_01.28: checking 'thermal_zone2'/'trip_point_2_temp' ='110000'...    Ok
> thermal_01.29: checking 'cdev0_trip_point' exists in
> '/sys/devices/virtual/thermal/thermal_zone0'... Ok
> thermal_01.30: checking 'thermal_zone0/cdev0_trip_point' valid binding...   Ok
> thermal_01.31: checking 'cdev4_trip_point' exists in
> '/sys/devices/virtual/thermal/thermal_zone0'... Ok
> thermal_01.32: checking 'thermal_zone0/cdev4_trip_point' valid binding...   Err
> thermal_01.33: checking 'cdev4_trip_point' exists in
> '/sys/devices/virtual/thermal/thermal_zone0'... Ok
> thermal_01.34: checking 'thermal_zone0/cdev4_trip_point' valid binding...   Err
> thermal_01.35: checking 'cdev4_trip_point' exists in
> '/sys/devices/virtual/thermal/thermal_zone0'... Ok
> thermal_01.36: checking 'thermal_zone0/cdev4_trip_point' valid binding...   Err
> thermal_01.37: checking 'cdev4_trip_point' exists in
> '/sys/devices/virtual/thermal/thermal_zone0'... Ok
> thermal_01.38: checking 'thermal_zone0/cdev4_trip_point' valid binding...   Err
> 
> thermal_01: fail
> -------------------------------------------------------
> I also got lot's of error.
> 
> root@odroidxu4l:~# cpu[ 3050.847663] cpu cpu4: Failed to find dev_opp: -19
> [ 3171.640836] cpu cpu4: device_opp_debug_create_link: Failed to create link
> [ 3171.646197] cpu cpu4: _add_list_dev: Failed to register opp debugfs (-12)
> [ 3171.653574] cpu cpu7: device_opp_debug_create_link: Failed to create link
> [ 3171.659752] cpu cpu7: _add_list_dev: Failed to register opp debugfs (-12)
> [ 3171.697011] cpu cpu5: cpufreq_init: failed to get clk: -2
> [ 3171.732505] cpu cpu6: cpufreq_init: failed to get clk: -2
> [ 3171.768160] cpu cpu7: cpufreq_init: failed to get clk: -2
> 
> Tested on Odroid-XU4
> 
> Reviewed-by: Anand Moon <linux.amoon@gmail.com>
> Tested-by: Anand Moon <linux.amoon@gmail.com>

The patch is not sufficient. It does not work the way it should...

BTW, I found the issue. The order of trip points in DT:
thermal_zone0/trip_point_0_hyst:5000
thermal_zone0/trip_point_0_temp:50000
thermal_zone0/trip_point_0_type:active
thermal_zone0/trip_point_1_hyst:5000
thermal_zone0/trip_point_1_temp:60000
thermal_zone0/trip_point_1_type:active
thermal_zone0/trip_point_2_hyst:5000
thermal_zone0/trip_point_2_temp:70000
thermal_zone0/trip_point_2_type:active
thermal_zone0/trip_point_3_hyst:0
thermal_zone0/trip_point_3_temp:120000	<---- this should be last one!
thermal_zone0/trip_point_3_type:critical
thermal_zone0/trip_point_4_hyst:5000
thermal_zone0/trip_point_4_temp:90000
thermal_zone0/trip_point_4_type:passive
thermal_zone0/trip_point_5_hyst:5000
thermal_zone0/trip_point_5_temp:110000
thermal_zone0/trip_point_5_type:passive

After fixing the order in DT, the cpu cooler starts working.

Best regards,
Krzysztof

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [RFC 3/3] ARM: dts: Don't overheat the Odroid XU3-Lite on high load
@ 2016-02-18  1:47       ` Krzysztof Kozlowski
  0 siblings, 0 replies; 36+ messages in thread
From: Krzysztof Kozlowski @ 2016-02-18  1:47 UTC (permalink / raw)
  To: Anand Moon
  Cc: Kukjin Kim, Lukasz Majewski, linux-arm-kernel, linux-samsung-soc,
	Linux Kernel, Linux PM list, Zhang Rui, Eduardo Valentin,
	Viresh Kumar, Bartlomiej Zolnierkiewicz,
	Javier Martinez Canillas

On 18.02.2016 04:53, Anand Moon wrote:
> Hi Krzysztof,
> 
> On 17 February 2016 at 12:25, Krzysztof Kozlowski
> <k.kozlowski@samsung.com> wrote:
>> After adding cpufreq-dt support to Exynos542x, the Odroid XU3-Lite can
>> be easily overheated when launching eight CPU-intensive tasks:
>>         thermal thermal_zone3: critical temperature reached(121 C),shutting down
>>
>> This seems to be specific to Odroid XU3-Lite board which officially
>> supports lower frequencies than regular XU3 or XU4. When working at
>> maximum CPU speed (1800 MHz big and 1300 MHz LITTLE) in warmer place for
>> longer time, the fan fails to cool down the board and it reaches
>> critical temperature.
>>
>> Add CPU cooling to Exynos5422/5800 to fix this issue. When reaching 95
>> degrees of Celsius, the board will slow down by 3 steps (around
>> 1400/1000 MHz). When reaching 110 degrees of Celsius go to 600 MHz.
>>
>> Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
>> ---
>>  arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi | 41 +++++++++++++++++++++++++++
>>  1 file changed, 41 insertions(+)
>>
>> diff --git a/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi b/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
>> index 2b289d7c0d13..66073ce29aee 100644
>> --- a/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
>> +++ b/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
>> @@ -34,6 +34,16 @@
>>                                         hysteresis = <5000>; /* millicelsius */
>>                                         type = "active";
>>                                 };
>> +                               cpu_alert3: cpu-alert-3 {
>> +                                       temperature = <95000>; /* millicelsius */
>> +                                       hysteresis = <5000>; /* millicelsius */
>> +                                       type = "passive";
>> +                               };
>> +                               cpu_alert4: cpu-alert-4 {
>> +                                       temperature = <110000>; /* millicelsius */
>> +                                       hysteresis = <5000>; /* millicelsius */
>> +                                       type = "passive";
>> +                               };
>>                                 cpu_crit0: cpu-crit-0 {
>>                                         temperature = <120000>; /* millicelsius */
>>                                         hysteresis = <0>; /* millicelsius */
>> @@ -53,6 +63,37 @@
>>                                      trip = <&cpu_alert2>;
>>                                      cooling-device = <&fan0 2 3>;
>>                                 };
>> +
>> +                               /*
>> +                                * When reaching cpu_alert3, reduce CPU
>> +                                * by 3 steps. On Exynos5422/5800 that would
>> +                                * be: 1400 MHz and 1000 MHz.
>> +                                */
>> +                               map3 {
>> +                                    trip = <&cpu_alert3>;
>> +                                    cooling-device = <&cpu0 3 3>;
>> +                               };
>> +                               map4 {
>> +                                    trip = <&cpu_alert3>;
>> +                                    cooling-device = <&cpu4 3 3>;
>> +                               };
>> +
>> +                               /*
>> +                                * When reaching cpu_alert4, reduce CPU
>> +                                * to 600 MHz (11 steps for big, 7 steps for
>> +                                * LITTLE).
>> +                                * Exynos5420 has less OPPs and reversed
>> +                                * numbering of CPUs (big/LITTLE) so this
>> +                                * would not match.
>> +                                */
>> +                               map5 {
>> +                                    trip = <&cpu_alert4>;
>> +                                    cooling-device = <&cpu0 7 7>;
>> +                               };
>> +                               map6 {
>> +                                    trip = <&cpu_alert4>;
>> +                                    cooling-device = <&cpu4 11 11>;
>> +                               };
>>                         };
>>                 };
>>         };
>> --
>> 2.5.0
>>
> 
> could you append this patch with following changes.

Could you describe why?

> diff --git a/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
> b/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
> index 66073ce..4e72637 100644
> --- a/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
> +++ b/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
> @@ -16,8 +16,8 @@
>         thermal-zones {
>                 cpu0_thermal: cpu0-thermal {
>                         thermal-sensors = <&tmu_cpu0 0>;
> -                       polling-delay-passive = <0>;
> -                       polling-delay = <0>;
> +                       polling-delay-passive = <250>; /* milliseconds */
> +                       polling-delay = <500>; /* milliseconds */
>                         trips {
>                                 cpu_alert0: cpu-alert-0 {
>                                         temperature = <50000>; /*
> millicelsius */
> ---
> On running linaro pm-qa diagnostic tool
> ----------------------------------------------------------
> 
> thermal_01.28: checking 'thermal_zone2'/'trip_point_2_temp' ='110000'...    Ok
> thermal_01.29: checking 'cdev0_trip_point' exists in
> '/sys/devices/virtual/thermal/thermal_zone0'... Ok
> thermal_01.30: checking 'thermal_zone0/cdev0_trip_point' valid binding...   Ok
> thermal_01.31: checking 'cdev4_trip_point' exists in
> '/sys/devices/virtual/thermal/thermal_zone0'... Ok
> thermal_01.32: checking 'thermal_zone0/cdev4_trip_point' valid binding...   Err
> thermal_01.33: checking 'cdev4_trip_point' exists in
> '/sys/devices/virtual/thermal/thermal_zone0'... Ok
> thermal_01.34: checking 'thermal_zone0/cdev4_trip_point' valid binding...   Err
> thermal_01.35: checking 'cdev4_trip_point' exists in
> '/sys/devices/virtual/thermal/thermal_zone0'... Ok
> thermal_01.36: checking 'thermal_zone0/cdev4_trip_point' valid binding...   Err
> thermal_01.37: checking 'cdev4_trip_point' exists in
> '/sys/devices/virtual/thermal/thermal_zone0'... Ok
> thermal_01.38: checking 'thermal_zone0/cdev4_trip_point' valid binding...   Err
> 
> thermal_01: fail
> -------------------------------------------------------
> I also got lot's of error.
> 
> root@odroidxu4l:~# cpu[ 3050.847663] cpu cpu4: Failed to find dev_opp: -19
> [ 3171.640836] cpu cpu4: device_opp_debug_create_link: Failed to create link
> [ 3171.646197] cpu cpu4: _add_list_dev: Failed to register opp debugfs (-12)
> [ 3171.653574] cpu cpu7: device_opp_debug_create_link: Failed to create link
> [ 3171.659752] cpu cpu7: _add_list_dev: Failed to register opp debugfs (-12)
> [ 3171.697011] cpu cpu5: cpufreq_init: failed to get clk: -2
> [ 3171.732505] cpu cpu6: cpufreq_init: failed to get clk: -2
> [ 3171.768160] cpu cpu7: cpufreq_init: failed to get clk: -2
> 
> Tested on Odroid-XU4
> 
> Reviewed-by: Anand Moon <linux.amoon@gmail.com>
> Tested-by: Anand Moon <linux.amoon@gmail.com>

The patch is not sufficient. It does not work the way it should...

BTW, I found the issue. The order of trip points in DT:
thermal_zone0/trip_point_0_hyst:5000
thermal_zone0/trip_point_0_temp:50000
thermal_zone0/trip_point_0_type:active
thermal_zone0/trip_point_1_hyst:5000
thermal_zone0/trip_point_1_temp:60000
thermal_zone0/trip_point_1_type:active
thermal_zone0/trip_point_2_hyst:5000
thermal_zone0/trip_point_2_temp:70000
thermal_zone0/trip_point_2_type:active
thermal_zone0/trip_point_3_hyst:0
thermal_zone0/trip_point_3_temp:120000	<---- this should be last one!
thermal_zone0/trip_point_3_type:critical
thermal_zone0/trip_point_4_hyst:5000
thermal_zone0/trip_point_4_temp:90000
thermal_zone0/trip_point_4_type:passive
thermal_zone0/trip_point_5_hyst:5000
thermal_zone0/trip_point_5_temp:110000
thermal_zone0/trip_point_5_type:passive

After fixing the order in DT, the cpu cooler starts working.

Best regards,
Krzysztof

^ permalink raw reply	[flat|nested] 36+ messages in thread

* [RFC 3/3] ARM: dts: Don't overheat the Odroid XU3-Lite on high load
@ 2016-02-18  1:47       ` Krzysztof Kozlowski
  0 siblings, 0 replies; 36+ messages in thread
From: Krzysztof Kozlowski @ 2016-02-18  1:47 UTC (permalink / raw)
  To: linux-arm-kernel

On 18.02.2016 04:53, Anand Moon wrote:
> Hi Krzysztof,
> 
> On 17 February 2016 at 12:25, Krzysztof Kozlowski
> <k.kozlowski@samsung.com> wrote:
>> After adding cpufreq-dt support to Exynos542x, the Odroid XU3-Lite can
>> be easily overheated when launching eight CPU-intensive tasks:
>>         thermal thermal_zone3: critical temperature reached(121 C),shutting down
>>
>> This seems to be specific to Odroid XU3-Lite board which officially
>> supports lower frequencies than regular XU3 or XU4. When working at
>> maximum CPU speed (1800 MHz big and 1300 MHz LITTLE) in warmer place for
>> longer time, the fan fails to cool down the board and it reaches
>> critical temperature.
>>
>> Add CPU cooling to Exynos5422/5800 to fix this issue. When reaching 95
>> degrees of Celsius, the board will slow down by 3 steps (around
>> 1400/1000 MHz). When reaching 110 degrees of Celsius go to 600 MHz.
>>
>> Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
>> ---
>>  arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi | 41 +++++++++++++++++++++++++++
>>  1 file changed, 41 insertions(+)
>>
>> diff --git a/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi b/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
>> index 2b289d7c0d13..66073ce29aee 100644
>> --- a/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
>> +++ b/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
>> @@ -34,6 +34,16 @@
>>                                         hysteresis = <5000>; /* millicelsius */
>>                                         type = "active";
>>                                 };
>> +                               cpu_alert3: cpu-alert-3 {
>> +                                       temperature = <95000>; /* millicelsius */
>> +                                       hysteresis = <5000>; /* millicelsius */
>> +                                       type = "passive";
>> +                               };
>> +                               cpu_alert4: cpu-alert-4 {
>> +                                       temperature = <110000>; /* millicelsius */
>> +                                       hysteresis = <5000>; /* millicelsius */
>> +                                       type = "passive";
>> +                               };
>>                                 cpu_crit0: cpu-crit-0 {
>>                                         temperature = <120000>; /* millicelsius */
>>                                         hysteresis = <0>; /* millicelsius */
>> @@ -53,6 +63,37 @@
>>                                      trip = <&cpu_alert2>;
>>                                      cooling-device = <&fan0 2 3>;
>>                                 };
>> +
>> +                               /*
>> +                                * When reaching cpu_alert3, reduce CPU
>> +                                * by 3 steps. On Exynos5422/5800 that would
>> +                                * be: 1400 MHz and 1000 MHz.
>> +                                */
>> +                               map3 {
>> +                                    trip = <&cpu_alert3>;
>> +                                    cooling-device = <&cpu0 3 3>;
>> +                               };
>> +                               map4 {
>> +                                    trip = <&cpu_alert3>;
>> +                                    cooling-device = <&cpu4 3 3>;
>> +                               };
>> +
>> +                               /*
>> +                                * When reaching cpu_alert4, reduce CPU
>> +                                * to 600 MHz (11 steps for big, 7 steps for
>> +                                * LITTLE).
>> +                                * Exynos5420 has less OPPs and reversed
>> +                                * numbering of CPUs (big/LITTLE) so this
>> +                                * would not match.
>> +                                */
>> +                               map5 {
>> +                                    trip = <&cpu_alert4>;
>> +                                    cooling-device = <&cpu0 7 7>;
>> +                               };
>> +                               map6 {
>> +                                    trip = <&cpu_alert4>;
>> +                                    cooling-device = <&cpu4 11 11>;
>> +                               };
>>                         };
>>                 };
>>         };
>> --
>> 2.5.0
>>
> 
> could you append this patch with following changes.

Could you describe why?

> diff --git a/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
> b/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
> index 66073ce..4e72637 100644
> --- a/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
> +++ b/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
> @@ -16,8 +16,8 @@
>         thermal-zones {
>                 cpu0_thermal: cpu0-thermal {
>                         thermal-sensors = <&tmu_cpu0 0>;
> -                       polling-delay-passive = <0>;
> -                       polling-delay = <0>;
> +                       polling-delay-passive = <250>; /* milliseconds */
> +                       polling-delay = <500>; /* milliseconds */
>                         trips {
>                                 cpu_alert0: cpu-alert-0 {
>                                         temperature = <50000>; /*
> millicelsius */
> ---
> On running linaro pm-qa diagnostic tool
> ----------------------------------------------------------
> 
> thermal_01.28: checking 'thermal_zone2'/'trip_point_2_temp' ='110000'...    Ok
> thermal_01.29: checking 'cdev0_trip_point' exists in
> '/sys/devices/virtual/thermal/thermal_zone0'... Ok
> thermal_01.30: checking 'thermal_zone0/cdev0_trip_point' valid binding...   Ok
> thermal_01.31: checking 'cdev4_trip_point' exists in
> '/sys/devices/virtual/thermal/thermal_zone0'... Ok
> thermal_01.32: checking 'thermal_zone0/cdev4_trip_point' valid binding...   Err
> thermal_01.33: checking 'cdev4_trip_point' exists in
> '/sys/devices/virtual/thermal/thermal_zone0'... Ok
> thermal_01.34: checking 'thermal_zone0/cdev4_trip_point' valid binding...   Err
> thermal_01.35: checking 'cdev4_trip_point' exists in
> '/sys/devices/virtual/thermal/thermal_zone0'... Ok
> thermal_01.36: checking 'thermal_zone0/cdev4_trip_point' valid binding...   Err
> thermal_01.37: checking 'cdev4_trip_point' exists in
> '/sys/devices/virtual/thermal/thermal_zone0'... Ok
> thermal_01.38: checking 'thermal_zone0/cdev4_trip_point' valid binding...   Err
> 
> thermal_01: fail
> -------------------------------------------------------
> I also got lot's of error.
> 
> root at odroidxu4l:~# cpu[ 3050.847663] cpu cpu4: Failed to find dev_opp: -19
> [ 3171.640836] cpu cpu4: device_opp_debug_create_link: Failed to create link
> [ 3171.646197] cpu cpu4: _add_list_dev: Failed to register opp debugfs (-12)
> [ 3171.653574] cpu cpu7: device_opp_debug_create_link: Failed to create link
> [ 3171.659752] cpu cpu7: _add_list_dev: Failed to register opp debugfs (-12)
> [ 3171.697011] cpu cpu5: cpufreq_init: failed to get clk: -2
> [ 3171.732505] cpu cpu6: cpufreq_init: failed to get clk: -2
> [ 3171.768160] cpu cpu7: cpufreq_init: failed to get clk: -2
> 
> Tested on Odroid-XU4
> 
> Reviewed-by: Anand Moon <linux.amoon@gmail.com>
> Tested-by: Anand Moon <linux.amoon@gmail.com>

The patch is not sufficient. It does not work the way it should...

BTW, I found the issue. The order of trip points in DT:
thermal_zone0/trip_point_0_hyst:5000
thermal_zone0/trip_point_0_temp:50000
thermal_zone0/trip_point_0_type:active
thermal_zone0/trip_point_1_hyst:5000
thermal_zone0/trip_point_1_temp:60000
thermal_zone0/trip_point_1_type:active
thermal_zone0/trip_point_2_hyst:5000
thermal_zone0/trip_point_2_temp:70000
thermal_zone0/trip_point_2_type:active
thermal_zone0/trip_point_3_hyst:0
thermal_zone0/trip_point_3_temp:120000	<---- this should be last one!
thermal_zone0/trip_point_3_type:critical
thermal_zone0/trip_point_4_hyst:5000
thermal_zone0/trip_point_4_temp:90000
thermal_zone0/trip_point_4_type:passive
thermal_zone0/trip_point_5_hyst:5000
thermal_zone0/trip_point_5_temp:110000
thermal_zone0/trip_point_5_type:passive

After fixing the order in DT, the cpu cooler starts working.

Best regards,
Krzysztof

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [RFC 3/3] ARM: dts: Don't overheat the Odroid XU3-Lite on high load
  2016-02-18  1:47       ` Krzysztof Kozlowski
  (?)
@ 2016-02-18  2:36         ` Viresh Kumar
  -1 siblings, 0 replies; 36+ messages in thread
From: Viresh Kumar @ 2016-02-18  2:36 UTC (permalink / raw)
  To: Krzysztof Kozlowski
  Cc: Anand Moon, Kukjin Kim, Lukasz Majewski, linux-arm-kernel,
	linux-samsung-soc, Linux Kernel, Linux PM list, Zhang Rui,
	Eduardo Valentin, Bartlomiej Zolnierkiewicz,
	Javier Martinez Canillas

On 18-02-16, 10:47, Krzysztof Kozlowski wrote:
> On 18.02.2016 04:53, Anand Moon wrote:
> > I also got lot's of error.
> > 
> > root@odroidxu4l:~# cpu[ 3050.847663] cpu cpu4: Failed to find dev_opp: -19
> > [ 3171.640836] cpu cpu4: device_opp_debug_create_link: Failed to create link
> > [ 3171.646197] cpu cpu4: _add_list_dev: Failed to register opp debugfs (-12)
> > [ 3171.653574] cpu cpu7: device_opp_debug_create_link: Failed to create link
> > [ 3171.659752] cpu cpu7: _add_list_dev: Failed to register opp debugfs (-12)
> > [ 3171.697011] cpu cpu5: cpufreq_init: failed to get clk: -2
> > [ 3171.732505] cpu cpu6: cpufreq_init: failed to get clk: -2
> > [ 3171.768160] cpu cpu7: cpufreq_init: failed to get clk: -2
> > 
> > Tested on Odroid-XU4
> > 
> > Reviewed-by: Anand Moon <linux.amoon@gmail.com>
> > Tested-by: Anand Moon <linux.amoon@gmail.com>

What was this Tested-by supposed to mean? You got errors out there ...

> The patch is not sufficient. It does not work the way it should...
> 
> BTW, I found the issue. The order of trip points in DT:
> thermal_zone0/trip_point_0_hyst:5000
> thermal_zone0/trip_point_0_temp:50000
> thermal_zone0/trip_point_0_type:active
> thermal_zone0/trip_point_1_hyst:5000
> thermal_zone0/trip_point_1_temp:60000
> thermal_zone0/trip_point_1_type:active
> thermal_zone0/trip_point_2_hyst:5000
> thermal_zone0/trip_point_2_temp:70000
> thermal_zone0/trip_point_2_type:active
> thermal_zone0/trip_point_3_hyst:0
> thermal_zone0/trip_point_3_temp:120000	<---- this should be last one!
> thermal_zone0/trip_point_3_type:critical
> thermal_zone0/trip_point_4_hyst:5000
> thermal_zone0/trip_point_4_temp:90000
> thermal_zone0/trip_point_4_type:passive
> thermal_zone0/trip_point_5_hyst:5000
> thermal_zone0/trip_point_5_temp:110000
> thermal_zone0/trip_point_5_type:passive
> 
> After fixing the order in DT, the cpu cooler starts working.

Ahh, nice.

-- 
viresh

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [RFC 3/3] ARM: dts: Don't overheat the Odroid XU3-Lite on high load
@ 2016-02-18  2:36         ` Viresh Kumar
  0 siblings, 0 replies; 36+ messages in thread
From: Viresh Kumar @ 2016-02-18  2:36 UTC (permalink / raw)
  To: Krzysztof Kozlowski
  Cc: Anand Moon, Kukjin Kim, Lukasz Majewski, linux-arm-kernel,
	linux-samsung-soc, Linux Kernel, Linux PM list, Zhang Rui,
	Eduardo Valentin, Bartlomiej Zolnierkiewicz,
	Javier Martinez Canillas

On 18-02-16, 10:47, Krzysztof Kozlowski wrote:
> On 18.02.2016 04:53, Anand Moon wrote:
> > I also got lot's of error.
> > 
> > root@odroidxu4l:~# cpu[ 3050.847663] cpu cpu4: Failed to find dev_opp: -19
> > [ 3171.640836] cpu cpu4: device_opp_debug_create_link: Failed to create link
> > [ 3171.646197] cpu cpu4: _add_list_dev: Failed to register opp debugfs (-12)
> > [ 3171.653574] cpu cpu7: device_opp_debug_create_link: Failed to create link
> > [ 3171.659752] cpu cpu7: _add_list_dev: Failed to register opp debugfs (-12)
> > [ 3171.697011] cpu cpu5: cpufreq_init: failed to get clk: -2
> > [ 3171.732505] cpu cpu6: cpufreq_init: failed to get clk: -2
> > [ 3171.768160] cpu cpu7: cpufreq_init: failed to get clk: -2
> > 
> > Tested on Odroid-XU4
> > 
> > Reviewed-by: Anand Moon <linux.amoon@gmail.com>
> > Tested-by: Anand Moon <linux.amoon@gmail.com>

What was this Tested-by supposed to mean? You got errors out there ...

> The patch is not sufficient. It does not work the way it should...
> 
> BTW, I found the issue. The order of trip points in DT:
> thermal_zone0/trip_point_0_hyst:5000
> thermal_zone0/trip_point_0_temp:50000
> thermal_zone0/trip_point_0_type:active
> thermal_zone0/trip_point_1_hyst:5000
> thermal_zone0/trip_point_1_temp:60000
> thermal_zone0/trip_point_1_type:active
> thermal_zone0/trip_point_2_hyst:5000
> thermal_zone0/trip_point_2_temp:70000
> thermal_zone0/trip_point_2_type:active
> thermal_zone0/trip_point_3_hyst:0
> thermal_zone0/trip_point_3_temp:120000	<---- this should be last one!
> thermal_zone0/trip_point_3_type:critical
> thermal_zone0/trip_point_4_hyst:5000
> thermal_zone0/trip_point_4_temp:90000
> thermal_zone0/trip_point_4_type:passive
> thermal_zone0/trip_point_5_hyst:5000
> thermal_zone0/trip_point_5_temp:110000
> thermal_zone0/trip_point_5_type:passive
> 
> After fixing the order in DT, the cpu cooler starts working.

Ahh, nice.

-- 
viresh

^ permalink raw reply	[flat|nested] 36+ messages in thread

* [RFC 3/3] ARM: dts: Don't overheat the Odroid XU3-Lite on high load
@ 2016-02-18  2:36         ` Viresh Kumar
  0 siblings, 0 replies; 36+ messages in thread
From: Viresh Kumar @ 2016-02-18  2:36 UTC (permalink / raw)
  To: linux-arm-kernel

On 18-02-16, 10:47, Krzysztof Kozlowski wrote:
> On 18.02.2016 04:53, Anand Moon wrote:
> > I also got lot's of error.
> > 
> > root at odroidxu4l:~# cpu[ 3050.847663] cpu cpu4: Failed to find dev_opp: -19
> > [ 3171.640836] cpu cpu4: device_opp_debug_create_link: Failed to create link
> > [ 3171.646197] cpu cpu4: _add_list_dev: Failed to register opp debugfs (-12)
> > [ 3171.653574] cpu cpu7: device_opp_debug_create_link: Failed to create link
> > [ 3171.659752] cpu cpu7: _add_list_dev: Failed to register opp debugfs (-12)
> > [ 3171.697011] cpu cpu5: cpufreq_init: failed to get clk: -2
> > [ 3171.732505] cpu cpu6: cpufreq_init: failed to get clk: -2
> > [ 3171.768160] cpu cpu7: cpufreq_init: failed to get clk: -2
> > 
> > Tested on Odroid-XU4
> > 
> > Reviewed-by: Anand Moon <linux.amoon@gmail.com>
> > Tested-by: Anand Moon <linux.amoon@gmail.com>

What was this Tested-by supposed to mean? You got errors out there ...

> The patch is not sufficient. It does not work the way it should...
> 
> BTW, I found the issue. The order of trip points in DT:
> thermal_zone0/trip_point_0_hyst:5000
> thermal_zone0/trip_point_0_temp:50000
> thermal_zone0/trip_point_0_type:active
> thermal_zone0/trip_point_1_hyst:5000
> thermal_zone0/trip_point_1_temp:60000
> thermal_zone0/trip_point_1_type:active
> thermal_zone0/trip_point_2_hyst:5000
> thermal_zone0/trip_point_2_temp:70000
> thermal_zone0/trip_point_2_type:active
> thermal_zone0/trip_point_3_hyst:0
> thermal_zone0/trip_point_3_temp:120000	<---- this should be last one!
> thermal_zone0/trip_point_3_type:critical
> thermal_zone0/trip_point_4_hyst:5000
> thermal_zone0/trip_point_4_temp:90000
> thermal_zone0/trip_point_4_type:passive
> thermal_zone0/trip_point_5_hyst:5000
> thermal_zone0/trip_point_5_temp:110000
> thermal_zone0/trip_point_5_type:passive
> 
> After fixing the order in DT, the cpu cooler starts working.

Ahh, nice.

-- 
viresh

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [RFC 3/3] ARM: dts: Don't overheat the Odroid XU3-Lite on high load
  2016-02-18  2:36         ` Viresh Kumar
  (?)
@ 2016-02-18  2:54           ` Anand Moon
  -1 siblings, 0 replies; 36+ messages in thread
From: Anand Moon @ 2016-02-18  2:54 UTC (permalink / raw)
  To: Viresh Kumar
  Cc: Krzysztof Kozlowski, Kukjin Kim, Lukasz Majewski,
	linux-arm-kernel, linux-samsung-soc, Linux Kernel, Linux PM list,
	Zhang Rui, Eduardo Valentin, Bartlomiej Zolnierkiewicz,
	Javier Martinez Canillas

Hi Viresh,

On 18 February 2016 at 08:06, Viresh Kumar <viresh.kumar@linaro.org> wrote:
> On 18-02-16, 10:47, Krzysztof Kozlowski wrote:
>> On 18.02.2016 04:53, Anand Moon wrote:
>> > I also got lot's of error.
>> >
>> > root@odroidxu4l:~# cpu[ 3050.847663] cpu cpu4: Failed to find dev_opp: -19
>> > [ 3171.640836] cpu cpu4: device_opp_debug_create_link: Failed to create link
>> > [ 3171.646197] cpu cpu4: _add_list_dev: Failed to register opp debugfs (-12)
>> > [ 3171.653574] cpu cpu7: device_opp_debug_create_link: Failed to create link
>> > [ 3171.659752] cpu cpu7: _add_list_dev: Failed to register opp debugfs (-12)
>> > [ 3171.697011] cpu cpu5: cpufreq_init: failed to get clk: -2
>> > [ 3171.732505] cpu cpu6: cpufreq_init: failed to get clk: -2
>> > [ 3171.768160] cpu cpu7: cpufreq_init: failed to get clk: -2
>> >
>> > Tested on Odroid-XU4
>> >
>> > Reviewed-by: Anand Moon <linux.amoon@gmail.com>
>> > Tested-by: Anand Moon <linux.amoon@gmail.com>
>
> What was this Tested-by supposed to mean? You got errors out there ...
>

I had done some stress testing, as pointed by Krzysztof.
I got myself in two minds on this part, please don't consider the
Tested-by and Reviewed-by part.
Thanks for pointing out.

-Anand  Moon

>> The patch is not sufficient. It does not work the way it should...
>>
>> BTW, I found the issue. The order of trip points in DT:
>> thermal_zone0/trip_point_0_hyst:5000
>> thermal_zone0/trip_point_0_temp:50000
>> thermal_zone0/trip_point_0_type:active
>> thermal_zone0/trip_point_1_hyst:5000
>> thermal_zone0/trip_point_1_temp:60000
>> thermal_zone0/trip_point_1_type:active
>> thermal_zone0/trip_point_2_hyst:5000
>> thermal_zone0/trip_point_2_temp:70000
>> thermal_zone0/trip_point_2_type:active
>> thermal_zone0/trip_point_3_hyst:0
>> thermal_zone0/trip_point_3_temp:120000        <---- this should be last one!
>> thermal_zone0/trip_point_3_type:critical
>> thermal_zone0/trip_point_4_hyst:5000
>> thermal_zone0/trip_point_4_temp:90000
>> thermal_zone0/trip_point_4_type:passive
>> thermal_zone0/trip_point_5_hyst:5000
>> thermal_zone0/trip_point_5_temp:110000
>> thermal_zone0/trip_point_5_type:passive
>>
>> After fixing the order in DT, the cpu cooler starts working.
>
> Ahh, nice.
>
> --
> viresh

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [RFC 3/3] ARM: dts: Don't overheat the Odroid XU3-Lite on high load
@ 2016-02-18  2:54           ` Anand Moon
  0 siblings, 0 replies; 36+ messages in thread
From: Anand Moon @ 2016-02-18  2:54 UTC (permalink / raw)
  To: Viresh Kumar
  Cc: Krzysztof Kozlowski, Kukjin Kim, Lukasz Majewski,
	linux-arm-kernel, linux-samsung-soc, Linux Kernel, Linux PM list,
	Zhang Rui, Eduardo Valentin, Bartlomiej Zolnierkiewicz,
	Javier Martinez Canillas

Hi Viresh,

On 18 February 2016 at 08:06, Viresh Kumar <viresh.kumar@linaro.org> wrote:
> On 18-02-16, 10:47, Krzysztof Kozlowski wrote:
>> On 18.02.2016 04:53, Anand Moon wrote:
>> > I also got lot's of error.
>> >
>> > root@odroidxu4l:~# cpu[ 3050.847663] cpu cpu4: Failed to find dev_opp: -19
>> > [ 3171.640836] cpu cpu4: device_opp_debug_create_link: Failed to create link
>> > [ 3171.646197] cpu cpu4: _add_list_dev: Failed to register opp debugfs (-12)
>> > [ 3171.653574] cpu cpu7: device_opp_debug_create_link: Failed to create link
>> > [ 3171.659752] cpu cpu7: _add_list_dev: Failed to register opp debugfs (-12)
>> > [ 3171.697011] cpu cpu5: cpufreq_init: failed to get clk: -2
>> > [ 3171.732505] cpu cpu6: cpufreq_init: failed to get clk: -2
>> > [ 3171.768160] cpu cpu7: cpufreq_init: failed to get clk: -2
>> >
>> > Tested on Odroid-XU4
>> >
>> > Reviewed-by: Anand Moon <linux.amoon@gmail.com>
>> > Tested-by: Anand Moon <linux.amoon@gmail.com>
>
> What was this Tested-by supposed to mean? You got errors out there ...
>

I had done some stress testing, as pointed by Krzysztof.
I got myself in two minds on this part, please don't consider the
Tested-by and Reviewed-by part.
Thanks for pointing out.

-Anand  Moon

>> The patch is not sufficient. It does not work the way it should...
>>
>> BTW, I found the issue. The order of trip points in DT:
>> thermal_zone0/trip_point_0_hyst:5000
>> thermal_zone0/trip_point_0_temp:50000
>> thermal_zone0/trip_point_0_type:active
>> thermal_zone0/trip_point_1_hyst:5000
>> thermal_zone0/trip_point_1_temp:60000
>> thermal_zone0/trip_point_1_type:active
>> thermal_zone0/trip_point_2_hyst:5000
>> thermal_zone0/trip_point_2_temp:70000
>> thermal_zone0/trip_point_2_type:active
>> thermal_zone0/trip_point_3_hyst:0
>> thermal_zone0/trip_point_3_temp:120000        <---- this should be last one!
>> thermal_zone0/trip_point_3_type:critical
>> thermal_zone0/trip_point_4_hyst:5000
>> thermal_zone0/trip_point_4_temp:90000
>> thermal_zone0/trip_point_4_type:passive
>> thermal_zone0/trip_point_5_hyst:5000
>> thermal_zone0/trip_point_5_temp:110000
>> thermal_zone0/trip_point_5_type:passive
>>
>> After fixing the order in DT, the cpu cooler starts working.
>
> Ahh, nice.
>
> --
> viresh

^ permalink raw reply	[flat|nested] 36+ messages in thread

* [RFC 3/3] ARM: dts: Don't overheat the Odroid XU3-Lite on high load
@ 2016-02-18  2:54           ` Anand Moon
  0 siblings, 0 replies; 36+ messages in thread
From: Anand Moon @ 2016-02-18  2:54 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Viresh,

On 18 February 2016 at 08:06, Viresh Kumar <viresh.kumar@linaro.org> wrote:
> On 18-02-16, 10:47, Krzysztof Kozlowski wrote:
>> On 18.02.2016 04:53, Anand Moon wrote:
>> > I also got lot's of error.
>> >
>> > root at odroidxu4l:~# cpu[ 3050.847663] cpu cpu4: Failed to find dev_opp: -19
>> > [ 3171.640836] cpu cpu4: device_opp_debug_create_link: Failed to create link
>> > [ 3171.646197] cpu cpu4: _add_list_dev: Failed to register opp debugfs (-12)
>> > [ 3171.653574] cpu cpu7: device_opp_debug_create_link: Failed to create link
>> > [ 3171.659752] cpu cpu7: _add_list_dev: Failed to register opp debugfs (-12)
>> > [ 3171.697011] cpu cpu5: cpufreq_init: failed to get clk: -2
>> > [ 3171.732505] cpu cpu6: cpufreq_init: failed to get clk: -2
>> > [ 3171.768160] cpu cpu7: cpufreq_init: failed to get clk: -2
>> >
>> > Tested on Odroid-XU4
>> >
>> > Reviewed-by: Anand Moon <linux.amoon@gmail.com>
>> > Tested-by: Anand Moon <linux.amoon@gmail.com>
>
> What was this Tested-by supposed to mean? You got errors out there ...
>

I had done some stress testing, as pointed by Krzysztof.
I got myself in two minds on this part, please don't consider the
Tested-by and Reviewed-by part.
Thanks for pointing out.

-Anand  Moon

>> The patch is not sufficient. It does not work the way it should...
>>
>> BTW, I found the issue. The order of trip points in DT:
>> thermal_zone0/trip_point_0_hyst:5000
>> thermal_zone0/trip_point_0_temp:50000
>> thermal_zone0/trip_point_0_type:active
>> thermal_zone0/trip_point_1_hyst:5000
>> thermal_zone0/trip_point_1_temp:60000
>> thermal_zone0/trip_point_1_type:active
>> thermal_zone0/trip_point_2_hyst:5000
>> thermal_zone0/trip_point_2_temp:70000
>> thermal_zone0/trip_point_2_type:active
>> thermal_zone0/trip_point_3_hyst:0
>> thermal_zone0/trip_point_3_temp:120000        <---- this should be last one!
>> thermal_zone0/trip_point_3_type:critical
>> thermal_zone0/trip_point_4_hyst:5000
>> thermal_zone0/trip_point_4_temp:90000
>> thermal_zone0/trip_point_4_type:passive
>> thermal_zone0/trip_point_5_hyst:5000
>> thermal_zone0/trip_point_5_temp:110000
>> thermal_zone0/trip_point_5_type:passive
>>
>> After fixing the order in DT, the cpu cooler starts working.
>
> Ahh, nice.
>
> --
> viresh

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [RFC 3/3] ARM: dts: Don't overheat the Odroid XU3-Lite on high load
  2016-02-18  1:47       ` Krzysztof Kozlowski
  (?)
@ 2016-02-18  3:17         ` Anand Moon
  -1 siblings, 0 replies; 36+ messages in thread
From: Anand Moon @ 2016-02-18  3:17 UTC (permalink / raw)
  To: Krzysztof Kozlowski
  Cc: Kukjin Kim, Lukasz Majewski, linux-arm-kernel, linux-samsung-soc,
	Linux Kernel, Linux PM list, Zhang Rui, Eduardo Valentin,
	Viresh Kumar, Bartlomiej Zolnierkiewicz,
	Javier Martinez Canillas

Hi Krzysztof

On 18 February 2016 at 07:17, Krzysztof Kozlowski
<k.kozlowski@samsung.com> wrote:
> On 18.02.2016 04:53, Anand Moon wrote:
>> Hi Krzysztof,
>>
>> On 17 February 2016 at 12:25, Krzysztof Kozlowski
>> <k.kozlowski@samsung.com> wrote:
>>> After adding cpufreq-dt support to Exynos542x, the Odroid XU3-Lite can
>>> be easily overheated when launching eight CPU-intensive tasks:
>>>         thermal thermal_zone3: critical temperature reached(121 C),shutting down
>>>
>>> This seems to be specific to Odroid XU3-Lite board which officially
>>> supports lower frequencies than regular XU3 or XU4. When working at
>>> maximum CPU speed (1800 MHz big and 1300 MHz LITTLE) in warmer place for
>>> longer time, the fan fails to cool down the board and it reaches
>>> critical temperature.
>>>
>>> Add CPU cooling to Exynos5422/5800 to fix this issue. When reaching 95
>>> degrees of Celsius, the board will slow down by 3 steps (around
>>> 1400/1000 MHz). When reaching 110 degrees of Celsius go to 600 MHz.
>>>
>>> Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
>>> ---
>>>  arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi | 41 +++++++++++++++++++++++++++
>>>  1 file changed, 41 insertions(+)
>>>
>>> diff --git a/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi b/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
>>> index 2b289d7c0d13..66073ce29aee 100644
>>> --- a/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
>>> +++ b/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
>>> @@ -34,6 +34,16 @@
>>>                                         hysteresis = <5000>; /* millicelsius */
>>>                                         type = "active";
>>>                                 };
>>> +                               cpu_alert3: cpu-alert-3 {
>>> +                                       temperature = <95000>; /* millicelsius */
>>> +                                       hysteresis = <5000>; /* millicelsius */
>>> +                                       type = "passive";
>>> +                               };
>>> +                               cpu_alert4: cpu-alert-4 {
>>> +                                       temperature = <110000>; /* millicelsius */
>>> +                                       hysteresis = <5000>; /* millicelsius */
>>> +                                       type = "passive";
>>> +                               };
>>>                                 cpu_crit0: cpu-crit-0 {
>>>                                         temperature = <120000>; /* millicelsius */
>>>                                         hysteresis = <0>; /* millicelsius */
>>> @@ -53,6 +63,37 @@
>>>                                      trip = <&cpu_alert2>;
>>>                                      cooling-device = <&fan0 2 3>;
>>>                                 };
>>> +
>>> +                               /*
>>> +                                * When reaching cpu_alert3, reduce CPU
>>> +                                * by 3 steps. On Exynos5422/5800 that would
>>> +                                * be: 1400 MHz and 1000 MHz.
>>> +                                */
>>> +                               map3 {
>>> +                                    trip = <&cpu_alert3>;
>>> +                                    cooling-device = <&cpu0 3 3>;
>>> +                               };
>>> +                               map4 {
>>> +                                    trip = <&cpu_alert3>;
>>> +                                    cooling-device = <&cpu4 3 3>;
>>> +                               };
>>> +
>>> +                               /*
>>> +                                * When reaching cpu_alert4, reduce CPU
>>> +                                * to 600 MHz (11 steps for big, 7 steps for
>>> +                                * LITTLE).
>>> +                                * Exynos5420 has less OPPs and reversed
>>> +                                * numbering of CPUs (big/LITTLE) so this
>>> +                                * would not match.
>>> +                                */
>>> +                               map5 {
>>> +                                    trip = <&cpu_alert4>;
>>> +                                    cooling-device = <&cpu0 7 7>;
>>> +                               };
>>> +                               map6 {
>>> +                                    trip = <&cpu_alert4>;
>>> +                                    cooling-device = <&cpu4 11 11>;
>>> +                               };
>>>                         };
>>>                 };
>>>         };
>>> --
>>> 2.5.0
>>>
>>
>> could you append this patch with following changes.
>
> Could you describe why?
>
>From the documentation.
Documentation/thermal/sysfs-api.txt

passive_delay: number of milliseconds to wait between polls when
performing passive cooling.
polling_delay: number of milliseconds to wait between polls when
checking  whether trip points have been crossed (0 for interrupt
driven systems).

Exynos driver is interrupt driven so please ignore.

Best Regards.
-Anand Moon

>> diff --git a/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
>> b/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
>> index 66073ce..4e72637 100644
>> --- a/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
>> +++ b/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
>> @@ -16,8 +16,8 @@
>>         thermal-zones {
>>                 cpu0_thermal: cpu0-thermal {
>>                         thermal-sensors = <&tmu_cpu0 0>;
>> -                       polling-delay-passive = <0>;
>> -                       polling-delay = <0>;
>> +                       polling-delay-passive = <250>; /* milliseconds */
>> +                       polling-delay = <500>; /* milliseconds */
>>                         trips {
>>                                 cpu_alert0: cpu-alert-0 {
>>                                         temperature = <50000>; /*
>> millicelsius */
>> ---
>> On running linaro pm-qa diagnostic tool
>> ----------------------------------------------------------
>>
>> thermal_01.28: checking 'thermal_zone2'/'trip_point_2_temp' ='110000'...    Ok
>> thermal_01.29: checking 'cdev0_trip_point' exists in
>> '/sys/devices/virtual/thermal/thermal_zone0'... Ok
>> thermal_01.30: checking 'thermal_zone0/cdev0_trip_point' valid binding...   Ok
>> thermal_01.31: checking 'cdev4_trip_point' exists in
>> '/sys/devices/virtual/thermal/thermal_zone0'... Ok
>> thermal_01.32: checking 'thermal_zone0/cdev4_trip_point' valid binding...   Err
>> thermal_01.33: checking 'cdev4_trip_point' exists in
>> '/sys/devices/virtual/thermal/thermal_zone0'... Ok
>> thermal_01.34: checking 'thermal_zone0/cdev4_trip_point' valid binding...   Err
>> thermal_01.35: checking 'cdev4_trip_point' exists in
>> '/sys/devices/virtual/thermal/thermal_zone0'... Ok
>> thermal_01.36: checking 'thermal_zone0/cdev4_trip_point' valid binding...   Err
>> thermal_01.37: checking 'cdev4_trip_point' exists in
>> '/sys/devices/virtual/thermal/thermal_zone0'... Ok
>> thermal_01.38: checking 'thermal_zone0/cdev4_trip_point' valid binding...   Err
>>
>> thermal_01: fail
>> -------------------------------------------------------
>> I also got lot's of error.
>>
>> root@odroidxu4l:~# cpu[ 3050.847663] cpu cpu4: Failed to find dev_opp: -19
>> [ 3171.640836] cpu cpu4: device_opp_debug_create_link: Failed to create link
>> [ 3171.646197] cpu cpu4: _add_list_dev: Failed to register opp debugfs (-12)
>> [ 3171.653574] cpu cpu7: device_opp_debug_create_link: Failed to create link
>> [ 3171.659752] cpu cpu7: _add_list_dev: Failed to register opp debugfs (-12)
>> [ 3171.697011] cpu cpu5: cpufreq_init: failed to get clk: -2
>> [ 3171.732505] cpu cpu6: cpufreq_init: failed to get clk: -2
>> [ 3171.768160] cpu cpu7: cpufreq_init: failed to get clk: -2
>>
>> Tested on Odroid-XU4
>>
>> Reviewed-by: Anand Moon <linux.amoon@gmail.com>
>> Tested-by: Anand Moon <linux.amoon@gmail.com>
>
> The patch is not sufficient. It does not work the way it should...
>
> BTW, I found the issue. The order of trip points in DT:
> thermal_zone0/trip_point_0_hyst:5000
> thermal_zone0/trip_point_0_temp:50000
> thermal_zone0/trip_point_0_type:active
> thermal_zone0/trip_point_1_hyst:5000
> thermal_zone0/trip_point_1_temp:60000
> thermal_zone0/trip_point_1_type:active
> thermal_zone0/trip_point_2_hyst:5000
> thermal_zone0/trip_point_2_temp:70000
> thermal_zone0/trip_point_2_type:active
> thermal_zone0/trip_point_3_hyst:0
> thermal_zone0/trip_point_3_temp:120000  <---- this should be last one!
> thermal_zone0/trip_point_3_type:critical
> thermal_zone0/trip_point_4_hyst:5000
> thermal_zone0/trip_point_4_temp:90000
> thermal_zone0/trip_point_4_type:passive
> thermal_zone0/trip_point_5_hyst:5000
> thermal_zone0/trip_point_5_temp:110000
> thermal_zone0/trip_point_5_type:passive
>
> After fixing the order in DT, the cpu cooler starts working.
>
> Best regards,
> Krzysztof
>

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [RFC 3/3] ARM: dts: Don't overheat the Odroid XU3-Lite on high load
@ 2016-02-18  3:17         ` Anand Moon
  0 siblings, 0 replies; 36+ messages in thread
From: Anand Moon @ 2016-02-18  3:17 UTC (permalink / raw)
  To: Krzysztof Kozlowski
  Cc: Kukjin Kim, Lukasz Majewski, linux-arm-kernel, linux-samsung-soc,
	Linux Kernel, Linux PM list, Zhang Rui, Eduardo Valentin,
	Viresh Kumar, Bartlomiej Zolnierkiewicz,
	Javier Martinez Canillas

Hi Krzysztof

On 18 February 2016 at 07:17, Krzysztof Kozlowski
<k.kozlowski@samsung.com> wrote:
> On 18.02.2016 04:53, Anand Moon wrote:
>> Hi Krzysztof,
>>
>> On 17 February 2016 at 12:25, Krzysztof Kozlowski
>> <k.kozlowski@samsung.com> wrote:
>>> After adding cpufreq-dt support to Exynos542x, the Odroid XU3-Lite can
>>> be easily overheated when launching eight CPU-intensive tasks:
>>>         thermal thermal_zone3: critical temperature reached(121 C),shutting down
>>>
>>> This seems to be specific to Odroid XU3-Lite board which officially
>>> supports lower frequencies than regular XU3 or XU4. When working at
>>> maximum CPU speed (1800 MHz big and 1300 MHz LITTLE) in warmer place for
>>> longer time, the fan fails to cool down the board and it reaches
>>> critical temperature.
>>>
>>> Add CPU cooling to Exynos5422/5800 to fix this issue. When reaching 95
>>> degrees of Celsius, the board will slow down by 3 steps (around
>>> 1400/1000 MHz). When reaching 110 degrees of Celsius go to 600 MHz.
>>>
>>> Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
>>> ---
>>>  arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi | 41 +++++++++++++++++++++++++++
>>>  1 file changed, 41 insertions(+)
>>>
>>> diff --git a/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi b/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
>>> index 2b289d7c0d13..66073ce29aee 100644
>>> --- a/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
>>> +++ b/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
>>> @@ -34,6 +34,16 @@
>>>                                         hysteresis = <5000>; /* millicelsius */
>>>                                         type = "active";
>>>                                 };
>>> +                               cpu_alert3: cpu-alert-3 {
>>> +                                       temperature = <95000>; /* millicelsius */
>>> +                                       hysteresis = <5000>; /* millicelsius */
>>> +                                       type = "passive";
>>> +                               };
>>> +                               cpu_alert4: cpu-alert-4 {
>>> +                                       temperature = <110000>; /* millicelsius */
>>> +                                       hysteresis = <5000>; /* millicelsius */
>>> +                                       type = "passive";
>>> +                               };
>>>                                 cpu_crit0: cpu-crit-0 {
>>>                                         temperature = <120000>; /* millicelsius */
>>>                                         hysteresis = <0>; /* millicelsius */
>>> @@ -53,6 +63,37 @@
>>>                                      trip = <&cpu_alert2>;
>>>                                      cooling-device = <&fan0 2 3>;
>>>                                 };
>>> +
>>> +                               /*
>>> +                                * When reaching cpu_alert3, reduce CPU
>>> +                                * by 3 steps. On Exynos5422/5800 that would
>>> +                                * be: 1400 MHz and 1000 MHz.
>>> +                                */
>>> +                               map3 {
>>> +                                    trip = <&cpu_alert3>;
>>> +                                    cooling-device = <&cpu0 3 3>;
>>> +                               };
>>> +                               map4 {
>>> +                                    trip = <&cpu_alert3>;
>>> +                                    cooling-device = <&cpu4 3 3>;
>>> +                               };
>>> +
>>> +                               /*
>>> +                                * When reaching cpu_alert4, reduce CPU
>>> +                                * to 600 MHz (11 steps for big, 7 steps for
>>> +                                * LITTLE).
>>> +                                * Exynos5420 has less OPPs and reversed
>>> +                                * numbering of CPUs (big/LITTLE) so this
>>> +                                * would not match.
>>> +                                */
>>> +                               map5 {
>>> +                                    trip = <&cpu_alert4>;
>>> +                                    cooling-device = <&cpu0 7 7>;
>>> +                               };
>>> +                               map6 {
>>> +                                    trip = <&cpu_alert4>;
>>> +                                    cooling-device = <&cpu4 11 11>;
>>> +                               };
>>>                         };
>>>                 };
>>>         };
>>> --
>>> 2.5.0
>>>
>>
>> could you append this patch with following changes.
>
> Could you describe why?
>
>From the documentation.
Documentation/thermal/sysfs-api.txt

passive_delay: number of milliseconds to wait between polls when
performing passive cooling.
polling_delay: number of milliseconds to wait between polls when
checking  whether trip points have been crossed (0 for interrupt
driven systems).

Exynos driver is interrupt driven so please ignore.

Best Regards.
-Anand Moon

>> diff --git a/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
>> b/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
>> index 66073ce..4e72637 100644
>> --- a/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
>> +++ b/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
>> @@ -16,8 +16,8 @@
>>         thermal-zones {
>>                 cpu0_thermal: cpu0-thermal {
>>                         thermal-sensors = <&tmu_cpu0 0>;
>> -                       polling-delay-passive = <0>;
>> -                       polling-delay = <0>;
>> +                       polling-delay-passive = <250>; /* milliseconds */
>> +                       polling-delay = <500>; /* milliseconds */
>>                         trips {
>>                                 cpu_alert0: cpu-alert-0 {
>>                                         temperature = <50000>; /*
>> millicelsius */
>> ---
>> On running linaro pm-qa diagnostic tool
>> ----------------------------------------------------------
>>
>> thermal_01.28: checking 'thermal_zone2'/'trip_point_2_temp' ='110000'...    Ok
>> thermal_01.29: checking 'cdev0_trip_point' exists in
>> '/sys/devices/virtual/thermal/thermal_zone0'... Ok
>> thermal_01.30: checking 'thermal_zone0/cdev0_trip_point' valid binding...   Ok
>> thermal_01.31: checking 'cdev4_trip_point' exists in
>> '/sys/devices/virtual/thermal/thermal_zone0'... Ok
>> thermal_01.32: checking 'thermal_zone0/cdev4_trip_point' valid binding...   Err
>> thermal_01.33: checking 'cdev4_trip_point' exists in
>> '/sys/devices/virtual/thermal/thermal_zone0'... Ok
>> thermal_01.34: checking 'thermal_zone0/cdev4_trip_point' valid binding...   Err
>> thermal_01.35: checking 'cdev4_trip_point' exists in
>> '/sys/devices/virtual/thermal/thermal_zone0'... Ok
>> thermal_01.36: checking 'thermal_zone0/cdev4_trip_point' valid binding...   Err
>> thermal_01.37: checking 'cdev4_trip_point' exists in
>> '/sys/devices/virtual/thermal/thermal_zone0'... Ok
>> thermal_01.38: checking 'thermal_zone0/cdev4_trip_point' valid binding...   Err
>>
>> thermal_01: fail
>> -------------------------------------------------------
>> I also got lot's of error.
>>
>> root@odroidxu4l:~# cpu[ 3050.847663] cpu cpu4: Failed to find dev_opp: -19
>> [ 3171.640836] cpu cpu4: device_opp_debug_create_link: Failed to create link
>> [ 3171.646197] cpu cpu4: _add_list_dev: Failed to register opp debugfs (-12)
>> [ 3171.653574] cpu cpu7: device_opp_debug_create_link: Failed to create link
>> [ 3171.659752] cpu cpu7: _add_list_dev: Failed to register opp debugfs (-12)
>> [ 3171.697011] cpu cpu5: cpufreq_init: failed to get clk: -2
>> [ 3171.732505] cpu cpu6: cpufreq_init: failed to get clk: -2
>> [ 3171.768160] cpu cpu7: cpufreq_init: failed to get clk: -2
>>
>> Tested on Odroid-XU4
>>
>> Reviewed-by: Anand Moon <linux.amoon@gmail.com>
>> Tested-by: Anand Moon <linux.amoon@gmail.com>
>
> The patch is not sufficient. It does not work the way it should...
>
> BTW, I found the issue. The order of trip points in DT:
> thermal_zone0/trip_point_0_hyst:5000
> thermal_zone0/trip_point_0_temp:50000
> thermal_zone0/trip_point_0_type:active
> thermal_zone0/trip_point_1_hyst:5000
> thermal_zone0/trip_point_1_temp:60000
> thermal_zone0/trip_point_1_type:active
> thermal_zone0/trip_point_2_hyst:5000
> thermal_zone0/trip_point_2_temp:70000
> thermal_zone0/trip_point_2_type:active
> thermal_zone0/trip_point_3_hyst:0
> thermal_zone0/trip_point_3_temp:120000  <---- this should be last one!
> thermal_zone0/trip_point_3_type:critical
> thermal_zone0/trip_point_4_hyst:5000
> thermal_zone0/trip_point_4_temp:90000
> thermal_zone0/trip_point_4_type:passive
> thermal_zone0/trip_point_5_hyst:5000
> thermal_zone0/trip_point_5_temp:110000
> thermal_zone0/trip_point_5_type:passive
>
> After fixing the order in DT, the cpu cooler starts working.
>
> Best regards,
> Krzysztof
>

^ permalink raw reply	[flat|nested] 36+ messages in thread

* [RFC 3/3] ARM: dts: Don't overheat the Odroid XU3-Lite on high load
@ 2016-02-18  3:17         ` Anand Moon
  0 siblings, 0 replies; 36+ messages in thread
From: Anand Moon @ 2016-02-18  3:17 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Krzysztof

On 18 February 2016 at 07:17, Krzysztof Kozlowski
<k.kozlowski@samsung.com> wrote:
> On 18.02.2016 04:53, Anand Moon wrote:
>> Hi Krzysztof,
>>
>> On 17 February 2016 at 12:25, Krzysztof Kozlowski
>> <k.kozlowski@samsung.com> wrote:
>>> After adding cpufreq-dt support to Exynos542x, the Odroid XU3-Lite can
>>> be easily overheated when launching eight CPU-intensive tasks:
>>>         thermal thermal_zone3: critical temperature reached(121 C),shutting down
>>>
>>> This seems to be specific to Odroid XU3-Lite board which officially
>>> supports lower frequencies than regular XU3 or XU4. When working at
>>> maximum CPU speed (1800 MHz big and 1300 MHz LITTLE) in warmer place for
>>> longer time, the fan fails to cool down the board and it reaches
>>> critical temperature.
>>>
>>> Add CPU cooling to Exynos5422/5800 to fix this issue. When reaching 95
>>> degrees of Celsius, the board will slow down by 3 steps (around
>>> 1400/1000 MHz). When reaching 110 degrees of Celsius go to 600 MHz.
>>>
>>> Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
>>> ---
>>>  arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi | 41 +++++++++++++++++++++++++++
>>>  1 file changed, 41 insertions(+)
>>>
>>> diff --git a/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi b/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
>>> index 2b289d7c0d13..66073ce29aee 100644
>>> --- a/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
>>> +++ b/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
>>> @@ -34,6 +34,16 @@
>>>                                         hysteresis = <5000>; /* millicelsius */
>>>                                         type = "active";
>>>                                 };
>>> +                               cpu_alert3: cpu-alert-3 {
>>> +                                       temperature = <95000>; /* millicelsius */
>>> +                                       hysteresis = <5000>; /* millicelsius */
>>> +                                       type = "passive";
>>> +                               };
>>> +                               cpu_alert4: cpu-alert-4 {
>>> +                                       temperature = <110000>; /* millicelsius */
>>> +                                       hysteresis = <5000>; /* millicelsius */
>>> +                                       type = "passive";
>>> +                               };
>>>                                 cpu_crit0: cpu-crit-0 {
>>>                                         temperature = <120000>; /* millicelsius */
>>>                                         hysteresis = <0>; /* millicelsius */
>>> @@ -53,6 +63,37 @@
>>>                                      trip = <&cpu_alert2>;
>>>                                      cooling-device = <&fan0 2 3>;
>>>                                 };
>>> +
>>> +                               /*
>>> +                                * When reaching cpu_alert3, reduce CPU
>>> +                                * by 3 steps. On Exynos5422/5800 that would
>>> +                                * be: 1400 MHz and 1000 MHz.
>>> +                                */
>>> +                               map3 {
>>> +                                    trip = <&cpu_alert3>;
>>> +                                    cooling-device = <&cpu0 3 3>;
>>> +                               };
>>> +                               map4 {
>>> +                                    trip = <&cpu_alert3>;
>>> +                                    cooling-device = <&cpu4 3 3>;
>>> +                               };
>>> +
>>> +                               /*
>>> +                                * When reaching cpu_alert4, reduce CPU
>>> +                                * to 600 MHz (11 steps for big, 7 steps for
>>> +                                * LITTLE).
>>> +                                * Exynos5420 has less OPPs and reversed
>>> +                                * numbering of CPUs (big/LITTLE) so this
>>> +                                * would not match.
>>> +                                */
>>> +                               map5 {
>>> +                                    trip = <&cpu_alert4>;
>>> +                                    cooling-device = <&cpu0 7 7>;
>>> +                               };
>>> +                               map6 {
>>> +                                    trip = <&cpu_alert4>;
>>> +                                    cooling-device = <&cpu4 11 11>;
>>> +                               };
>>>                         };
>>>                 };
>>>         };
>>> --
>>> 2.5.0
>>>
>>
>> could you append this patch with following changes.
>
> Could you describe why?
>
>From the documentation.
Documentation/thermal/sysfs-api.txt

passive_delay: number of milliseconds to wait between polls when
performing passive cooling.
polling_delay: number of milliseconds to wait between polls when
checking  whether trip points have been crossed (0 for interrupt
driven systems).

Exynos driver is interrupt driven so please ignore.

Best Regards.
-Anand Moon

>> diff --git a/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
>> b/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
>> index 66073ce..4e72637 100644
>> --- a/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
>> +++ b/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
>> @@ -16,8 +16,8 @@
>>         thermal-zones {
>>                 cpu0_thermal: cpu0-thermal {
>>                         thermal-sensors = <&tmu_cpu0 0>;
>> -                       polling-delay-passive = <0>;
>> -                       polling-delay = <0>;
>> +                       polling-delay-passive = <250>; /* milliseconds */
>> +                       polling-delay = <500>; /* milliseconds */
>>                         trips {
>>                                 cpu_alert0: cpu-alert-0 {
>>                                         temperature = <50000>; /*
>> millicelsius */
>> ---
>> On running linaro pm-qa diagnostic tool
>> ----------------------------------------------------------
>>
>> thermal_01.28: checking 'thermal_zone2'/'trip_point_2_temp' ='110000'...    Ok
>> thermal_01.29: checking 'cdev0_trip_point' exists in
>> '/sys/devices/virtual/thermal/thermal_zone0'... Ok
>> thermal_01.30: checking 'thermal_zone0/cdev0_trip_point' valid binding...   Ok
>> thermal_01.31: checking 'cdev4_trip_point' exists in
>> '/sys/devices/virtual/thermal/thermal_zone0'... Ok
>> thermal_01.32: checking 'thermal_zone0/cdev4_trip_point' valid binding...   Err
>> thermal_01.33: checking 'cdev4_trip_point' exists in
>> '/sys/devices/virtual/thermal/thermal_zone0'... Ok
>> thermal_01.34: checking 'thermal_zone0/cdev4_trip_point' valid binding...   Err
>> thermal_01.35: checking 'cdev4_trip_point' exists in
>> '/sys/devices/virtual/thermal/thermal_zone0'... Ok
>> thermal_01.36: checking 'thermal_zone0/cdev4_trip_point' valid binding...   Err
>> thermal_01.37: checking 'cdev4_trip_point' exists in
>> '/sys/devices/virtual/thermal/thermal_zone0'... Ok
>> thermal_01.38: checking 'thermal_zone0/cdev4_trip_point' valid binding...   Err
>>
>> thermal_01: fail
>> -------------------------------------------------------
>> I also got lot's of error.
>>
>> root at odroidxu4l:~# cpu[ 3050.847663] cpu cpu4: Failed to find dev_opp: -19
>> [ 3171.640836] cpu cpu4: device_opp_debug_create_link: Failed to create link
>> [ 3171.646197] cpu cpu4: _add_list_dev: Failed to register opp debugfs (-12)
>> [ 3171.653574] cpu cpu7: device_opp_debug_create_link: Failed to create link
>> [ 3171.659752] cpu cpu7: _add_list_dev: Failed to register opp debugfs (-12)
>> [ 3171.697011] cpu cpu5: cpufreq_init: failed to get clk: -2
>> [ 3171.732505] cpu cpu6: cpufreq_init: failed to get clk: -2
>> [ 3171.768160] cpu cpu7: cpufreq_init: failed to get clk: -2
>>
>> Tested on Odroid-XU4
>>
>> Reviewed-by: Anand Moon <linux.amoon@gmail.com>
>> Tested-by: Anand Moon <linux.amoon@gmail.com>
>
> The patch is not sufficient. It does not work the way it should...
>
> BTW, I found the issue. The order of trip points in DT:
> thermal_zone0/trip_point_0_hyst:5000
> thermal_zone0/trip_point_0_temp:50000
> thermal_zone0/trip_point_0_type:active
> thermal_zone0/trip_point_1_hyst:5000
> thermal_zone0/trip_point_1_temp:60000
> thermal_zone0/trip_point_1_type:active
> thermal_zone0/trip_point_2_hyst:5000
> thermal_zone0/trip_point_2_temp:70000
> thermal_zone0/trip_point_2_type:active
> thermal_zone0/trip_point_3_hyst:0
> thermal_zone0/trip_point_3_temp:120000  <---- this should be last one!
> thermal_zone0/trip_point_3_type:critical
> thermal_zone0/trip_point_4_hyst:5000
> thermal_zone0/trip_point_4_temp:90000
> thermal_zone0/trip_point_4_type:passive
> thermal_zone0/trip_point_5_hyst:5000
> thermal_zone0/trip_point_5_temp:110000
> thermal_zone0/trip_point_5_type:passive
>
> After fixing the order in DT, the cpu cooler starts working.
>
> Best regards,
> Krzysztof
>

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [RFC 3/3] ARM: dts: Don't overheat the Odroid XU3-Lite on high load
  2016-02-18  2:36         ` Viresh Kumar
  (?)
@ 2016-02-18  4:42           ` Krzysztof Kozlowski
  -1 siblings, 0 replies; 36+ messages in thread
From: Krzysztof Kozlowski @ 2016-02-18  4:42 UTC (permalink / raw)
  To: Viresh Kumar
  Cc: Anand Moon, Kukjin Kim, Lukasz Majewski, linux-arm-kernel,
	linux-samsung-soc, Linux Kernel, Linux PM list, Zhang Rui,
	Eduardo Valentin, Bartlomiej Zolnierkiewicz,
	Javier Martinez Canillas

On 18.02.2016 11:36, Viresh Kumar wrote:
>>
>> BTW, I found the issue. The order of trip points in DT:
>> thermal_zone0/trip_point_0_hyst:5000
>> thermal_zone0/trip_point_0_temp:50000
>> thermal_zone0/trip_point_0_type:active
>> thermal_zone0/trip_point_1_hyst:5000
>> thermal_zone0/trip_point_1_temp:60000
>> thermal_zone0/trip_point_1_type:active
>> thermal_zone0/trip_point_2_hyst:5000
>> thermal_zone0/trip_point_2_temp:70000
>> thermal_zone0/trip_point_2_type:active
>> thermal_zone0/trip_point_3_hyst:0
>> thermal_zone0/trip_point_3_temp:120000	<---- this should be last one!
>> thermal_zone0/trip_point_3_type:critical
>> thermal_zone0/trip_point_4_hyst:5000
>> thermal_zone0/trip_point_4_temp:90000
>> thermal_zone0/trip_point_4_type:passive
>> thermal_zone0/trip_point_5_hyst:5000
>> thermal_zone0/trip_point_5_temp:110000
>> thermal_zone0/trip_point_5_type:passive
>>
>> After fixing the order in DT, the cpu cooler starts working.
> 
> Ahh, nice.

Damn, not entirely. I almost fried my Odroid (it survived 130 degrees of
C)... The TMU supports only 4 trip points, so when I added two new trip
points and reordered them... the last two (including critical) was not
receiving interrupts.

Polling mode is needed. I'll sent some patches soon...

BR,
Krzysztof

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [RFC 3/3] ARM: dts: Don't overheat the Odroid XU3-Lite on high load
@ 2016-02-18  4:42           ` Krzysztof Kozlowski
  0 siblings, 0 replies; 36+ messages in thread
From: Krzysztof Kozlowski @ 2016-02-18  4:42 UTC (permalink / raw)
  To: Viresh Kumar
  Cc: Anand Moon, Kukjin Kim, Lukasz Majewski, linux-arm-kernel,
	linux-samsung-soc, Linux Kernel, Linux PM list, Zhang Rui,
	Eduardo Valentin, Bartlomiej Zolnierkiewicz,
	Javier Martinez Canillas

On 18.02.2016 11:36, Viresh Kumar wrote:
>>
>> BTW, I found the issue. The order of trip points in DT:
>> thermal_zone0/trip_point_0_hyst:5000
>> thermal_zone0/trip_point_0_temp:50000
>> thermal_zone0/trip_point_0_type:active
>> thermal_zone0/trip_point_1_hyst:5000
>> thermal_zone0/trip_point_1_temp:60000
>> thermal_zone0/trip_point_1_type:active
>> thermal_zone0/trip_point_2_hyst:5000
>> thermal_zone0/trip_point_2_temp:70000
>> thermal_zone0/trip_point_2_type:active
>> thermal_zone0/trip_point_3_hyst:0
>> thermal_zone0/trip_point_3_temp:120000	<---- this should be last one!
>> thermal_zone0/trip_point_3_type:critical
>> thermal_zone0/trip_point_4_hyst:5000
>> thermal_zone0/trip_point_4_temp:90000
>> thermal_zone0/trip_point_4_type:passive
>> thermal_zone0/trip_point_5_hyst:5000
>> thermal_zone0/trip_point_5_temp:110000
>> thermal_zone0/trip_point_5_type:passive
>>
>> After fixing the order in DT, the cpu cooler starts working.
> 
> Ahh, nice.

Damn, not entirely. I almost fried my Odroid (it survived 130 degrees of
C)... The TMU supports only 4 trip points, so when I added two new trip
points and reordered them... the last two (including critical) was not
receiving interrupts.

Polling mode is needed. I'll sent some patches soon...

BR,
Krzysztof

^ permalink raw reply	[flat|nested] 36+ messages in thread

* [RFC 3/3] ARM: dts: Don't overheat the Odroid XU3-Lite on high load
@ 2016-02-18  4:42           ` Krzysztof Kozlowski
  0 siblings, 0 replies; 36+ messages in thread
From: Krzysztof Kozlowski @ 2016-02-18  4:42 UTC (permalink / raw)
  To: linux-arm-kernel

On 18.02.2016 11:36, Viresh Kumar wrote:
>>
>> BTW, I found the issue. The order of trip points in DT:
>> thermal_zone0/trip_point_0_hyst:5000
>> thermal_zone0/trip_point_0_temp:50000
>> thermal_zone0/trip_point_0_type:active
>> thermal_zone0/trip_point_1_hyst:5000
>> thermal_zone0/trip_point_1_temp:60000
>> thermal_zone0/trip_point_1_type:active
>> thermal_zone0/trip_point_2_hyst:5000
>> thermal_zone0/trip_point_2_temp:70000
>> thermal_zone0/trip_point_2_type:active
>> thermal_zone0/trip_point_3_hyst:0
>> thermal_zone0/trip_point_3_temp:120000	<---- this should be last one!
>> thermal_zone0/trip_point_3_type:critical
>> thermal_zone0/trip_point_4_hyst:5000
>> thermal_zone0/trip_point_4_temp:90000
>> thermal_zone0/trip_point_4_type:passive
>> thermal_zone0/trip_point_5_hyst:5000
>> thermal_zone0/trip_point_5_temp:110000
>> thermal_zone0/trip_point_5_type:passive
>>
>> After fixing the order in DT, the cpu cooler starts working.
> 
> Ahh, nice.

Damn, not entirely. I almost fried my Odroid (it survived 130 degrees of
C)... The TMU supports only 4 trip points, so when I added two new trip
points and reordered them... the last two (including critical) was not
receiving interrupts.

Polling mode is needed. I'll sent some patches soon...

BR,
Krzysztof

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [RFC 3/3] ARM: dts: Don't overheat the Odroid XU3-Lite on high load
  2016-02-18  4:42           ` Krzysztof Kozlowski
  (?)
@ 2016-02-18  9:59             ` Marek Szyprowski
  -1 siblings, 0 replies; 36+ messages in thread
From: Marek Szyprowski @ 2016-02-18  9:59 UTC (permalink / raw)
  To: Krzysztof Kozlowski, Viresh Kumar
  Cc: Anand Moon, Kukjin Kim, Lukasz Majewski, linux-arm-kernel,
	linux-samsung-soc, Linux Kernel, Linux PM list, Zhang Rui,
	Eduardo Valentin, Bartlomiej Zolnierkiewicz,
	Javier Martinez Canillas

Hello,

On 2016-02-18 05:42, Krzysztof Kozlowski wrote:
> On 18.02.2016 11:36, Viresh Kumar wrote:
>>> BTW, I found the issue. The order of trip points in DT:
>>> thermal_zone0/trip_point_0_hyst:5000
>>> thermal_zone0/trip_point_0_temp:50000
>>> thermal_zone0/trip_point_0_type:active
>>> thermal_zone0/trip_point_1_hyst:5000
>>> thermal_zone0/trip_point_1_temp:60000
>>> thermal_zone0/trip_point_1_type:active
>>> thermal_zone0/trip_point_2_hyst:5000
>>> thermal_zone0/trip_point_2_temp:70000
>>> thermal_zone0/trip_point_2_type:active
>>> thermal_zone0/trip_point_3_hyst:0
>>> thermal_zone0/trip_point_3_temp:120000	<---- this should be last one!
>>> thermal_zone0/trip_point_3_type:critical
>>> thermal_zone0/trip_point_4_hyst:5000
>>> thermal_zone0/trip_point_4_temp:90000
>>> thermal_zone0/trip_point_4_type:passive
>>> thermal_zone0/trip_point_5_hyst:5000
>>> thermal_zone0/trip_point_5_temp:110000
>>> thermal_zone0/trip_point_5_type:passive
>>>
>>> After fixing the order in DT, the cpu cooler starts working.
>> Ahh, nice.
> Damn, not entirely. I almost fried my Odroid (it survived 130 degrees of
> C)... The TMU supports only 4 trip points, so when I added two new trip
> points and reordered them... the last two (including critical) was not
> receiving interrupts.
>
> Polling mode is needed. I'll sent some patches soon...

Instead of polling the driver should simply use some dynamic window for
the nearest temperature ranges and reconfigure it when interrupt of occurs.

Best regards
-- 
Marek Szyprowski, PhD
Samsung R&D Institute Poland

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [RFC 3/3] ARM: dts: Don't overheat the Odroid XU3-Lite on high load
@ 2016-02-18  9:59             ` Marek Szyprowski
  0 siblings, 0 replies; 36+ messages in thread
From: Marek Szyprowski @ 2016-02-18  9:59 UTC (permalink / raw)
  To: Krzysztof Kozlowski, Viresh Kumar
  Cc: Anand Moon, Kukjin Kim, Lukasz Majewski, linux-arm-kernel,
	linux-samsung-soc, Linux Kernel, Linux PM list, Zhang Rui,
	Eduardo Valentin, Bartlomiej Zolnierkiewicz,
	Javier Martinez Canillas

Hello,

On 2016-02-18 05:42, Krzysztof Kozlowski wrote:
> On 18.02.2016 11:36, Viresh Kumar wrote:
>>> BTW, I found the issue. The order of trip points in DT:
>>> thermal_zone0/trip_point_0_hyst:5000
>>> thermal_zone0/trip_point_0_temp:50000
>>> thermal_zone0/trip_point_0_type:active
>>> thermal_zone0/trip_point_1_hyst:5000
>>> thermal_zone0/trip_point_1_temp:60000
>>> thermal_zone0/trip_point_1_type:active
>>> thermal_zone0/trip_point_2_hyst:5000
>>> thermal_zone0/trip_point_2_temp:70000
>>> thermal_zone0/trip_point_2_type:active
>>> thermal_zone0/trip_point_3_hyst:0
>>> thermal_zone0/trip_point_3_temp:120000	<---- this should be last one!
>>> thermal_zone0/trip_point_3_type:critical
>>> thermal_zone0/trip_point_4_hyst:5000
>>> thermal_zone0/trip_point_4_temp:90000
>>> thermal_zone0/trip_point_4_type:passive
>>> thermal_zone0/trip_point_5_hyst:5000
>>> thermal_zone0/trip_point_5_temp:110000
>>> thermal_zone0/trip_point_5_type:passive
>>>
>>> After fixing the order in DT, the cpu cooler starts working.
>> Ahh, nice.
> Damn, not entirely. I almost fried my Odroid (it survived 130 degrees of
> C)... The TMU supports only 4 trip points, so when I added two new trip
> points and reordered them... the last two (including critical) was not
> receiving interrupts.
>
> Polling mode is needed. I'll sent some patches soon...

Instead of polling the driver should simply use some dynamic window for
the nearest temperature ranges and reconfigure it when interrupt of occurs.

Best regards
-- 
Marek Szyprowski, PhD
Samsung R&D Institute Poland

^ permalink raw reply	[flat|nested] 36+ messages in thread

* [RFC 3/3] ARM: dts: Don't overheat the Odroid XU3-Lite on high load
@ 2016-02-18  9:59             ` Marek Szyprowski
  0 siblings, 0 replies; 36+ messages in thread
From: Marek Szyprowski @ 2016-02-18  9:59 UTC (permalink / raw)
  To: linux-arm-kernel

Hello,

On 2016-02-18 05:42, Krzysztof Kozlowski wrote:
> On 18.02.2016 11:36, Viresh Kumar wrote:
>>> BTW, I found the issue. The order of trip points in DT:
>>> thermal_zone0/trip_point_0_hyst:5000
>>> thermal_zone0/trip_point_0_temp:50000
>>> thermal_zone0/trip_point_0_type:active
>>> thermal_zone0/trip_point_1_hyst:5000
>>> thermal_zone0/trip_point_1_temp:60000
>>> thermal_zone0/trip_point_1_type:active
>>> thermal_zone0/trip_point_2_hyst:5000
>>> thermal_zone0/trip_point_2_temp:70000
>>> thermal_zone0/trip_point_2_type:active
>>> thermal_zone0/trip_point_3_hyst:0
>>> thermal_zone0/trip_point_3_temp:120000	<---- this should be last one!
>>> thermal_zone0/trip_point_3_type:critical
>>> thermal_zone0/trip_point_4_hyst:5000
>>> thermal_zone0/trip_point_4_temp:90000
>>> thermal_zone0/trip_point_4_type:passive
>>> thermal_zone0/trip_point_5_hyst:5000
>>> thermal_zone0/trip_point_5_temp:110000
>>> thermal_zone0/trip_point_5_type:passive
>>>
>>> After fixing the order in DT, the cpu cooler starts working.
>> Ahh, nice.
> Damn, not entirely. I almost fried my Odroid (it survived 130 degrees of
> C)... The TMU supports only 4 trip points, so when I added two new trip
> points and reordered them... the last two (including critical) was not
> receiving interrupts.
>
> Polling mode is needed. I'll sent some patches soon...

Instead of polling the driver should simply use some dynamic window for
the nearest temperature ranges and reconfigure it when interrupt of occurs.

Best regards
-- 
Marek Szyprowski, PhD
Samsung R&D Institute Poland

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [RFC 3/3] ARM: dts: Don't overheat the Odroid XU3-Lite on high load
  2016-02-18  9:59             ` Marek Szyprowski
  (?)
@ 2016-02-18 23:55               ` Krzysztof Kozlowski
  -1 siblings, 0 replies; 36+ messages in thread
From: Krzysztof Kozlowski @ 2016-02-18 23:55 UTC (permalink / raw)
  To: Marek Szyprowski, Viresh Kumar
  Cc: Anand Moon, Kukjin Kim, Lukasz Majewski, linux-arm-kernel,
	linux-samsung-soc, Linux Kernel, Linux PM list, Zhang Rui,
	Eduardo Valentin, Bartlomiej Zolnierkiewicz,
	Javier Martinez Canillas

On 18.02.2016 18:59, Marek Szyprowski wrote:
> Hello,
> 
> On 2016-02-18 05:42, Krzysztof Kozlowski wrote:
>> On 18.02.2016 11:36, Viresh Kumar wrote:
>>>> BTW, I found the issue. The order of trip points in DT:
>>>> thermal_zone0/trip_point_0_hyst:5000
>>>> thermal_zone0/trip_point_0_temp:50000
>>>> thermal_zone0/trip_point_0_type:active
>>>> thermal_zone0/trip_point_1_hyst:5000
>>>> thermal_zone0/trip_point_1_temp:60000
>>>> thermal_zone0/trip_point_1_type:active
>>>> thermal_zone0/trip_point_2_hyst:5000
>>>> thermal_zone0/trip_point_2_temp:70000
>>>> thermal_zone0/trip_point_2_type:active
>>>> thermal_zone0/trip_point_3_hyst:0
>>>> thermal_zone0/trip_point_3_temp:120000    <---- this should be last
>>>> one!
>>>> thermal_zone0/trip_point_3_type:critical
>>>> thermal_zone0/trip_point_4_hyst:5000
>>>> thermal_zone0/trip_point_4_temp:90000
>>>> thermal_zone0/trip_point_4_type:passive
>>>> thermal_zone0/trip_point_5_hyst:5000
>>>> thermal_zone0/trip_point_5_temp:110000
>>>> thermal_zone0/trip_point_5_type:passive
>>>>
>>>> After fixing the order in DT, the cpu cooler starts working.
>>> Ahh, nice.
>> Damn, not entirely. I almost fried my Odroid (it survived 130 degrees of
>> C)... The TMU supports only 4 trip points, so when I added two new trip
>> points and reordered them... the last two (including critical) was not
>> receiving interrupts.
>>
>> Polling mode is needed. I'll sent some patches soon...
> 
> Instead of polling the driver should simply use some dynamic window for
> the nearest temperature ranges and reconfigure it when interrupt of occurs.


Thanks for feedback, Marek!

First of all the polling happens only when initial trip point for
passive cooling is reached (70 degrees C). This fortunately reduces the
polling overhead.

Yours idea seems interesting... but driver does not support it now, does
it? I can put this on TODO list, maybe someone will extend the exynos
thermal driver.

Best regards,
Krzysztof

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [RFC 3/3] ARM: dts: Don't overheat the Odroid XU3-Lite on high load
@ 2016-02-18 23:55               ` Krzysztof Kozlowski
  0 siblings, 0 replies; 36+ messages in thread
From: Krzysztof Kozlowski @ 2016-02-18 23:55 UTC (permalink / raw)
  To: Marek Szyprowski, Viresh Kumar
  Cc: Anand Moon, Kukjin Kim, Lukasz Majewski, linux-arm-kernel,
	linux-samsung-soc, Linux Kernel, Linux PM list, Zhang Rui,
	Eduardo Valentin, Bartlomiej Zolnierkiewicz,
	Javier Martinez Canillas

On 18.02.2016 18:59, Marek Szyprowski wrote:
> Hello,
> 
> On 2016-02-18 05:42, Krzysztof Kozlowski wrote:
>> On 18.02.2016 11:36, Viresh Kumar wrote:
>>>> BTW, I found the issue. The order of trip points in DT:
>>>> thermal_zone0/trip_point_0_hyst:5000
>>>> thermal_zone0/trip_point_0_temp:50000
>>>> thermal_zone0/trip_point_0_type:active
>>>> thermal_zone0/trip_point_1_hyst:5000
>>>> thermal_zone0/trip_point_1_temp:60000
>>>> thermal_zone0/trip_point_1_type:active
>>>> thermal_zone0/trip_point_2_hyst:5000
>>>> thermal_zone0/trip_point_2_temp:70000
>>>> thermal_zone0/trip_point_2_type:active
>>>> thermal_zone0/trip_point_3_hyst:0
>>>> thermal_zone0/trip_point_3_temp:120000    <---- this should be last
>>>> one!
>>>> thermal_zone0/trip_point_3_type:critical
>>>> thermal_zone0/trip_point_4_hyst:5000
>>>> thermal_zone0/trip_point_4_temp:90000
>>>> thermal_zone0/trip_point_4_type:passive
>>>> thermal_zone0/trip_point_5_hyst:5000
>>>> thermal_zone0/trip_point_5_temp:110000
>>>> thermal_zone0/trip_point_5_type:passive
>>>>
>>>> After fixing the order in DT, the cpu cooler starts working.
>>> Ahh, nice.
>> Damn, not entirely. I almost fried my Odroid (it survived 130 degrees of
>> C)... The TMU supports only 4 trip points, so when I added two new trip
>> points and reordered them... the last two (including critical) was not
>> receiving interrupts.
>>
>> Polling mode is needed. I'll sent some patches soon...
> 
> Instead of polling the driver should simply use some dynamic window for
> the nearest temperature ranges and reconfigure it when interrupt of occurs.


Thanks for feedback, Marek!

First of all the polling happens only when initial trip point for
passive cooling is reached (70 degrees C). This fortunately reduces the
polling overhead.

Yours idea seems interesting... but driver does not support it now, does
it? I can put this on TODO list, maybe someone will extend the exynos
thermal driver.

Best regards,
Krzysztof

^ permalink raw reply	[flat|nested] 36+ messages in thread

* [RFC 3/3] ARM: dts: Don't overheat the Odroid XU3-Lite on high load
@ 2016-02-18 23:55               ` Krzysztof Kozlowski
  0 siblings, 0 replies; 36+ messages in thread
From: Krzysztof Kozlowski @ 2016-02-18 23:55 UTC (permalink / raw)
  To: linux-arm-kernel

On 18.02.2016 18:59, Marek Szyprowski wrote:
> Hello,
> 
> On 2016-02-18 05:42, Krzysztof Kozlowski wrote:
>> On 18.02.2016 11:36, Viresh Kumar wrote:
>>>> BTW, I found the issue. The order of trip points in DT:
>>>> thermal_zone0/trip_point_0_hyst:5000
>>>> thermal_zone0/trip_point_0_temp:50000
>>>> thermal_zone0/trip_point_0_type:active
>>>> thermal_zone0/trip_point_1_hyst:5000
>>>> thermal_zone0/trip_point_1_temp:60000
>>>> thermal_zone0/trip_point_1_type:active
>>>> thermal_zone0/trip_point_2_hyst:5000
>>>> thermal_zone0/trip_point_2_temp:70000
>>>> thermal_zone0/trip_point_2_type:active
>>>> thermal_zone0/trip_point_3_hyst:0
>>>> thermal_zone0/trip_point_3_temp:120000    <---- this should be last
>>>> one!
>>>> thermal_zone0/trip_point_3_type:critical
>>>> thermal_zone0/trip_point_4_hyst:5000
>>>> thermal_zone0/trip_point_4_temp:90000
>>>> thermal_zone0/trip_point_4_type:passive
>>>> thermal_zone0/trip_point_5_hyst:5000
>>>> thermal_zone0/trip_point_5_temp:110000
>>>> thermal_zone0/trip_point_5_type:passive
>>>>
>>>> After fixing the order in DT, the cpu cooler starts working.
>>> Ahh, nice.
>> Damn, not entirely. I almost fried my Odroid (it survived 130 degrees of
>> C)... The TMU supports only 4 trip points, so when I added two new trip
>> points and reordered them... the last two (including critical) was not
>> receiving interrupts.
>>
>> Polling mode is needed. I'll sent some patches soon...
> 
> Instead of polling the driver should simply use some dynamic window for
> the nearest temperature ranges and reconfigure it when interrupt of occurs.


Thanks for feedback, Marek!

First of all the polling happens only when initial trip point for
passive cooling is reached (70 degrees C). This fortunately reduces the
polling overhead.

Yours idea seems interesting... but driver does not support it now, does
it? I can put this on TODO list, maybe someone will extend the exynos
thermal driver.

Best regards,
Krzysztof

^ permalink raw reply	[flat|nested] 36+ messages in thread

end of thread, other threads:[~2016-02-18 23:55 UTC | newest]

Thread overview: 36+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-02-17  6:55 [RFC-help needed 0/3] ARM: dts: thermal: Fix Odroid XU3-Lite overheat Krzysztof Kozlowski
2016-02-17  6:55 ` Krzysztof Kozlowski
2016-02-17  6:55 ` [RFC 1/3] ARM: dts: Add cooling levels for CPUs on exynos5420 Krzysztof Kozlowski
2016-02-17  6:55   ` Krzysztof Kozlowski
2016-02-17  7:01   ` Viresh Kumar
2016-02-17  7:01     ` Viresh Kumar
2016-02-17  7:05     ` Krzysztof Kozlowski
2016-02-17  7:05       ` Krzysztof Kozlowski
2016-02-17  6:55 ` [RFC 2/3] ARM: dts: Add cooling levels for CPUs on exynos5422/5800 Krzysztof Kozlowski
2016-02-17  6:55   ` Krzysztof Kozlowski
2016-02-17  6:55 ` [RFC 3/3] ARM: dts: Don't overheat the Odroid XU3-Lite on high load Krzysztof Kozlowski
2016-02-17  6:55   ` Krzysztof Kozlowski
2016-02-17 19:53   ` Anand Moon
2016-02-17 19:53     ` Anand Moon
2016-02-17 19:53     ` Anand Moon
2016-02-18  1:47     ` Krzysztof Kozlowski
2016-02-18  1:47       ` Krzysztof Kozlowski
2016-02-18  1:47       ` Krzysztof Kozlowski
2016-02-18  2:36       ` Viresh Kumar
2016-02-18  2:36         ` Viresh Kumar
2016-02-18  2:36         ` Viresh Kumar
2016-02-18  2:54         ` Anand Moon
2016-02-18  2:54           ` Anand Moon
2016-02-18  2:54           ` Anand Moon
2016-02-18  4:42         ` Krzysztof Kozlowski
2016-02-18  4:42           ` Krzysztof Kozlowski
2016-02-18  4:42           ` Krzysztof Kozlowski
2016-02-18  9:59           ` Marek Szyprowski
2016-02-18  9:59             ` Marek Szyprowski
2016-02-18  9:59             ` Marek Szyprowski
2016-02-18 23:55             ` Krzysztof Kozlowski
2016-02-18 23:55               ` Krzysztof Kozlowski
2016-02-18 23:55               ` Krzysztof Kozlowski
2016-02-18  3:17       ` Anand Moon
2016-02-18  3:17         ` Anand Moon
2016-02-18  3:17         ` Anand Moon

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.