i.MX6QP - GPU Thermal Management not working

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

i.MX6QP - GPU Thermal Management not working

Jump to solution
1,965 Views
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

Labels (4)
0 Kudos
Reply
1 Solution
1,473 Views
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.

View solution in original post

6 Replies
1,473 Views
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 Kudos
Reply
1,473 Views
jamesbone
NXP TechSupport
NXP TechSupport

Did you enable DVFS in the Kernel?

0 Kudos
Reply
1,473 Views
andrzejdziedzic
Contributor IV

Yes, DVFS is enabled.

0 Kudos
Reply
1,474 Views
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,473 Views
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 Kudos
Reply
1,473 Views
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 Kudos
Reply