galcore.ko hangs while loading on 3.14.30 linux

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

galcore.ko hangs while loading on 3.14.30 linux

3,231 Views
vikaspatil
Senior Contributor I

Dear Members,

I am working on to bring up 3.14.30 linux kernel on custom i.MX6 solo based platform. I have added all the required code from 3.14.28 (i.e. 3.14.28_1.0.0_ga release) to

3.14.30 and with this kernel hangs while booting just after loading the "galcore" vivante graphics driver. I tried making "galcore.ko" as a module and it also hangs while

loading. Just for information my LCD and HDMI display are working fine (tested with fb application).

I have also tested platform with (3.14.28_1.0.0_ga release + our custom changes) and gpu works fine there.

Could someone give some pointers what might be going wrong here? or Has anyone faced similar issues on some other kernel?

Waiting for your suggestion/comments/ideas to fix this.

See kernel log:

[    1.491087] imx sema4 driver is registered.

[    1.495367] [drm] Initialized drm 1.1.0 20060810

[    1.499994] [platform_device_alloc][line216]

[    1.504290] name=Vivante GCCore id =-1

[    1.508139] pdev->name Vivante GCCore pdev->id -1

[    1.512694] pdev->name Vivante GCCore pdev->num_resources 0[    1.518286] Registering platform device 'Vivante GCCore'. Parent at platform

[    1.525714] [drm] Initialized vivante 1.0.0 20120216 on minor 0

[    1.534868] loop: module loaded

[    1.538718] snvs_rtc 20cc034.snvs-rtc-lp: rtc core: registered 20cc034.snvs-rtc-lp as rtc0

[    1.547150] i2c /dev entries driver

[    1.551426] sdhci: Secure Digital Host Controller Interface driver

[    1.557615] sdhci: Copyright(c) Pierre Ossman

[    1.561999] sdhci-pltfm: SDHCI platform and OF driver helper

[    1.569822] mmc0: no vqmmc regulator found

[    1.573965] mmc0: no vmmc regulator found

[    1.581715] mxc_hdmi 20e0000.hdmi_video: create default modelist

[    1.621400] mmc0: SDHCI controller on 2194000.usdhc [2194000.usdhc] using ADMA

[    1.622117] mmc1: no vqmmc regulator found

[    1.622123] mmc1: no vmmc regulator found

[    1.625401] imx-ipuv3 2400000.ipu: IPU DMFC DP HIGH RESOLUTION: 1(0,1), 5B(2~5), 5F(6,7)

[    1.705972] mmc1: SDHCI controller on 2198000.usdhc [2198000.usdhc] using ADMA

[    1.710630] mmc2: no vqmmc regulator found

[    1.710636] mmc2: no vmmc regulator found

[    1.842992] mmc2: SDHCI controller on 219c000.usdhc [219c000.usdhc] using ADMA

[    1.845600] galcore: clk_get vg clock failed, disable vg!

[    1.845624] Galcore version 5.0.11.25762

[    1.924703] mmc1: BKOPS_EN bit is not set

[    1.935351] mmc1: new high speed DDR MMC card at address 0001

[    1.935689] mmcblk0: mmc1:0001 MMC08G 7.32 GiB

[    1.935851] mmcblk0boot0: mmc1:0001 MMC08G partition 1 2.00 MiB

[    1.935950] mmcblk0boot1: mmc1:0001 MMC08G partition 2 2.00 MiB

[    1.936046] mmcblk0rpmb: mmc1:0001 MMC08G partition 3 128 KiB

[    1.941216]  mmcblk0: p1 p2 p3 p4 < p5 p6 p7 p8 >

[    1.944268]  mmcblk0boot1: unknown partition table

[    1.945429]  mmcblk0boot0: unknown partition table

[    8.764510] random: nonblocking pool is initialized

Thanks & Regards,

Vikash

Labels (3)
Tags (1)
0 Kudos
6 Replies

1,288 Views
Bio_TICFSL
NXP TechSupport
NXP TechSupport

Hi vikash,

Make sure galcore matches the kernel you compile. Check the file / drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_version.h

Regards

0 Kudos

1,288 Views
vikaspatil
Senior Contributor I

Hi,

drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_version.h looks like. I am also compiling galcore withing new kernel. What do you mean by galcore should match the kernel?

#ifndef __gc_hal_version_h_

#define __gc_hal_version_h_

#define gcvVERSION_MAJOR        5

#define gcvVERSION_MINOR        0

