kernel hangs or fails to allocate CMA in galcore with i.MX Solo Sabre

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

kernel hangs or fails to allocate CMA in galcore with i.MX Solo Sabre

Jump to solution
9,493 Views
vikaspatil
Senior Contributor I

Dear All,

 

I am trying to bring up kernel  https://github.com/wandboard-org/linux/tree/wandboard_imx_3.10.17_1.0.0_ga on our customized board using i.MX6 Solo Sabre soc. I am observing following error while booting the kernel. Same kernel works fine on wandboard solo with CMA set to 256MB. Attaching here the kernel configuration I am using.

 

Is there any kernel configuration selection I am missing here? How can I fix this issue? Any suggestions/inputs would be very helpful?

 

*****CMA <= 160MB, I am getting following allocation failure from GAL core driver, however the kernel boots

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

galcore 130000.gpu: Failed to allocate contiguous memory

galcore: probe of 130000.gpu failed with error -12

mxc_vdoa 21e4000.vdoa: i.MX Video Data Order Adapter(VDOA) driver probed

 

*****Full Kernel Log with 256 MB CMA set, kernel doesn't boot and hangs after GAL core loaded:

 

Starting kernel ...

 

Booting Linux on physical CPU 0x0

Linux version 3.10.17-02444-g876e8f1-dirty (vipatil@linux ) (gcc version 4.7.3 20130226 (prerelease) (crosstool-NG linaro-1.13.1-4.7-2013.03-20130313 - Linaro GCC 2013.03) ) #7 Sat Aug 2 16:59:31 IST 2014

CPU: ARMv7 Processor [412fc09a] revision 10 (ARMv7), cr=10c53c7d

CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache

Machine: Freescale i.MX6 Quad/DualLite (Device Tree), model: Freescale i.MX6 DualLite SABRE Smart Device Board

cma: CMA: reserved 256 MiB at 20000000

Memory policy: ECC disabled, Data cache writeback

------------[ cut here ]------------

WARNING: at arch/arm/kernel/devtree.c:147 arm_dt_init_cpu_maps+0xa8/0x130()

DT /cpu 2 nodes greater than max cores 1, capping them

Modules linked in:

CPU: 0 PID: 0 Comm: swapper Not tainted 3.10.17-02444-g876e8f1-dirty #7

[<80013a20>] (unwind_backtrace+0x0/0x104) from [<80011df0>] (show_stack+0x20/0x24)

[<80011df0>] (show_stack+0x20/0x24) from [<80409f3c>] (dump_stack+0x20/0x28)

[<80409f3c>] (dump_stack+0x20/0x28) from [<80025e20>] (warn_slowpath_common+0x5c/0x78)

[<80025e20>] (warn_slowpath_common+0x5c/0x78) from [<80025ef8>] (warn_slowpath_fmt+0x40/0x48)

[<80025ef8>] (warn_slowpath_fmt+0x40/0x48) from [<805d4760>] (arm_dt_init_cpu_maps+0xa8/0x130)

[<805d4760>] (arm_dt_init_cpu_maps+0xa8/0x130) from [<805d3fe0>] (setup_arch+0x5bc/0x69c)

[<805d3fe0>] (setup_arch+0x5bc/0x69c) from [<805d0814>] (start_kernel+0x6c/0x310)

[<805d0814>] (start_kernel+0x6c/0x310) from [<10008070>] (0x10008070)

---[ end trace 1b75b31a2719ed1c ]---

CPU: All CPU(s) started in SVC mode.

Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 130048

Kernel command line: console=ttymxc0,115200 root=/dev/mmcblk0p2 rootwait rw init=/bin/systemd nosmp earlyprintk debug mem=512M loglevel=7

PID hash table entries: 2048 (order: 1, 8192 bytes)

Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)

Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)

Memory: 512MB = 512MB total

Memory: 250000k/250000k available, 274288k reserved, 0K highmem

Virtual kernel memory layout:

    vector  : 0xffff0000 - 0xffff1000   (   4 kB)

    fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)

    vmalloc : 0xa0800000 - 0xff000000   (1512 MB)

    lowmem  : 0x80000000 - 0xa0000000   ( 512 MB)

    modules : 0x7f000000 - 0x80000000   (  16 MB)

      .text : 0x80008000 - 0x805cf3e8   (5917 kB)

      .init : 0x805d0000 - 0x8061a4ec   ( 298 kB)

      .data : 0x8061c000 - 0x80651c10   ( 216 kB)

       .bss : 0x80651c10 - 0x806cb318   ( 486 kB)

SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1

