2016-03-15 08:16:07

by Dawei Chien

[permalink] [raw]
Subject: [RESEND][PATCH v6 0/3] thermal: mediatek: Add cpu dynamic power cooling model.

Use Intelligent Power Allocation (IPA) technical to add dynamic power model for binding CPU thermal zone. The power allocator governor allocates power budget to control CPU temperature.

Power Allocator governor is able to keep SOC temperature within a defined temperature range to avoid SOC overheat and keep it's performance.
mt8173-cpufreq.c need to register its' own power model with power allocator thermal governor, so that power allocator governor can allocates suitable power budget to control CPU temperature.

Binding document is refer to this patchset
https://lkml.org/lkml/2015/11/30/239

Change since V5:
1. Remove thermal sensor ID from phandles

Change since V4:
1. Remove unnecessary error-checking for mt8173-cpufreq.c 2. Initializing variable capacitance with 0

Change since V3:
1. Remove static power model
2. Split V3's device tree in two for thermal zones and dynamic power models respectively

Change since V2:
1. Move dynamic/static power model in device tree

Change since V1:
1. Include mt8171.h and sort header file for mt8173.dtsi

Dawei Chien (3):
thermal: mediatek: Add cpu dynamic power cooling model.
arm64: dts: mt8173: Add thermal zone node.
arm64: dts: mt8173: Add dynamic power node.

arch/arm64/boot/dts/mediatek/mt8173.dtsi | 47 ++++++++++++++++++++++++++++++
drivers/cpufreq/mt8173-cpufreq.c | 12 ++++++--
2 files changed, 57 insertions(+), 2 deletions(-)


2016-03-15 08:15:20

by Dawei Chien

[permalink] [raw]
Subject: [RESEND][PATCH 3/3] arm64: dts: mt8173: Add dynamic power node.

This device node is for calculating dynamic power in mW.
Since mt8173 has two clusters, there are two dynamic power
coefficient as well.

Signed-off-by: Dawei Chien <[email protected]>
---
This patch is base on patchset:
https://lkml.org/lkml/2015/11/17/251
---
arch/arm64/boot/dts/mediatek/mt8173.dtsi | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/arch/arm64/boot/dts/mediatek/mt8173.dtsi b/arch/arm64/boot/dts/mediatek/mt8173.dtsi
index f9c44cc..5cb6b4e 100644
--- a/arch/arm64/boot/dts/mediatek/mt8173.dtsi
+++ b/arch/arm64/boot/dts/mediatek/mt8173.dtsi
@@ -71,6 +71,7 @@
#cooling-cells = <2>;
#cooling-min-level = <0>;
#cooling-max-level = <7>;
+ dynamic-power-coefficient = <263>;
};

cpu1: cpu@1 {
@@ -95,6 +96,7 @@
#cooling-cells = <2>;
#cooling-min-level = <0>;
#cooling-max-level = <7>;
+ dynamic-power-coefficient = <263>;
};

cpu2: cpu@100 {
@@ -119,6 +121,7 @@
#cooling-cells = <2>;
#cooling-min-level = <0>;
#cooling-max-level = <7>;
+ dynamic-power-coefficient = <530>;
};

cpu3: cpu@101 {
@@ -143,6 +146,7 @@
#cooling-cells = <2>;
#cooling-min-level = <0>;
#cooling-max-level = <7>;
+ dynamic-power-coefficient = <530>;
};

