i.MX6QP - GPU Thermal Management not working

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

i.MX6QP - GPU Thermal Management not working

ソリューションへジャンプ
1,599件の閲覧回数
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,107件の閲覧回数
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,107件の閲覧回数
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,107件の閲覧回数
jamesbone
NXP TechSupport
NXP TechSupport

Did you enable DVFS in the Kernel?

0 件の賞賛
返信
1,107件の閲覧回数
andrzejdziedzic
Contributor IV

Yes, DVFS is enabled.

0 件の賞賛
返信
1,108件の閲覧回数
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,107件の閲覧回数
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,107件の閲覧回数
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 件の賞賛
返信