NR_IRQS:16 nr_irqs:16 16

L310 cache controller enabled

l2x0: 16 ways, CACHE_ID 0x410000c8, AUX_CTRL 0x32050000, Cache size: 524288 B

sched_clock: 32 bits at 3000kHz, resolution 333ns, wraps every 1431655ms

CPU identified as i.MX6DL, silicon rev 1.1

Console: colour dummy device 80x30

Calibrating delay loop... 789.70 BogoMIPS (lpj=3948544)

pid_max: default: 32768 minimum: 301

Mount-cache hash table entries: 512

CPU: Testing write buffer coherency: ok

ftrace: allocating 16491 entries in 49 pages

Setting up static identity map for 0x8040d420 - 0x8040d478

devtmpfs: initialized

pinctrl core: initialized pinctrl subsystem

regulator-dummy: no parameters

NET: Registered protocol family 16

DMA: preallocated 256 KiB pool for atomic coherent allocations

Use WDOG2 as reset source

syscon 20c8000.anatop: regmap [mem 0x020c8000-0x020c8fff] registered

vdd1p1: 800 <--> 1375 mV at 1125 mV

vdd3p0: 2800 <--> 3150 mV at 3000 mV

vdd2p5: 2000 <--> 2750 mV at 2425 mV

cpu: 725 <--> 1450 mV at 1150 mV

vddpu: 725 <--> 1450 mV

vddsoc: 725 <--> 1450 mV at 1200 mV

syscon 20e0000.iomuxc-gpr: regmap [mem 0x020e0000-0x020e0037] registered

syscon 21bc000.ocotp-ctrl: regmap [mem 0x021bc000-0x021bffff] registered

hw-breakpoint: found 5 (+1 reserved) breakpoint and 1 watchpoint registers.

hw-breakpoint: maximum watchpoint size is 4 bytes.

imx6dl-pinctrl 20e0000.iomuxc: initialized IMX pinctrl driver

bio: create slab <bio-0> at 0

usb_otg_vbus: 5000 mV

usb_h1_vbus: 5000 mV

wm8962-supply: no parameters

mipi_dsi_pwr_on: no parameters

sensor-supply: 3300 mV

SCSI subsystem initialized

usbcore: registered new interface driver usbfs

usbcore: registered new interface driver hub

usbcore: registered new device driver usb

i2c i2c-0: IMX I2C adapter registered

i2c i2c-1: IMX I2C adapter registered

i2c i2c-2: IMX I2C adapter registered

pps_core: LinuxPPS API ver. 1 registered

pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>

PTP clock support registered

imx-ipuv3 2400000.ipu: IPU DMFC NORMAL mode: 1(0~1), 5B(4,5), 5F(6,7)

mxc_mipi_csi2 21dc000.mipi_csi: i.MX MIPI CSI2 driver probed

mxc_mipi_csi2 21dc000.mipi_csi: i.MX MIPI CSI2 dphy version is 0x3130302a

MIPI CSI2 driver module loaded

Switching to clocksource mxc_timer1

NET: Registered protocol family 2

TCP established hash table entries: 4096 (order: 3, 32768 bytes)

TCP bind hash table entries: 4096 (order: 2, 16384 bytes)

TCP: Hash tables configured (established 4096 bind 4096)

TCP: reno registered

UDP hash table entries: 256 (order: 0, 4096 bytes)

UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)

NET: Registered protocol family 1

hw perfevents: enabled with ARMv7 Cortex-A9 PMU driver, 7 counters available

pureg-dummy: no parameters

imx6_busfreq busfreq.15: Busfreq: Cannot set irq affinity irq=139,

imx6_busfreq busfreq.15: Busfreq init of MMDC failed

imx6_busfreq: probe of busfreq.15 failed with error -22

Bus freq driver module loaded

fuse init (API version 7.22)

msgmni has been set to 1000

io scheduler noop registered

io scheduler deadline registered

io scheduler cfq registered (default)

imx-weim 21b8000.weim: WEIM driver registered.

mxc_mipi_dsi 21e0000.mipi: i.MX MIPI DSI driver probed

MIPI DSI driver module loaded

mxc_sdc_fb fb.30: register mxc display driver lcd

mxc_sdc_fb fb.30: 800x480 h_sync,r,l: 20,60,40  v_sync,l,u: 10,10,10 pixclock=27000000 Hz

imx-sdma 20ec000.sdma: no iram assigned, using external mem

imx-sdma 20ec000.sdma: initialized

imx-sdma 20ec000.sdma: loaded firmware 1.1

