sometimes GPU resume failed in L5.1.1-2.1.0 BSP

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

sometimes GPU resume failed in L5.1.1-2.1.0 BSP

956 Views
ken_lin_311
Contributor I

Hi, everyone.

I'm porting i.mx android_L5.1.1_2.1.0-ga BSP into our board based mx6q.

Our board is in production with android jb4.3-1.1.1 BSP, and everything is OK.

I found that when I suspend & resume the system, using POWER KEY, sometimes the board may resume fail.

There is 2 situations, as following:

1. Kernel BUG after PM noirq resume, please see the log I attached below.

2. Kernel hang during gpu_resume.

According to adding printk in kernel source, I found that after imx6q_pm_pu_power_on(in gpc.c) is called in power domain resume, the GPC_ISR1 register's IRQ 42(R2D GPU)&43(V2D GPU) bits sometimes may be set. And if one of them is set, we will meet one of the above situation.

Our board connect mx6q's USB_OTG_VBUS with a 5V power through a 0R resistor, and this power is always 5V even if mx6 is in suspend.

One weird thing is that, when I disconnect this resistor, the problem is solved. No more resume fail.

1. The GPU is in suspend state, why it somethings trigger a IRQ after imx6q_pm_pu_power_on?

2. Because our product is selled outside, we can not remove the resistor in the customer side. Could anyone help me to solve this problem according software modification?

Thanks very much for finish reading such a long question.

Labels (1)
0 Kudos
Reply
2 Replies

685 Views
igorpadykov
NXP Employee
NXP Employee

Hi Ken

one can try to workaround this issue with bits

ENABLE_LINREG, VBUS_SEL, changing them before entering

low power mode and restoring after wake.

Regarding trigger IRQ one can try to debug, as temporary

workaround one can try to change parameter in

../gpu-viv/hal/kernel/inc/gc_hal_options.h:#   define gcdPOWEROFF_TIMEOUT

and disable GPU power gating.

Best regards

igor

-----------------------------------------------------------------------------------------------------------------------

Note: If this post answers your question, please click the Correct Answer button. Thank you!

-----------------------------------------------------------------------------------------------------------------------

0 Kudos
Reply

685 Views
ken_lin_311
Contributor I

Thanks very much for your help.

1. ENABLE_LINREG means PMU_REG_2P5[ENABLE_LINREG] or PMU_REG_3P0[ENABLE_LINREG] ?

2. I should clear ENABLE_LINREG bit before entering LPM, and set it after wake, right?

3. On our board, USB_H1_VBUS and USB_OTG_VBUS are both connected to a permanent 5V. How should I config VBUS_SEL before and after LPM?

4. Do you mean #   define gcdPOWEROFF_TIMEOUT 0 ?

0 Kudos
Reply