Hello all,
Using the 4.14.98-2.0.0-r0 NXP Linux Kernel on an custom IMX6D based board, the galcore driver fails to load during boot:
.
.
.
[ 4.591424] galcore: loading out-of-tree module taints kernel.
.
.
[ 4.616583] galcore: probe of 130000.gpu failed with error -22
When I manually insmod galcore.ko, more information is displayed:
# insmod galcore.ko
[ 1936.127601] galcore 130000.gpu: Unbalanced pm_runtime_enable!
[ 1936.133524] Galcore version 6.2.4.150331
[ 1936.138025] galcore: probe of 130000.gpu failed with error -22
Galcore driver info:
# modinfo galcore
filename: /lib/modules/4.14.98-imx+g1175b5961153/extra/galcore.ko
license: Dual MIT/GPL
description: Vivante Graphics Driver
srcversion: 533BB7E5866E52F63B9ACCB
alias: of:N*T*Cfsl,imx6q-gpuC*
alias: of:N*T*Cfsl,imx6q-gpu
alias: of:N*T*Cfsl,imx8-gpu-ssC*
alias: of:N*T*Cfsl,imx8-gpu-ss
depends:
name: galcore
vermagic: 4.14.98-imx+g1175b5961153 SMP mod_unload modversions ARMv6 p2v8
parm: initgpu3DMinClock:int
parm: major:major device number for GC device (uint)
parm: irqLine:IRQ number of GC core (int)
parm: registerMemBase:Base of bus address of GC core AHB register (ulong)
parm: registerMemSize:Size of bus address range of GC core AHB register (ulong)
parm: irqLine2D:IRQ number of G2D core if irqLine is used for a G3D core (int)
parm: registerMemBase2D:Base of bus address of G2D core if registerMemBase2D is used for a G3D core (ulong)
parm: registerMemSize2D:Size of bus address range of G2D core if registerMemSize is used for a G3D core (ulong)
parm: irqLineVG:IRQ number of VG core (int)
parm: registerMemBaseVG:Base of bus address of VG core (ulong)
parm: registerMemSizeVG:Size of bus address range of VG core (ulong)
parm: contiguousSize:Size of memory reserved for GC (ulong)
parm: contiguousBase:Base address of memory reserved for GC, if it is 0, GC driver will try to allocate a buffer whose size defined by contiguousSize (ulong)
parm: externalSize:Size of external memory, if it is 0, means there is no external pool (ulong)
parm: externalBase:Base address of external memory (ulong)
parm: fastClear:Disable fast clear if set it to 0, enabled by default (int)
parm: compression:Disable compression if set it to 0, enabled by default (int)
parm: powerManagement:Disable auto power saving if set it to 1, enabled by default (int)
parm: gpuProfiler:Enable profiling support, disabled by default (int)
parm: baseAddress:Only used for old MMU, set it to 0 if memory which can be accessed by GPU falls into 0 - 2G, otherwise set it to 0x80000000 (ulong)
parm: physSize:Obsolete (ulong)
parm: logFileSize:Size of buffer to store GC driver output messsage, if it is not 0, message is read from /sys/kernel/debug/gc/galcore_trace, default value is 0 (uint)
parm: recovery:Recover GPU from stuck (1: Enable, 0: Disable) (uint)
parm: stuckDump:Level of stuck dump content (1: Minimal, 2: Middle, 3: Maximal) (uint)
parm: showArgs:Display parameters value when driver loaded (int)
parm: mmu:Disable MMU if set it to 0, enabled by default (int)
parm: irqs:Array of IRQ numbers of multi-GPU (array of int)
parm: registerBases:Array of bases of bus address of register of multi-GPU (array of uint)
parm: registerSizes:Array of sizes of bus address range of register of multi-GPU (array of uint)
parm: chipIDs:Array of chipIDs of multi-GPU (array of uint)
parm: type:0 - Char Driver (Default), 1 - Misc Driver (uint)
Also gmem_info command fails as well:
gmem_info
[ 1] Failed to open device: No such file or directory, Try again...
[ 2] Failed to open device: No such file or directory, Try again...
[ 3] Failed to open device: No such file or directory, Try again...
[ 4] Failed to open device: No such file or directory, Try again...
[ 5] _OpenDevice(1229): FATAL: Failed to open device, errno=No such file or directory.
I'm assuming the gmem_info command failure happens due /dev/galcore not being created.
Has anyone encountered this issue with the galcore driver with a newer NXP Linux Kernel? Is there a work around/fix?Any help/suggestions would be very much appreciated!
Thanks,
Neil
Solved! Go to Solution.
Hello,
It has not an issue with 4.14.98 Linux kernel, however since you are using MX6D we recommend to use the 4.9.88 is the last for MX6D, the 4.14.98 is more for MX8.
However we are trying to reproduce your issue without success the galcore run normal
Regards
Hi Bio_TICFSL,
Which imx-gpu-viv library binary should be used with the galcore driver from the 4.9.88 NXP imx kernel? I'm trying use the vivante fb with X11, but I'm encountering a segfault during X11 startup. Here is what my Xorg log file looks like:
Hello,
It has not an issue with 4.14.98 Linux kernel, however since you are using MX6D we recommend to use the 4.9.88 is the last for MX6D, the 4.14.98 is more for MX8.
However we are trying to reproduce your issue without success the galcore run normal
Regards
Hi Bio_TICFSL,
Would you be able to provide the gpu node entries in the device tree for the IMX6D/IMX6Q? I want to verify if that may be causing the problem of the galcore driver not loading properly.
I appreciate your help!
Thanks,
Neil
Hi Bio_TICFSL,
Using the galcore driver from the 4.9.88 imx kernel did the trick! Now I can also run the gmem_info utility as well (used to either crash the galcore driver or couldn't open the /dev/galcore device):
root@imx:/dev# gmem_info
Pid Total Reserved Contiguous Virtual Nonpaged Name
------------------------------------------------------------------------------
0 0 0 0 0 0 Summary
- - 134,217,728 - - - Available
GPU Idle time: 0.000000 ms
root@imx:/dev#
Thank you very much for your help!
-Neil
Hi,
I am using kernel 4.14.174 with yocto Sumo revision.
My galcore is 6.2.4 and i am using qt5 for my HMI
As soon as i run HMI , it gets crashed.
the log of backtrace looks like:
root@fusion:/opt/HMI/bin# root@fusion:/opt/HMI/bin# ./HMI -platform eglfs
QEglFSVivIntegration will set environment variable FB_MULTI_BUFFEUnable to handle kernel paging request at virtual address 50d3d904
R=2 to enable double buffering anpgd = a95d4000
d vsync.
If this is not desired[50d3d904] *pgd=00000000
, you can override this via: expoInternal error: Oops: 5 [#2] PREEMPT SMP ARM
Modules linked in:
CPU: 0 PID: 340 Comm: HMI Tainted: G D 4.14.174-ga-fusion+ga1a0dd213d72 #1
Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree)
task: a81af800 task.stack: a8076000
PC is at gckDEVICE_Dispatch+0x30/0x124
LR is at drv_ioctl+0x144/0x1f8
pc : [<80705274>] lr : [<806fe068>] psr: 800d0013
sp : a8077d60 ip : 7ed46cb0 fp : 7549fd34
r10: 00000036 r9 : a8076000 r8 : 7ed46a28
r7 : 00000051 r6 : a95cc900 r5 : a861c000 r4 : 00000051
r3 : 50d3d860 r2 : 0000000b r1 : a8077d88 r0 : a86d0a00
Flags: Nzcv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none
Control: 10c53c7d Table: 395d4059 DAC: 00000051
Process HMI (pid: 340, stack limit = 0xa8076210)
Stack: (0xa8077d60 to 0xa8078000)
7d60: 00000051 806fe068 7ed46a78 00000000 00000190 00000000 7ed46a78 00000000
7d80: 00000190 00000000 00000028 7ed46cb0 76f90808 7ed47e04 7582db8c 00000009
7da0: 7549d4c0 754cab20 00000001 0d696914 76fa6a80 00000002 76fa8ad8 7ed46b20
7dc0: 000002fa 7ed46b24 753bf8d4 76f86870 00000001 753c2874 000002fa 753c3714
7de0: 76fa8ad8 7ed46b24 7ed46b20 7ed46b50 0000013b 00000000 bb797b34 753c3714
7e00: 753bf8d4 05dbcbd9 753c3c17 753c3714 753c2874 7ed46b94 76fad908 76fadfa4
7e20: aaaaaaab 76fa51c8 00000018 76fad908 00000000 00000000 753c3d82 bb797b34
7e40: 00000000 76fa8c90 7ed46b94 753c3c17 7ed46bf4 76fa8ad8 7ed46b9c 76f872f8
7e60: 7ed46b9c 76faea64 00000016 00000000 00000001 00000000 00000001 76fa8ad8
7e80: 7ed46c24 76fa8c90 00000000 76f872f8 7ed46bcc 76faea64 00000016 00000000
7ea0: 00000001 037fd108 00000001 753c2874 76fa8ad8 76fa8c90 00000000 00000000
7ec0: 00000001 0229fb28 00000001 753be000 000f3518 76fa34d0 00000000 00000001
7ee0: 000f4240 7549fd24 7549fd34 76f8c570 00000000 00000001 00000001 00000000
7f00: 000f3214 753c2874 022a13e0 754c95a4 00000000 7ed46c5c 80f0aedc 7ed46a28
7f20: a85d97a0 a95a3480 00007530 8021ae98 00000001 00000000 76fad908 809cfda0
7f40: a814f700 8016fa5c 80e7ac34 00000000 00000047 00000000 80e7ac34 00000000
7f60: 00000047 00000000 00000001 8016f10c a95a3480 a95a3480 00000006 00007530
7f80: 7ed46a28 a8076000 00000036 8021b6f4 00002710 00007530 754c95a4 00000036
7fa0: 80107ac4 801078c0 00002710 00007530 00000006 00007530 7ed46a28 022a17e8
7fc0: 00002710 00007530 754c95a4 00000036 00000000 7ed46a78 00000190 7549fd34
7fe0: 757b69e0 7ed46a14 754992a0 757b69ec 600d0010 00000006 00000000 00000000
[<80705274>] (gckDEVICE_Dispatch) from [<806fe068>] (drv_ioctl+0x144/0x1f8)
[<806fe068>] (drv_ioctl) from [<8021ae98>] (do_vfs_ioctl+0x9c/0x8c4)
[<8021ae98>] (do_vfs_ioctl) from [<8021b6f4>] (SyS_ioctl+0x34/0x58)
[<8021b6f4>] (SyS_ioctl) from [<801078c0>] (ret_fast_syscall+0x0/0x54)
Code: e5913008 e3a0200b e0233c92 e0803103 (e593c0a4)
rt QT_EGLFS_IMX6_NO_FB_MULTI_BUFFER=1
---[ end trace bb430ff122e888b5 ]---
Segmentation fault
Any help would be appreciated
Hello Bio_TICFSL,
Can you confirm whether there is an issue with the vivante driver in the 4.14.98 NXP Linux kernel?
Thanks,
Neil
Using the galcore driver from kernel-module-imx-gpu-viv_6.2.4.p4.0.bb kernel-module-imx-gpu-viv_6.2.4.p4.0.bb, in which the SRCBRANCH is the same 4.14.98_2.0.0 linux kernel, the driver crashes when manually loaded:
Hello Neil,
It appears that galcore compiled for other kernel version, however please download again the whole bsp.
Regards
Hi Bio_TICFSL,
I've rebuilt my image from scratch, re-downloading the BSP and still got the same error. Can you also tell me what the galcore error flags are?
I.e.:
galcore: probe of 130000.gpu failed with error -22
What is error -22?
Thanks,
Neil
Hi Neil,
I am facing similar error, how did you resolve it ?
--
Thanks,
Hitesh
Hi Bio_TICFSL,
I'll try doing a clean build in yocto and let you know how that goes.
Thanks,
Neil