i.MX6QP - GPU Thermal Management not working

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
已解决

i.MX6QP - GPU Thermal Management not working

跳至解决方案
1,968 次查看
andrzejdziedzic
Contributor IV

Hi,

I'm testing GPU thermal management on SABRE automotive board. To test it I lowered the trip point 0 as below:

echo 25000 > /sys/devices/virtual/thermal/thermal_zone0/trip_point_0_temp

As a result I saw the log:

System is too hot. GPU3D will work at 3/64 clock.

...but the GPU still seems to work at full speed, graphic benchmarks still works at the same speed.

Am I doing something wrong? I tested it in Android 5.1.1_2.0.0 and 5.1.1_2.1.0 releases.

Best regards,

Andy

标签 (4)
0 项奖励
回复
1 解答
1,476 次查看
jamesbone
NXP TechSupport
NXP TechSupport

In my test, the thermal function is also called, And I got the same message,  and the opegles application I run did reduced the performance dramatically.

yes , you did right. GPU should reduced the speed dramatically.

Can you try more applications to make sure the application runs using gpu, not software rendering.

在原帖中查看解决方案

6 回复数
1,476 次查看
andrzejdziedzic
Contributor IV

Yes, my test uses GPU - but it looks it is too simple to see reduction of GPU speed (test still was animated with 60 fps).

I prepared a more heavy test (a complex 3d scene) and everything works as expected - after reach thermal trip point I observe reduction of GPU speed and also temperatures.

Many thanks for help!

Best regards,

Andy

0 项奖励
回复
1,476 次查看
jamesbone
NXP TechSupport
NXP TechSupport

Did you enable DVFS in the Kernel?

0 项奖励
回复
1,476 次查看
andrzejdziedzic
Contributor IV

Yes, DVFS is enabled.

0 项奖励
回复
1,477 次查看
jamesbone
NXP TechSupport
NXP TechSupport

In my test, the thermal function is also called, And I got the same message,  and the opegles application I run did reduced the performance dramatically.

yes , you did right. GPU should reduced the speed dramatically.

Can you try more applications to make sure the application runs using gpu, not software rendering.

1,476 次查看
jamesbone
NXP TechSupport
NXP TechSupport

Modify the trip point's temperature through /sys/class/thermal/thermal_zone0/

trip_point_x_temp. Here, 'x' can be 0, 1 and 2, indicating critical, hot and active trip

point, and the value of trip points should be critical > hot > active. Then run some

program to make SoC in heavy loading. When the SoC temperature reaches the trip

points, the thermal driver will take action to do some protections according to each trip

point's mechanism. Restore the trip point's temperature. When SoC temperature drops to

below active trip point, thermal driver will remove all the protections.

So you are activating CRITICAL and this means RESET The CPU To protect it.  Since you have not reach yet the temperature the device it is not resetting.

0 项奖励
回复
1,476 次查看
andrzejdziedzic
Contributor IV

There is still an issue.

Please notice that after modify the trip point I saw the kernel log: "System is too hot. GPU3D will work at 3/64 clock."

This log comes from gc_hal_kernel_platform_imx6q14.c and is logged AFTER scale down the GPU:

if (event && !bAlreadyTooHot) {

        gckHARDWARE_GetFscaleValue(hardware,&orgFscale,&minFscale, &maxFscale);

        gckHARDWARE_SetFscaleValue(hardware, minFscale);

        bAlreadyTooHot = gcvTRUE;

        gckOS_Print("System is too hot. GPU3D will work at %d/64 clock.\n", minFscale);

So I did the test correctly and thermal protection was called as expected.

But the function gckHARDWARE_SetFscaleValue() seems to have no effect and the GPU still works at full speed.

0 项奖励
回复