pfuze100-regulator 1-0008: unrecognized pfuze chip ID!

pfuze100-regulator: probe of 1-0008 failed with error -5

Serial: IMX driver

2020000.serial: ttymxc0 at MMIO 0x2020000 (irq = 58) is a IMX

console [ttymxc0] enabled

serial: Freescale lpuart driver

[drm] Initialized drm 1.1.0 20060810

[drm] Initialized vivante 1.0.0 20120216 on minor 0

brd: module loaded

loop: module loaded

spi_imx 2008000.ecspi: probed

usbcore: registered new interface driver asix

usbcore: registered new interface driver ax88179_178a

usbcore: registered new interface driver cdc_ether

ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver

usbcore: registered new interface driver usb-storage

ci_hdrc ci_hdrc.0: EHCI Host Controller

ci_hdrc ci_hdrc.0: new USB bus registered, assigned bus number 1

ci_hdrc ci_hdrc.0: USB 2.0 started, EHCI 1.00

hub 1-0:1.0: USB hub found

hub 1-0:1.0: 1 port detected

ci_hdrc ci_hdrc.1: doesn't support gadget

ci_hdrc ci_hdrc.1: EHCI Host Controller

ci_hdrc ci_hdrc.1: new USB bus registered, assigned bus number 2

ci_hdrc ci_hdrc.1: USB 2.0 started, EHCI 1.00

hub 2-0:1.0: USB hub found

hub 2-0:1.0: 1 port detected

mousedev: PS/2 mouse device common for all mice

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

i2c /dev entries driver

cpuidle: using governor ladder

cpuidle: using governor menu

sdhci: Secure Digital Host Controller Interface driver

sdhci: Copyright(c) Pierre Ossman

sdhci-pltfm: SDHCI platform and OF driver helper

mmc0: no vqmmc regulator found

mmc0: no vmmc regulator found

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

mmc1: no vqmmc regulator found

mmc1: no vmmc regulator found

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

mmc2: no vqmmc regulator found

mmc2: no vmmc regulator found

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

Galcore version 4.6.9.9754

usb 1-1: new high-speed USB device number 2 using ci_hdrc

 

 

Regards,

Vikash

Original Attachment has been moved to: config_nl3_f6.zip

Tags (2)
1 Solution
2,770 Views
vikaspatil
Senior Contributor I

This issue is fixed. I changed in file imx6qdl-sabresd.dtsi as follows.

&cpu0 {

    arm-supply = <&reg_arm>;

    soc-supply = <&reg_soc>;

    pu-supply = <&reg_pu>; /* use pu_dummy if VDDSOC share with VDDPU */

};

&gpc {

    fsl,ldo-bypass = <0>; /* use ldo-bypass, u-boot will check it and configure */

    fsl,wdog-reset = <1>; /* watchdog select of reset source */

    pu-supply = <&reg_pu>; /* ldo-bypass:use pu_dummy if VDDSOC share with VDDPU */

};

&gpu {

    pu-supply = <&reg_pu>; /* ldo-bypass:use pu_dummy if VDDSOC share with VDDPU */

};

&vpu {

    pu-supply = <&reg_pu>; /* ldo-bypass:use pu_dummy if VDDSOC share with VDDPU */

};

Regards,

Vikash

View solution in original post

3 Replies
2,771 Views
vikaspatil
Senior Contributor I

This issue is fixed. I changed in file imx6qdl-sabresd.dtsi as follows.

&cpu0 {

    arm-supply = <&reg_arm>;

    soc-supply = <&reg_soc>;

    pu-supply = <&reg_pu>; /* use pu_dummy if VDDSOC share with VDDPU */

};

&gpc {

    fsl,ldo-bypass = <0>; /* use ldo-bypass, u-boot will check it and configure */

    fsl,wdog-reset = <1>; /* watchdog select of reset source */

    pu-supply = <&reg_pu>; /* ldo-bypass:use pu_dummy if VDDSOC share with VDDPU */

};

&gpu {

    pu-supply = <&reg_pu>; /* ldo-bypass:use pu_dummy if VDDSOC share with VDDPU */

};

&vpu {

    pu-supply = <&reg_pu>; /* ldo-bypass:use pu_dummy if VDDSOC share with VDDPU */

};

Regards,

Vikash

2,770 Views
hrushinale
Contributor III

Hi Vikas,

Can you please share your full dtsi file?

Thanks & Regards,

Hrushi

0 Kudos
Reply
2,770 Views
andreit
Contributor I

Thank you Vikash,

I had a similar issue and your post really helped me!

0 Kudos
Reply