This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Linux/AM3358: Crash when removing pvrsrvkm module

Part Number: AM3358
Other Parts Discussed in Thread: UKERNEL, TPS65218

Tool/software: Linux

Hi,

I am experiencing a crash when unloading the pvrsrvkm module (eg, when system poweroff is happening).

The graphics driver loads and works, I can run a Qt app using eglfs platform. (note crash occurs regardless of whether any app is run or not). When the module is unloaded it crashes and prevents the system from shutting down.

I am using the beagle bone kernel (Robert C Nelsons) based on 4.14.40 with a custom dtb file. The rootfs is built with yocto/poky, the powervr drivers come from the meta-ti layer (ti-sgx-ddk-km_1.14.3699939)

Following is the crash dump output, some info from dmesg and modinfo of the pvrsrvkm.ko

Has anyone has similar issue with 4.14?
does the crash dump give anyone a clue as to whats happening?

Cheers,

Marc

 

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

# [ 1601.983432] PVR_K:(Error): PollForValueKM: Timeout. Expected 0x8 but found 0x0 (mask 0x8).                
[ 1601.991767] PVR_K:(Error): SGXPrePowerState: Wait for SGX ukernel power transition failed.                                        
[ 1602.000106] PVR_K: SGX debug (SGX_DDK sgxddk MAIN@3699939)                                                                        
[ 1602.005637] PVR_K:  Host Ctl flags= 00000006                                                                                      
[ 1602.009931] PVR_K: SGX Host control:                                                                                              
[ 1602.013542] PVR_K:   (HC-0) 0x00000001 0x00000000 0x00000000 0x00000000                                                           
[ 1602.020102] PVR_K:   (HC-10) 0x00000000 0x00000000 0x0000000A 0x00030D40                                                          
[ 1602.026769] PVR_K:   (HC-20) 0x00000000 0x00000004 0x00000006 0x00000000                                                          
[ 1602.033431] PVR_K:   (HC-30) 0x00000000 0x00182619 0xEF365CB0 0x00000000                                                          
[ 1602.040081] PVR_K:   (HC-40) 0x00000000 0x00000000 0x00000098 0x00000000                                                          
[ 1602.046741] PVR_K: SGX TA/3D control:                                                                                             
[ 1602.050422] PVR_K:   (T3C-0) 0x0F003000 0x0F003140 0x0F002000 0x00000000                                                          
[ 1602.057088] PVR_K:   (T3C-10) 0x00000000 0x00000000 0x00000002 0x00000000                                                         
[ 1602.063838] PVR_K:   (T3C-20) 0x00000000 0x00000000 0x00000000 0x00000000                                                         
[ 1602.070571] PVR_K:   (T3C-30) 0x00000000 0x00000000 0x00000000 0x00000000                                                         
[ 1602.077324] PVR_K:   (T3C-40) 0x00000000 0x00000000 0x00000000 0x00000000                                                         
[ 1602.084073] PVR_K:   (T3C-50) 0x00000000 0x00000000 0x00000000 0x00000000                                                         
[ 1602.090811] PVR_K:   (T3C-60) 0x00000000 0x00000000 0x00000000 0x00000000                                                         
[ 1602.097561] PVR_K:   (T3C-70) 0x00000000 0x00000000 0x00000000 0x00000000                                                         
[ 1602.104315] PVR_K:   (T3C-80) 0x00000000 0x00000000 0x00000000 0x0F000000                                                         
[ 1602.111047] PVR_K:   (T3C-90) 0x9E68C000 0x00000000 0x00000000 0x00000000                                                         
[ 1602.117797] PVR_K:   (T3C-A0) 0x00000000 0x00000000 0x00000000 0x00000000                                                         
[ 1602.124550] PVR_K:   (T3C-B0) 0x00000000 0x00000000 0x00000000 0x00000000                                                         
[ 1602.131282] PVR_K:   (T3C-C0) 0x00000000 0x00000000 0x00000000 0x00000000                                                         
[ 1602.138036] PVR_K:   (T3C-D0) 0x0F000000 0x8000B000 0x8004B000 0x0F004000                                                         
[ 1602.144787] PVR_K:   (T3C-E0) 0x0F00A420 0x0F00A740 0x00000000 0x00000000                                                         
[ 1602.151519] PVR_K:   (T3C-F0) 0x00000000 0x00000000 0x00000000 0x00000000                                                         
[ 1602.158272] PVR_K:   (T3C-100) 0x00000000 0x00000000 0x00000000 0x00000000
[ 1602.165110] PVR_K:   (T3C-110) 0x00000000 0x00000000 0x00000000 0x00000000
[ 1602.171936] PVR_K:   (T3C-120) 0x00000000 0x00000000 0x00000000 0x00000000
[ 1602.178771] PVR_K: SGX Kernel CCB WO:0x4E RO:0x4C
[ 1602.183513] PVR_K: Active syncs
[ 1602.186675] Unhandled fault: external abort on non-linefetch (0x1008) at 0xe0650004
[ 1602.194365] pgd = de4c8000
[ 1602.197080] [e0650004] *pgd=9e695811, *pte=56000653, *ppte=56000453
[ 1602.203392] Internal error: : 1008 [#1] SMP ARM
[ 1602.207941] Modules linked in: nfc bnep bluetooth ecdh_generic rfkill pvrsrvkm(O-) tps65218_pwrbutton [last unloaded: bc_example]
[ 1602.219677] CPU: 0 PID: 758 Comm: rmmod Tainted: G           O    4.14.40-yocto-standard-dtc1 #1
[ 1602.228498] Hardware name: Generic AM33XX (Flattened Device Tree)
[ 1602.234616] task: df08a040 task.stack: de4cc000
[ 1602.239446] PC is at PollForValueKM+0x8/0xf0 [pvrsrvkm]
[ 1602.244810] LR is at SGXPrePowerState.part.2+0x14c/0x1e0 [pvrsrvkm]
[ 1602.251104] pc : [<bf0157c0>]    lr : [<bf025500>]    psr: 60060013
[ 1602.257396] sp : de4cdde4  ip : e0650000  fp : 00000001
[ 1602.262641] r10: 00000008  r9 : de180900  r8 : 000f4240
[ 1602.267886] r7 : c0e03d48  r6 : 00000000  r5 : 00000000  r4 : df77e000
[ 1602.274440] r3 : 000f4240  r2 : ffffffff  r1 : 00000000  r0 : e0650004
[ 1602.280995] Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment none
[ 1602.288160] Control: 10c5387d  Table: 9e4c8019  DAC: 00000051
[ 1602.293930] Process rmmod (pid: 758, stack limit = 0xde4cc218)
[ 1602.299787] Stack: (0xde4cdde4 to 0xde4ce000)
[ 1602.304165] dde0:          df77e000 00000000 00000000 c0e03d48 00000002 de180900 00000008
[ 1602.312379] de00: 00000001 bf025500 00000032 00000000 00000000 df94ac00 df430680 00000000
[ 1602.320593] de20: 00000000 00000000 00000001 00000000 00000000 00000000 00000000 15a077ee
[ 1602.328808] de40: de57e1c0 00000002 bf0143e0 00000000 bf058eb8 de4cc000 00000000 bf014448
[ 1602.337023] de60: c0e03d48 de4cde90 bf0143e0 bf013c5c de4cde90 15a077ee 00000000 00000002
[ 1602.345237] de80: 00000000 bf058e50 bf0146b4 bf0143e0 00000000 00000000 00000002 00000002
[ 1602.353453] dea0: 00000001 00000000 de180900 00000000 df17bc44 bf0156e4 00000000 a0060093
[ 1602.361668] dec0: bf058de8 00000000 bf038218 df17bc44 df146a44 bf01d46c df7d7000 df7d7000
[ 1602.369883] dee0: bf038218 bf00b150 df7d7000 c04e0018 df17bc00 df7d7000 bf038218 bf0292dc
[ 1602.378098] df00: df17bc10 df17bc10 bf038218 c0522804 df17bc10 df146a10 bf038218 c05215cc
[ 1602.386313] df20: df17bc10 bf038218 00000800 0003d174 c0107f64 c0521750 bf038218 c0e03d48
[ 1602.394530] df40: 00000800 c05206ac bf0384c0 c01ae2b8 73727670 6d6b7672 00000000 00000000
[ 1602.402746] df60: 00000011 df08a4ac df08a040 c0ec92b4 df08a4ac df08a040 df08a4ac df08a040
[ 1602.410961] df80: 00000001 c01512b0 00107f64 15a077ee c0107f64 00000002 befb5c48 00000000
[ 1602.419177] dfa0: 00000081 c0107d80 00000002 befb5c48 0003d174 00000800 00000064 00000000
[ 1602.427393] dfc0: 00000002 befb5c48 00000000 00000081 befb5f20 0003d138 befb5e2c 00000001
[ 1602.435608] dfe0: b6f14640 befb5c04 0001fc54 b6f1464c 60060010 0003d174 e30032c6 e19430b3
[ 1602.443951] [<bf0157c0>] (PollForValueKM [pvrsrvkm]) from [<00000000>] (  (null))
[ 1602.451479] Code: bf02eb10 bf02eb4e e92d4ff0 e1a08003 (e5903000)
[ 1602.457603] ---[ end trace 709ede157791b04e ]---
/etc/rc0.d/K08rc.pvr: line 75:   758 Segmentation fault      rmmod pvrsrvkm
Couldn't unload modules

# dmesg | grep pvr
[    5.468884] pvrsrvkm: loading out-of-tree module taints kernel.
[    5.529941] bus: 'platform': add driver pvrsrvkm
[    5.530160] bus: 'platform': driver_probe_device: matched device 56000000.sgx with driver pvrsrvkm
[    5.530178] bus: 'platform': really_probe: probing driver pvrsrvkm with device 56000000.sgx
[    5.530217] pvrsrvkm 56000000.sgx: no pinctrl handle
[    5.560992] [drm] Initialized pvr 1.14.3699939 20110701 for 56000000.sgx on minor 1
[    5.568899] driver: 'pvrsrvkm': driver_bound: bound to device '56000000.sgx'
[    5.598523] bus: 'platform': really_probe: bound device 56000000.sgx to driver pvrsrvkm

# dmesg | grep PVR
[   18.335875] PVR_K: UM DDK-(3699939) and KM DDK-(3699939) match. [ OK ]

# modinfo pvrsrvkm
filename:       /lib/modules/4.14.40-yocto-standard-dtc1/extra/pvrsrvkm.ko
license:        Dual MIT/GPL
author:         Imagination Technologies Ltd. <gpl-support@imgtec.com>
license:        Dual MIT/GPL
author:         Imagination Technologies Ltd. <gpl-support@imgtec.com>
srcversion:     533BB7E5866E52F63B9ACCB
alias:          of:N*T*Cti,am3352-sgx530C*
alias:          of:N*T*Cti,am3352-sgx530
depends:        
name:           pvrsrvkm
vermagic:       4.14.40-yocto-standard-dtc1 SMP mod_unload modversions ARMv7 p2v8
parm:           gPVRDebugLevel:Sets the level of debug output (default 0x7) (uint)