idle-states {
--
1.7.9.5

2016-03-15 08:15:28

by Dawei Chien

[permalink] [raw]
Subject: [RESEND][PATCH 1/3] thermal: mediatek: Add cpu dynamic power cooling model.

MT8173 cpufreq driver select of_cpufreq_power_cooling_register registering
cooling devices with dynamic power coefficient.

Signed-off-by: Dawei Chien <[email protected]>
Acked-by: Viresh Kumar <[email protected]>
---
This patch is base on patchset:
https://lkml.org/lkml/2015/11/17/251
---
drivers/cpufreq/mt8173-cpufreq.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/drivers/cpufreq/mt8173-cpufreq.c b/drivers/cpufreq/mt8173-cpufreq.c
index 1efba34..d8ad406 100644
--- a/drivers/cpufreq/mt8173-cpufreq.c
+++ b/drivers/cpufreq/mt8173-cpufreq.c
@@ -309,17 +309,24 @@ static int mtk_cpufreq_set_target(struct cpufreq_policy *policy,
return 0;
}

+#define DYNAMIC_POWER "dynamic-power-coefficient"
+
static void mtk_cpufreq_ready(struct cpufreq_policy *policy)
{
struct mtk_cpu_dvfs_info *info = policy->driver_data;
struct device_node *np = of_node_get(info->cpu_dev->of_node);
+ u32 capacitance = 0;

if (WARN_ON(!np))
return;

if (of_find_property(np, "#cooling-cells", NULL)) {
- info->cdev = of_cpufreq_cooling_register(np,
- policy->related_cpus);
+ of_property_read_u32(np, DYNAMIC_POWER, &capacitance);
+
+ info->cdev = of_cpufreq_power_cooling_register(np,
+ policy->related_cpus,
+ capacitance,
+ NULL);

if (IS_ERR(info->cdev)) {
dev_err(info->cpu_dev,
--
1.7.9.5

2016-03-15 08:15:36

by Dawei Chien

[permalink] [raw]
Subject: [RESEND][PATCH 2/3] arm64: dts: mt8173: Add thermal zone node.

This adds thermal zone node to Mediatek MT8173 dtsi file.

Signed-off-by: Dawei Chien <[email protected]>
---
This patch is base on patchset:
https://lkml.org/lkml/2015/11/30/239
---
arch/arm64/boot/dts/mediatek/mt8173.dtsi | 43 ++++++++++++++++++++++++++++++
1 file changed, 43 insertions(+)

diff --git a/arch/arm64/boot/dts/mediatek/mt8173.dtsi b/arch/arm64/boot/dts/mediatek/mt8173.dtsi
index 47151e8..f9c44cc 100644
--- a/arch/arm64/boot/dts/mediatek/mt8173.dtsi
+++ b/arch/arm64/boot/dts/mediatek/mt8173.dtsi
@@ -188,6 +188,49 @@
clock-output-names = "cpum_ck";
};

+ thermal-zones {
+ cpu_thermal: cpu_thermal {
+ polling-delay-passive = <1000>; /* milliseconds */
+ polling-delay = <1000>; /* milliseconds */
+
+ thermal-sensors = <&thermal>;
+ sustainable-power = <1500>; /* milliwatts */
+
+ trips {
+ threshold: trip-point@0 {
+ temperature = <68000>;
+ hysteresis = <2000>;
+ type = "passive";
+ };
+
+ target: trip-point@1 {
+ temperature = <85000>;
+ hysteresis = <2000>;
+ type = "passive";
+ };
+
+ cpu_crit: cpu_crit@0 {
+ temperature = <115000>;
+ hysteresis = <2000>;
+ type = "critical";
+ };
+ };
+
+ cooling-maps {
+ map@0 {
+ trip = <&target>;
+ cooling-device = <&cpu0 0 0>;
+ contribution = <1024>;
+ };
+ map@1 {
+ trip = <&target>;
+ cooling-device = <&cpu2 0 0>;
+ contribution = <2048>;
+ };
+ };
+ };
+ };
+
timer {
compatible = "arm,armv8-timer";
interrupt-parent = <&gic>;
--
1.7.9.5

2016-04-12 05:38:14

by Viresh Kumar

[permalink] [raw]
Subject: Re: [RESEND][PATCH 1/3] thermal: mediatek: Add cpu dynamic power cooling model.

Hi Rafael,

On 15-03-16, 16:10, Dawei Chien wrote:
> MT8173 cpufreq driver select of_cpufreq_power_cooling_register registering
> cooling devices with dynamic power coefficient.
>
> Signed-off-by: Dawei Chien <[email protected]>
> Acked-by: Viresh Kumar <[email protected]>

Can you please apply this patch from Dawei ?

--
viresh

2016-04-13 04:52:55

by Rafael J. Wysocki

[permalink] [raw]
Subject: Re: [RESEND][PATCH 1/3] thermal: mediatek: Add cpu dynamic power cooling model.

On Tue, Apr 12, 2016 at 7:38 AM, Viresh Kumar <[email protected]> wrote:
> Hi Rafael,
>
> On 15-03-16, 16:10, Dawei Chien wrote:
>> MT8173 cpufreq driver select of_cpufreq_power_cooling_register registering
>> cooling devices with dynamic power coefficient.
>>
>> Signed-off-by: Dawei Chien <[email protected]>
>> Acked-by: Viresh Kumar <[email protected]>
>
> Can you please apply this patch from Dawei ?

I can, but I'm traveling this week, so that's rather going to happen next week.

Thanks,
Rafael

2016-04-20 11:58:14

by Matthias Brugger

[permalink] [raw]
Subject: Re: [RESEND][PATCH 1/3] thermal: mediatek: Add cpu dynamic power cooling model.

Hi Rafael,

On 13/04/16 06:52, Rafael J. Wysocki wrote:
> On Tue, Apr 12, 2016 at 7:38 AM, Viresh Kumar <[email protected]> wrote:
>> Hi Rafael,
>>
>> On 15-03-16, 16:10, Dawei Chien wrote:
>>> MT8173 cpufreq driver select of_cpufreq_power_cooling_register registering
>>> cooling devices with dynamic power coefficient.
>>>
>>> Signed-off-by: Dawei Chien <[email protected]>
>>> Acked-by: Viresh Kumar <[email protected]>
>>
>> Can you please apply this patch from Dawei ?
>
> I can, but I'm traveling this week, so that's rather going to happen next week.
>

I don't see the patch in linux-next, did you forget to pick/push it?

Regards,
Matthias

2016-04-21 00:38:35

by Rafael J. Wysocki

[permalink] [raw]
Subject: Re: [RESEND][PATCH 1/3] thermal: mediatek: Add cpu dynamic power cooling model.

On Wednesday, April 20, 2016 01:58:07 PM Matthias Brugger wrote:
> Hi Rafael,
>
> On 13/04/16 06:52, Rafael J. Wysocki wrote:
> > On Tue, Apr 12, 2016 at 7:38 AM, Viresh Kumar <[email protected]> wrote:
> >> Hi Rafael,
> >>
> >> On 15-03-16, 16:10, Dawei Chien wrote:
> >>> MT8173 cpufreq driver select of_cpufreq_power_cooling_register registering
> >>> cooling devices with dynamic power coefficient.
> >>>
> >>> Signed-off-by: Dawei Chien <[email protected]>
> >>> Acked-by: Viresh Kumar <[email protected]>
> >>
> >> Can you please apply this patch from Dawei ?
> >
> > I can, but I'm traveling this week, so that's rather going to happen next week.
> >
>
> I don't see the patch in linux-next, did you forget to pick/push it?

No, I didn't. I just didn't have the time to get to them before.

Now, given that they are thermal patches, they really should go in via
linux-soc-thermal.git.

Eduardo, any chance to take care of these?

Thanks,
Rafael

2016-04-21 03:01:49

by Eduardo Valentin

[permalink] [raw]
Subject: Re: [RESEND][PATCH 1/3] thermal: mediatek: Add cpu dynamic power cooling model.

On Thu, Apr 21, 2016 at 02:41:24AM +0200, Rafael J. Wysocki wrote:
> On Wednesday, April 20, 2016 01:58:07 PM Matthias Brugger wrote:
> > Hi Rafael,
> >
> > On 13/04/16 06:52, Rafael J. Wysocki wrote:
> > > On Tue, Apr 12, 2016 at 7:38 AM, Viresh Kumar <[email protected]> wrote:
> > >> Hi Rafael,
> > >>
> > >> On 15-03-16, 16:10, Dawei Chien wrote:
> > >>> MT8173 cpufreq driver select of_cpufreq_power_cooling_register registering
> > >>> cooling devices with dynamic power coefficient.
> > >>>
> > >>> Signed-off-by: Dawei Chien <[email protected]>
> > >>> Acked-by: Viresh Kumar <[email protected]>
> > >>
> > >> Can you please apply this patch from Dawei ?
> > >
> > > I can, but I'm traveling this week, so that's rather going to happen next week.
> > >
> >
> > I don't see the patch in linux-next, did you forget to pick/push it?
>
> No, I didn't. I just didn't have the time to get to them before.
>
> Now, given that they are thermal patches, they really should go in via
> linux-soc-thermal.git.
>
> Eduardo, any chance to take care of these?

Yes I can add this one, given that they have the proper acked-by. I was
a bit hesitant to just get them because they are touching
drivers/cpufreq.

Anyways, I am adding this to my branch to the next merge window.


>
> Thanks,
> Rafael
>

2016-04-21 03:40:49

by Eduardo Valentin

[permalink] [raw]
Subject: Re: [RESEND][PATCH 1/3] thermal: mediatek: Add cpu dynamic power cooling model.

On Wed, Apr 20, 2016 at 08:01:41PM -0700, Eduardo Valentin wrote:
> On Thu, Apr 21, 2016 at 02:41:24AM +0200, Rafael J. Wysocki wrote:
> > On Wednesday, April 20, 2016 01:58:07 PM Matthias Brugger wrote:
> > > Hi Rafael,
> > >
> > > On 13/04/16 06:52, Rafael J. Wysocki wrote:
> > > > On Tue, Apr 12, 2016 at 7:38 AM, Viresh Kumar <[email protected]> wrote:
> > > >> Hi Rafael,
> > > >>
> > > >> On 15-03-16, 16:10, Dawei Chien wrote:
> > > >>> MT8173 cpufreq driver select of_cpufreq_power_cooling_register registering
> > > >>> cooling devices with dynamic power coefficient.
> > > >>>
> > > >>> Signed-off-by: Dawei Chien <[email protected]>
> > > >>> Acked-by: Viresh Kumar <[email protected]>
> > > >>
> > > >> Can you please apply this patch from Dawei ?
> > > >
> > > > I can, but I'm traveling this week, so that's rather going to happen next week.
> > > >
> > >
> > > I don't see the patch in linux-next, did you forget to pick/push it?
> >
> > No, I didn't. I just didn't have the time to get to them before.
> >
> > Now, given that they are thermal patches, they really should go in via
> > linux-soc-thermal.git.
> >
> > Eduardo, any chance to take care of these?
>
> Yes I can add this one, given that they have the proper acked-by. I was
> a bit hesitant to just get them because they are touching
> drivers/cpufreq.
>
> Anyways, I am adding this to my branch to the next merge window.

Added the driver changes. The dt parts should go via your platform tree.
And you can add my
Acked-by: Eduardo Valentin <[email protected]>

on the dt changes.

>
>
> >
> > Thanks,
> > Rafael
> >

2016-04-21 04:12:58

by Dawei Chien

[permalink] [raw]
Subject: Re: [RESEND][PATCH 3/3] arm64: dts: mt8173: Add dynamic power node.

On Tue, 2016-03-15 at 16:10 +0800, Dawei Chien (錢大衛) wrote:
> This device node is for calculating dynamic power in mW.
> Since mt8173 has two clusters, there are two dynamic power
> coefficient as well.
>
> Signed-off-by: Dawei Chien <[email protected]>
> ---
> This patch is base on patchset:
> https://lkml.org/lkml/2015/11/17/251

Sorry for miss one dependence for this device node.
https://lkml.org/lkml/2015/7/9/206

> ---
> arch/arm64/boot/dts/mediatek/mt8173.dtsi | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/mediatek/mt8173.dtsi b/arch/arm64/boot/dts/mediatek/mt8173.dtsi
> index f9c44cc..5cb6b4e 100644
> --- a/arch/arm64/boot/dts/mediatek/mt8173.dtsi
> +++ b/arch/arm64/boot/dts/mediatek/mt8173.dtsi
> @@ -71,6 +71,7 @@
> #cooling-cells = <2>;
> #cooling-min-level = <0>;
> #cooling-max-level = <7>;
> + dynamic-power-coefficient = <263>;
> };
>
> cpu1: cpu@1 {
> @@ -95,6 +96,7 @@
> #cooling-cells = <2>;
> #cooling-min-level = <0>;
> #cooling-max-level = <7>;
> + dynamic-power-coefficient = <263>;
> };
>
> cpu2: cpu@100 {
> @@ -119,6 +121,7 @@
> #cooling-cells = <2>;
> #cooling-min-level = <0>;
> #cooling-max-level = <7>;
> + dynamic-power-coefficient = <530>;
> };
>
> cpu3: cpu@101 {
> @@ -143,6 +146,7 @@
> #cooling-cells = <2>;
> #cooling-min-level = <0>;
> #cooling-max-level = <7>;
> + dynamic-power-coefficient = <530>;
> };
>
> idle-states {
> --
> 1.7.9.5
>


2016-04-21 10:28:35

by Matthias Brugger

[permalink] [raw]
Subject: Re: [RESEND][PATCH 3/3] arm64: dts: mt8173: Add dynamic power node.



On 21/04/16 06:12, dawei chien wrote:
> On Tue, 2016-03-15 at 16:10 +0800, Dawei Chien (錢大衛) wrote:
>> This device node is for calculating dynamic power in mW.
>> Since mt8173 has two clusters, there are two dynamic power
>> coefficient as well.
>>
>> Signed-off-by: Dawei Chien <[email protected]>
>> ---
>> This patch is base on patchset:
>> https://lkml.org/lkml/2015/11/17/251
>
> Sorry for miss one dependence for this device node.
> https://lkml.org/lkml/2015/7/9/206
>

This patch got somehow forgotten.
Thanks for the reminder.
Matthias

>> ---
>> arch/arm64/boot/dts/mediatek/mt8173.dtsi | 4 ++++
>> 1 file changed, 4 insertions(+)
>>
>> diff --git a/arch/arm64/boot/dts/mediatek/mt8173.dtsi b/arch/arm64/boot/dts/mediatek/mt8173.dtsi
>> index f9c44cc..5cb6b4e 100644
>> --- a/arch/arm64/boot/dts/mediatek/mt8173.dtsi
>> +++ b/arch/arm64/boot/dts/mediatek/mt8173.dtsi
>> @@ -71,6 +71,7 @@
>> #cooling-cells = <2>;
>> #cooling-min-level = <0>;
>> #cooling-max-level = <7>;
>> + dynamic-power-coefficient = <263>;
>> };
>>
>> cpu1: cpu@1 {
>> @@ -95,6 +96,7 @@
>> #cooling-cells = <2>;
>> #cooling-min-level = <0>;
>> #cooling-max-level = <7>;
>> + dynamic-power-coefficient = <263>;
>> };
>>
>> cpu2: cpu@100 {
>> @@ -119,6 +121,7 @@
>> #cooling-cells = <2>;
>> #cooling-min-level = <0>;
>> #cooling-max-level = <7>;
>> + dynamic-power-coefficient = <530>;
>> };
>>
>> cpu3: cpu@101 {
>> @@ -143,6 +146,7 @@
>> #cooling-cells = <2>;
>> #cooling-min-level = <0>;
>> #cooling-max-level = <7>;
>> + dynamic-power-coefficient = <530>;
>> };
>>
>> idle-states {
>> --
>> 1.7.9.5
>>
>
>

2016-04-21 17:53:13

by Rafael J. Wysocki

[permalink] [raw]
Subject: Re: [RESEND][PATCH 1/3] thermal: mediatek: Add cpu dynamic power cooling model.

On Thu, Apr 21, 2016 at 5:01 AM, Eduardo Valentin <[email protected]> wrote:
> On Thu, Apr 21, 2016 at 02:41:24AM +0200, Rafael J. Wysocki wrote:
>> On Wednesday, April 20, 2016 01:58:07 PM Matthias Brugger wrote:
>> > Hi Rafael,
>> >
>> > On 13/04/16 06:52, Rafael J. Wysocki wrote:
>> > > On Tue, Apr 12, 2016 at 7:38 AM, Viresh Kumar <[email protected]> wrote:
>> > >> Hi Rafael,
>> > >>
>> > >> On 15-03-16, 16:10, Dawei Chien wrote:
>> > >>> MT8173 cpufreq driver select of_cpufreq_power_cooling_register registering
>> > >>> cooling devices with dynamic power coefficient.
>> > >>>
>> > >>> Signed-off-by: Dawei Chien <[email protected]>
>> > >>> Acked-by: Viresh Kumar <[email protected]>
>> > >>
>> > >> Can you please apply this patch from Dawei ?
>> > >
>> > > I can, but I'm traveling this week, so that's rather going to happen next week.
>> > >
>> >
>> > I don't see the patch in linux-next, did you forget to pick/push it?
>>
>> No, I didn't. I just didn't have the time to get to them before.
>>
>> Now, given that they are thermal patches, they really should go in via
>> linux-soc-thermal.git.
>>
>> Eduardo, any chance to take care of these?
>
> Yes I can add this one, given that they have the proper acked-by. I was
> a bit hesitant to just get them because they are touching
> drivers/cpufreq.

Generally, ACKs from Viresh are sufficient for ARM cpufreq drivers
unless the maintainers of the platform in question disagree.

> Anyways, I am adding this to my branch to the next merge window.

Thanks!