AnsweredAssumed Answered

IMX6D: Unable to load galcore module with NXP Linux Kernel 4.14.98-2.0.0-r0

Question asked by Neil Patel on Sep 24, 2019
Latest reply on Oct 4, 2019 by Neil Patel

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

Outcomes