#define gcvVERSION_PATCH        11

#define gcvVERSION_BUILD     25762

#define gcvVERSION_STRING    "5.0.11.p4.25762"

#define gcvVERSION_DATE      __DATE__

#define gcvVERSION_TIME      __TIME__

#endif /* __gc_hal_version_h_ */

Regards,

Vikash

0 Kudos

1,288 Views
Bio_TICFSL
NXP TechSupport
NXP TechSupport

Hi vikash,

The gc_hal_version should math the major kernel version that you are using in this case is correct for 3.14 as statement in the release note.

If in any case you tried to load the gpu driver with  modprobe vivante or modprobe galcore and still received a kernel crash, I suggest to check your dtb setting for the GPU clock instead.

Hope this helps

0 Kudos

1,288 Views
BiyongSUN
NXP Employee
NXP Employee

Please check which device tree you are using? ldo by pass or ldo enable.

0 Kudos

1,288 Views
vikaspatil
Senior Contributor I

Hi Biyong Sun,

Thanks for the reply.

Yes I am also thinking there is some issue with the configuration as it looks GPU not powering up and galcore is stuck in _ResetGPU() function.

I have following entries in our custom dts and dtsi and it works with 3.14.28 kernel. How to check if I am using ldo by pass or ldo enable?

gpu@00130000 {

            compatible = "fsl,imx6dl-gpu", "fsl,imx6q-gpu";

            reg = <0x00130000 0x4000>, <0x00134000 0x4000>,

                  <0x0 0x0>;

            reg-names = "iobase_3d", "iobase_2d",

                    "phys_baseaddr";

            interrupts = <0 9 IRQ_TYPE_LEVEL_HIGH>,

                     <0 10 IRQ_TYPE_LEVEL_HIGH>;

            interrupt-names = "irq_3d", "irq_2d";

            clocks = <&clks IMX6QDL_CLK_OPENVG_AXI>, <&clks IMX6QDL_CLK_GPU3D_AXI>,

                 <&clks IMX6QDL_CLK_GPU2D_CORE>, <&clks IMX6QDL_CLK_GPU3D_CORE>,

                 <&clks IMX6QDL_CLK_DUMMY>;

            clock-names = "gpu2d_axi_clk", "gpu3d_axi_clk",

                      "gpu2d_clk", "gpu3d_clk",

                      "gpu3d_shader_clk";

            resets = <&src 0>, <&src 3>;

            reset-names = "gpu3d", "gpu2d";

            power-domains = <&gpc 1>;

        };

gpc: gpc@020dc000 {

                compatible = "fsl,imx6q-gpc";

                reg = <0x020dc000 0x4000>;

                interrupts = <0 89 IRQ_TYPE_LEVEL_HIGH>,

                         <0 90 IRQ_TYPE_LEVEL_HIGH>;

                pu-supply = <&reg_pu>;

                clocks = <&clks IMX6QDL_CLK_GPU3D_CORE>,

                     <&clks IMX6QDL_CLK_GPU3D_SHADER>,

                     <&clks IMX6QDL_CLK_GPU2D_CORE>,

                     <&clks IMX6QDL_CLK_GPU2D_AXI>,

                     <&clks IMX6QDL_CLK_OPENVG_AXI>,

                     <&clks IMX6QDL_CLK_VPU_AXI>;

                #power-domain-cells = <1>;

            };

&gpc {

    // use ldo-bypass, u-boot will check it and configure

    fsl,ldo-bypass = <1>;

    fsl,wdog-reset = <2>;

};

Thanks & Regards,

Vikash

0 Kudos

1,288 Views
BiyongSUN
NXP Employee
NXP Employee

If you have read i.MX_Linux_Release_Notes.pdf, you will find

Untitled.png

For example:

ldo bypass: imx6q-sabresd.dts

ldo enable :imx6q-sabresd-ldo.dts

This dts ldo bypass needs uboot to support.

cpu.c

void arch_preboot_os(void)

{

#if defined(CONFIG_LDO_BYPASS_CHECK)

ldo_mode_set(check_ldo_bypass());

#endif

#if defined(CONFIG_VIDEO_IPUV3)

/* disable video before launching O/S */

ipuv3_fb_shutdown();

#endif

#ifdef CONFIG_VIDEO_GIS

/* Entry for GIS */

mxc_disable_gis();

#endif

#ifdef CONFIG_VIDEO_MXS

lcdif_power_down();

#endif

}

0 Kudos