AnsweredAssumed Answered

[SOLVED] Linux KGSL driver deadlock within ioctl() routine on i.mx53

Question asked by Alexei Nomazov on Jun 8, 2015
Latest reply on Jul 21, 2015 by Alexei Nomazov

Hello,

I am using i.mx 53 board with linux kernel 2.6.35.

I use Qt 5.3.2 over Linux X11.

 

I experience severe system failure when executing very simple Qt application.

 

User space:

Qt / QML application of texts and images (contains alpha blending) i get whole system stuck including serial and ethernet SSH services.

 

Kernel level scenario within ioctl():

      1.  ioctl(): case IOCTL_KGSL_CMDSTREAM_WAITTIMESTAMP executed with failure return status -1,  while hanging for 20 sec.

           Stucks for 20 sec within  kgsl_cmdstream_waittimestamp() on "status = device->ftbl.device_waittimestamp(device, timestamp, timeout)"

     While timeout = -1. Then, returns with status = -1.

2.  ioctl(): case IOCTL_KGSL_CMDSTREAM_ISSUEIBCMDS executed successfully.

      3.  Ioctl()::IOCTL_KGSL_CMDSTREAM_READTIMESTAMP execution causes deadlock.

           Deadlock within kgsl_cmdstream_readtimestamp(): hangs on GSL_API_MUTEX_LOCK() execution.

 

System Consequences:

1. Serial and Ethernet SSH services becomes unavailable

2. Qt application becomes CPU consuming zombie.

3. [events/0]  process becomes high CPU consuming. Actually it become such at beginning of 20 sec period of

Ioctl()::IOCTL_KGSL_CMDSTREAM_WAITTIMESTAMP execution.

 

I would be glad to receive explanation of the BUG both on user and kernel space and how to avoid it.

Thanks a lot for any help.

Outcomes