iMX8QM GPU, FE not idle

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

iMX8QM GPU, FE not idle

2,063 Views
juanpabloruiz
Contributor I

@XianzhongLi 

Hi

I am trying to run a virtual machine with Qemu/KVM on the iMX8QM-MEK board. In this virtual machine, I am passing through some devices, including the display. I was able to make the HDMI, and Display controller work in the VM. But I was not able to make the GPU work in the VM. I know that NXP only supports Xen, but I need here only more information about the "FE not idle" error that is shown in this log:

[ 2.289388] mmuPageTablePool = 1
[ 2.293824] mmuDynamicMap = 1
[ 2.295710] Build options:
[ 2.299668] gcdGPU_TIMEOUT = 30000
[ 2.301482] gcdGPU_2D_TIMEOUT = 20000
[ 2.306316] gcdINTERRUPT_STATISTIC = 1
[ 2.311665] Galcore Info: ContiguousBase=0xe0000000 ContiguousSize=0x10000000
[ 2.368618] GPU[0](ChipModel=0x7000 ChipRevision=0x6009):
[ 2.373904] **************************
[ 2.376967] *** GPU STATE DUMP ***
[ 2.379956] **************************
[ 2.382793] axi = 0x000000FF
[ 2.384235] idle = 0x7FFFFFFE
[ 2.385658] FE not idle
[ 2.386819] DMA appears to be stuck at this address:
[ 2.388975] 0xE00020A0
[ 2.390105] dmaLow = 0x00000000
[ 2.391521] dmaHigh = 0x00000000
[ 2.393025] dmaState = 0x00000000
[ 2.394493] command state = 0 (PAR_IDLE_ST)
[ 2.396572] command DMA state = 0 (CMD_IDLE_ST)
[ 2.398626] command fetch state = 0 (FET_IDLE_ST)
[ 2.400725] DMA request state = 0 (REQ_IDLE_ST)
[ 2.402792] cal state = 0 (CAL_IDLE_ST)
[ 2.404921] VE request state = 0 (VER_IDLE_ST)

I know that FE is related to fence, but my question here is, which kind of fence is this error related? Do you have any documentation that describes more in deep the GPU fence?

Any help is highly appreciated. I attach the full log for reference. 

Regards

 

Juan Pablo Ruiz

0 Kudos
Reply
3 Replies

2,057 Views
XianzhongLi
NXP Employee
NXP Employee

Hi @juanpabloruiz 

The dump log indicates GPU cannot fetch the correct command at E00020A0, can you check the buffer content for the address?

0 Kudos
Reply

2,036 Views
juanpabloruiz
Contributor I

Hi @XianzhongLi 

 

Thanks for your reply. I tried to get the buffer around the address E00020A0 but the function 

gckVIDMEM_NODE_Find was not able to find the respective node. I printed the 
node->VidMem.address search ranges and I found this: 
 
[ 23.980029] DMA Address 0xE0002080
[ 23.982645] ++gckKERNEL_GetHardwareType(444)
[ 23.990987] --gckKERNEL_GetHardwareType(460): type=2
[ 23.997175] ++gckOS_AcquireMutex(2489): Os=(____ptrval____) Mutex=(____ptrval____) Timeout=4294967295
[ 24.008061] --gckOS_AcquireMutex(2526): status=0(gcvSTATUS_OK)
[ 24.014663] node->VidMem.address: 0xE0002440 - 0xE000283F
[ 24.021147] node->VidMem.address: 0xE0002000 - 0xE0002007
[ 24.029911] node->VidMem.address: 0xE0001000 - 0xE0001FFF
[ 24.036276] node->VidMem.address: 0xE0000000 - 0xE0000FFF
[ 24.042686] ++gckOS_ReleaseMutex(2554): Os=(____ptrval____) Mutex=(____ptrval____)
[ 24.052733] --gckOS_ReleaseMutex(2564)
[ 24.058194] Can not find command buffer around 0xE0002080.
 
I have enabled all the trace zone, I saw this: 
cat gpu_message_log_full_trace.txt | grep "Locked node"
[ 11.702630] Locked node 0x4237c000 (1) @ 0xE0000000
[ 12.264823] Locked node 0x4310a300 (1) @ 0xE0001000
[ 12.899095] Locked node 0x4310a500 (1) @ 0xE0002000
[ 14.844645] Locked node 0x4310aa00 (1) @ 0xE0002440
 
I have attached the logs with the full trace. 
 
Thanks
 
0 Kudos
Reply

2,027 Views
XianzhongLi
NXP Employee
NXP Employee

it is weird that GPU read the unavailable command buffer, did you see such problem on Xen?

0 Kudos
Reply