iMX8QM GPU, FE not idle

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

iMX8QM GPU, FE not idle

2,067件の閲覧回数
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 件の賞賛
返信
3 返答(返信)

2,061件の閲覧回数
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 件の賞賛
返信

2,040件の閲覧回数
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 件の賞賛
返信

2,031件の閲覧回数
XianzhongLi
NXP Employee
NXP Employee

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

0 件の賞賛
返信